Commit Graph

48 Commits

Author SHA1 Message Date
Matthew Griffin
bb70b349ce Merging CL 2804086 from //UE4/Release-4.11 to Dev-Main (//UE4/Dev-Main) to isolate copyright update
#lockdown Nick.Penwarden

[CL 2819020 by Matthew Griffin in Main branch]
2016-01-07 08:17:16 -05:00
Nick Darnell
b98c648c14 Copying //UE4/Dev-Editor to //UE4/Main
==========================
MAJOR FEATURES + CHANGES
==========================

Change 2756103 on 2015/11/05 by Jamie.Dale

	Implemented UFont::GetResourceSize to work correctly with the Size Map tool

Change 2756104 on 2015/11/05 by Jamie.Dale

	Changed the font used when a font is missing or invalid to be the last resort font, rather than the localized fallback font

	The localized fallback font could cause different results based on your culture, and the last resort font makes it clearer that something is set-up incorrectly as it just draws invalid glyph markers for all of the text.

Change 2756105 on 2015/11/05 by Jamie.Dale

	Fixed a crash when using an empty FKey property with a Data Table

	FKeyStructCustomization was asserting because there were no objects being edited, due to a newly added Data Table containing zero rows.

	I've removed this assert, and also updated SKeySelector to no longer require a separate argument to say whether multiple keys with different values are selected (this is now calculated from the call to get the current key, which will return an empty TOptional for multiple values).

	#jira UE-22897

Change 2757015 on 2015/11/06 by Joe.Tidmarsh

	SSProgressBar marquee tint. Accounts for widget color and opacity.

	PR #1698

Change 2757156 on 2015/11/06 by Joe.Tidmarsh

	Implemented "Go to Variable" functionality for widgets in Widget Blueprint Editor.

	When we switch modes in UMG from Designer to Graph. We select the variable (In "My Blueprint"), if one exists, for the currently selected widget. Additionally we update the details panel.

	* Added SelectGraphActionItemByName to FBlueprintEditor. This selects an item in My Blueprint and also displays it in the details panel of graph mode. SMyBlueprint is not available to FWidgetBlueprintEditor in UMGEditor module as it's privately implemented within Kismet.

	#rb Ben.Cosh
	#jira UE-20170

Change 2757181 on 2015/11/06 by Jamie.Dale

	Cleaned up some duplication in UMG text widgets, and exposed the text shaping options

	The common properties used by all text widgets that are text layout based have been moved into a UTextLayoutWidget base class, and all text layout based widgets now derive from this.

	The options needed to control the text shaping method used by a text based widget have been exposed via the FShapedTextOptions struct. This contains a way to manage these optional (and advanced) overrides. You typically wouldn't change these from the default unless you knew exactly what you were doing (eg, you have a text block containing only numbers).

	This change also updates SRichTextBlock to work with an invalidation panel in the same way that STextBlock does

Change 2757734 on 2015/11/06 by David.Nikdel

	#UE4 #Editor
	- Added support for meta=(TitleProperty="StructPropertyNameHere") on properties of type TArray<FSomeStruct>.
	- This changes the editor rolled-up display of these values from "{0} members" to a stringified version of the specified property (if found).
	#CodeReview: Matt.Kuhlenschmidt

Change 2758786 on 2015/11/09 by Joe.Tidmarsh

	Border widget now correctly synchronizes padding property
	#jira UE-23070

Change 2758791 on 2015/11/09 by Joe.Tidmarsh

	Shadow of FCanvasTextItem should be drawn before the outline color. Consulted with Bruce.N who believes this is not the intended behavior and was an oversight when refactoring FCanvas (CL 1695138)

	#jira UE-21623
	#1608

	#rb Simon.Tovey, Bruce.Nesbit

Change 2758813 on 2015/11/09 by Joe.Tidmarsh

	UMG: Attempting to parent multiple widgets (in Hierarchy tree)  to a widget that can't have multiple children will notify the user and ignore the operation.
	[UE-22921] [CrashReport] Parenting multiple actors under border crashes editor
	#jira UE-22921

Change 2759234 on 2015/11/09 by Nick.Darnell

	Slate - Improving the way we track references to materials in slate to better keep things alive until they're no longer needed for rendering.  Additionally, making it so the we use the material and texture free list when possible when cleaning up things as to not allocate new memory if not required.  Concidentually this can help with problems with corrupted memory on destruct as well, because it means the memory isn't really going to become garbage any more.

	#codereview Matt.Kuhlenschmidt, Bob.Tellez

