Commit Graph

20 Commits

Author SHA1 Message Date
Jamie Dale
e695958893 Fixed a bug where the Content Browser could be left looking at Engine or Plugin classes after that view had been disabled via the view options
[CL 2474207 by Jamie Dale in Main branch]
2015-03-10 15:35:17 -04:00
Saul Abreu
79a26091bf Fixed behavior on FString::ParseIntoArray (muliple delimiters overload) functionality to support optionally culling empty strings. Greatly simplified implementation logic. Output parameter now properly named and taken by reference.
#codereview Steve.Robb, Robert.Manuszewski

[CL 2466824 by Saul Abreu in Main branch]
2015-03-02 15:51:37 -05:00
Matthew Griffin
b72d8c4683 [INTEGRATE] Change 2432062 by Jamie.Dale@Pitbull_JDaleReleases on 2015/02/04 13:56:41
Improved and unified the folder drag and drop validation in the Content Browser

	UE-9025 - User gets green check mark when trying to move class into content folder

	The Content Browser folder drag and drop validation had not been updated to handle class folders. This meant that it was possible to crash the editor by dragging class folders around, and also meant that you were given misinformation when trying to copy a class around.

	I've unified all the duplicated logic from SPathView, SAssetView, SAssetTreeItem, and SAssetViewItem into utility functions inside a new DragDropHandler in the Content Browser. This class correctly validates that you can only interact with assets and asset paths, but doesn't outright prevent you being able to include classes and class paths in your drag operations (it just warns you about them, and the strips them out of the drop lists).

[CL 2438229 by Matthew Griffin in Main branch]
2015-02-09 11:42:01 -05:00
Jason Hoffman
479ddc5a2a UE-7132 Renaming folders with subfolders breaks the content browser
[CL 2423885 by Jason Hoffman in Main branch]
2015-01-29 11:44:43 -05:00
Ben Marsh
3292bc5680 Fix for merge: bNeedsRepopulate doesn't exist any more in main (presumably doesn't need resetting).
#codereview Jamie.Dale

[CL 2419633 by Ben Marsh in Main branch]
2015-01-26 19:40:14 -05:00
Ben Marsh
fe46bfae17 [INTEGRATE] Change 2415260 by Jamie.Dale@Pitbull_JDaleReleases on 2015/01/22 09:06:57
Sorted content before classes, and modules in the order game -> engine -> plugins

	UE-7184 - Show game c++ classes and engine c++ classes in the content browser

	Also renamed "Game C++ Classes" to just "C++ Classes", and "Game Content" to just "Content" based on previous feedback.

[CL 2419539 by Ben Marsh in Main branch]
2015-01-26 19:05: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
Richard TalbotWatkin
0d7bd833b7 Removed deferred populate in SPathView::Construct, so that containing widgets (e.g. SPathPicker) are able to set selection in their Construct, without it being cleared the following frame by the populate.
#jira UE-7054 - When saving a level, the current content browser path is not correctly displayed in the save level window

[CL 2402121 by Richard TalbotWatkin in Main branch]
2015-01-09 13:41:34 -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
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
Ben Marsh
149375b14b Update copyright notices to 2015.
[CL 2379638 by Ben Marsh in Main branch]
2014-12-07 19:09:38 -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
Wes Hunt
31e2bb00ac Removed a bunch of stuff from Slate standard include, created SlateBasics.h
* Moved Slate.h into SlateBasics.h and began shifting less commonly used headers into SlateExtras.h.
* Slate.h now simply includes SlateBasics.h and SlateExtras.h.
* Slate.h includes a deprecated warning now to indicate that SlateBasics.h + specific includes should be used instead.
* Moved dozens of inlined functions using Slate widgets into .cpp files to avoid header dependencies.
* All code samples now include SlateBasics.h and SlateExtras.h so future shifts will not break most those projects, but not trigger the deprecation warning of including Slate.h.
#BUN

