When the level is locked, CanSelectElement evaluates to true, causing Unreal Engine to crash in the following two scenarios:
1. After locking the level, the user clicks on an ISM
2. After locking the level, the user drags the remaining gizmo on an ISM
The cause:
1. FSMInstanceElementLevelEditorSelectionCustomization::CanSelectElement evaluates to true because GEdSelectionLock seems always be false
2. DeselectAllActors in SetLocked does not recursively deselect the ISM components
The fix:
1. Determine whether the owner level is lockedin FSMInstanceElementLevelEditorSelectionCustomization::CanSelectElement
2. Use the typed element selection APIs to clear the current level's selection
#jira UE-181821
#rb
[CL 26000790 by han chu in ue5-main branch]
Adds LandscapeInherited and LandscapeOverridable meta tag to mark shared properties.
Enforce synchronicity between shared properties when editing and loading ALandscape and LandscapeStreamingProxy.
Modifies ALandscapeProxy detail panel to reflect how the properties are shared.
#jira UE-173875, FORT-600500
#rb Jonathan.Bard
#lockdown Marc.Audy
[CL 25992337 by luc eygasier in ue5-main branch]
- Edited Level Instance LevelStreaming now part of the LevelCollectionModel
- Add a IsUserManaged() virtual to LevelStreaming to limit the actions that can be done on some LevelStreaming classes
- LevelInstanceEditorLevelStreaming overrides IsUserManaged() to return false
#rb richard.malo
#preflight 644fad875875c7d4b4c0b3bf
#rnx
[CL 25284134 by patrick enfedaque in ue5-main branch]
GetSharedProperties now only copies material when explicitely specified.
Moves ValidateCombinationMaterial calling code to PostRegisterAllComponents since GetLandscapeMaterial will need the ALandscape link to be valid.
Adds assert to ALandscapeStreamingProxy::GetLandscapeMaterial to enforce the method is not used during postload (to be sure we can always get the parent actor).
Fixes Landscape material assignment in WP.
#jira UE-173875, FORT-499487
#preflight 641b4de225389270b7f984cf
#rb Jonathan.Bard
[CL 24761556 by luc eygasier in ue5-main branch]
- Expanded FDeprecateSlateVector2D to provide structs for parameters, return types and member variables that use FVector2f, while still allowing conversion to/from FVector2d with optional per-module deprecation mechanisms.
- Many of the high-traffic SlateCore types like FSlateBrush, FGeometry and FSlateLayoutTransform have been converted to use these deprecation mechanisms.
- Some legacy FGeometry::ToPaintGeometry and MakeChild overloads have been explicitly deprecated since they cause ambiguous overloads with FSlateLayoutTransform if it were to support implicit construction.
- Deprecated ULocalPlayer::GetPixelBoundingBox and GetPixelPoint to prefer FVector2f for OptionalAllotedSize parameter since this parameter is expected to come from FGeometry
- Exposed FVector2f members to blueprints
#jira none
#rb Andy.Davidson, Dave.Jones, Vincent.Gauthier, Patrick.Boutot
#preflight 63bc6fd068068a8bd6027c9f
[CL 23631073 by Andrew Rodham in ue5-main branch]
- Remove support on single actor packaging mode
#rb jeanfrancois.dube, richard.malo
#preflight 637e224cf514e1ded96d62fd
[CL 23249350 by patrick enfedaque in ue5-main branch]
* Refactored ExportToRawMesh function to allow exporting one mesh section per component
* Implemented support for UV mappings usually provided by the landscape vertex factory in the non-Nanite case (as per the LandscapeLayerCoords material expression + others)
* For Nanite landscape materials, the relevant UV channels are :
** Texcoords0-2 : TerrainCoordMapping_XY, TerrainCoordMapping_XZ, TerrainCoordMapping_YZ (note : TerrainCoordMapping_XZ doesn't work ATM because texcoords1 seems to be a special case...)
** Texcoords3 : WeightmapUV
** Texcoords4 : LightmapUV (not implemented by ExportToRawMesh yet and not supported by Nanite meshes ATM : max 4 UV channels)
** Texcoords5 : HeightmapUV (implemented by ExportToRawMesh but not supported by Nanite meshes ATM : max 4 UV channels)
* Nanite landscape meshes now have 1 polygroup per component, with the proper landscape material instance being assigned to it
* Since Nanite meshes are capped at 64 meshes per section, Nanite landscape mesh will now fail to build on proxies sporting more than this amount of components. This is a first implementation and can be fixed later by adding as many Nanite landscape components as needed
* Implemented some missing virtual overrides on FLandscapeMaterialResource leading to landscape material instances potentially being used for non-landscape usages (hair, etc.)
* Fixed LandscapeNaniteComponent not being attached to the root component (and the mesh being exported in world space coordinates), leading to it not following when moving the actor
* Added NaniteLODIndex property in ALandscape to be able to tweak the LOD level used when generating the Nanite meshes. It's mostly a debug feature to test the LODLevel > 0 landscape mesh export and to accelerate the Nanite landscape mesh generation since you usually want Nanite to be the most defined mesh possible
* All Nanite landscape meshes will be auto-invalidated by this change
#rb roey.borsteinas, graham.wihlidal
#preflight 6365e2a2882365b8590525ac
#lockdown marc.audy
[CL 23069843 by jonathan bard in ue5-main branch]
This change consists of multiple changes:
Core:
- Deprecation of ANY_PACKAGE macro. Added ANY_PACKAGE_DEPRECATED macro which can still be used for backwards compatibility purposes (only used in CoreUObject)
- Deprecation of StaticFindObjectFast* functions that take bAnyPackage parameter
- Added UStruct::GetStructPathName function that returns FTopLevelAssetPath representing the path name (package + object FName, super quick compared to UObject::GetPathName) + wrapper UClass::GetClassPathName to make it look better when used with UClasses
- Added (Static)FindFirstObject* functions that find a first object given its Name (no Outer). These functions are used in places I consider valid to do global UObject (UClass) lookups like parsing command line parameters / checking for unique object names
- Added static UClass::TryFindType function which serves a similar purpose as FindFirstObject however it's going to throw a warning (with a callstack / maybe ensure in the future?) if short class name is provided. This function is used in places that used to use short class names but now should have been converted to use path names to catch any potential regressions and or edge cases I missed.
- Added static UClass::TryConvertShortNameToPathName utility function
- Added static UClass::TryFixShortClassNameExportPath utility function
- Object text export paths will now also include class path (Texture2D'/Game/Textures/Grass.Grass' -> /Script/Engine.Texture2D'/Game/Textures/Grass.Grass')
- All places that manually generated object export paths for objects will now use FObjectPropertyBase::GetExportPath
- Added a new startup test that checks for short type names in UClass/FProperty MetaData values
AssetRegistry:
- Deprecated any member variables (FAssetData / FARFilter) or functions that use FNames to represent class names and replaced them with FTopLevelAssetPath
- Added new member variables and new function overloads that use FTopLevelAssetPath to represent class names
- This also applies to a few other modules' APIs to match AssetRegistry changes
Everything else:
- Updated code that used ANY_PACKAGE (depending on the use case) to use FindObject(nullptr, PathToObject), UClass::TryFindType (used when path name is expected, warns if it's a short name) or FindFirstObject (usually for finding types based on user input but there's been a few legitimate use cases not related to user input)
- Updated code that used AssetRegistry API to use FTopLevelAssetPaths and USomeClass::StaticClass()->GetClassPathName() instead of GetFName()
- Updated meta data and hardcoded FindObject(ANY_PACKAGE, "EEnumNameOrClassName") calls to use path names
#jira UE-99463
#rb many.people
[FYI] Marcus.Wassmer
#preflight 629248ec2256738f75de9b32
#codereviewnumbers 20320742, 20320791, 20320799, 20320756, 20320809, 20320830, 20320840, 20320846, 20320851, 20320863, 20320780, 20320765, 20320876, 20320786
#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: robert.manuszewski
#ROBOMERGE-SOURCE: CL 20430220 via CL 20433854 via CL 20435474 via CL 20435484
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v949-20362246)
[CL 20448496 by robert manuszewski in ue5-main branch]