Commit Graph

53 Commits

Author SHA1 Message Date
Matt Kuhlenschmidt
47e4787703 Fix orange cancel buttons in the new class and new project wizard dialogs
[CL 2517975 by Matt Kuhlenschmidt in Main branch]
2015-04-20 14:25:22 -04:00
Andrew Rodham
8ff0d8b98b Added config migration path for newer versions of the engine.
Newly installed versions of the engine will now attempt to copy the project-agnostic config settings from a previous engine installation. This happens by way of a versioned manifest that copies old versions when the manifest does not exist, or is a different version. This code path is benign for non-installed versions of the engine (or FPaths::ShouldSaveToUserDir() is false).

EditorGameAgnosticSettings and EditorUserSettings ini paths have been renamed to EditorSettings and EditorPerProjectUserSettings respectively to better convey their purpose. In general, most settings should be saved in EditorSettings (project-agnostic) so that they apply regardless of which project is open. We have some way to go migrating existing settings for this to be the case, however.

Some previously per-project configuration files are now project-agnostic (such as Editor.ini, EditorKeyBindings.ini, and EditorLayout.ini)

GEditor->Access...Settings and GEditor->Get...Settings have been removed in favor of direct access of the CDO through GetMutableDefault<> and GetDefault<> respectively. Global config ini filenames that are not set up are now neither loaded nor saved on build machines, to handle the problem of indeterminate state more generically.

This addresses UETOOL-270 (Most editor preferences should be project-agnostic)

[CL 2517558 by Andrew Rodham in Main branch]
2015-04-20 10:12:55 -04:00
Michael Noland
cf0d853808 Editor: Switched SNewClassDialog to use colorized buttons
[CL 2516711 by Michael Noland in Main branch]
2015-04-17 23:22:28 -04:00
Jamie Dale
7c1f59d338 Improved the error message when adding a new class fails due to a compile error
The fact that the error message said "failed to add class" despite the class itself being added was causing confusion.

In the case where adding a new class fails to hot-reload (probably due a compiler error) we now state that the class itself has been added, but that you'll need to recompile the module before it will appear in the editor, and offer an easy way to open the output log to see more detailed compiler output. We also automatically close the class wizard so that you're not left looking at an error message saying that "the class name is already in use".

[CL 2515833 by Jamie Dale in Main branch]
2015-04-17 10:02:43 -04:00
Mikolaj Sieluzycki
a96989f147 Add includes to files to remove the need of including Engine.h.
[CL 2508000 by Mikolaj Sieluzycki in Main branch]
2015-04-10 03:30:54 -04:00
Jaroslaw Palczynski
6c305898e0 UE-8578: Slate Widget fails to compile once added to a new project
Slate Widget was failing, because of missing Slate dependencies. Testing introduced a couple of problems which all was fixed by this CL:
1. I introduced AdditionalDependencies in .uproject file and change "Add Code To Project..." procedure to fill this array if needed. UBT reads this field and builds the project with required modules. Needed for Slate classes.
2. Changed UHT to #include missing headers in generated.h files if it was missing an include for it's super class. It was causing problems if we were trying to add a subclass of BrushShape -- BrushShape.h didn't have #include "Brush.h" and UBrushShape was inheriting from UBrush.
3. Above problems also occured for Slate classes, but not all of them was UCLASSes, so I had to fixed that manually.
4. "Add Code To Project..." functionality was not invalidating UBT makefiles, which lead to omitting new source files during hot-reloading (even thought it was reporting a success). This change also should improve a bit performance, cause right now there is no "gathering" step -- there is only invalidate step which is a lot quicker.
5. Fixed "Selected Class Source" link to source class in Slate Widget and Slate Widget Style class.

#codereview Robert.Manuszewski

[CL 2481488 by Jaroslaw Palczynski in Main branch]
2015-03-17 09:34:18 -04:00
Jason Hoffman
53cc33c3b8 fix for UE-10324 Unable to toggle between Public and Private class when using Add Code to Project
[CL 2476785 by Jason Hoffman in Main branch]
2015-03-12 10:06:48 -04:00
Jamie Dale
9116cbe4f7 New class workflow improvements
We now sync the Content Browser view after adding a new class, and also open the BP editor when adding a new BP class.

[CL 2475251 by Jamie Dale in Main branch]
2015-03-11 11:54:24 -04:00
Jamie Dale
689b6c0909 We now offer to show the Output Log when adding a new C++ fails in the editor
[CL 2472880 by Jamie Dale in Main branch]
2015-03-09 15:38:57 -04:00
Jamie Dale
06ab441b31 Cleaned up the parent class tree when adding new component classes
UE-9554 - Add BP/C++ Component's Show all classes list not expanded by default

