Commit Graph

226 Commits

Author SHA1 Message Date
Ben Marsh
d5c7cc09c4 [INTEGRATE] Change 2418609 by bruce.nesbit@bnesbit_Releases on 2015/01/26 10:18:10
Removed some now redundant code relating to new projects having a feature pack.

[CL 2419734 by Ben Marsh in Main branch]
2015-01-26 20:21:15 -05:00
Ben Marsh
c0778b678d [INTEGRATE] Change 2418552 by James.Golding@JGOLDING-T2781-CODE on 2015/01/26 08:58:56
UE-7891 Remove 'feature pack' icons, and change text to explain that any template features can be added later.
	#codereview bruce.nesbit

[CL 2419722 by Ben Marsh in Main branch]
2015-01-26 20:18:43 -05:00
Ben Marsh
3d2ab1d349 [INTEGRATE] Change 2417935 by Matt.Kuhlenschmidt@matt_kuhlenschmidt_main on 2015/01/24 16:23:14
Added an experimental method to add a new C++ class derived from ActorComponent to an actor.  The purpose of this is to add scripting support directly on an actor without subclassing the actor.

[CL 2419710 by Ben Marsh in Main branch]
2015-01-26 20:16:24 -05:00
Ben Marsh
a05abb1027 [INTEGRATE] Change 2417928 by Mike.Fricker@MFRICKER_G3686_Alpha on 2015/01/24 15:53:14
Fixed failed C++ hot reload not displaying an error to the user (UE-8241)
	- Also added slightly better progress reporting to hot reload when adding code to a project

[CL 2419709 by Ben Marsh in Main branch]
2015-01-26 20:16:08 -05:00
Ben Marsh
370e54ad5e [INTEGRATE] Change 2417820 by Mike.Fricker@MFRICKER_G3686_Alpha on 2015/01/24 11:57:38
After adding a new class, we now always open the IDE to edit source if the hot reload completed successfully
	- Also, we display a quick pop-up notification indicating success instead of a modal prompt

[CL 2419701 by Ben Marsh in Main branch]
2015-01-26 20:14:10 -05:00
Ben Marsh
142408095d [INTEGRATE] Change 2417804 by Mike.Fricker@MFRICKER_G3686_Alpha on 2015/01/24 11:19:31
Allow C++ class template source files to have cursor location markup (not just header files)
	- This feature is not currently used but will be in the future

[CL 2419695 by Ben Marsh in Main branch]
2015-01-26 20:13:06 -05:00
Ben Marsh
a48256099d [INTEGRATE] Change 2417468 by Mike.Fricker@MFRICKER_G3686_Alpha on 2015/01/23 18:23:34
New C++ code templates for Actor and ActorComponents
	- When using "Add C++ Code" in the editor, you'll now get nice starter classes for common class types
	- Classes that inherit from Actor will get a constructor, BeginPlay, and Tick (and will tick by default)
	- Classes inheriting from ActorComponent will get a constructor, InitializeComponent and TickComponent (and will tick by default)

	More improvements coming soon...

	#codereview matt.kuhlenschmidt, james.golding

[CL 2419674 by Ben Marsh in Main branch]
2015-01-26 20:01:46 -05:00
Jaroslaw Palczynski
adecd4aaad UHT: Allows defining multiple UCLASSes in one header file.
[CL 2412156 by Jaroslaw Palczynski in Main branch]
2015-01-20 09:33:54 -05:00
Ben Marsh
e808e574ca Only auto-compile newly created projects if we're running a Rocket editor. Other editors may require rebuilding binaries, which will fail with the current editor open.
[CL 2411244 by Ben Marsh in Main branch]
2015-01-19 15:01:55 -05:00
Jamie Dale
55c3728d11 Added support for showing game and engine classes in the Content Browser
UE-7184 - Show game c++ classes and engine c++ classes in the content browser

The Content Browser now has extra entries for "Game C++ Classes" and "Engine C++ Classes" (with "Game" and "Engine" being renamed to "Game Content" and "Engine Content" respectively). These new folders serve as hosts for the list of available C++ modules, with each module internally mirroring the folder structure on disk.