[CL 2329610 by Wes Hunt in Main branch]
2014-10-14 22:50:06 -04:00
Bob Tellez
2e157a8324 UE4: Clicking on a folder in any SPathView in the editor will now prioritize discovering assets in that folder. Also fixed a performance problem when discovering paths in the project initially.
[CL 2291316 by Bob Tellez in Main branch]
2014-09-09 16:00:20 -04:00
Bob Tellez
3511f61578 UE4: Added support for removing dynamic mount points. Added more information to the OnContentPathMounted delegate as well.
[CL 2283325 by Bob Tellez in Main branch]
2014-09-03 15:23:12 -04:00
Bob Tellez
c05cb2e709 UE4: All path views are now affected by the "Show Engine Content" checkbox (and show developers and show plugins), not just path views found in content browsers.
[CL 2268137 by Bob Tellez in Main branch]
2014-08-22 18:41:07 -04:00
Andrew Brown
1b2040bf7b Folder Rename can now be done in the Content Browser Path View
#ttp 342267 - Editor Usability: Select a folder in Content Browser and pressing F2 to rename it, triggers a rename of an actor or asset instead!

#branch UE4

SContentBrowser
Added functions for Can/Execute Rename/Delete which forward to the active context menu
Moved Rename/Delete bind commands to the content browser, so it can forward the request to the correct context menu
(this was necessary as it wasn't possible to bind to both context menus without the code complaining about it already being bound)
Modified GetFolderContextMenu to take an extra param to indicate whether it was the path view or asset view which called it - it then uses this to clear the asset view selection when the path view context menu is requested - we can then use the selection information to determine which context menu was opened later on when processing rename/delete (ideally it should clear when the path view recieves focus, but that's harder to determine).

FAssetContextMenu
Made Can/Execute Rename/Delete public - so they can be called by the Content Browser
Removed BindCommands as it's no longer needed
Removed condition for adding Rename to the menu, as it now always is and is greyed out if not possible.

FPathContextMenu
Added delegate for when rename folder is requested - the same as FAssetContextMenu
Added handling for whether folder renaming is possible, and executing.
Removed condition for adding Rename to the menu, as it now always is and is greyed out if not possible.
Fixed issue with Delete not mapping to keyboard shortcut

SPathView
Added function to rename folder (similar to SAssetView)
Fixed issue with VerifyFolderNameChanged not generating the correct path when checking to see if a folder exists (it was previous just checking to old path - which would always return true).
Modified FolderNameChanged to take 'OldPath' as a param (inline with the delegate change). This function is called when a folder is created or renamed... if it's the latter it has to handle moving the contents of the folder to the new location, which it could only do if it knew where the previous location was (again, similar to SAssetView)

SAssetTreeItem
Added extra param to FOnNameChanged (OldPath) - so we can move assets when a folder is renamed

FTreeItem
Renamed variable bNewFolder to bNamingFolder - as it's true whenever the folder is being named, not just when it's new

reviewed by Thomas.Sarkanen

[CL 2239648 by Andrew Brown in Main branch]
2014-08-01 05:51:26 -04:00
Thomas Sarkanen
f42f5d0781 Fix branching creating multiple files
Branching of files needed to be removed (by Bob Tellez) as it was causing crashes and mutiple duplicate files to show up in the content browser. This fix re-instates working branches in the Editor.
The idea is that we now do the copy/duplicate/rename operations first, then perform the 'branch' once the files are finished with by the Editor. This keeps the asset registry & directory watcher systems happy & leaves the issue of branching to source control alone.
Because of the way SVN copy works, the SVN verison of this is slightly icky. SVN copy does not allow a branch-copy over an existing file in the workspace (even if not under source control), so we have to move the file into a temp directory, do the copy, then re-move the file back over the top of its old location.

TTP# 334923 - EDITOR: Perforce Integration (Move -> Delete + Add instead of Integrate)

reviewed by Max.Preussner,Bob.Tellez,Matt.Kuhlenschmidt

[CL 2180124 by Thomas Sarkanen in Main branch]
2014-07-09 06:31:13 -04:00
Ben Marsh
de9c0853bf Add an toggle for showing plugin content, and disable it by default.
[CL 2124821 by Ben Marsh in Main branch]
2014-07-02 13:18:43 -04:00
Tim Sweeney
324683ce78 Engine source (Main branch up to CL 2026164) 2014-03-14 14:13:41 -04:00