It now hides the Object root if UObject is not a valid base class type, as this allows the next level of classes to be expanded out which looks much better when adding new component classes.

This involved a lot of shuffling of module dependencies so that we could link GameProjectGeneration to ClassViewer, as previously ClassViewer was directly linking to GameProjectGeneration.

I went through and fixed everything that was linking to GameProjectGeneration to instead list it as a dynamic dependency (which it is, as nothing needs to link to it), and then verified that everything was using ClassViewer correctly (found some places that were only marking it as a dynamic dependency without also adding it as an include module, causing issues with missing API macro definitions as they were including ClassViewer headers via a relative include path).

#codereview Andrew.Rodham

[CL 2451499 by Jamie Dale in Main branch]
2015-02-19 08:07:13 -05:00
Matthew Griffin
0446e4c81e [INTEGRATE] Change 2441435 by Jamie.Dale@Pitbull_JDaleReleases on 2015/02/11 07:46:05
The class wizard now filters out non-Blueprintable component types when adding a new BP component

	UE-9604 - Add Blueprint Component dialog ignores Blueprintable metadata, allowing you to create a blueprint from any component at all

	This vastly limits the selection until UE-8946 has been addressed.

	This change also makes the class wizard verify that its featured classes pass the active class filter (as some featured component classes aren't currently Blueprintable).

[CL 2448686 by Matthew Griffin in Main branch]
2015-02-17 10:07:24 -05:00
Matthew Griffin
670880c084 [INTEGRATE] Change 2436956 by Michael.Noland@mnoland-T2784-Reference on 2015/02/07 16:50:09
Editor: Change native/BP hyperlink underline colors to be driven by the common style colors as well

[CL 2446951 by Matthew Griffin in Main branch]
2015-02-16 08:38:28 -05:00
Matthew Griffin
532700480b [INTEGRATE] Change 2436874 by Michael.Noland@mnoland-T2784-Reference on 2015/02/07 15:05:06
Editor: Add standard colors for Blueprint/Native text references to editor style
	- Update hyperlinks and components tree to use the standard color (native links are now greener)
	- Improve selection behavior for these colorized text fields so they are still readable
	- Remove some dead style entries
	[UE-8717]

[CL 2446936 by Matthew Griffin in Main branch]
2015-02-16 08:32:32 -05:00
Matthew Griffin
246edb4781 [INTEGRATE] Change 2435332 by Andrew.Rodham@AndrewRodham_4.7 on 2015/02/06 09:25:07
Generalized "Add Code to Project" dialog to allow creation of both c++ and blueprint class types.

	The add component option when blueprintable components is enabled, now opens up this dialog rather than the parent class picker.

	UE-8491 - IWCE: New C++ Component and New Blueprint Component should prompt you for a component type to subclass

[CL 2446735 by Matthew Griffin in Main branch]
2015-02-16 04:29:11 -05:00
Richard TalbotWatkin
3b7b925fb0 Changed tooltip to indicate which application will be used to open source files when clicking on their class's hyperlink.
#jira UE-9271 - Blueprint Option 'Click to Open Source File' Misleading

[CL 2440038 by Richard TalbotWatkin in Main branch]
2015-02-10 13:26:26 -05:00
Ben Marsh
29219e7124 [INTEGRATE] Change 2421194 by Mike.Fricker@MFRICKER_G3686_Alpha on 2015/01/27 17:44:17
Improvements to naming of newly-created C++ and BP components through SCS tree
	- Strip off "_C" suffix on newly created Blueprint classes
	- Don't strip "Component" from Blueprint class names unless it is the suffix
	- Changed prefix for newly-created C++ components from "My" to "New"
	- New Blueprint components default to the name of the class unless they are Blueprints of UActorComponent, in which case the name is just "NewComponent"
	- New C++ components default to the name of the class unless they inherit from UActorComponent, in which case the name is just "NewComponent"
	#codereview matt.kuhlenschmidt

[CL 2425794 by Ben Marsh in Main branch]
2015-01-30 10:35:05 -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
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
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
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
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
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
Nick Darnell
90e793745c Slate - ESlateCheckBoxState has been renamed to ECheckBoxState.
[CL 2384008 by Nick Darnell in Main branch]
2014-12-10 14:24:09 -05:00
Ben Marsh
149375b14b Update copyright notices to 2015.
[CL 2379638 by Ben Marsh in Main branch]
2014-12-07 19:09:38 -05:00
Jamie Dale
75900308d3 Fixed code relying on SLATE_TEXT_ATTRIBUTE for SHyperlink
Made sure everything was using FText rather than FString.

[CL 2370982 by Jamie Dale in Main branch]
2014-11-26 13:56:07 -05:00