Commit Graph

30 Commits

Author SHA1 Message Date
Robert Manuszewski
8fe5db30e3 Merging UE4-Streaming to UE4
- Linkers are no longer UObjects. Renamed ULinker, ULinkerLoad and ULinkerSave to FLinker, FLinkerLoad, FLinkerSave respectively
- Linkers are now associated with their UPackages
- Linker version is now stored in UPackages
- Async loading is now performed on a separate thread (if platform supports it and only in cooked builds), with the exception of PostLoad which is still done on the game thread
- Added UObject::IsPostLoadThreadSafe() function to determine if PostLoad is thread safe and can be executed on the async loading thread (defaults to false)
- UObject creation is now thread safe and can be performed on any thread
- Move many of the linker/UObject globals into FUObjectThreadContext (TLS)
- GetAsyncLoadPercentage() now takes PostLoad into account
- More async loading stats
- Added AtomicallySetFlags/ClearFlags to UObject
- Made FModuleManager thread safe.
- Added FGCScopeGuard as means of preventing GC from executing from non-game thread
- It's possible to disable async loading thread through ini settings.
- Cancelling async loading will now also trigger GC
- Implemented a basic version of async streaming priorities.

Change 2410813 by Mikolaj Sieluzycki:
	Change Sleep in while loop to ConditionalSleep in FMultiReaderSingleWriterGT
Change 2410734 by Mikolaj Sieluzycki:
	Make FModuleManager thread safe.
Change 2399879 by Mikolaj Sieluzycki:
	Basic version of async streaming priorities.
Change 2410707 by Mikolaj Sieluzycki:
	Implement conditional and no stat versions of sleep.
Change 2371939 by Robert Manuszewski:
	Async Loading Improvements: adding more stats (accumulators)
Change 2372403 by Robert Manuszewski:
	Fixing compile errors when STATs are not enabled
Change 2371526 by Robert Manuszewski:
	AsyncLoading Improvements (WIP)
Change 2407198 by Robert Manuszewski:
	Re-implementing delegate fixes for Async Loading
Change 2407425 by Robert Manuszewski:
	Re-implementing cancelling async loading in the async loading branch.
Change 2484362 by Robert Manuszewski:
	Making it possible to disable async loading thread through ini settings.
Change 2484744 by Robert Manuszewski:
	Minimizing locks in GC and other threads when handling UObjects
Change 2480190 by Robert Manuszewski:
	Fixing infinite stall after canceling async loading in non-cooked builds
Change 2484268 by Robert Manuszewski:
	Fixing crash when allocating permanent object pool.
Change 2489761 by Robert Manuszewski:
	Fixing BulkData using linker archive on the main thread even if the linker was created on the async loading thread.
Change 2493624 by Robert Manuszewski:
	Cancelling async loading will now also trigger GC
Change 2487881 by Robert Manuszewski:
	Making ShaderIdMap operations thread safe.
Change 2488067 by Robert Manuszewski:
	Fixing GetAsyncLoadPercentage. It will now also respect PostLoad.
Change 2458640 by Robert Manuszewski:
	Fixing crash in PIE
Change 2458825 by Robert Manuszewski:
	Fixing a few crashes when streaming and the package is missing.
Change 2476935 by Robert Manuszewski:
	Fixing crash while async loading ANavigationData
Change 2477361 by Robert Manuszewski:
	Fixing crashes in cooked game
Change 2480095 by Robert Manuszewski:
	Making FUObjectArray more thread safe
Change 2475443 by Robert Manuszewski:
	Re-enabling single-threaded async loading path for the editor and platforms that don't support multithreading.
Change 2475458 by Robert Manuszewski:
	Making sure bulk data is only loaded on a separate thread if it's not being loaded on the async loading thread.
Change 2476661 by Robert Manuszewski:
	Fixing FlushAsyncLoading not flushing everything
Change 2401089 by Jaroslaw Surowiec:
	Core - Added AtomicallySetFlags/ClearFlags to UObject, added a comment to ThisThreadAtomicallyClearedRFUnreachable

[CL 2498249 by Robert Manuszewski in Main branch]
2015-04-01 03:03:18 -04:00
Todd Eckert
79e183780f Merging Dev->Main up to CL#2479653 using UE4-Fortnite-To-UE4.
*because of tons of changes, I will supply the changelists in the email because it was too large for this checkin*