For example:
- Game C++ Classes
    - ShooterGame
        - Classes
            - Bots
                - ShooterBot
                - ShooterAIController
                - [...]
            - [...]

The Content Browser allows you to navigate and search these classes like you can with assets, and provides convenient access to either edit an existing class, or create a new class (either within a selected folder, or derived from a selected class).

As the Content Browser only shows you known UClass types, any new classes need to be compiled into a loaded module before they will appear. This means that adding a new class will now automatically hot-reload your target module. Should you prefer to handle building and loading your modules manually, you can disable the automatic hot-reload via "Editor Settings" -> "Miscellaneous" -> "Hot Reload" -> "Automatically Hot Reload New Classes" (see UEditorUserSettings::bAutomaticallyHotReloadNewClasses).

[CL 2409386 by Jamie Dale in Main branch]
2015-01-16 15:39:47 -05:00
Dan Hertzka
81d6b0fe57 Missed marking new files for add
[CL 2409222 by Dan Hertzka in Main branch]
2015-01-16 14:07:00 -05:00
Dan Hertzka
8c7348dc9b Replaced the "Get Visual Studio" hyperlink in the SNewProjectWizard and SNewClassDialog with an "Install Visual Studio" button on Windows
- Added IDesktopPlatform::GetUserTempPath() and implemented it for windows
- Created SGetSuggestedIDEWidget class that handles whether to show a "Download X" hyperlink vs. an "Install X" button (depending on whether the platform supports on-demand installation)
- Analytics event added ("Editor.Usage.InstalledIDE") that fires whenever the "Install X" button is clicked
- Changed SourceCodeIDEURL_Windows in BaseEditor.ini from the VSC 2013 web page link to the installer download link (need to replace with perma-link once we have it)

[CL 2409158 by Dan Hertzka in Main branch]
2015-01-16 13:29:54 -05:00
bruce nesbit
1f1873fc3e Code to support 'has feature pack' flag in templatedefs file
Also added code to display an icon on templates that have an equivalent feature pack.
Revised new project text to indicated what the icon is for.

[CL 2404695 by bruce nesbit in Main branch]
2015-01-13 10:35:31 -05:00
Ben Marsh
1f5b1222c2 Remove GenerateNewProjectFile from IProjectManager.
[CL 2401854 by Ben Marsh in Main branch]
2015-01-09 08:08:13 -05:00
Steve Robb
0756ef15b9 Delegate comparisons deprecated, lots of other associated code deprecated, and lots of warning fixups:
* Multicast delegate Add* calls now return FDelegateHandles, and Remove* calls are now all deprecated, except for a new Remove function which takes a FDelegateHandle.
* New FConsoleManager::RegisterConsoleVariableSink_Handle and UnregisterConsoleVariableSink_Handle functions which work in terms of FConsoleVariableSinkHandle.
* Timer calls which don't take FTimerHandles are deprecated.
* FTicker::AddTicker now returns an FDelegateHandle and is removed by an overloaded Remove function.
* DEFINE_ONLINE_DELEGATE* macros now define _Handle variants of the Add/Remove functions which return/take handles.
* Various other handle-based registration changes.
* Some unity build fixes.
* Some simplification of delegate code.
* Fixes for lots of existing code to use handle-based registration and unregistration.

#codereview robert.manuszewski

[CL 2400883 by Steve Robb in Main branch]
2015-01-08 09:29:27 -05:00
Jamie Dale
a569f6b356 Fixed code relying on SLATE_TEXT_ATTRIBUTE for STextBlock.
UETOOL-213 - Minimize Slate FString -> FText conversion (remove SLATE_TEXT_ATTRIBUTE)

This fixes any editor/engine specific code that was passing text to Slate as FString rather than FText.

