Commit Graph

48 Commits

Author SHA1 Message Date
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
Jamie Dale
0124ebf5b3 Removed SLATE_TEXT_ATTRIBUTE from AppFramework specific widgets
[CL 2369893 by Jamie Dale in Main branch]
2014-11-25 17:49:33 -05:00
Richard TalbotWatkin
a745d04c87 Improved performance in looking up module names and disallowed header names from source code by initializing a database asynchronously upon editor startup.
#jira UE-5324 - Huge hitch from FSourceCodeNavigation when selecting an object for the first time

[CL 2359722 by Richard TalbotWatkin in Main branch]
2014-11-14 02:05:33 -05:00
Richard TalbotWatkin
44e138164a Added additional checks in the New Class Dialog to disallow creating classes whose generated headers would clash with existing engine headers.
#jira UE-4770 - LIVE: Users are able to name a new class "Platform" even though there is already a class by that name in the Engine.

[CL 2357149 by Richard TalbotWatkin in Main branch]
2014-11-12 11:31:40 -05:00
Mikolaj Sieluzycki
51f5333986 Prepare cpp files for header cleanup.
#codereview Robert.Manuszewski

[CL 2356864 by Mikolaj Sieluzycki in Main branch]
2014-11-12 04:58:53 -05:00
Chris Gagnon
0e6d657c3d Refactor to unify keyboard and controller input and focus.
Native controller navigation support.

[CL 2345039 by Chris Gagnon in Main branch]
2014-10-30 12:29:36 -04:00