Change 2760954 on 2015/11/10 by Nick.Darnell

	Slate - A bug in the introduction of custom rendered elements accidentally broke filling out the texture coordinates for standard material usage.  Materials should once again tile correctly just like images do.

	#jira UE-23118

Change 2761129 on 2015/11/10 by Nick.Darnell

	Slate - Removing the Pre-Multiply alpha path the way it was added, introducing it in a way that doesn't require changes inside the shader.  Continuing to improve the SRetainerWidget to no longer have a frame delay between resizes and painting, also working on getting it handle clipping correctly but still not there yet.

Change 2761391 on 2015/11/10 by Alexis.Matte

	jira UE-20281 and UE-22259
	Fbx scene Re-import workflow
	- First draft of the reimport workflow using a reimport asset in the content browser

	#codereview nick.darnell

Change 2762323 on 2015/11/11 by Alexis.Matte

	fix build compilation

Change 2762407 on 2015/11/11 by Jamie.Dale

	UDataTable::SaveStructData now writes out dummy data when RowStruct is null

	This didn't used to happen, which would cause a miss-match between what UDataTable::LoadStructData was expecting, and would result in a Data Table that could never be loaded again.

	This change also improves the error message when editing a Data Table with a null row struct, and adds the editor-only RowStructName property to cache the name of the last used struct (for error reporting).

	#jira UE-22789

Change 2762508 on 2015/11/11 by Nick.Darnell

	UMG - Making it more obvious what keys do special stuff with anchors in UMG.  Fixing the way snapping to anchors works with Control, it now only zeros out the side you're dragging instead of the entire widget, which was silly.  Enhancing the designer message system to no longer be based on an enum and instead let arbitrary systems push and pop FText messages.  Fixing animations in the anchor drop down to properly animate, broke when we introduced active timers.

Change 2763241 on 2015/11/11 by Nick.Darnell

	Slate - We no longer allow popup windows to be larger than the primary display window for windows where max width/height is unspecified.  This is to prevent accidential creation of tooltip windows that are larger than the driver allows causing crashes.

	#jira UE-20336
2015-12-12 08:54:23 -05:00
Aaron McLeran
bb31416059 New feature for defining grouped max concurrency rules
Overview:
- Created a new UObject: USoundConcurrency
- Defines concurrency behaviors and allows for different USoundBase assets (e.g. SoundWave's, SoundCues) to be a part of the same concurrency group.
- This feature will allow a number of powerful techniques to limit and control the number of sound assets which can play concurrently

Details and Additional Related Features:
- USoundBase's not specifying an override or a USoundConcurrency ref will result in no concurrency limits.
- Added support to existing static gameplay functions to provide an optional argument to override the USoundConcurrency of a sound at the point of playing
- Added a few new concurrency resolution rules: Resolve based on priority and Resolve based on volume
- Volume based concurrency resolution is implemented slightly different than the others due to the fact that it's complex/expensive to compute an active sound's volume before it plays due to SoundCue graph traversal. Thus, this step is made after a sound is already made it through one update of the SoundCue graph.
- It's now possible to limit max concurrency (both in groups and per-sound-instance) to the "owner" of a sound. This way different characters/actors can use the same USoundConcurrency ref but have different max-concurrency counts. With this technique, you can, for example, limit dialogue lines per actor without needing to make a USoundConcurrency object for each actor.
- A new optional concurrency behavior was also added at a suggestion from the Epic audio team: the ability to attenuate a sound based on the instance count of a sound in its concurrency group. I.e. as more sounds play in a concurrency group, the sound instances get quieter.

Backwards Compat:
- The old way limited sounds per USoundBase instance (and not different ones). You can recover this behavior by specifying an "Override" settings structure on the USoundBase. When you do this, the feature will only limit sound concurrency per instance and not per group. All existing assets with MaxConcurrency settings will fallback to this behavior.
- The default USoundBase behavior for new USoundBase objects is the same as the old behavior - i.e. max limit of 16 and non-grouped (i.e. will be an override)

#codereview marc.audy

[CL 2706947 by Aaron McLeran in Main branch]
2015-09-25 17:58:14 -04:00
Matt Kuhlenschmidt
3100f0b2b9 Fix a crash when importing multiple objects with the same name at the same time when one of them is an FBX file.
https://jira.ol.epicgames.net/browse/UE-18687

[CL 2624497 by Matt Kuhlenschmidt in Main branch]
2015-07-17 13:17:31 -04:00
Jamie Dale
b97258a833 Fixed Paper2D JSON files no longer importing as Paper2D assets
Data Tables can now import from JSON, and this was taking priority over the Paper2D importers. There were a few issues here:

1) FAssetTools::ImportAssets wasn't respecting the priority of the import factories, and was just testing them in the order they were found.
    a) UCSVImportFactory needed to be given a lower than normal priority so it gets tested last as it will perform a catch-all match.