[CL 2399803 by Jamie Dale in Main branch]
2015-01-07 09:52:40 -05:00
Dan Hertzka
1ce19a5ffa Full rename of the Slate "active tick" system to "active timer"
[CL 2394301 by Dan Hertzka in Main branch]
2014-12-19 17:44:49 -05:00
Dan Hertzka
a6882ce517 Fixed infinitely duplicating active tick is SGameProjectDialog - widgets fade in properly again
[CL 2393797 by Dan Hertzka in Main branch]
2014-12-19 10:56:17 -05:00
Dan Hertzka
c042ddcb94 ---- Merging with SlateDev branch ----
Introduces the concept of "Active Ticking" to allow Slate to go to sleep when there is no need to update the UI.

While asleep, Slate will skip the Tick & Paint pass for that frame entirely.
- There are TWO ways to "wake" Slate and cause a Tick/Paint pass:
    1. Provide some sort of input (mouse movement, clicks, and key presses). Slate will always tick when the user is active.
        - Therefore, if the logic in a given widget's Tick is only relevant in response to user action, there is no need to register an active tick.
    2. Register an Active Tick. Currently this is an all-or-nothing situation, so if a single active tick needs to execute, all of Slate will be ticked.

- The purpose of an Active Tick is to allow a widget to "drive" Slate and guarantee a Tick/Paint pass in the absence of any user action.
    - Examples include animation, async operations that update periodically, progress updates, loading bars, etc.

- An empty active tick is registered for viewports when they are real-time, so game project widgets are unaffected by this change and should continue to work as before.

- An Active Tick is registered by creating an FWidgetActiveTickDelegate and passing it to SWidget::RegisterActiveTick()
    - There are THREE ways to unregister an active tick:
        1. Return EActiveTickReturnType::StopTicking from the active tick function
        2. Pass the FActiveTickHandle returned by RegisterActiveTick() to SWidget::UnregisterActiveTick()
        3. Destroy the widget responsible for the active tick

- Sleeping is currently disabled, can be enabled with Slate.AllowSlateToSleep cvar
- There is currently a little buffer time during which Slate continues to tick following any input. Long-term, this is planned to be removed.
    - The duration of the buffer can be adjusted using Slate.SleepBufferPostInput cvar (defaults to 1.0f)

- The FCurveSequence API has been updated to work with the active tick system
    - Playing a curve sequence now requires that you pass the widget being animated by the sequence
    - The active tick will automatically be registered on behalf of the widget and unregister when the sequence is complete
    - GetLerpLooping() has been removed. Instead, pass true as the second param to Play() to indicate that the animation will loop. This causes the active tick to be registered indefinitely until paused or jumped to the start/end.

[CL 2391669 by Dan Hertzka in Main branch]
2014-12-17 16:07:57 -05:00
bruce nesbit
cf94655d51 Changed source folder thumb/screen shot used by templates so it can share the asset with feature packs
revised code pack insert (now replaces feature pack header name on import instead of using %MODULE_INCLUDE_PATH%

[CL 2388691 by bruce nesbit in Main branch]
2014-12-15 11:36:33 -05:00
Michael Noland
5bc29b81a6 Editor: Add some verbose logging to help diagonse issues when creating new project templates
[CL 2387348 by Michael Noland in Main branch]
2014-12-12 15:38:16 -05:00
James Golding
1e88566029 Fix non-unity in GameProjectUtils.cpp
#codereview ben.marsh
#lockdown Zachary.EdgertonJones

[CL 2387090 by James Golding in Main branch]
2014-12-12 12:30:06 -05:00
Ben Marsh
4d275b2721 Immediately compile and open new code projects (rather than opening the IDE and requiring the user do it themselves).
#codereview lauren.ridge

[CL 2386116 by Ben Marsh in Main branch]
2014-12-11 16:39:39 -05:00
Frank Fella
29057592b6 NewProjectWizard - Fix text flicker on tab switch.
[CL 2385978 by Frank Fella in Main branch]
2014-12-11 15:09:40 -05:00
Robert Manuszewski
cb091bcd80 Hot-Reload improvements:
- CDO property values that have changed after hot-reload will now be propagated to the existing instances
- Adding code to a non-code project will no longer require restarting the editor to be able to work with new code (the new module will automatically be compiled and loaded)

[CL 2385307 by Robert Manuszewski in Main branch]
2014-12-11 06:03:58 -05:00