Skip to content

Releases: needle-mirror/com.unity.entities

0.17.0-preview.42

28 May 14:06
Compare
Choose a tag to compare
0.17.0-preview.42 Pre-release
Pre-release

[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 input NativeArray<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 of EntitySelectionProxy.
  • The public static method EntitySelectionProxy.SelectEntity was added. It creates, configures, and selects an instance of EntitySelectionProxy, 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 use IJobEntityBatch instead of IJobChunk. 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 use Entities.ForEach.WithDisposeOnCompletion instead.
  • Fixed livelink patching for BlobAssetReference<T> fields in managed components and shared components.
  • Updated package com.unity.platforms to version 0.9.0-preview.15.
  • TypeManager.Equals and TypeManager.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 to IsSharedComponentType and add IsManagedType
    *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. Use EntitySelectionProxy.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 to null (EntityManager is a struct now)
  • Removed deprecated types and methods: NativeArraySharedValue<S>, implicit EntityQuery conversion to null, ComponentDataFromEntity.Exists and BufferFromEntity.Exists, ArchetypeChunkArray.GetComponentVersion, IJobEntityBatch.ScheduleSingle, IJobEntityBatch.ScheduleParallelBatch, EntityManager.LockChunk, EntityManager.UnlockChunk, World.AllWorlds, World.CreateSystem, all GetArchetypeChunkX methods, EntityCommandBuffer.ToConcurrent and EntityManager.CreateChunk
  • ComponentSystemBase.ExecutingSystemType has been removed. With the introduction of unmanaged systems, this information has been incorrect. Furthermore, there cannot be a static 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 allocator
  • EntityQuery.ToComponentDataArrayAsync and EntityQuery.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 an IJobForEach.
  • 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...
Read more

0.17.0-preview.41

22 Jan 17:13
Compare
Choose a tag to compare
0.17.0-preview.41 Pre-release
Pre-release

[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 input NativeArray<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 of EntitySelectionProxy.
  • The public static method EntitySelectionProxy.SelectEntity was added. It creates, configures, and selects an instance of EntitySelectionProxy, 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 use IJobEntityBatch instead of IJobChunk. 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 use Entities.ForEach.WithDisposeOnCompletion instead.
  • Fixed livelink patching for BlobAssetReference<T> fields in managed components and shared components.
  • Updated package com.unity.platforms to version 0.9.0-preview.15.
  • TypeManager.Equals and TypeManager.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 to IsSharedComponentType and add IsManagedType
    *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. Use EntitySelectionProxy.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 to null (EntityManager is a struct now)
  • Removed deprecated types and methods: NativeArraySharedValue<S>, implicit EntityQuery conversion to null, ComponentDataFromEntity.Exists and BufferFromEntity.Exists, ArchetypeChunkArray.GetComponentVersion, IJobEntityBatch.ScheduleSingle, IJobEntityBatch.ScheduleParallelBatch, EntityManager.LockChunk, EntityManager.UnlockChunk, World.AllWorlds, World.CreateSystem, all GetArchetypeChunkX methods, EntityCommandBuffer.ToConcurrent and EntityManager.CreateChunk
  • ComponentSystemBase.ExecutingSystemType has been removed. With the introduction of unmanaged systems, this information has been incorrect. Furthermore, there cannot be a static 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 allocator
  • EntityQuery.ToComponentDataArrayAsync and EntityQuery.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 an IJobForEach.
  • 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...
Read more

0.16.0-preview.21

29 Oct 23:08
Compare
Choose a tag to compare
0.16.0-preview.21 Pre-release
Pre-release

[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. See FixedRateUtils.cs for reference implementations.
  • Add ComponentSystemGroup.FixedRateManager property, to store the current active IFixedRateManager implementation.
  • Added SceneSystem.IsSectionLoaded to enable querying if a specific section of a scene is loaded.
  • EntityQuery.SetOrderVersionFilter() and EntityQuery.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 a Type to return an NativeArray<FieldInfo>. The passed in type must be registered to have field information generated explicitly via the [GenerateComponentFieldInfo] assembly attribute.
  • IJobEntityBatch and IJobEntityBatchWithIndex now quietly skip batches whose size is zero. This can happen legitimately if the requested batchesPerChunk value is higher than the entity count for a particular chunk.
    *Removed deprecated ArchetypeChunk.Locked() method.
    *Deprecated ArchetypeChunk.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 of IJobEntityBatchWithIndex prefiltering by up to 20% if batchesPerChunk is 1, or if EntityQuery filtering is disabled.

Deprecated

  • FixedStepSimulationSystemGroup.MaximumDeltaTime has been deprecated. The maximum delta time is now stored in World.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 the ShouldGroupUpdate() method on its FixedRateManager property (if non-null) to accomplish the same effect.
  • FixedRateUtils.EnableFixedRateCatchUp(), FixedRateUtils.EnableFixedRateSimple(), and FixedRateUtils.DisableFixedRate(). These functions were used to set the deprecated ComponentSystemGroup.UpdateCallback field; instead, just set ComponentSystemGroup.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 and SceneSectionStreamingSystem 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 and IJobChunk or IJobEntityBatch with a "Single" or "Run" schedule call.
  • Fields marked with RestrictAuthoringInputTo can now be set to None 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) and EntityManger.AddComponentData<T>(EntityQuery entityQuery, NativeArray<T> componentArray) is 2x faster.
  • Reduced overhead of IJobEntityBatch execution by 5-10% if batchesPerChunk 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 the EntityQueryFilters

Changed

  • DOTS Runtime now supports Burst.CompileFunctionPointer allowing for lambda job and EntityCommandBuffer 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 version 0.9.0-preview.1.
  • Improved performance of EntityQuery.CreateArchetypeChunkArray()
  • Updated packages com.unity.properties and com.unity.serialization to version 1.4.3-preview.
  • improved performance of EntityManager.AddComponent(NativeArray<Entity>,ComponentType) and EntityManager.RemoveComponent(NativeArray<Entity>,ComponentType)
  • TypeCategory.Class is deprecated in favour of TypeCategory.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] on IBufferElementData 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 marked ReadOnly
  • TypeManager.GetWriteGroupTypes() no longer leaks AtomicSafetyHandle 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 to DynamicBuffer.
  • 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; and RemoveComponent(Entity, ComponentTypes), which removes multiple components from a single entity. (AddComponent(Entity, ComponentTypes) and RemoveComponent(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 to IJobEntityBatch.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 existing Worlds from the Unity player loop before destroying them. If a World that was added to the player loop is destroyed manually prior to domain unload, it must also be removed from the player loop manually using ScriptBehaviourUpdateOrder.RemoveWorldFromPlayerLoop().
  • Updated package com.unity.platforms to version 0.7.0-preview.8.
  • EntityManager.CreateEntity(), EntityManager.SetArchetype(), and EntityCommandBuffer.CreateEntity() n...
Read more

0.11.2-preview.1

17 Sep 16:03
Compare
Choose a tag to compare
0.11.2-preview.1 Pre-release
Pre-release

[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

10 Sep 07:04
Compare
Choose a tag to compare
0.14.0-preview.19 Pre-release
Pre-release

[0.14.0] - 2020-08-04

Added

  • Added IsEmpty property to DynamicBuffer.
  • 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; and RemoveComponent(Entity, ComponentTypes), which removes multiple components from a single entity. (AddComponent(Entity, ComponentTypes) and RemoveComponent(EntityQuery, ComponentTypes) already existed. This patch just fills in a few 'missing' methods.)

Changed

  • IJobEntityBatch.ScheduleSingle is being renamed to IJobEntityBatch.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 existing Worlds from the Unity player loop before destroying them. If a World that was added to the player loop is destroyed manually prior to domain unload, it must also be removed from the player loop manually using ScriptBehaviourUpdateOrder.RemoveWorldFromPlayerLoop().
  • Updated package com.unity.platforms to version 0.7.0-preview.8.
  • EntityManager.CreateEntity(), EntityManager.SetArchetype(), and EntityCommandBuffer.CreateEntity() no longer accept the value returned by new EntityArchetype() because it's invalid. Same for EntityCommandBuffer.CreateEntity() and EntityCommandBuffer.ParallelWriter.CreateEntity(). Always use EntityManager.CreateArchetype() instead of new EntityArchetype() to create EntityArchetype values. (Ideally, the EntityArchetype 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 to IJobEntityBatch.ScheduleParallel
  • ScriptBehaviourUpdateOrder.UpdatePlayerLoop() is being deprecated in favor of ScriptBehaviourUpdateOrder.AddWorldToPlayerLoop(). Due to slightly different semantics, a direct automated API update is not possible: the new function always takes a PlayerLoopSystem object to modify, does not call UnityEngine.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 of ScriptBehaviourUpdateOrder.IsWorldInCurrentPlayerLoop(World).

Removed

  • Removed obsolete ScriptBehaviourUpdateOrder.CurrentPlayerLoop. Use UnityEngine.LowLevel.PlayerLoop.GetCurrentPlayerLoop() instead.
  • Removed obsolete ScriptBehaviourUpdateOrder.SetPlayerLoop(). Use UnityEngine.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

14 Aug 05:05
Compare
Choose a tag to compare
0.14.0-preview.18 Pre-release
Pre-release

[0.14.0] - 2020-08-04

Added

  • Added IsEmpty property to DynamicBuffer.
  • 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; and RemoveComponent(Entity, ComponentTypes), which removes multiple components from a single entity. (AddComponent(Entity, ComponentTypes) and RemoveComponent(EntityQuery, ComponentTypes) already existed. This patch just fills in a few 'missing' methods.)

Changed

  • IJobEntityBatch.ScheduleSingle is being renamed to IJobEntityBatch.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 existing Worlds from the Unity player loop before destroying them. If a World that was added to the player loop is destroyed manually prior to domain unload, it must also be removed from the player loop manually using ScriptBehaviourUpdateOrder.RemoveWorldFromPlayerLoop().
  • Updated package com.unity.platforms to version 0.7.0-preview.8.
  • EntityManager.CreateEntity(), EntityManager.SetArchetype(), and EntityCommandBuffer.CreateEntity() no longer accept the value returned by new EntityArchetype() because it's invalid. Same for EntityCommandBuffer.CreateEntity() and EntityCommandBuffer.ParallelWriter.CreateEntity(). Always use EntityManager.CreateArchetype() instead of new EntityArchetype() to create EntityArchetype values. (Ideally, the EntityArchetype 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 to IJobEntityBatch.ScheduleParallel
  • ScriptBehaviourUpdateOrder.UpdatePlayerLoop() is being deprecated in favor of ScriptBehaviourUpdateOrder.AddWorldToPlayerLoop(). Due to slightly different semantics, a direct automated API update is not possible: the new function always takes a PlayerLoopSystem object to modify, does not call UnityEngine.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 of ScriptBehaviourUpdateOrder.IsWorldInCurrentPlayerLoop(World).

Removed

  • Removed obsolete ScriptBehaviourUpdateOrder.CurrentPlayerLoop. Use UnityEngine.LowLevel.PlayerLoop.GetCurrentPlayerLoop() instead.
  • Removed obsolete ScriptBehaviourUpdateOrder.SetPlayerLoop(). Use UnityEngine.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

22 Jul 16:04
Compare
Choose a tag to compare
0.13.0-preview.24 Pre-release
Pre-release

[0.13.0] - 2020-07-10

Added

  • Added new EntityCommandBuffer methods: AddComponent(Entity, ComponentTypes) and AddComponent(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) and RemoveComponent(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 of IJobEntityBatch and 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)
  • Changed the Profiler markers for EntityCommandBuffer.Playback from EntityCommandBufferSystems to include the name of the system that recorded the EntityCommandBuffer.
  • Bumped burst to 1.3.2 version.
  • Changed the EntityQuery commands for AddComponent, RemoveComponent, and DestroyEntity in the EntityCommandBuffer to use Burst during Playback.
  • Optimized IJobChunk and Entities.ForEach ScheduleParallel when there is no EntityQuery filtering necessary (shared component or change filtering).
  • Changed TypeManager.GetSystems() to return an IReadOnlyList<Type> rather than a List<Type>
  • Updated package com.unity.platforms to version 0.6.0-preview.1.
  • Changed EntityContainer to write data back to the entity.
  • Updated package com.unity.properties and com.unity.serialization to version 1.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 when Entities.ForEach contained multiple Entities.ForEach in the same scope capturing multiple variables.
  • Fixed an issue where EntityManager's AddComponent(), RemoveComponent(), and CopyEntitiesFrom() methods threw an error if their input was a NativeArray<Entity> allocated with Allocator.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 with using or foreach and WithoutBurst.
  • Fixed an Unexpected error when Job.WithCode was used with WithStructuralChanges. This now throws an error.
  • Fixed a bug where Unity.Scenes.EntityScenesPaths.GetTempCachePath() returned invalid strings.

Deprecated

  • ScriptBehaviourUpdateOrder.UpdatePlayerLoop() is being deprecated in favor of ScriptBehaviourUpdateOrder.AddWorldToPlayerLoop(). Due to slightly different semantics, a direct automated API update is not possible: the new function always takes a PlayerLoopSystem object to modify, does not call UnityEngine.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 of ScriptBehaviourUpdateOrder.IsWorldInCurrentPlayerLoop(World).

Removed

  • Removed obsolete ScriptBehaviourUpdateOrder.CurrentPlayerLoop. Use UnityEngine.LowLevel.PlayerLoop.GetCurrentPlayerLoop() instead.
  • Removed obsolete ScriptBehaviourUpdateOrder.SetPlayerLoop(). Use UnityEngine.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 existing ComponentDataFromEntity.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 to TypeManager.GetSystems() to return all systems available to the runtime including systems decorated with [DisableAutoCreation].
  • Added DynamicBuffer.RemoveAtSwapBack() and DynamicBuffer.RemoveRangeSwapBack()
  • Added Entities.WithDisposeOnCompletion to correctly Dispose of types after running an Entities.ForEach.
  • Added SystemBase.GetBuffer/GetBufferFromEntity that are patched so that they can be used inside of Entities.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 the FixedTimestepSystemUpdate 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 the World from the "all worlds" list.
  • Extended TypeManager.GetSystems() to support getting systems filtered by any and/or all WorldSystemFilterFlags.
  • Updated package com.unity.platforms to version 0.4.0-preview.5.
  • Updated package com.unity.burst to version 1.3.0-preview.12.
  • Unity.Entities.DefaultWorldInitialization has been moved from the Unity.Entities.Hybrid assembly into the Unity.Entities assembly.
  • Unity.Entities.DefaultWorldInitialization.Initialize() now returns the initialized World.DefaultGameObjectInjectionWorld object.
  • ArchetypeChunkComponentType has been renamed to ComponentTypeHandle
  • ArchetypeChunkComponentTypeDynamic has been renamed to DynamicComponentTypeHandle
  • ArchetypeChunkBufferType has been renamed to BufferTypeHandle
  • ArchetypeChunkSharedComponentType has been renamed to SharedComponentTypeHandle
  • ArchetypeChunkEntityType has been renamed to EntityTypeHandle
  • ArchetypeChunkComponentObjects has been renamed to ManagedComponentAccessor
  • Unity.Entities.EditorRenderData has been moved from the Unity.Entities.Hybrid assembly to the Unity.Entities assembly.
  • Unity.Scenes.Hybrid has been renamed to Unity.Scenes. Any asmdefs referring to the old assembly name must be updated. The ScriptUpgrader will take care of updating using namespace imports.
  • Unity.Entities.SceneBoundingVolume has moved from the Unity.Entities.Hybrid assembly to the Unity.Scenes assembly and Unity.Scenes namespace. Any asmdefs referring to the old assembly name must be updated. The ScriptUpgrader will take care of updating using namespace imports.
  • EntityCommandBuffer.Concurrent has been renamed to EntityCommandBuffer.ParallelWriter.
  • EntityCommandBuffer.ToConcurrent() has been renamed to EntityCommandBuffer.AsParallelWriter() and now returns EntityCommandBuffer.ParallelWriter (renamed from Concurrent).
  • Duplicate query parameters (from WithAll and lambda parameters) are now allowed in Entities.ForEach (they are now sanitized for the user).
  • If a change filter is used in Entities.ForEach with WithChangeFilter, the component type will automatically get added to the query.
  • Add additional warnings around conflicting use of WithNone, WithAll, WithAny and lambda parameters in Entities.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 throws ArgumentException instead of `In...
Read more

0.11.1-preview.4

16 Jun 16:03
Compare
Choose a tag to compare
0.11.1-preview.4 Pre-release
Pre-release

[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 version 1.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 and EntityManager.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, use World.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 and OrderLast. 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 or FixedRateUtils.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 of JobComponentSystem
  • 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 like ToComponentDataArray
  • UnloadAllAssets will no longer unload assets referenced by shared or managed components.

0.11.0-preview.7

26 May 02:45
Compare
Choose a tag to compare
0.11.0-preview.7 Pre-release
Pre-release

[0.11.0] - 2020-05-25

Added

  • Added ArchetypeChunkComponentObjects<T>.Length

Changed

  • Updated package com.unity.burst to version 1.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 and EntityManager.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, use World.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 and OrderLast. 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 or FixedRateUtils.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 of JobComponentSystem
  • 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 like ToComponentDataArray
  • 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 the SystemBase class. These methods call through to the ComponentSystemBase method when in OnUpdate code and codegen access through a stored ComponentDataFromEntity when inside of Entities.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 a NativeSlice
  • 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 and WorldSystemFilterFlags.DotsRuntimeGameObjectConversionto 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 version 1.1.1-preview.
  • Updated package com.unity.serialization to version 1.1.1-preview.
  • Updated package com.unity.platforms to version 0.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 and IConvertGameObjectToEntity
  • ComponentDataProxyBaseEditor, DynamicBufferProxyBaseEditor from Unity.Entities.Editor deprecated
  • ComponentDataProxy<T>, ComponentDataProxyBase, DynamicBufferProxy<T>, SharedComponentDataProxy<T>, SceneSectionProxy from Unity.Entities.Hybriddeprecated
  • MockDataProxy, MockDynamicBufferDataProxy, MockSharedDataProxy, MockSharedDisallowMultipleProxy from Unity.Entities.Tests deprecated
  • CopyInitialTransformFromGameObjectProxy, CopyTransformFromGameObjectProxy, CopyTransformToGameObjectProxy, LocalToWorldProxy, NonUniformScaleProxy, RotationProxy, TranslationProxy from Unity.Transforms deprecated
  • Deprecated ScriptBehaviourUpdateOrder.CurrentPlayerLoop; Use PlayerLoop.GetCurrentPlayerLoop() instead
  • Deprecated ScriptBehaviourUpdateOrder.SetPlayerLoop; Use PlayerLoop.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, and BufferFromEntity 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 and AutoCreateComponentSystemTests_* systems are no longer added to the simulation world...
Read more

0.10.0-preview.6

26 May 02:44
Compare
Choose a tag to compare
0.10.0-preview.6 Pre-release
Pre-release

[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 the SystemBase class. These methods call through to the ComponentSystemBase method when they are in OnUpdate code and codegen access through a stored ComponentDataFromEntity when inside of Entities.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 a NativeSlice
  • 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 and WorldSystemFilterFlags.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 version 1.1.1-preview.
  • Updated package com.unity.serialization to version 1.1.1-preview.
  • Updated package com.unity.platforms to version 0.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 and IConvertGameObjectToEntity.
  • Deprecated ComponentDataProxyBaseEditor, DynamicBufferProxyBaseEditor from Unity.Entities.Editor.
  • Deprecated ComponentDataProxy<T>, ComponentDataProxyBase, DynamicBufferProxy<T>, SharedComponentDataProxy<T>, SceneSectionProxy from Unity.Entities.Hybrid.
  • Deprecated MockDataProxy, MockDynamicBufferDataProxy, MockSharedDataProxy, MockSharedDisallowMultipleProxy from Unity.Entities.Tests.
  • Deprecated CopyInitialTransformFromGameObjectProxy, CopyTransformFromGameObjectProxy, CopyTransformToGameObjectProxy, LocalToWorldProxy, NonUniformScaleProxy, RotationProxy, TranslationProxy from Unity.Transforms.
  • Deprecated ScriptBehaviourUpdateOrder.CurrentPlayerLoop. Use PlayerLoop.GetCurrentPlayerLoop() instead.
  • Deprecated ScriptBehaviourUpdateOrder.SetPlayerLoop. Use PlayerLoop.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, and BufferFromEntity 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 and AutoCreateComponentSystemTests_* 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) broke Entities.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.