Releases: needle-mirror/com.unity.entities
Releases · needle-mirror/com.unity.entities
0.17.0-preview.42
[0.17.0] - 2020-11-13
Added
- ISystemBase interface for making struct based systems that allow Burst compiling main thread update
- New UnsafeBufferAccessor struct that permit to un-typed and unsafe access the dynamic buffers pointers.
- New ArchetypeChunk.GetUnsafeAccessor public API that allow to retrieve dynamic buffers unsafe accessors using DynamicTypeHandle.
- safety check in DynamicComponentDataArrayReinterpret that throw an ArgumentException if used to access the component data for IBufferDataElement type
- ComponentSystemBase.TryGetSingleton
- ComponentSystemBase.TryGetSingletonEntity
- Tests for Tiny.UI transformations.
- Added documentation for incremental conversion and dependencies
- New scheduling API for
IJobEntityBatch
which limits the resulting batches to an inputNativeArray<Entity>
- BlobAssetStore. AddUniqueBlobAsset. A much simpler approach to managing blob assets during conversion. BlobAssetComputationContext continues to be the recommended approach for scalable blob asset generation.
- UnsafeUntypedBlobAsset gives a non-generic untyped blob that can be created and later casted to a specific BlobAssetType. This can be used for storing multiple types of blob assets in the same container.
- GameObjectConversionSystem.IsBuildingForEditor returns true when building data that will be loaded by the editor (As opposed to building data that will be loaded by the standalone player). This can be used to strip out editor only debug data.
- GameObjectConversionSystem.BuildConfigGUID returns the GUID of the build config that is used by this conversion context
- Tiny.UI support for 9-Slice (including sprite sheet support)
DynamicSharedComponentHandle
and related methods for accessing shared components without compile time type information.- The public static method
EntitySelectionProxy.CreateInstance
was added. It creates, configures, and returns a valid instance ofEntitySelectionProxy
. - The public static method
EntitySelectionProxy.SelectEntity
was added. It creates, configures, and selects an instance ofEntitySelectionProxy
, without returning it. - All the public properties and methods of
EntitySelectionProxy
have been documented. - Tiny.UI support for text alignment
- Tiny.UI support for multi-line text
- TypeManager will now store whether or not an
ISharedComponentData
is managed or unmanaged. - EntityScenesInBuild class that allows registering EntityScenes that are generated via a custom asset importer into the build. This is used by the Environment system to generate streamable tile data that is generated procedurally from tile inputs.
- New EntityCommandBuffer methods that affect a set of entities matching a query. Unlike existing methods, these new methods 'capture' the entities from the query at record time rather than playback time: the array of entities is stored in the command, and then playback of the command affects all entities of the array. The methods are
AddComponentForEntityQuery(EntityQuery, ComponentType)
,AddComponentForEntityQuery(EntityQuery, ComponentTypes)
,RemoveComponentForEntityQuery(EntityQuery, ComponentType)
,RemoveComponentForEntityQuery(EntityQuery, ComponentTypes)
,DestroyEntitiesForEntityQuery(EntityQuery)
. - EntityManager.Debug.GetEntitiesForAuthoringObject and EntityManager.Debug.GetAuthoringObjectForEntity. They provide a convenient API to map game object authoring & entity runtime representation.
- New
ComponentSystemGroup.EnableSystemSorting
property allows individual system groups to opt out of automatic system sorting. PLEASE NOTE: Certain system update order constraints are necessary for correct DOTS functionality. Disabling the automatic system sorting should be only be a last resort, and only on system groups with full control over which systems they contain. - Entities.WithFilter(NativeArray filteredEntities) allows for filtering with a set of specific entities in addition to the EntityQuery requirements
- Added Live Conversion debug logging to more easily see what is reconverted (enable from the menu
DOTS/LiveLink Mode/Incremental Conversion Logging
)
Changed
- Update burst to 1.4.1.
- Improved the performance of ILPostProcessor type resolution.
- ProcessAfterLoadGroup is now public. This group runs after a subscene is loaded.
Unity.Transforms
systems now useIJobEntityBatch
instead ofIJobChunk
. Expect modest performance gains due to the new job type's lower scheduling overhead, depending on the workload size.- When
DOTS/Live Link Mode/Live Conversion in Edit Mode
is active in 2020.2 or later, conversion is now incremental - Removed deprecated
Entities.ForEach.WithDeallocateOnJobCompletion
. Please useEntities.ForEach.WithDisposeOnCompletion
instead. - Fixed livelink patching for
BlobAssetReference<T>
fields in managed components and shared components. - Updated package
com.unity.platforms
to version0.9.0-preview.15
. TypeManager.Equals
andTypeManager.GetHashCode
performance has been improved when operating on blittable component types.- BlobAsset and entity patching for managed IComponentData & ISharedComponentData now use an early out if the class is known to not contain any blob assets or entity references
- Managed class IComponentData now supports patching of entity references in EntityCommandBuffer.AddComponent.
- Improved EntityManager.GetCreatedAndDestroyedEntities performance by introducing an internal entity creation / destruction version number that is used to early out when calling GetCreatedAndDestroyedEntities
- TypeManger.TypeInfo.Debug has been removed. TypeName has been moved directly into TypeInfo and renamed to DebugTypeName.
- Nested or variant prefabs used in a scene now correctly trigger reimports on subscenes when the parents parent prefab changes
- Update minimum editor version to 2020.1.2f1
EntitySelectionProxy
was streamlined to ensure that its usage does not override inspector locking behaviour and respects the Undo / Redo stack. With the new workflow, there is a 1:1 relationship between an Entity and its EntitySelectionProxy. Static utility methods were added to support this new workflow.- Rename
TypeManager.IsSharedComponent
toIsSharedComponentType
and addIsManagedType
*Enabled generic systems to be instantiated in non-tiny dots runtime - Updated platform packages to version
0.10.0-preview.1
. - Made SystemBase/JobComponentSystem classes partial in preparation of use of Roslyn source generators for code-generation (more to come).
Deprecated
- Forking of
GameObjectConversionSettings
is no longer supported - The public delegate
EntitySelectionProxy.EntityControlSelectButtonHandler
has been deprecated. - The public event
EntitySelectionProxy.EntityControlSelectButton
has been deprecated. - The public method
EntitySelectionProxy.SetEntity
has been deprecated. - The public method
EntitySelectionProxy.OnEntityControlSelectButton
has been deprecated. - The public property
EntitySelectionProxy.EntityManager
has been deprecated. UseEntitySelectionProxy.World.EntityManager
manager instead. This change was made to remove boilerplate checks in the code. - Deprecated
Frozen
component as it is no longer in use
Removed
- Removed deprecated proxy component types. CopyTransformToGameObject, CopyTransformFromGameObject and CopyInitialTransformFromGameObject now use [GenerateAuthoringComponent] instead.
- Removed expired
EntityManager.IsCreated
API - Removed expired API to compare
EntityManager
tonull
(EntityManager
is a struct now) - Removed deprecated types and methods:
NativeArraySharedValue<S>
, implicitEntityQuery
conversion tonull
,ComponentDataFromEntity.Exists
andBufferFromEntity.Exists
,ArchetypeChunkArray.GetComponentVersion
,IJobEntityBatch.ScheduleSingle
,IJobEntityBatch.ScheduleParallelBatch
,EntityManager.LockChunk
,EntityManager.UnlockChunk
,World.AllWorlds
,World.CreateSystem
, allGetArchetypeChunkX
methods,EntityCommandBuffer.ToConcurrent
andEntityManager.CreateChunk
ComponentSystemBase.ExecutingSystemType
has been removed. With the introduction of unmanaged systems, this information has been incorrect. Furthermore, there cannot be astatic
global property for this since multiple worlds might execute at the same time. If you need this information, consider passing it manually.
Fixed
- Wrong query and check in ACS_DynamicComponentDataArrayReinterpret
- Fixed ICE (internal compiler error) thrown when storing into a field in reference type in bursted/scheduled lambda.
EntityQuery.ToEntityArray
will work when temp memory is passed in an a parameter for allocatorEntityQuery.ToComponentDataArrayAsync
andEntityQuery.CopyFromComponentDataArrayAsync
will throw errors if user tries to use Temp memory containers.- Hybrid Component Lights flickering when LiveLink edited.
- Fix crash when using singleton access methods with types with generic arguments.
- Code generation for indexers in structs with [BurstCompatible] attribute.
- Fixed potential
JobHandle
leak if an exception was thrown while scheduling anIJobForEach
. - Fixed that
DynamicBuffer.RemoveAtSwapBack
only copied the first byte of its element data - Updating the shadow world via the EntityDiffer is now using Burst
- The 'New Sub Scene' menu item is no longer missing in the 'Create' drop down of the Hierarchy .
- Overwriting Sub Scene file when creating new Sub Scene no longer logs an error but instead overwrites the user selected file.
- Fixed livelink patching for
BlobAssetReference<T>
fields in managed components and shared components. - Fixed entities getting lost during LiveLink when moving GameObjects between multiple subscenes
- Deprecated call to UnityWebRequest.isNetworkError in Unity.Scenes.FileUtilityHybrid
- Generic jobs now get reflection data generated in more cases
- Generic jobs will always work to schedule in editor (but may require attributes in...
0.17.0-preview.41
[0.17.0] - 2020-11-13
Added
- ISystemBase interface for making struct based systems that allow Burst compiling main thread update
- New UnsafeBufferAccessor struct that permit to un-typed and unsafe access the dynamic buffers pointers.
- New ArchetypeChunk.GetUnsafeAccessor public API that allow to retrieve dynamic buffers unsafe accessors using DynamicTypeHandle.
- safety check in DynamicComponentDataArrayReinterpret that throw an ArgumentException if used to access the component data for IBufferDataElement type
- ComponentSystemBase.TryGetSingleton
- ComponentSystemBase.TryGetSingletonEntity
- Tests for Tiny.UI transformations.
- Added documentation for incremental conversion and dependencies
- New scheduling API for
IJobEntityBatch
which limits the resulting batches to an inputNativeArray<Entity>
- BlobAssetStore. AddUniqueBlobAsset. A much simpler approach to managing blob assets during conversion. BlobAssetComputationContext continues to be the recommended approach for scalable blob asset generation.
- UnsafeUntypedBlobAsset gives a non-generic untyped blob that can be created and later casted to a specific BlobAssetType. This can be used for storing multiple types of blob assets in the same container.
- GameObjectConversionSystem.IsBuildingForEditor returns true when building data that will be loaded by the editor (As opposed to building data that will be loaded by the standalone player). This can be used to strip out editor only debug data.
- GameObjectConversionSystem.BuildConfigGUID returns the GUID of the build config that is used by this conversion context
- Tiny.UI support for 9-Slice (including sprite sheet support)
DynamicSharedComponentHandle
and related methods for accessing shared components without compile time type information.- The public static method
EntitySelectionProxy.CreateInstance
was added. It creates, configures, and returns a valid instance ofEntitySelectionProxy
. - The public static method
EntitySelectionProxy.SelectEntity
was added. It creates, configures, and selects an instance ofEntitySelectionProxy
, without returning it. - All the public properties and methods of
EntitySelectionProxy
have been documented. - Tiny.UI support for text alignment
- Tiny.UI support for multi-line text
- TypeManager will now store whether or not an
ISharedComponentData
is managed or unmanaged. - EntityScenesInBuild class that allows registering EntityScenes that are generated via a custom asset importer into the build. This is used by the Environment system to generate streamable tile data that is generated procedurally from tile inputs.
- New EntityCommandBuffer methods that affect a set of entities matching a query. Unlike existing methods, these new methods 'capture' the entities from the query at record time rather than playback time: the array of entities is stored in the command, and then playback of the command affects all entities of the array. The methods are
AddComponentForEntityQuery(EntityQuery, ComponentType)
,AddComponentForEntityQuery(EntityQuery, ComponentTypes)
,RemoveComponentForEntityQuery(EntityQuery, ComponentType)
,RemoveComponentForEntityQuery(EntityQuery, ComponentTypes)
,DestroyEntitiesForEntityQuery(EntityQuery)
. - EntityManager.Debug.GetEntitiesForAuthoringObject and EntityManager.Debug.GetAuthoringObjectForEntity. They provide a convenient API to map game object authoring & entity runtime representation.
- New
ComponentSystemGroup.EnableSystemSorting
property allows individual system groups to opt out of automatic system sorting. PLEASE NOTE: Certain system update order constraints are necessary for correct DOTS functionality. Disabling the automatic system sorting should be only be a last resort, and only on system groups with full control over which systems they contain. - Entities.WithFilter(NativeArray filteredEntities) allows for filtering with a set of specific entities in addition to the EntityQuery requirements
- Added Live Conversion debug logging to more easily see what is reconverted (enable from the menu
DOTS/LiveLink Mode/Incremental Conversion Logging
)
Changed
- Update burst to 1.4.1.
- Improved the performance of ILPostProcessor type resolution.
- ProcessAfterLoadGroup is now public. This group runs after a subscene is loaded.
Unity.Transforms
systems now useIJobEntityBatch
instead ofIJobChunk
. Expect modest performance gains due to the new job type's lower scheduling overhead, depending on the workload size.- When
DOTS/Live Link Mode/Live Conversion in Edit Mode
is active in 2020.2 or later, conversion is now incremental - Removed deprecated
Entities.ForEach.WithDeallocateOnJobCompletion
. Please useEntities.ForEach.WithDisposeOnCompletion
instead. - Fixed livelink patching for
BlobAssetReference<T>
fields in managed components and shared components. - Updated package
com.unity.platforms
to version0.9.0-preview.15
. TypeManager.Equals
andTypeManager.GetHashCode
performance has been improved when operating on blittable component types.- BlobAsset and entity patching for managed IComponentData & ISharedComponentData now use an early out if the class is known to not contain any blob assets or entity references
- Managed class IComponentData now supports patching of entity references in EntityCommandBuffer.AddComponent.
- Improved EntityManager.GetCreatedAndDestroyedEntities performance by introducing an internal entity creation / destruction version number that is used to early out when calling GetCreatedAndDestroyedEntities
- TypeManger.TypeInfo.Debug has been removed. TypeName has been moved directly into TypeInfo and renamed to DebugTypeName.
- Nested or variant prefabs used in a scene now correctly trigger reimports on subscenes when the parents parent prefab changes
- Update minimum editor version to 2020.1.2f1
EntitySelectionProxy
was streamlined to ensure that its usage does not override inspector locking behaviour and respects the Undo / Redo stack. With the new workflow, there is a 1:1 relationship between an Entity and its EntitySelectionProxy. Static utility methods were added to support this new workflow.- Rename
TypeManager.IsSharedComponent
toIsSharedComponentType
and addIsManagedType
*Enabled generic systems to be instantiated in non-tiny dots runtime - Updated platform packages to version
0.10.0-preview.1
. - Made SystemBase/JobComponentSystem classes partial in preparation of use of Roslyn source generators for code-generation (more to come).
Deprecated
- Forking of
GameObjectConversionSettings
is no longer supported - The public delegate
EntitySelectionProxy.EntityControlSelectButtonHandler
has been deprecated. - The public event
EntitySelectionProxy.EntityControlSelectButton
has been deprecated. - The public method
EntitySelectionProxy.SetEntity
has been deprecated. - The public method
EntitySelectionProxy.OnEntityControlSelectButton
has been deprecated. - The public property
EntitySelectionProxy.EntityManager
has been deprecated. UseEntitySelectionProxy.World.EntityManager
manager instead. This change was made to remove boilerplate checks in the code. - Deprecated
Frozen
component as it is no longer in use
Removed
- Removed deprecated proxy component types. CopyTransformToGameObject, CopyTransformFromGameObject and CopyInitialTransformFromGameObject now use [GenerateAuthoringComponent] instead.
- Removed expired
EntityManager.IsCreated
API - Removed expired API to compare
EntityManager
tonull
(EntityManager
is a struct now) - Removed deprecated types and methods:
NativeArraySharedValue<S>
, implicitEntityQuery
conversion tonull
,ComponentDataFromEntity.Exists
andBufferFromEntity.Exists
,ArchetypeChunkArray.GetComponentVersion
,IJobEntityBatch.ScheduleSingle
,IJobEntityBatch.ScheduleParallelBatch
,EntityManager.LockChunk
,EntityManager.UnlockChunk
,World.AllWorlds
,World.CreateSystem
, allGetArchetypeChunkX
methods,EntityCommandBuffer.ToConcurrent
andEntityManager.CreateChunk
ComponentSystemBase.ExecutingSystemType
has been removed. With the introduction of unmanaged systems, this information has been incorrect. Furthermore, there cannot be astatic
global property for this since multiple worlds might execute at the same time. If you need this information, consider passing it manually.
Fixed
- Wrong query and check in ACS_DynamicComponentDataArrayReinterpret
- Fixed ICE (internal compiler error) thrown when storing into a field in reference type in bursted/scheduled lambda.
EntityQuery.ToEntityArray
will work when temp memory is passed in an a parameter for allocatorEntityQuery.ToComponentDataArrayAsync
andEntityQuery.CopyFromComponentDataArrayAsync
will throw errors if user tries to use Temp memory containers.- Hybrid Component Lights flickering when LiveLink edited.
- Fix crash when using singleton access methods with types with generic arguments.
- Code generation for indexers in structs with [BurstCompatible] attribute.
- Fixed potential
JobHandle
leak if an exception was thrown while scheduling anIJobForEach
. - Fixed that
DynamicBuffer.RemoveAtSwapBack
only copied the first byte of its element data - Updating the shadow world via the EntityDiffer is now using Burst
- The 'New Sub Scene' menu item is no longer missing in the 'Create' drop down of the Hierarchy .
- Overwriting Sub Scene file when creating new Sub Scene no longer logs an error but instead overwrites the user selected file.
- Fixed livelink patching for
BlobAssetReference<T>
fields in managed components and shared components. - Fixed entities getting lost during LiveLink when moving GameObjects between multiple subscenes
- Deprecated call to UnityWebRequest.isNetworkError in Unity.Scenes.FileUtilityHybrid
- Generic jobs now get reflection data generated in more cases
- Generic jobs will always work to schedule in editor (but may require attributes in...
0.16.0-preview.21
[0.16.0] - 2020-09-24
Added
- EntityManager method CreateEntity(EntityArchetype, int). Unlike existing overloads of CreateEntity, this new overload takes no Entity array and returns no Entity array, so it avoids waste and bother in cases where callers don't need the actual Entity values.
- Special handling for Cameras and Colliders in preparation for root scene conversion, though they are disabled by default still
World.MaximumDeltaTime
now controls the maximum deltaTime that is reported to a World.- Exception's stacktrace are recorded in conversion logs.
- Add
IFixedRateManager
interface for fixed-timestep implementations. SeeFixedRateUtils.cs
for reference implementations. - Add
ComponentSystemGroup.FixedRateManager
property, to store the current activeIFixedRateManager
implementation. - Added
SceneSystem.IsSectionLoaded
to enable querying if a specific section of a scene is loaded. EntityQuery.SetOrderVersionFilter()
andEntityQuery.AddOrderVersionFilter()
which can be used to filter the Order Version independently from the Changed Version of a chunk.- DOTS naming standards to CONVENTIONS.md
- libcurl Stevedore artifact registration
- Mathematics tests are turned on in CI
Changed
- Improved performance of
EntityQuery.ToEntityArray()
- Platform packages updated to
0.9.0-preview.9
- Burst package updated to
1.3.7
- Properties packages updated to
1.5.0-preview
- The job safety system has be moved to NativeJobs as C++ code
- The UnsafeUtility memory allocators have been moved to NativeJobs
- improved performance of EntityQuery.CopyFromComponentDataArray
- changed chunk size from 16128 bytes (16 KB - 256 bytes) to exactly 16384 bytes (16 KB).
TypeManager.GetFieldInfo
now takes in aType
to return anNativeArray<FieldInfo>
. The passed in type must be registered to have field information generated explicitly via the[GenerateComponentFieldInfo]
assembly attribute.IJobEntityBatch
andIJobEntityBatchWithIndex
now quietly skip batches whose size is zero. This can happen legitimately if the requestedbatchesPerChunk
value is higher than the entity count for a particular chunk.
*Removed deprecatedArchetypeChunk.Locked()
method.
*DeprecatedArchetypeChunk.BatchEntityCount
property. The.Count
property should be used instead.- Removed usage of TempAssetCache for some livelink cases. Now these files are under SceneDependencyCache instead, so there is only one magic directory to deal with until we can remove it completely in future Unity versions.
*Fixed Reduced overhead ofIJobEntityBatchWithIndex
prefiltering by up to 20% ifbatchesPerChunk
is 1, or ifEntityQuery
filtering is disabled.
Deprecated
FixedStepSimulationSystemGroup.MaximumDeltaTime
has been deprecated. The maximum delta time is now stored inWorld.MaximumDeltaTime
. For better compatibility with UnityEngine, the new field applies to both the fixed-rate and variable-rate timesteps.ComponentSystemGroup.UpdateCallback
is deprecated. Instead, the group calls theShouldGroupUpdate()
method on itsFixedRateManager
property (if non-null) to accomplish the same effect.FixedRateUtils.EnableFixedRateCatchUp()
,FixedRateUtils.EnableFixedRateSimple()
, andFixedRateUtils.DisableFixedRate()
. These functions were used to set the deprecatedComponentSystemGroup.UpdateCallback
field; instead, just setComponentSystemGroup.FixedRateManager
directly.
Removed
- Old <2020.1 ifdef blocks in LiveLink scene culling code
- Deprecated legacy sort order code in ComponentSystemGroup was removed
Fixed
- Removed GC-allocations in
SceneSystem
andSceneSectionStreamingSystem
that were happening every frame - Issue with invalid GUID in SubScene importer causing Player LiveLink to stall waiting for an asset it will never get
- Hybrid component transform syncing was not working when entity order changed
- Hybrid components being editable when in Preview Scenes (by selecting gizmos)
- Fixed an issue in 2020.2 which caused
NativeContainer
min-max ranges to be incorrectly patched when scheduling andIJobChunk
orIJobEntityBatch
with a "Single" or "Run" schedule call. - Fields marked with
RestrictAuthoringInputTo
can now be set toNone
in the inspector - The Entities package now uses a faster code path for
CreateArchetypeChunkArray()
more consistently. - Retroactively added a changelog entry that notes a behavior change in
RemoveComponent(EntityQuery, ComponentTypes)
. See 'Change' entry under 0.14.0. - Generic job reflection data across assemblies would sometimes not work
- Fixed HLOD component throwing out of bounds exception when setup incorrectly against LODGroup.
- Scene section meta data now works in standalone builds again
- Native memory leak in EditorSubSceneLiveLinkSystem when failing to apply patches
- Generic job registration is more robust when generic parameters
- LiveLink will not generate errors on scenes that have not yet loaded scene sections
- Corrected inverted test in
IJobEntityBatchWithIndex
if EntityQuery filtering is enabled. EntityManger.AddComponent<T>(EntityQuery entityQuery)
andEntityManger.AddComponentData<T>(EntityQuery entityQuery, NativeArray<T> componentArray)
is 2x faster.- Reduced overhead of
IJobEntityBatch
execution by 5-10% ifbatchesPerChunk
is 1.
Security
[0.15.0] - 2020-08-26
Added
- More detailed profiling of individual EntitiesILPostProcessors to Editor log (look for lines with "EILPP" marker).
- Added
EntityQuery.IsEmpty
function which respects theEntityQueryFilter
s
Changed
- DOTS Runtime now supports
Burst.CompileFunctionPointer
allowing for lambda job andEntityCommandBuffer
playback to be Burst compiled. World.Time.ElapsedTime
is now initialized to zero when the World is created.- Bumped Burst to 1.3.5.
- Updated package
com.unity.platforms
to version0.9.0-preview.1
. - Improved performance of
EntityQuery.CreateArchetypeChunkArray()
- Updated packages
com.unity.properties
andcom.unity.serialization
to version1.4.3-preview
. - improved performance of
EntityManager.AddComponent(NativeArray<Entity>,ComponentType)
andEntityManager.RemoveComponent(NativeArray<Entity>,ComponentType)
TypeCategory.Class
is deprecated in favour ofTypeCategory.UnityEngineObject
- A
ComponentTypes
value can no longer consist of duplicate types. (The collections safety checks look for duplicates and throw an exception.)
Deprecated
- Deprecated
RequiresEntityConversion
attribute since it is not used anymore
Removed
- Removed previously deprecated
LiveLinkBuildImporter.GetHash
Fixed
- Limit of 128 million Entities per World instituted.
- Fixed
[GenerateAuthoringComponent]
onIBufferElementData
throwing a NullReferenceException at initialization when Live Conversion is active. - Fixed an issue which caused an exception to occur when
IJobEntityBatchWithIndex
is scheduled with.Run()
- Fixed a few methods not correctly preserving shared component values:
EntityManager.RemoveComponent(EntityQuery, ComponentTypes)
,EntityCommandBuffer.RemoveComponent(EntityQuery, ComponentTypes)
,EntityCommandBuffer.AddComponent(EntityQuery, ComponentTypes)
. - Fixed a bug with
BufferFromEntity<T>
which caused it to incorrectly update the version number of the buffer when markedReadOnly
TypeManager.GetWriteGroupTypes()
no longer leaksAtomicSafetyHandle
instances each time it is called.- Fixed an issue where
GetEntityInfo()
can potentially crash the editor if the user passes in an invalid Entity - Fixed buffer element authoring component not showing up in DOTS Compiler Inspector.
TypeManager.Initialize
now uses the TypeCache in Editor, improving the time it takes to enter playmode when no script compilation occurs. (1800ms -> 200ms)- Fix
Entities.ForEach
WithDisposeOnJob
method to work correctly with NativeArrays when scheduled with.Run
. - Fix IL2CPP build error with local methods used inside of Entities.ForEach lambdas.
[0.14.0] - 2020-08-04
Added
- Added
IsEmpty
property toDynamicBuffer
. - Added deduplication for asset bundles generated for subscenes.
- Added new
EntityManager
methods:AddComponent(EntityQuery, ComponentTypes)
, which adds multiple components to all entities matching a query; andRemoveComponent(Entity, ComponentTypes)
, which removes multiple components from a single entity. (AddComponent(Entity, ComponentTypes)
andRemoveComponent(EntityQuery, ComponentTypes)
already existed. This patch just fills in a few 'missing' methods.) - Added
EntityManagerDifferOptions.UseReferentialEquality
which instructs the Differ to compare entity fields by GUID and blob asset reference fields by hash instead of bitwise equality
Changed
BlockAllocator
is now backed by memory retrieved from platform virtual memory APIs. Platforms which do not support virtual memory will fall back to malloc/free.IJobEntityBatch.ScheduleSingle
is being renamed toIJobEntityBatch.Schedule
to match our naming guidelines for job scheduling.- When
DefaultWorldInitialization.Initialize()
adds the default World's system groups to the Unity player loop, it now bases its modifications on the current player loop instead of the default player loop. This prevents the Entities package from accidentally erasing any previous player loop modifications made outside the package. DefaultWorldInitialization.DomainUnloadOrPlayModeChangeShutdown()
now removes all existingWorld
s from the Unity player loop before destroying them. If aWorld
that was added to the player loop is destroyed manually prior to domain unload, it must also be removed from the player loop manually usingScriptBehaviourUpdateOrder.RemoveWorldFromPlayerLoop()
.- Updated package
com.unity.platforms
to version0.7.0-preview.8
. EntityManager.CreateEntity()
,EntityManager.SetArchetype()
, andEntityCommandBuffer.CreateEntity()
n...
0.11.2-preview.1
[0.11.2] - 2020-08-24
Fixed
- Remove burst job scheduling to work around flaky ILPP in 2019.4
Changed
- updated cecil dependency
[0.11.1] - 2020-06-09
Fixed
- Prevented remapping of hybrid components during deserialization which caused IL2CPP builds to fail on a missing property bags.
- Fixed exceptions being thrown when inspecting an entity with a GameObject added through
EntityManager.AddComponentObject
- Fixed load order of JobReflection static methods which were causing
InvalidOperationException: Reflection data was not set up by code generation
exceptions in player builds.
Changed
- An exception is now thrown during serialization if a shared component containing entity references is encountered.
Removed
- Removed expired API
World.AllWorlds
. - Removed expired API
EntityComponentStore.CreateChunks(Archetype*, ArchetypeChunk*, int, int)
. - Removed expired API
EntityManager.CreateChunk(EntityArchetype, NativeArray<ArchetypeChunk>, int)
. - Removed expired API
EntityManager.LockChunk(ArchetypeChunk)
. - Removed expired API
EntityManager.LockChunk(NativeArray<ArchetypeChunk>)
. - Removed expired API
EntityManager.UnlockChunk(ArchetypeChunk)
. - Removed expired API
ArchetypeChunk.Locked()
. - Removed expired API
struct NativeArraySharedValues<S>
.
0.14.0-preview.19
[0.14.0] - 2020-08-04
Added
- Added
IsEmpty
property toDynamicBuffer
. - Added deduplication for asset bundles generated for subscenes.
- Added new
EntityManager
methods:AddComponent(EntityQuery, ComponentTypes)
, which adds multiple components to all entities matching a query; andRemoveComponent(Entity, ComponentTypes)
, which removes multiple components from a single entity. (AddComponent(Entity, ComponentTypes)
andRemoveComponent(EntityQuery, ComponentTypes)
already existed. This patch just fills in a few 'missing' methods.)
Changed
IJobEntityBatch.ScheduleSingle
is being renamed toIJobEntityBatch.Schedule
to match our naming guidelines for job scheduling.- When
DefaultWorldInitialization.Initialize()
adds the default World's system groups to the Unity player loop, it now bases its modifications on the current player loop instead of the default player loop. This prevents the Entities package from accidentally erasing any previous player loop modifications made outside the package. DefaultWorldInitialization.DomainUnloadOrPlayModeChangeShutdown()
now removes all existingWorld
s from the Unity player loop before destroying them. If aWorld
that was added to the player loop is destroyed manually prior to domain unload, it must also be removed from the player loop manually usingScriptBehaviourUpdateOrder.RemoveWorldFromPlayerLoop()
.- Updated package
com.unity.platforms
to version0.7.0-preview.8
. EntityManager.CreateEntity()
,EntityManager.SetArchetype()
, andEntityCommandBuffer.CreateEntity()
no longer accept the value returned bynew EntityArchetype()
because it's invalid. Same forEntityCommandBuffer.CreateEntity()
andEntityCommandBuffer.ParallelWriter.CreateEntity()
. Always useEntityManager.CreateArchetype()
instead ofnew EntityArchetype()
to createEntityArchetype
values. (Ideally, theEntityArchetype
constructor wouldn't be public, but C# doesn't allow that for a struct.)- Subscene Inspector now uses a table format to allow easier management of multiple subscenes
Deprecated
IJobEntityBatch.ScheduleParallelBatched
is being deprecated in favor of adding a batching parameter toIJobEntityBatch.ScheduleParallel
ScriptBehaviourUpdateOrder.UpdatePlayerLoop()
is being deprecated in favor ofScriptBehaviourUpdateOrder.AddWorldToPlayerLoop()
. Due to slightly different semantics, a direct automated API update is not possible: the new function always takes aPlayerLoopSystem
object to modify, does not callUnityEngine.LowLevel.PlayerLoop.SetPlayerLoop()
, and does not create the top-level system groups if they don't exist.ScriptBehaviourUpdateOrder.IsWorldInPlayerLoop(World)
is being deprecated in favor ofScriptBehaviourUpdateOrder.IsWorldInCurrentPlayerLoop(World)
.
Removed
- Removed obsolete
ScriptBehaviourUpdateOrder.CurrentPlayerLoop
. UseUnityEngine.LowLevel.PlayerLoop.GetCurrentPlayerLoop()
instead. - Removed obsolete
ScriptBehaviourUpdateOrder.SetPlayerLoop()
. UseUnityEngine.LowLevel.PlayerLoop.SetPlayerLoop()
instead.
Fixed
- Setting the Scene Asset on a Subscene would sometimes fail to trigger an import/conversion because the default ECS world was missing.
- Fixed crash when using Singleton access methods (GetSingleton, SetSingleton, etc.) with a generic parameter as argument.
- Fixed an issue which caused WebGL not to work, and could produce this error message on IL2CPP-based backends:
NotSupportedException: To marshal a managed method, please add an attribute named 'MonoPInvokeCallback' to the method definition. The method we're attempting to marshal is: Unity.Entities.SystemBase::UnmanagedUpdate
0.14.0-preview.18
[0.14.0] - 2020-08-04
Added
- Added
IsEmpty
property toDynamicBuffer
. - Added deduplication for asset bundles generated for subscenes.
- Added new
EntityManager
methods:AddComponent(EntityQuery, ComponentTypes)
, which adds multiple components to all entities matching a query; andRemoveComponent(Entity, ComponentTypes)
, which removes multiple components from a single entity. (AddComponent(Entity, ComponentTypes)
andRemoveComponent(EntityQuery, ComponentTypes)
already existed. This patch just fills in a few 'missing' methods.)
Changed
IJobEntityBatch.ScheduleSingle
is being renamed toIJobEntityBatch.Schedule
to match our naming guidelines for job scheduling.- When
DefaultWorldInitialization.Initialize()
adds the default World's system groups to the Unity player loop, it now bases its modifications on the current player loop instead of the default player loop. This prevents the Entities package from accidentally erasing any previous player loop modifications made outside the package. DefaultWorldInitialization.DomainUnloadOrPlayModeChangeShutdown()
now removes all existingWorld
s from the Unity player loop before destroying them. If aWorld
that was added to the player loop is destroyed manually prior to domain unload, it must also be removed from the player loop manually usingScriptBehaviourUpdateOrder.RemoveWorldFromPlayerLoop()
.- Updated package
com.unity.platforms
to version0.7.0-preview.8
. EntityManager.CreateEntity()
,EntityManager.SetArchetype()
, andEntityCommandBuffer.CreateEntity()
no longer accept the value returned bynew EntityArchetype()
because it's invalid. Same forEntityCommandBuffer.CreateEntity()
andEntityCommandBuffer.ParallelWriter.CreateEntity()
. Always useEntityManager.CreateArchetype()
instead ofnew EntityArchetype()
to createEntityArchetype
values. (Ideally, theEntityArchetype
constructor wouldn't be public, but C# doesn't allow that for a struct.)- Subscene Inspector now uses a table format to allow easier management of multiple subscenes
Deprecated
IJobEntityBatch.ScheduleParallelBatched
is being deprecated in favor of adding a batching parameter toIJobEntityBatch.ScheduleParallel
ScriptBehaviourUpdateOrder.UpdatePlayerLoop()
is being deprecated in favor ofScriptBehaviourUpdateOrder.AddWorldToPlayerLoop()
. Due to slightly different semantics, a direct automated API update is not possible: the new function always takes aPlayerLoopSystem
object to modify, does not callUnityEngine.LowLevel.PlayerLoop.SetPlayerLoop()
, and does not create the top-level system groups if they don't exist.ScriptBehaviourUpdateOrder.IsWorldInPlayerLoop(World)
is being deprecated in favor ofScriptBehaviourUpdateOrder.IsWorldInCurrentPlayerLoop(World)
.
Removed
- Removed obsolete
ScriptBehaviourUpdateOrder.CurrentPlayerLoop
. UseUnityEngine.LowLevel.PlayerLoop.GetCurrentPlayerLoop()
instead. - Removed obsolete
ScriptBehaviourUpdateOrder.SetPlayerLoop()
. UseUnityEngine.LowLevel.PlayerLoop.SetPlayerLoop()
instead.
Fixed
- Setting the Scene Asset on a Subscene would sometimes fail to trigger an import/conversion because the default ECS world was missing.
- Fixed crash when using Singleton access methods (GetSingleton, SetSingleton, etc.) with a generic parameter as argument.
- Fixed an issue which caused WebGL not to work, and could produce this error message on IL2CPP-based backends:
NotSupportedException: To marshal a managed method, please add an attribute named 'MonoPInvokeCallback' to the method definition. The method we're attempting to marshal is: Unity.Entities.SystemBase::UnmanagedUpdate
## [0.13.0] - 2020-07-10
### Added
* Added new `EntityCommandBuffer` methods: `AddComponent(Entity, ComponentTypes)` and `AddComponent(EntityQuery, ComponentTypes)` for adding multiple components in one call. (`EntityManager` has an equivalent of the first already and will get an equivalent of the second later.)
* Added new `EntityCommandBuffer` methods: `RemoveComponent(Entity, ComponentTypes)` and `RemoveComponent(EntityQuery, ComponentTypes)` for removing multiple components in one call. (`EntityManager` will get equivalents in the future.)
* Added new `IJobEntityBatchWithIndex` job interface, a variant of `IJobEntityBatch` that provides an additional `indexOfFirstEntityInQuery` parameter, which provides a per-batch index that is the aggregate of all previous batch counts.
* Added `MaximumDeltaTime` property to `FixedStepSimulationSystemGroup`, used similarly to `UnityEngine.Time.maximumDeltaTime` to control how gradually the application should recover from large transient frame time spikes.
* Added new player loop management functions to the `ScriptBehaviourUpdateOrder` class:
* `AppendSystemToPlayerLoopList()`: adds a single ECS system to a specific point in the Unity player loop.
* `AddWorldToPlayerLoop()`: adds the three standard top-level system groups to their standard player loop locations.
* `IsWorldInPlayerLoop(World, PlayerLoopSystem)`: searches the provided player loop for any systems owned by the provided World.
* `RemoveWorldFromPlayerLoop()`: removes all systems owned by a World from the provided player loop.
* `AddWorldToCurrentPlayerLoop()`, `IsWorldInCurrentPlayerLoop()`, and `RemoveWorldFromCurrentPlayerLoop()`: wrappers around the above functions that operate directly on the currently active player loop.
### Changed
* Updated minimum Unity Editor version to 2020.1.0b15 (40d9420e7de8)
* Profiler markers for `EntityCommandBuffer.Playback` from `EntityCommandBufferSystem`s now include name of the system that recorded the `EntityCommandBuffer`.
* Bumped burst to 1.3.2 version.
* EntityQuery commands for `AddComponent`, `RemoveComponent`, and `DestroyEntity` in the EntityCommandBuffer now use Burst during Playback.
* IJobChunk and Entities.ForEach ScheduleParallel has been optimized in case there is no EntityQuery filtering necessary (Shared component or change filtering)
* `TypeManager.GetSystems()` now returns an `IReadOnlyList<Type>` rather than a `List<Type>`
* Updated package `com.unity.platforms` to version `0.6.0-preview.4`.
* `EntityContainer` will now allow to write data back to the entity.
* Updated package `com.unity.properties` and `com.unity.serialization` to version `1.3.1-preview`.
### Fixed
* Fixed warning treated as error in the case that a warning is emitted for Entities.ForEach passing a component type as value.
* Fixed paths displayed in IL post-processing error messages to be more consistent with Unity error messages.
* Fixed exceptions being thrown when inspecting an entity with a GameObject added through `EntityManager.AddComponentObject`.
* Fixed `DCICE002` error thrown during IL post-processing when `Entities.ForEach` contains multiple Entities.ForEach in same scope capturing multiple variables.
* `EntityManager`'s `AddComponent()`, `RemoveComponent()`, and `CopyEntitiesFrom()` methods no longer throw an error if their input is a `NativeArray<Entity>` allocated with `Allocator.Temp` whose length is >10 elements.
* Throw error when Entities.ForEach has an argument that is a generic DynamicBuffer.
* Re-adding a system to a `ComponentSystemGroup` immediately after removing it from the group now works correctly.
* `ComponentSystemGroup.Remove()` is now ignored if the target system is already enqueued for removal, or if it isn't in the group's update list in the first place.
* Fixed IL post-processing warnings being emitted with "error" title.
* Fixed "Invalid IL" error when try/finally block occurs in `Entities.ForEach` lambda body or cloned method (usually occurs with `using` or `foreach` and `WithoutBurst`).
* Fixed `Unexpected error` when `Job.WithCode` is used with `WithStructuralChanges` (now throw an error).
* Fixed a bug where `Unity.Scenes.EntityScenesPaths.GetTempCachePath()` could return invalid strings
* Fixed freezing of editor due to accessing the `EntityManager` property within Rider's debugger
* Fixed a bug where calling `SetArchetype` on an entity containing a component with `ISystemStateComponentData` may sometimes incorrectly throw an `ArgumentException`
### Known Issues
* This version is not compatible with 2020.2.0a17. Please update to the forthcoming alpha.
0.13.0-preview.24
[0.13.0] - 2020-07-10
Added
- Added new
EntityCommandBuffer
methods:AddComponent(Entity, ComponentTypes)
andAddComponent(EntityQuery, ComponentTypes)
. These add multiple components in one call. Note:EntityManager
has an equivalent of the first and will get an equivalent of the second in a later release. - Added new
EntityCommandBuffer
methods:RemoveComponent(Entity, ComponentTypes)
andRemoveComponent(EntityQuery, ComponentTypes)
. These remove multiple components in one call. Note:EntityManager
will get equivalents in a future release. - Added new
IJobEntityBatchWithIndex
job interface. This is a variant ofIJobEntityBatch
and provides an additionalindexOfFirstEntityInQuery
parameter, which provides a per-batch index that is the aggregate of all previous batch counts. - Added
MaximumDeltaTime
property toFixedStepSimulationSystemGroup
, used similarly toUnityEngine.Time.maximumDeltaTime
to control how gradually the application should recover from large transient frame time spikes. - Added new player loop management functions to the
ScriptBehaviourUpdateOrder
class:AppendSystemToPlayerLoopList()
: adds a single ECS system to a specific point in the Unity player loop.AddWorldToPlayerLoop()
: adds the three standard top-level system groups to their standard player loop locations.IsWorldInPlayerLoop(World, PlayerLoopSystem)
: searches the provided player loop for any systems owned by the provided World.RemoveWorldFromPlayerLoop()
: removes all systems owned by a World from the provided player loop.AddWorldToCurrentPlayerLoop()
,IsWorldInCurrentPlayerLoop()
, andRemoveWorldFromCurrentPlayerLoop()
: wrappers around the above functions that operate directly on the currently active player loop.
Changed
- Updated minimum Unity Editor version to 2020.1.0b15 (40d9420e7de8)
- Changed the Profiler markers for
EntityCommandBuffer.Playback
fromEntityCommandBufferSystem
s to include the name of the system that recorded theEntityCommandBuffer
. - Bumped burst to 1.3.2 version.
- Changed the EntityQuery commands for
AddComponent
,RemoveComponent
, andDestroyEntity
in the EntityCommandBuffer to use Burst during Playback. - Optimized
IJobChunk
andEntities.ForEach
ScheduleParallel
when there is no EntityQuery filtering necessary (shared component or change filtering). - Changed
TypeManager.GetSystems()
to return anIReadOnlyList<Type>
rather than aList<Type>
- Updated package
com.unity.platforms
to version0.6.0-preview.1
. - Changed
EntityContainer
to write data back to the entity. - Updated package
com.unity.properties
andcom.unity.serialization
to version1.3.1-preview
.
Fixed
- Fixed an issue where a warning was treated as an error when
Entities.ForEach
passed a component type as value. - Fixed paths displayed in IL post-processing error messages to be more consistent with Unity error messages.
- Fixed an issue where an exceptions was thrown when inspecting an entity with a GameObject added through
EntityManager.AddComponentObject
. - Fixed a
DCICE002
error that was thrown during IL post-processing whenEntities.ForEach
contained multiple Entities.ForEach in the same scope capturing multiple variables. - Fixed an issue where
EntityManager
'sAddComponent()
,RemoveComponent()
, andCopyEntitiesFrom()
methods threw an error if their input was aNativeArray<Entity>
allocated withAllocator.Temp
whose length is more than 10 elements. - An error is thrown when Entities.ForEach has an argument that is a generic DynamicBuffer.
- Fixed an issue where re-adding a system to a
ComponentSystemGroup
immediately after removing it from the group did not work correctly. ComponentSystemGroup.Remove()
is now ignored if the target system is already queued for removal, or if it isn't in the group's update list in the first place.- Fixed an issue where IL post-processing warnings were emitted with "error" title.
- Fixed "Invalid IL" error when try/finally block happened in the
Entities.ForEach
lambda body or cloned method. This usually happened withusing
orforeach
andWithoutBurst
. - Fixed an
Unexpected error
whenJob.WithCode
was used withWithStructuralChanges
. This now throws an error. - Fixed a bug where
Unity.Scenes.EntityScenesPaths.GetTempCachePath()
returned invalid strings.
Deprecated
ScriptBehaviourUpdateOrder.UpdatePlayerLoop()
is being deprecated in favor ofScriptBehaviourUpdateOrder.AddWorldToPlayerLoop()
. Due to slightly different semantics, a direct automated API update is not possible: the new function always takes aPlayerLoopSystem
object to modify, does not callUnityEngine.LowLevel.PlayerLoop.SetPlayerLoop()
, and does not create the top-level system groups if they don't exist.ScriptBehaviourUpdateOrder.IsWorldInPlayerLoop(World)
is being deprecated in favor ofScriptBehaviourUpdateOrder.IsWorldInCurrentPlayerLoop(World)
.
Removed
- Removed obsolete
ScriptBehaviourUpdateOrder.CurrentPlayerLoop
. UseUnityEngine.LowLevel.PlayerLoop.GetCurrentPlayerLoop()
instead. - Removed obsolete
ScriptBehaviourUpdateOrder.SetPlayerLoop()
. UseUnityEngine.LowLevel.PlayerLoop.SetPlayerLoop()
instead.
Known Issues
- This version is not compatible with 2020.2.0a17. Please update to the forthcoming alpha.
[0.12.0] - 2020-05-27
Added
- Added
BufferFromEntity.DidChange()
, with the same semantics as the existingComponentDataFromEntity.DidChange()
. - Added
BufferFromEntity.HasComponent()
, with the same meaning as the existing.Exists()
call (which is now deprecated). - Added
WorldSystemFilterFlags.All
flag to include allow calls toTypeManager.GetSystems()
to return all systems available to the runtime including systems decorated with [DisableAutoCreation]. - Added
DynamicBuffer.RemoveAtSwapBack()
andDynamicBuffer.RemoveRangeSwapBack()
- Added
Entities.WithDisposeOnCompletion
to correctly Dispose of types after running anEntities.ForEach
. - Added
SystemBase.GetBuffer/GetBufferFromEntity
that are patched so that they can be used inside ofEntities.ForEach
. - Added BlobAllocator.SetPointer to allow having a blob pointer to an object which already exists in the blob. This can be used for example to reference a parent node in a tree.
- Added
GameObjectConversionSystem.CreateAdditionalEntity
overload that allows to create multiple new entities at once. - Added a new
FixedStepSimulationSystemGroup
. Systems in this group update with a fixed timestep (60Hz by default), potentially running zero or several times per frame to "catch up" to the actual elapsed time. See theFixedTimestepSystemUpdate
sample scene for an example of how to use this system group.
Changed
- Updated minimum Unity Editor version to 2020.1.0b9 (9c0aec301c8d)
World.Dispose()
now destroys all the world's systems before removing theWorld
from the "all worlds" list.- Extended
TypeManager.GetSystems()
to support getting systems filtered by any and/or allWorldSystemFilterFlags
. - Updated package
com.unity.platforms
to version0.4.0-preview.5
. - Updated package
com.unity.burst
to version1.3.0-preview.12
. Unity.Entities.DefaultWorldInitialization
has been moved from theUnity.Entities.Hybrid
assembly into theUnity.Entities
assembly.Unity.Entities.DefaultWorldInitialization.Initialize()
now returns the initializedWorld.DefaultGameObjectInjectionWorld
object.ArchetypeChunkComponentType
has been renamed toComponentTypeHandle
ArchetypeChunkComponentTypeDynamic
has been renamed toDynamicComponentTypeHandle
ArchetypeChunkBufferType
has been renamed toBufferTypeHandle
ArchetypeChunkSharedComponentType
has been renamed toSharedComponentTypeHandle
ArchetypeChunkEntityType
has been renamed toEntityTypeHandle
ArchetypeChunkComponentObjects
has been renamed toManagedComponentAccessor
Unity.Entities.EditorRenderData
has been moved from theUnity.Entities.Hybrid
assembly to theUnity.Entities
assembly.Unity.Scenes.Hybrid
has been renamed toUnity.Scenes
. Any asmdefs referring to the old assembly name must be updated. The ScriptUpgrader will take care of updatingusing
namespace imports.Unity.Entities.SceneBoundingVolume
has moved from theUnity.Entities.Hybrid
assembly to theUnity.Scenes
assembly andUnity.Scenes
namespace. Any asmdefs referring to the old assembly name must be updated. The ScriptUpgrader will take care of updatingusing
namespace imports.EntityCommandBuffer.Concurrent
has been renamed toEntityCommandBuffer.ParallelWriter
.EntityCommandBuffer.ToConcurrent()
has been renamed toEntityCommandBuffer.AsParallelWriter()
and now returnsEntityCommandBuffer.ParallelWriter
(renamed fromConcurrent
).- Duplicate query parameters (from
WithAll
and lambda parameters) are now allowed inEntities.ForEach
(they are now sanitized for the user). - If a change filter is used in
Entities.ForEach
withWithChangeFilter
, the component type will automatically get added to the query. - Add additional warnings around conflicting use of
WithNone
,WithAll
,WithAny
and lambda parameters inEntities.ForEach
. - Warn if a user passes a struct component parameter by value to their lambda in
Entities.ForEach
(since changes won't be reflected back to the underlying component). - An exception is now thrown during serialization if a shared component containing entity references is encountered.
- EntityScene generation (Happening in a background process) is now integrated with the async progress bar to indicate when entity data is being generated. The code that tracks dependencies for entity scenes, determines when to regenerated them in the editor is significantly cheaper now.
- When safety checks are enabled
EntityManager.AddComponent(NativeArray<Entity>, ComponentType)
now throwsArgumentException
instead of `In...
0.11.1-preview.4
[0.11.1] - 2020-06-09
Fixed
- Prevented remapping of hybrid components during deserialization which caused IL2CPP builds to fail on a missing property bags.
- Fixed exceptions being thrown when inspecting an entity with a GameObject added through
EntityManager.AddComponentObject
- Fixed load order of JobReflection static methods which were causing
InvalidOperationException: Reflection data was not set up by code generation
exceptions in player builds.
Changed
- An exception is now thrown during serialization if a shared component containing entity references is encountered.
Removed
- Removed expired API
World.AllWorlds
. - Removed expired API
EntityComponentStore.CreateChunks(Archetype*, ArchetypeChunk*, int, int)
. - Removed expired API
EntityManager.CreateChunk(EntityArchetype, NativeArray<ArchetypeChunk>, int)
. - Removed expired API
EntityManager.LockChunk(ArchetypeChunk)
. - Removed expired API
EntityManager.LockChunk(NativeArray<ArchetypeChunk>)
. - Removed expired API
EntityManager.UnlockChunk(ArchetypeChunk)
. - Removed expired API
ArchetypeChunk.Locked()
. - Removed expired API
struct NativeArraySharedValues<S>
.
[0.11.0] - 2020-05-25
This version requires Unity 2019.3.12f1+
Added
- Added
ArchetypeChunkComponentObjects<T>.Length
Changed
- Updated package
com.unity.burst
to version1.3.0-preview.12
. - Improved
ComponentType.ToString
names in DOTS Runtime to provide the full type name when available, and if not, default to the StableTypeHash. EntityManager.Version
andEntityManager.GlobalSystemVersion
will throw if the manager is not valid instead of returning 0.
Deprecated
- Deprecated
EntityManager.IsCreated
which cannot be efficiently implemented with EntityManager as a struct. For the (hopefully rare) cases where you need to determine if an entity manager is still valid, useWorld.IsCreated
instead as the world and entity manager are always created and destroyed in tandem. - Deprecated system sorting via virtual functions and direct modification of system list. There are now two new properties on the
UpdateInGroup
attribute:OrderFirst
andOrderLast
. Setting either of these properties to true groups the system together with others tagged in the same way. These systems sort in a subgroup by themselves. This change was made to enable Burst compatible systems in the future.
Removed
- Removed expired API
EntityQuery.CreateArchetypeChunkArray(Allocator, out JobHandle)
. - Removed expired API
EntityQuery.ToEntityArray(Allocator, out JobHandle)
. - Removed expired API
EntityQuery.ToComponentDataArray<T>(Allocator, out JobHandle)
. - Removed expired API
EntityQuery.CopyFromComponentDataArray<T>(NativeArray<T>, out JobHandle)
. - Removed expired API
ArchetypeChunkArray.GetComponentVersion<T>(ArchetypeChunkSharedComponentType<T>)
. - Removed expired API
ArchetypeChunkArray.GetComponentVersion<T>(ArchetypeChunkBufferType<T>)
. - Removed expired API
ArchetypeChunkArray.GetComponentVersion<T>(ArchetypeChunkComponentType<T>)
. - Removed expired API
ScriptBehaviourUpdateOrder.CurrentPlayerLoop
. - Removed expired API
ScriptBehaviourUpdateOrder.SetPlayerLoop(PlayerLoopSystem)
. - Removed expired API
TypeInfoGeneration.CalculateMemoryOrderingAndStableHash(TypeDefinition, out ulong, out ulong)
.
Fixed
- Improved JobsDebugger errors involving the
EntityManager
. - Fixed a potential infinite loop in
FixedRateUtils.FixedRateCatchUpManager
if these callbacks were enabled on the first frame of execution. - When
FixedRateUtils.FixedRateCatchUpManager
orFixedRateUtils.FixedRateSimpleManager
are enabled, the first update is now guaranteed to take place at elapsedTime = 0.0. - Asset dependencies registered via
GameObjectConversionSystem.DeclareAssetDependency
are now checked for validity, and inbuilt assets are ignored - Improved performance of the
EntityPatcher
when applying changes to large amounts of entities - The script template for ECS systems now uses
SystemBase
instead ofJobComponentSystem
- Fixed an issue with instantiation of entities with multiple hybrid components which caused corruption of the managed store
- Removed remapping of entity fields in hybrid components during instantiation
- Fixed a crash that happened when trying to remap entity references within recursive types
- Serialization now supports blob asset references in shared and managed components.
- Fixed a bug with
EntityQuery.CopyFromComponentDataArray
, which caused it to behave likeToComponentDataArray
- UnloadAllAssets will no longer unload assets referenced by shared or managed components.
0.11.0-preview.7
[0.11.0] - 2020-05-25
Added
- Added
ArchetypeChunkComponentObjects<T>.Length
Changed
- Updated package
com.unity.burst
to version1.3.0-preview.12
. - Improved
ComponentType.ToString
names in DOTS Runtime to provide the full type name when available, and if not, default to the StableTypeHash. - Updated minimum Unity Editor version to 2019.3.12f1 (84b23722532d)
EntityManager.Version
andEntityManager.GlobalSystemVersion
will throw if the manager is not valid instead of returning 0.
Deprecated
- Deprecated
EntityManager.IsCreated
which cannot be efficiently implemented with EntityManager as a struct. For the (hopefully rare) cases where you need to determine if an entity manager is still valid, useWorld.IsCreated
instead as the world and entity manager are always created and destroyed in tandem. - Deprecated system sorting via virtual functions and direct modification of system list. There are now two new properties on the
UpdateInGroup
attribute:OrderFirst
andOrderLast
. Setting either of these properties to true groups the system together with others tagged in the same way. These systems sort in a subgroup by themselves. This change was made to enable Burst compatible systems in the future.
Removed
- Removed expired API
EntityQuery.CreateArchetypeChunkArray(Allocator, out JobHandle)
. - Removed expired API
EntityQuery.ToEntityArray(Allocator, out JobHandle)
. - Removed expired API
EntityQuery.ToComponentDataArray<T>(Allocator, out JobHandle)
. - Removed expired API
EntityQuery.CopyFromComponentDataArray<T>(NativeArray<T>, out JobHandle)
. - Removed expired API
ArchetypeChunkArray.GetComponentVersion<T>(ArchetypeChunkSharedComponentType<T>)
. - Removed expired API
ArchetypeChunkArray.GetComponentVersion<T>(ArchetypeChunkBufferType<T>)
. - Removed expired API
ArchetypeChunkArray.GetComponentVersion<T>(ArchetypeChunkComponentType<T>)
. - Removed expired API
ScriptBehaviourUpdateOrder.CurrentPlayerLoop
. - Removed expired API
ScriptBehaviourUpdateOrder.SetPlayerLoop(PlayerLoopSystem)
. - Removed expired API
TypeInfoGeneration.CalculateMemoryOrderingAndStableHash(TypeDefinition, out ulong, out ulong)
.
Fixed
- Improved JobsDebugger errors involving the
EntityManager
. - Fixed a potential infinite loop in
FixedRateUtils.FixedRateCatchUpManager
if these callbacks were enabled on the first frame of execution. - When
FixedRateUtils.FixedRateCatchUpManager
orFixedRateUtils.FixedRateSimpleManager
are enabled, the first update is now guaranteed to take place at elapsedTime = 0.0. - Asset dependencies registered via
GameObjectConversionSystem.DeclareAssetDependency
are now checked for validity, and inbuilt assets are ignored - Improved performance of the
EntityPatcher
when applying changes to large amounts of entities - The script template for ECS systems now uses
SystemBase
instead ofJobComponentSystem
- Fixed an issue with instantiation of entities with multiple hybrid components which caused corruption of the managed store
- Removed remapping of entity fields in hybrid components during instantiation
- Fixed a crash that happened when trying to remap entity references within recursive types
- Serialization now supports entity references in shared components, as well as blob asset references in shared and managed components.
- Fixed a bug with
EntityQuery.CopyFromComponentDataArray
, which caused it to behave likeToComponentDataArray
- UnloadAllAssets will no longer unload assets referenced by shared or managed components.
[0.10.0] - 2020-04-28
Added
- Added
GetOrderVersion()
to ArchetypeChunk. Order version bumped whenever structural change occurs on chunk. - Added
GetComponentDataFromEntity
method that streamlines access to components through entities when using theSystemBase
class. These methods call through to theComponentSystemBase
method when in OnUpdate code and codegen access through a storedComponentDataFromEntity
when inside ofEntities.ForEach
. - Added support for WorldSystemFilterFlags.ProcessAfterLoad which enable systems to run in the streaming world after a entity section is loaded.
- Added
DynamicBuffer.CopyFrom()
variant that copies from aNativeSlice
- Added
DynamicBuffer.GetUnsafeReadOnlyPtr()
, for cases where only read-only access is required. - Added PostLoadCommandBuffer component which can be added to scene or section entities to play back a command buffer in the streaming world after a entity section is loaded. Adding it to the scene entity will play back the command buffer on all sections in the scene.
- Added
WorldSystemFilterFlags.HybridGameObjectConversion
andWorldSystemFilterFlags.DotsRuntimeGameObjectConversion
to annotate conversion systems to be used specifically for hybrid or dots runtime. - Added missing profiler markers when running an
Entities.ForEach
directly with.Run
. - Added support for storing metadata components in the header of converted subscenes. Components can be added to the section entities requested with
GameObjectConversionSystem.GetSceneSectionEntity
. The added components are serialized into the entities header and will be added to the section entities at runtime when the scene is resolved. - ResolvedSectionEntity buffer component is now public and can be used to access metadata components on a resolved scene entity.
Changed
- Bumped Burst version to improve compile time and fix multiple bugs.
- ChangeVersions behavior more consistent across various entry points.
- Updated package
com.unity.properties
to version1.1.1-preview
. - Updated package
com.unity.serialization
to version1.1.1-preview
. - Updated package
com.unity.platforms
to version0.3.0-preview.4
. ConvertToEntity
no longer logs a warning if there are multiples of a given authoring component on the converted GameObject, so it is now compatible with conversion systems that can support multiples.- Improved the StableTypeHash calculation used when serializing components to be more resilient. The hash will now properly invalidate serialized data should component data layout change as a result of
[StructLayout(LayoutKind.Explict)]
, as well as if a nested component field's data layout changes. - Make it possible to use Entities.ForEach with >8 parameters if you supply your own delegate type
Deprecated
- EntityManager.UnlockChunk deprecated
- Adding components to entities converted from GameObjects using proxy components has been deprecated, please use the new conversion workflows using
GameObjectConversionSystem
andIConvertGameObjectToEntity
ComponentDataProxyBaseEditor
,DynamicBufferProxyBaseEditor
fromUnity.Entities.Editor
deprecatedComponentDataProxy<T>
,ComponentDataProxyBase
,DynamicBufferProxy<T>
,SharedComponentDataProxy<T>
,SceneSectionProxy
fromUnity.Entities.Hybrid
deprecatedMockDataProxy
,MockDynamicBufferDataProxy
,MockSharedDataProxy
,MockSharedDisallowMultipleProxy
fromUnity.Entities.Tests
deprecatedCopyInitialTransformFromGameObjectProxy
,CopyTransformFromGameObjectProxy
,CopyTransformToGameObjectProxy
,LocalToWorldProxy
,NonUniformScaleProxy
,RotationProxy
,TranslationProxy
fromUnity.Transforms
deprecated- Deprecated
ScriptBehaviourUpdateOrder.CurrentPlayerLoop
; UsePlayerLoop.GetCurrentPlayerLoop()
instead - Deprecated
ScriptBehaviourUpdateOrder.SetPlayerLoop
; UsePlayerLoop.SetPlayerLoop()
instead
Removed
- Removed expired API
BlobAssetComputationContext.AssociateBlobAssetWithGameObject(Hash128, GameObject)
- Removed expired API
BlobAssetReference.Release()
- Removed expired API
BlobAssetStore.UpdateBlobAssetForGameObject<T>(int, NativeArray<Hash128>)
- Removed expired API
class TerminatesProgramAttribute
- Removed expired API
EntityManager.LockChunkOrder(ArchetypeChunk)
- Removed expired API
EntityManager.LockChunkOrder(EntityQuery)
- Removed expired API
EntityManager.LockChunkOrder(NativeArray<ArchetypeChunk>)
- Removed expired API
EntityManager.UnlockChunkOrder(ArchetypeChunk)
- Removed expired API
EntityManager.UnlockChunkOrder(EntityQuery)
- Removed expired API
GameObjectConversionSettings.BuildSettings
- Removed expired API
GameObjectConversionSystem.GetBuildSettingsComponent<T>()
- Removed expired API
GameObjectConversionSystem.TryGetBuildSettingsComponent<T>(out T)
- Removed expired API
LambdaJobDescriptionConstructionMethods.WithBurst(...)
- Removed expired API
LambdaJobDescriptionConstructionMethods.WithNativeDisableUnsafePtrRestrictionAttribute(...)
- Removed expired API
SceneSystem.BuildSettingsGUID
- Removed expired overload of
BlobBuilder.Allocate<T>(int, ref BlobArray<T>)
- Removed expired overload of
EntityQuery.CopyFromComponentDataArray<T>(...)
- Removed expired overload of
EntityQuery.CreateArchetypeChunkArray(...)
- Removed expired overload of
EntityQuery.ToComponentDataArray<T>(...)
- Removed expired overload of
EntityQuery.ToEntityArray(...)
Fixed
- Fixed the synchronization of transforms for Hybrid Components to handle scale properly.
- Improved JobsDebugger error messages when accessing
ComponentDataFromEntity
,ArchetypeChunkComponentType
,ArchetypeChunkComponentTypeDynamic
,ArchetypeChunkBufferType
,ArchetypeChunkSharedComponentType
,ArchetypeChunkEntityType
, andBufferFromEntity
after a structural change. (requires Unity 2020.1.0b2 or later) - Fixed scene camera culling masks not being reset in the case of using ConvertToEntity but not any scene conversion
- Fix to IL2CPP compilation errors occuring in IL2CPP builds with Entities.ForEach with nested captures.
- Fixed the entity inspector showing incorrect data for chunk components.
- Fixed entity scene load error caused by type hash mismatch when serializing hybrid components with conditionally compiled fields.
LambdaJobTestFixture
andAutoCreateComponentSystemTests_*
systems are no longer added to the simulation world...
0.10.0-preview.6
[0.10.0] - 2020-04-24
Added
- Added
GetOrderVersion()
to ArchetypeChunk. Order version bumped whenever a structural change occurs on chunk. - Added
GetComponentDataFromEntity
method that streamlines access to components through entities when using theSystemBase
class. These methods call through to theComponentSystemBase
method when they are in OnUpdate code and codegen access through a storedComponentDataFromEntity
when inside ofEntities.ForEach
. - Added support for
WorldSystemFilterFlags.ProcessAfterLoad
which enable systems to run in the streaming World after a entity section is loaded. - Added
DynamicBuffer.CopyFrom()
variant that copies from aNativeSlice
- Added
DynamicBuffer.GetUnsafeReadOnlyPtr()
, for cases where only read-only access is required. - Added PostLoadCommandBuffer component which can be added to Scene or section entities. This plays back a command buffer in the streaming World after a entity section is loaded. Adding it to the Scene entity plays back the command buffer on all sections in the Scene.
- Added
WorldSystemFilterFlags.HybridGameObjectConversion
andWorldSystemFilterFlags.DotsRuntimeGameObjectConversion
which annotates conversion systems that are used specifically for Hybrid or DOTS runtime. - Added missing profiler markers when running an
Entities.ForEach
directly with.Run
. - Added support for storing metadata components in the header of converted Subscenes.
GameObjectConversionSystem.GetSceneSectionEntity
adds components to the section entities requested. The added components are serialized into the entities header and are added to the section entities at runtime when the Scene is resolved. - ResolvedSectionEntity buffer component is now public and can be used to access metadata components on a resolved Scene entity.
Changed
- Bumped Burst version to improve compile time and fix multiple bugs.
- ChangeVersions behavior more consistent across various entry points.
- Updated package
com.unity.properties
to version1.1.1-preview
. - Updated package
com.unity.serialization
to version1.1.1-preview
. - Updated package
com.unity.platforms
to version0.3.0-preview.2
. ConvertToEntity
no longer logs a warning if there are multiples of a given authoring component on the converted GameObject. As such, it is now compatible with conversion systems that can support multiples.
Deprecated
- Deprecated
EntityManager.UnlockChunk
. - Deprecated adding components to entities converted from GameObjects using proxy components. Use the new conversion workflows with
GameObjectConversionSystem
andIConvertGameObjectToEntity
. - Deprecated
ComponentDataProxyBaseEditor
,DynamicBufferProxyBaseEditor
fromUnity.Entities.Editor
. - Deprecated
ComponentDataProxy<T>
,ComponentDataProxyBase
,DynamicBufferProxy<T>
,SharedComponentDataProxy<T>
,SceneSectionProxy
fromUnity.Entities.Hybrid
. - Deprecated
MockDataProxy
,MockDynamicBufferDataProxy
,MockSharedDataProxy
,MockSharedDisallowMultipleProxy
fromUnity.Entities.Tests
. - Deprecated
CopyInitialTransformFromGameObjectProxy
,CopyTransformFromGameObjectProxy
,CopyTransformToGameObjectProxy
,LocalToWorldProxy
,NonUniformScaleProxy
,RotationProxy
,TranslationProxy
fromUnity.Transforms
. - Deprecated
ScriptBehaviourUpdateOrder.CurrentPlayerLoop
. UsePlayerLoop.GetCurrentPlayerLoop()
instead. - Deprecated
ScriptBehaviourUpdateOrder.SetPlayerLoop
. UsePlayerLoop.SetPlayerLoop()
instead.
Removed
- Removed expired API
BlobAssetComputationContext.AssociateBlobAssetWithGameObject(Hash128, GameObject)
- Removed expired API
BlobAssetReference.Release()
- Removed expired API
BlobAssetStore.UpdateBlobAssetForGameObject<T>(int, NativeArray<Hash128>)
- Removed expired API
class TerminatesProgramAttribute
- Removed expired API
EntityManager.LockChunkOrder(ArchetypeChunk)
- Removed expired API
EntityManager.LockChunkOrder(EntityQuery)
- Removed expired API
EntityManager.LockChunkOrder(NativeArray<ArchetypeChunk>)
- Removed expired API
EntityManager.UnlockChunkOrder(ArchetypeChunk)
- Removed expired API
EntityManager.UnlockChunkOrder(EntityQuery)
- Removed expired API
GameObjectConversionSettings.BuildSettings
- Removed expired API
GameObjectConversionSystem.GetBuildSettingsComponent<T>()
- Removed expired API
GameObjectConversionSystem.TryGetBuildSettingsComponent<T>(out T)
- Removed expired API
LambdaJobDescriptionConstructionMethods.WithBurst(...)
- Removed expired API
LambdaJobDescriptionConstructionMethods.WithNativeDisableUnsafePtrRestrictionAttribute(...)
- Removed expired API
SceneSystem.BuildSettingsGUID
- Removed expired overload of
BlobBuilder.Allocate<T>(int, ref BlobArray<T>)
- Removed expired overload of
EntityQuery.CopyFromComponentDataArray<T>(...)
- Removed expired overload of
EntityQuery.CreateArchetypeChunkArray(...)
- Removed expired overload of
EntityQuery.ToComponentDataArray<T>(...)
- Removed expired overload of
EntityQuery.ToEntityArray(...)
Fixed
- Fixed the synchronization of transforms for Hybrid components to handle scale properly.
- Improved JobsDebugger error messages when accessing
ComponentDataFromEntity
,ArchetypeChunkComponentType
,ArchetypeChunkComponentTypeDynamic
,ArchetypeChunkBufferType
,ArchetypeChunkSharedComponentType
,ArchetypeChunkEntityType
, andBufferFromEntity
after a structural change. (requires Unity 2020.1.0b2 or later) - Fixed an issue where Scene Camera culling masks weren't reset when using ConvertToEntity but not any Scene conversion
- Fixed IL2CPP compilation errors happening in IL2CPP builds with Entities.ForEach with nested captures.
- Fixed an issue where incorrect data for chunk components was shown in the Entity Inspector.
- Fixed an entity Scene load error when serializing hybrid components with conditionally compiled fields, which caused a type hash mismatch.
LambdaJobTestFixture
andAutoCreateComponentSystemTests_*
systems are no longer added to the simulation World by default.GameObjectConversionSystem.DependOnAsset
now correctly handles multiple Subscenes- Fixed an issue where patched component access methods (
GetComponent/SetComponent/HasComponent
) brokeEntities.ForEach
when there were a lot of them, due to short branch IL instructions. - Fixed deactivation of Hybrid components when the entity was disabled or turned into a Prefab.
- Improved the performance of singleton access methods (
SetSingleton
/GetSingleton
). - Fixed an issue where managed components were not being serialized during Player Livelink.
- Fixed an issue where
CompanionLink
was incorrectly synced during Player Livelink. - Fixed a false-positive in the EntityDiffer when a shared component in a changed Chunk has its default value
- Fixed Entities.ForEach lambdas that call static methods as well as component access methods (
GetComponent/SetComponent/HasComponent
).
[0.9.1] - 2020-04-15
Fixed
- Fixed NullReferenceException issue with Singleton access methods in SystemBase.