[CL 2483008 by Todd Eckert in Main branch]
2015-03-18 10:12:32 -04:00
Matthew Griffin
a11dd1c9a9 [INTEGRATE] Change 2430066 by Jamie.Dale@Pitbull_JDaleReleases on 2015/02/03 11:54:22
Stopped the "Compiling C++ Code" message in the editor MainFrame always having a cancel button

	FModuleCompilerStartedEvent now passes a bool to say whether the hot-reload/compile operation is being run async, or whether it's blocking. We now only show the cancel button for async compiles, as the UI is otherwise blocked waiting for the compile to finish.

	Added a bWaitForCompletion input parameter to DoHotReloadFromEditor. This mirrors the RebindPackages API that DoHotReloadFromEditor internally calls, and prevents UPackFactory needing to perform a manual tick.

[CL 2437789 by Matthew Griffin in Main branch]
2015-02-09 06:44:30 -05:00
Richard TalbotWatkin
b047ebfd79 Removed source control icon from top-right of MainFrame.
#codereview Matt.Kuhlenschmidt

[CL 2411057 by Richard TalbotWatkin in Main branch]
2015-01-19 12:52:01 -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
Ben Marsh
149375b14b Update copyright notices to 2015.
[CL 2379638 by Ben Marsh in Main branch]
2014-12-07 19:09:38 -05:00
Michael Trepka
3a68c44033 Fixed a problem with notification windows not accepting input on Mac if focus was changed to other notification window, causing Slate to think the previous one is no longer on top of the main window.
#codereview Mark.Satterthwaite

[CL 2347161 by Michael Trepka in Main branch]
2014-11-03 11:31:09 -05: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
Robert Manuszewski
96071afb2d Hot-reload: performing hot-reload when there's been no code changes will no longer result in producing new DLLs.
#ttp 345522: HotReload: Should not try to link DLLs when target is up to date

#change Added code to handle up-to-date state of modules in hot-reload code.
#change Added ECompilationResult::UpToDate and ECompilationResult::Canceled, ECompilationResult::Failed()
#change UBT: added -canskiplink command line param and support for skipping link actions when there was nothing to compile
#change extended the duration of re-compile notifications (TTP# 346604 NUXF-246 Hot compile fail message fades)
#change Added 'Compile Canceled' notification (instead of 'Compile Failed')

[CL 2302307 by Robert Manuszewski in Main branch]
2014-09-18 08:10:17 -04:00
Max Preussner
1dad4bfdb1 Editor: Grouped Editor Preferences, Project Settings and Plugin Editor into same tab window
[CL 2301420 by Max Preussner in Main branch]
2014-09-17 15:22:14 -04:00
Ori Cohen
250f4c537d visual polish on super search
[CL 2298778 by Ori Cohen in Main branch]
2014-09-15 17:27:50 -04:00
Ben Marsh
d591804587 Move hot reload functionality from Core into the HotReload module. Precursor to removing assumptions about IS_MONOLITHIC and supporting hybrid monolithic configurations.
[CL 2286426 by Ben Marsh in Main branch]
2014-09-05 12:46:22 -04:00
Matt Kuhlenschmidt
508e862ad5 Enable search for help by default
[CL 2284538 by Matt Kuhlenschmidt in Main branch]
2014-09-04 10:50:07 -04:00
Dan Oconnor
81fe6cf774 Files are now backed up when merge begins, merge window correctly docks with blueprint editor by default
[CL 2281474 by Dan Oconnor in Main branch]
2014-09-02 10:15:49 -04:00
Dmitry Rekman
11fc16e5ce Use SSpacer instead of NullWidget.
Advised by crackpots (NickA).

#codereview Nick.Atamas

[CL 2267005 by Dmitry Rekman in Main branch]
2014-08-22 01:22:01 -04:00
Mike Fricker
b678b51efd Added editor notification when automatic hot reload completes
[CL 2264535 by Mike Fricker in Main branch]
2014-08-20 13:58:31 -04:00
Andrew Rodham
1a1cc8ee53 Reworked the new project dialog
* Categorized templates into Blueprint/C++ templates and organized them into tabs
 * New categories can be specified in the templatedefs.ini file of a template project using a Category tag:
         Category=NewCategory
 * New category types can be registered with a proper description and icon in code through FGameProjectGenerationModule::RegisterTemplateCategory.
 * Added preview images to templates
 * Generally tidied the UI

This addresses TTP#321302 - EDITOR: Project Browser: Reduce Thumbnail size of Templates
Reviewed by Matt.Kuhlenschmidt

[CL 2260660 by Andrew Rodham in Main branch]
2014-08-18 06:48:04 -04:00
Dmitry Rekman
da83b33c64 Allow lack of UI support in SourceControl module.
This is currently needed for Linux where SourceControl is expected to work headless and thus does not normally depend on Slate. Should be solved differently.

#codereview Matt.Kuhlenschmidt, Nick.Atamas

[CL 2256415 by Dmitry Rekman in Main branch]
2014-08-14 15:46:44 -04:00
Andrew Brown
3e36a9b69e Added RecordEvent that takes a single FAnalyticsEventAttribute
Removed StartSession/RecordEvent that took multiple params (should use the array overloads instead), fixedup usage

