* moved UMassProcessor's inlines to the end of the header to keep the API look clean
* moved the virtuals defined in the header over to the cpp
* comments spellig fixes and improvements.
#rb mieszko.zielinski
[CL 36426024 by mieszko zielinski in 5.5 branch]
Also:
* marking processors that were removed by the dependency solver as garbage, while WITH_MASSENTITY_DEBUG, which helps MassDebugger's processor view's readability
* minor touches to MassProcessor. Moved some bools around, converted them to bitfields, removed deprecated stuff.
* this reduced the size of MassProcessor by 16 bytes.
#rb Yoan.StAmant
[CL 36381243 by mieszko zielinski in 5.5 branch]
* FMassEntityView::HasTag(const UScriptStruct&) made public
* FMassArchetypeSharedFragmentValues.ReplaceSharedFragments added, allows replacing existing elements of FMassArchetypeSharedFragmentValues
* UMassActorSpawnerSubsystem.DestroyActor made virtual
* FMassArchetypeData.GetOrAddChunk added and existing code updated to reuse it
* FMassArchetypeData.SetSharedFragmentsData added, allows changing shared fragment values of a single entity, moving it to the appropriate chunk in the process
#rb Yoan.StAmant
[CL 35918314 by mieszko zielinski in ue5-main branch]
* Lazy initialize the first page of FEntityData and, by extension, the free index list
#rb Mieszko.Zielinski
[CL 35831026 by logan buchy in ue5-main branch]
* Enable Mass Concurrent Reserve feature for general runtime
* CVars added to revert back to previous implementation and to control memory usage of entity lookup datastructure
- "Mass.ConcurrentReserve.Enable"
- "Mass.ConcurrentReserve.MaxEntityCount"
- "Mass.ConcurrentReserve.EntitiesPerPage"
* Allows deprecation/removal/cleanup of single threaded implementation
#jira UE-220885
#rb Mieszko.Zielinski
[CL 35287298 by logan buchy in ue5-main branch]
* DynamicTags are mechanism to add attributes to rows that are cheaply filterable without incurring the per-row memory and processing cost to perform the filtering.
* Current capabilities allow filtering on a single DynamicTag value or all values.
* DynamicTags are mutually exclusive on a row. For example, a row can be assigned a `DynamicTag("Color") { "Red" }` and `DynamicTag("AssetType") { "StaticMesh" }` but cannot be subsequently assigned a DynamicTag("Color") { "Blue" }
* Under the hood, they are implemented using Shared Fragments in Mass. TEDS generates a Shared Fragment type dynamically for each unique FDynamicTag that is given to it. Each type contains an FName value which can be filtered. The Shared Fragments are attributes of the chunk that the entities belong to rather than the entity data itself. A special ChunkFilter function is crafted to skip whole chunks that do not conform to filters that TEDS has set up.
Debug commands have been added to test and explore the feature.
`Teds.Debug.CreateRow` - Creates a row and prints the row ID to the console
`Teds.Debug.DynamicTag.AddColumn Row Tag Value` - Adds a DynamicTag of type <Tag> to the given <Row>. Sets the tag's value to <Value>
`Teds.Debug.DynamicTag.RemoveColumn Row Tag` - Removes a DynamicTag of type <Tag> column from the given <Row>
`Teds.Debug.DynamicTag.RunQuery Tag [Value]` - Runs a query that matches all rows with <Tag>. Optionally, will match only Tags with the given <Value>
`Teds.Debug.DynamicTag.AddWithEnum Row Value` - Adds a DynamicTag using the ETedsDebugEnum enum to the given <Row>. Sets the tag's value to <Value> - it must be one of the enums
`Teds.Debug.DynamicTag.RemoveWithEnum Row` - Removes a DynamicTag using the ETedsDebugEnum from the given <Row>
`Teds.Debug.DynamicTag.RunQueryEnum [Value]` - Runs a query that matches all rows with a dynamic tag generated from ETedsDebugEnum. Optionally, will match only Tags with the given <Value>
#rb ronald.koppers
#jira UE-220130
[CL 35228563 by logan buchy in ue5-main branch]
[FYI] Bryan.Johnson
Original CL Desc
-----------------------------------------------------------------
[Backout] - CL35079176
[FYI] Mieszko.Zielinski
Original CL Desc
-----------------------------------------------------------------
Moved the rest of MassEntity modules over to the Engine's Source/ code.
#jira UE-216267
[CL 35087666 by bryan johnson in ue5-main branch]
[FYI] Mieszko.Zielinski
Original CL Desc
-----------------------------------------------------------------
Moved the rest of MassEntity modules over to the Engine's Source/ code.
#jira UE-216267
[CL 35087231 by bryan johnson in ue5-main branch]
The issue also caused failure of the System.Mass.SharedFragments.RemoveFromEntity unit test.
#rb mieszko.zielinski
[FYI] logan.buchy
[CL 35078496 by mieszko zielinski in ue5-main branch]
* Some care taken to remove null SharedStructs when removed from the MassArchetypeSharedFragmentValues class. FMassArchetypeSharedFragmentValues::CalculateHash would return different hash value if nulls present resulting in unnecessary new chunks in FMassArchetypeData::AddEntityInternal
#rb Mieszko.Zielinski
#jira UE-220081
[CL 35059358 by logan buchy in ue5-main branch]