2) FAssetTools::ImportAssets will default to the first factory it finds, and then use FactoryCanImport to try and find a better match, however FactoryCanImport returns false by default, so...
    a) UPaperSpriteSheetImportFactory needed to implement FactoryCanImport to avoid sprite sheets being imported as Data Tables.
    b) UCSVImportFactory needed to implement a catch-all FactoryCanImport so it can be used when no other factory is a better match.

#codereview Andrew.Rodham, Michael.Noland

[CL 2608928 by Jamie Dale in Main branch]
2015-07-02 08:42:08 -04:00
Martin Mittring
b14265f94a Improved Blendables, exposed weight on each blendable entry, better blueprint access, Outer=package/object
base for a change to replace all PostProcessSettings with Blendables. See new documentation on blendables.

[CL 2596231 by Martin Mittring in Main branch]
2015-06-22 18:03:15 -04:00
Marc Audy
f6e82cc12c Fix crash when creating unique asset name if the source name was entirely numeric
[CL 2548912 by Marc Audy in Main branch]
2015-05-13 10:16:14 -04:00
Marc Audy
546fdae28a When creating unique asset name, avoid continually appending more numbers and instead increment them.
[CL 2530522 by Marc Audy in Main branch]
2015-04-29 14:08:08 -04:00
Michael Noland
882aee9c55 Content Browser: Added the ability to register new advanced categories without editing engine source
Paper2D: Defined a "Paper2D" category and moved existing asset type actions over

New methods on IAssetTools:
- RegisterAdvancedAssetCategory
- FindAdvancedAssetCategory
- GetAllAdvancedAssetCategories

Upgrade Note: This gets rid of the named extension sections in the filter menu, which should instead be extended via registering a new category.

[UE-13646]
#codereview bob.tellez

[CL 2525743 by Michael Noland in Main branch]
2015-04-25 14:49:25 -04:00
PaulEremeeff
3d878d5a79 PR #996: Fixing PVS-Studio warnings (Contributed by PaulEremeeff)
I have reviewed each change carefully, but it is a large change and I could have missed something! Here is a summary of the types of changes in this CL:
 * Made nullptr checks consistent (the plurality of the changes are of this type)
 * Completed switch statements (IE, switch did not explicitly handle default case, but had unhandled enum entries - this is the second most popular type of fix)
 * Removed unused variables
 * Removed redundant initializations
 * WidgetNavigationCustomization.cpp was fixed by the owner
 * integers converted to floats where result was stored in a float
 * Removed redundent null checks (e.g. before delete statements)
 * Renamed variables to prevent non-obvious shadowing
 * Fixed use of bitwise & when checking for equality to an enum entry (which is often 0)
 * Fixes for some copy paste errors (e.g. FoliageEdMode.cpp)

[CL 2498053 by Dan Oconnor in Main branch]
2015-03-31 20:12:31 -04:00
Michael Noland
73d8625fbb Editor: Added sanitization to the asset name in addition to the package name in FAssetTools::CreateUniqueAssetName
#codereview bob.tellez

[CL 2496012 by Michael Noland in Main branch]
2015-03-30 15:21:59 -04:00
Chris Wood
fea90a7330 Importing multiple assets with the same name no longer crashes the editor.
[UE-1102] - CRASH: Importing an FBX and TGA at the same time causes the editor to crash

[CL 2493461 by Chris Wood in Main branch]
2015-03-27 05:31:50 -04:00
Dan Hertzka
4b350ffd57 [UETOOL-257] - Added an AssetTypeActions for the procedural foliage spawner
[CL 2488354 by Dan Hertzka in Main branch]
2015-03-23 16:50:59 -04:00
Matthew Griffin
a6913887a2 [INTEGRATE] Change 2435229 by bruce.nesbit@bnesbit_Releases on 2015/02/06 08:09:07
Fixed issue with editor layout when inserting feature pack during editor startup
	(Fixes Jira 9223)