[CL 2228325 by Andrew Brown in Main branch]
2014-07-23 08:25:14 -04:00
Ori Cohen
98c49e382c Add SuperSearch module
[CL 2222237 by Ori Cohen in Main branch]
2014-07-17 11:10:03 -04:00
Mark Satterthwaite
118d2692ec Remove usage of Cocoa's child-window mechanism, it just doesn't do what we want. Instead set tear-out or panel-style windows to the floating-window level but be otherwise normal windows. They will appear in Expose/Spaces/Mission Control & the window cycling. Modal windows are treated slightly specially to ensure that the last shown modal window currently still open remains on top and attempts to change focus fail with visual indication. The code to detect the current window under the cursor has also been necessarily changed to handle all this.
#codereview michael.trepka

[CL 2124692 by Mark Satterthwaite in Main branch]
2014-07-02 12:03:42 -04:00
Jamie Dale
d7d792bab9 Asset editors docked into the MainFrame area will now correctly restore to that area when next re-opened
TTP# 338363 - When I relaunch the editor it reopens the items in the wrong place.

IÆve added a "DockedToolkit" tab which resides next to the "LevelEditor" tab. This is used for two purposes; firstly, it can be used to identify asset editors that have been dragged into the MainFrame, and secondly, it's used as a marker (akin to the "StandaloneToolkit" tab) to restore the asset editor to the correct place.

When an asset editor is closed, an entry is added to the GEditorUserSettingsIni file so that FAssetEditorToolkit::InitAssetEditor can restore the asset editor to either the "DockedToolkit" or "StandaloneToolkit" area.

ReviewedBy Thomas.Sarkanen
#codereview Max.Preussner

[CL 2124274 by Jamie Dale in Main branch]
2014-07-02 07:32:53 -04:00
Mike Fricker
387280333f Work in progress: Live streaming support for editor and games
This commit adds the framework APIs, editor and rendering features needed to support live streaming.  Along with this, we're working on a new plugin that adds Twitch.tv support (waiting for legal approval to commit.)

- Game live streaming
       - Allows general support for live internet streaming of game video and audio
       - Web cam video feed can be overlaid onto game viewports automatically
       - New 'Broadcast' Blueprint function library allows you to easily start broadcasting from your game
       - New IGameLiveStreaming API that allows you to start broadcasting through C++

- Editor live streaming
       - The editor UI now displays a "broadcast" button automatically when a live streaming service is available
       - Broadcasting of all desktop editor windows is supported (configured in preferences)
       - If you have a web cam, video will be displayed automatically while broadcasting in a new editor window
       - New "Live Streaming" editor preference tab with many new settings for configuring broadcasting
       - New IEditorLiveStreaming API that lets you control editor broadcasting directly, if needed

- Added new 'Broadcast.Start' and 'Broadcast.Stop' console commands
       - These allow you to easily test live streaming in games without writing UI code
       - Built-in help is available for these new commands

- To implement a live streaming plugin:
       - Inherit from the new ILiveStreamingService interface
       - Register your "LiveStreaming" feature with the IModularFeatures system

- Other changes:
      - Eliminated broken screen quad drawing functions; replaced with publicly-exposed DrawRectangle()
      - Slate: Eliminated legacy code for 'marking windows as drawn' (not used anymore)
      - Slate: Added Slate rendering callback to find out when a frame buffer is ready to be presented

[CL 2115377 by Mike Fricker in Main branch]
2014-06-24 12:11:51 -04:00
Max Preussner
3aece47882 Docs: Removed file comments and added missing code documentation
Please note that file comments had no purpose in nearly all cases and just added visual clutter. The two files that had meaningful file comments had their comments moved into the corresponding classes. There are still hundreds of file comments left in other files that will be removed over time.

Also cleaned up some random stuff along the way:
- relative paths to public headers within the same module are no longer necessary (automatically discovered by UBT now)
- header guards are deprecated, use #pragma once instead (all compilers support it now)
- space between multiple template brackets is no longer required (all compilers support >> now)
- NULL to nullptr, OVERRIDE to override
- spelling errors, whitespace, line breaks

[CL 2104067 by Max Preussner in Main branch]
2014-06-12 23:22:18 -04:00
Max Preussner
c9d85971be Editor: refactored FLayoutService to be INI file agnostic; moved Editor layout from EditorUserSettings.ini to EditorLayout.ini
I also added code to retain backwards compatibility. Existing settings from EditorUserSettings.ini will be migrated to EditorLayout.ini

#CodeReview: nick.atamas, matt.kuhlenschmidt

[CL 2074798 by Max Preussner in Main branch]
2014-05-15 17:34:02 -04:00