[CL 2446729 by Matthew Griffin in Main branch]
2015-02-16 04:26:14 -05:00
Mikolaj Sieluzycki
52c71176ab Rename StaticConstructObject to StaticConstructObject_Internal and use it only in CoreUObject module. Change rest of usages to NewObject.
#codereview Robert.Manuszewski

[CL 2437731 by Mikolaj Sieluzycki in Main branch]
2015-02-09 05:43:45 -05:00
Mikolaj Sieluzycki
fa01cacb6c Trim down the amount of UObject constructors.
#codereview Robert.Manuszewski

[CL 2429641 by Mikolaj Sieluzycki in Main branch]
2015-02-03 05:40:57 -05:00
Ben Marsh
8c040f96f4 [INTEGRATE] Change 2418630 by Jamie.Dale@Pitbull_JDaleReleases on 2015/01/26 10:50:03
Added the concept of "ClassTypeActions" for class asset types (C++ classes and Blueprints)

	UE-7970 - Add small 'play' button to EditorTutorial asset thumbnail

	Class asset types (C++ classes and Blueprints) are now able to provide actions that should be performed based upon the type of class the asset contains, rather than the asset class itself (which is always "Class" or "Blueprint").

	This will allow the editor tutorials to provide class type actions for Blueprints that derive from "EditorTutorial" without requiring this information to be put into the asset type actions for Blueprint assets.

	ReviewedBy Thomas.Sarkanen

[CL 2419736 by Ben Marsh in Main branch]
2015-01-26 20:21:39 -05:00
Jack Porter
db8a6c14e0 Material compiler CustomOutput
Landscape Grass material output node
LandscapeGrassType asset and factory

[CL 2412252 by Jack Porter in Main branch]
2015-01-20 11:04:04 -05:00
Thomas Sarkanen
be75fe1eca Updated revision display to display strings rather than revision indices
API break: added new pure virtual ISourceControlProvider::UsesChangelists()
API break: added new pure virtual ISourceControlState::FindHistoryRevision(const FString&)
API break: added new pure virtual ISourceControlRevision::GetRevision()

Implementing a Git provider requires us to be able to display revisions that are not indices as Git revisions are hashes. This updates the relvant code to allow us to display these revisions correctly.

[CL 2411986 by Thomas Sarkanen in Main branch]
2015-01-20 05:48:14 -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
2152c1c343 Deprecated SCreateNewAssetFromFactory.
#jira UE-7384 - Using "Create New Asset" twice in a row causes an ensure generating the error message

[CL 2403504 by Richard TalbotWatkin in Main branch]
2015-01-12 11:19:20 -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
Richard TalbotWatkin
524d362594 Creating an asset with the same name as one marked for delete no longer prompts for a check in, but just reverts the delete, checks out the package, and creates the new package in place of the old one.
#jira UE-4546 - Creating an asset with the same name as one marked for delete requires a check in

[CL 2345097 by Richard TalbotWatkin in Main branch]
2014-10-30 12:46:57 -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
Andrew Rodham
4ad1b987fc Improved progress reporting in the editor
FScopedSlowTask has been refactored to better allow for nesting of slow operations. This allows us to cascade nested scopes and provide accurate feedback on slow tasks. FScopedSlowTasks now work together when nested inside sub functions. Break up long functions that contain calls to multiple nested FScopedSlowTasks with FScopedSlowTask::EnterProgressFrame().

Example Usage:
void DoSlowWork()
{
    FScopedSlowTask Progress(2.f, LOCTEXT("DoingSlowWork", "Doing Slow Work..."));
    // Optionally make this show a dialog if not already shown
    Progress.MakeDialog();

    // Indicate that we are entering a frame representing 1 unit of work
    Progress.EnterProgressFrame(1.f);

    // DoFirstThing() can follow a similar pattern of creating a scope divided into frames. These contribute to their parent's progress frame proportionately.
    DoFirstThing();

    Progress.EnterProgressFrame(1.f);
    DoSecondThing();
}

This addresses TTP#338602 - NEEDS REVIEW: Editor progress bars nearly always just show 100%, don't offer useful indication of progress

[CL 2322391 by Andrew Rodham in Main branch]
2014-10-08 04:42:34 -04:00