Releases: needle-mirror/com.unity.entities
Releases · needle-mirror/com.unity.entities
1.0.0-pre.65
[1.0.0-pre.65] - 2023-03-21
Added
- Added support for automatic data mode switching to the Entities Hierarchy window and the Inspector window.
- Added BlobAsset safety check for passing blob assets into methods without using
ref
. - Added the
LocalTransform.ComputeWorldTransformMatrix()
which synchronously computes an entity's world-space transform matrix, in the rare cases where an accurate world transform is needed in simulation code and is otherwise be unavailable. - Added
RefRW<T> SystemAPI.GetComponentRW<T>(Entity,bool)
- Bulk SetComponentEnabled operations on EntityManager:
EntityManager.SetComponentEnabled<T>(EntityQuery, bool)
andEntityManager.SetComponentEnabled(EntityQuery, ComponentType, bool)
. - A
Unity.Transforms.Helpers
class with assorted transform-related helper functions:- A simple
float4x4
extension methods for field extraction, such as.Up()
,.Forward()
and.Translation()
- Added utilities to apply a transformation matrix to a
float3
point or direction, or to aquaternion
rotation - A method to synchronously compute an entity's world-space transform,
.ComputeWorldTransformMatrix()
- A method to compute the "LookAt"
quaternion
rotation for a position that would cause its "forward" direction to point towards some target.
- A simple
TypeIndex.IsChunkSerializable
property has been added to identify if a component type is valid in a chunk that is intended to be serialized. IfSerializeUtility.SerializeWorld
(such as might be called while exporting a subscene) is used to serialize chunks that contain components whoseTypeIndex.IsChunkSerializable
returns false, an exception will be thrown telling you why the component type is inappropriate for serialization.- Added
WeakSceneReference Unload(Scene scene)
method to unload the scene instance and release its resources. - Added guidance to GetSingleton error message
- Transform Usage Flags
- Added support for managed (shared) components serialization in DOTS runtime.
Changed
- Moved the tool for adding missing
partial
keywords to system and job types from Edit > Preferences > Entities into a Roslyn codefix. Your IDE of choice should now be able to fix this for you, and give you a red squiggly line if it's missing. - IJobEntity no longer gives a compile error if you have a reference type field. This improves iteration time, and has the added benefit that you can now write managed code in an IJobEntity. Simply add a managed component to your IJE's Execute (that forces running without the jobsystem). Your job can now validly use that field. If you try to schedule this job rather than running it on the main thread, you'll correctly get thrown a runtime error for having a reference type in your job.
- Improved performance of IJobEntity generator, speeding up compile times. Attributes like WithAll, WithAny etc. now use syntax information directly. This mean that you can't make your own attribute on an IJobEntity named
WithAll
WithAny
,WithNone
,WithDisabled
,WithAbsent
,WithOptions
, orWithChangeFilter
. - Updated Burst dependency version to 1.8.3.
- What was PostTransformScale as a float3x3 is now PostTransformMatrix as a float4x4. This is more general and offers maximum flexibility. You can, for example, use it to scale from a secondary pivot.
- ParentSystem removes the Parent component if said component points to an entity that doesn't exist anymore.
- Refactored how additive scenes are handled within the Runtime Content Manager. A scene is now returned, and that is used as the key to unload. This change required some API changes.
- Changed
WeakObjectSceneReference.LoadAsync
to return the Scene instance, which should be used to check the loading status and for unloading. - Changed
RuntimeContentManager.UnloadScene
method to take the Scene instance as the only parameter. - The BlobAssetStore used during baking now uses garbage collection instead of an explicit refcount. It is not required anymore to register blobs with authoring GameObjects nor to do explicit cleanup in incremental baking systems.
- Source generators for Systems and Aspects no longer default to outputting generated files in
Temp/GeneratedCode/***
. To turn it on, addDOTS_OUTPUT_SOURCEGEN_FILES
to your Scripting Defines in Player Settings. Turning it on will cost compilation time. (The source generator for IJobEntity already made this change earlier.) - Moved InternalCompilerInterface, EntityQueryEnumerator (now InternalEntityQueryEnumerator) and some other types and methods to the Unity.Entities.Internal namespace. These types and methods are not intended for use by user code. We would make them internal, but source generators won't work correctly that way unfortunately.
Deprecated
- Deprecated
WeakSceneReference
Release method. Unload should now be used and the scene instance returned by LoadAsync needs to be passed in as a ref. RegisterBindingAttribute(Type runtimeComponent, string runtimeField, bool generated)
. Vector type fields can now be registered automatically without thegenerated
option.- SceneSystem.UnloadParameters and the overload of SceneSystem.UnloadScene receiving SceneSystem.UnloadParameters as parameters.
EntityQuery.SetEnabledBitsOnAllChunks
as the only bulk operation on EntityQuery instead of EntityManager. Use the newly added bulkSetComponentEnabled
overloads instead.- WeakSceneReference properties LoadingStatus, SceneResult, SceneFileResult.
- RuntimeContentManager methods GetSceneLoadingStatus, GetSceneFileValue, GetSceneValue
Removed
ENABLE_TRANSFORM_V1
define and existing transform v1 code. Transform v2 is now the only transform system.- Tooling to re-write user files to add missing partial keywords to systems.
- The
TransformAspect
struct was removed. Recent changes to the Entities transform systems made the current implementation ofTransformAspect
much less useful, and we've decided to remove it from the package until we can provide a more valuable abstraction over the DOTS transform components. - The
EntityQueryEnumerator.EntityCount
field has been removed from the public API. Note thatEntityQueryEnumerator
is only intended for use by DOTS source generators. BlobAssetComputationContext
made internal.
Fixed
- Baker IEntitiesPlayerSettings were not setup correctly if the com.unity.platforms package was not installed/present in the project.
- IJobEntity now no longer caches the default query when scheduling with a dynamic query. For example.
new MyJob().Schedule();
will use the query matching its execute signature whereasnew MyJob().Schedule(myQuery)
will now only use myQuery. This is useful in cases like RequireMatchingQueriesForUpdate, where you don't want to accidentally create extra queries. - Jobs implementing IJobEntity can now be created in one assembly and scheduled in another.
- The
[WithDisabled]
attribute when applied to a job implementingIJobEntity
now overrides the implicitAll
query defined by the signature ofExecute
. E.g.Execute(MyComp a)
and[WithDisabled(typeof(MyComp))]
now defines a query of EntityQuery(all={}, disabled=MyComp). This is useful in cases where you want to enable all components of type X which are present, but disabled. WriteGroup
support in transform v2LocalToWorldSystem
code should now work correctly.- Fixed compilation issue with 23.1/23.2*
- Detection of circular ordering dependencies between systems is now correct.
- Chaining
EntityQuery
methods with bulk operation methods is now supported. - Docs and samples for ECB systems now accurately reflect recommended usage. Fixed issue during
TypeManager.Initialize
where managed components with a field containing a circular type definition may throwArgumentException: An item with the same key has already been added.
- Calling Release on a
WeakObjectReference<GameObject>
will no longer log errors in the editor. - Zero-sized ("tag") enableable components were not always correctly enabled by default, when added to an entire chunk (such as via
EntityManager.AddComponent<EnableableTag>(query)
). - Fixed issue with DotsGlobalSettings reporting the incorrect PlayType when switching from DedicatedServer to another standalone build target.
- Fixed TypeManager initialization causing a crash in the Entities Hierarchy.
- If you schedule an
IJobEntity
instance with a custom query that doesn't contain the components required for theExecute()
method to run, a readable and actionable runtime exception is now thrown when safety checks are enabled. EntityCommandBuffer.Dispose()
can no longer trigger a stack overflow when disposing large command buffers.- Throw a readable, actionable compile-time error informing users that
RefRO<T>
,RefRW<T>
,EnabledRefRO<T>
,EnabledRefRW<T>
,DynamicBuffer<T>
andUnityEngineComponent<T>
may not be used with generic types. - A
foreach
iterating over anEntityQuery
with enableable components now iterates over the correct entities. - Re-added obsolete baker functions
- The accidental exposure of package internals to "Assembly-CSharp" was reverted.
- Default the build system to use the client settings if the package com.unity.netcode is not installed when the active platform is dedicated server.
Entities.WithStructuralChanges().ForEach()
now correctly handles enableable components.- Allow components to contain nested native containers. Previously the TypeManager would throw during initialization if a component contained a a nested NativeContainer field. Note: NativeContainers still cannot be verified to be safely accessed when used in jobs. So, if a component contains a nested NativeContainer field, that component can only be accessed from the main thread.
- Entities Hierarchy correctly selects the subscenes
- Invalid entity warning in Inspector window with runtime data mode is only applied to entities or game objects that can be converted to entities.
- Issue with IJ...
1.0.0-pre.47
[1.0.0-pre.47] - 2023-02-28
Fixed
- Stripping (e.g. on il2cpp) now won't strip whole assemblies that have important systems, like graphics.
- Generic systems created at runtime no longer break sorting functionality.
1.0.0-pre.44
[1.0.0-pre.44] - 2023-02-13
Added
- Added
RegisterBindingAttribute(string authoringField, Type runtimeComponent, string runtimeField)
to provide better control when registering nested types in authoring components. - RuntimeContentSystem.LoadContentCatalog allows for starting the content delivery and update process when ENABLE_CONTENT_DELIVERY is defined. The automatic update is no longer triggered when the applications starts.
- Streaming samples.
- RemoteContentCatalogBuildUtility.BuildContent helper method added to allow building player content without having to rebuild the player. This is needed in order for developers to create their own publishing workflow for remote content delivery.
- Added missing SceneSystem.UnloadScene prototype.
- Generic IJobEntity jobs are not yet supported. Added a proper error to indicate this instead of a compiler error.
- SceneSystem.UnloadScene(WorldUnmanaged world, Entity sceneEntity, bool fullyUnload)
ManagedAPI.GetComponentTypeHandle
now let's you get a typehandle toClass IComponentData
.- Baking systems from the excluded baking assemblies are also filtered out during baking.
- Two new categories of component types can be provided when creating an
EntityQuery
. Components in theDisabled
list must be present on matching entities, but must be disabled.Components in the
Absent` list must not be on the entity at all. - Companion objects need to always instantiate since the content manager reuses loaded objects.
- A new WorldSystemFilterFlags called Streaming to identify all the systems involved in streaming.
- Add AlwaysIncludeBakingSystem internal attribute to run baking systems from excluded baking assemblies
- WorldSystemFilter to the runtime version of ResolveSceneReferenceSystem.
- DependsOnLightBaking can be called from bakers to register a dependency against light mapping data.
- Added support for managed (shared) components serialization in DOTS runtime.
- debug only check to prevent disposal of blob assets managed by a blob asset store.
Changed
ComponentTypeHandle
andBufferTypeHandle
now more consistently use their cache of per-archetype metadata to accelerate common operations like.Has<T>()
,.DidChange<T>()
and.GetNativeArray<T>()
.ComponentLookup
andBufferLookup
now more consistently use their cache of per-archetype metadata to accelerate common operations like.HasComponent<T>()
,.IsComponentEnabled<T>()
and.SetComponentEnabled<T>()
.- Upgraded to use Roslyn 4.0.1
- Added better support for vector type fields in
BindingRegistry
. - Unmanaged shared components are serialized as blittable data.
ISystem
now doesn't needBurstCompile
on the struct. Thus bursting a system simply means to put BurstCompile on eitherOnCreate
,OnStartRunning
,OnUpdate
,OnStopRunning
, orOnDestroy
.- The "a system could not be added to group" error message now contains the name of the World affected for easier debugging
- Nested native containers are protected against in any type attributed with [NativeContainer]
- Unmanaged shared components are no longer boxed when collecting BlobAssetReferences.
- EditorEntityScenes.GetSubScenes was made public in order to gather subscenes to pass to the BuildContent API.
EntityManager.GetAllUniqueSharedComponents
now takes anAllocatorManager.AllocatorHandle
instead of anAllocator
enum parameter allowing for custom allocators to be used when allocating theNativeList<T>
return value.Allocator
implicitly converts toAllocatorManager.AllocatorHandle
so no action is required to call the changed API.- IJobEntity refactored to IncrementalGenerator.
- IJobEntity now doesn't default to outputting generated files in
Temp/GeneratedCode/***
. To turn it on useDOTS_OUTPUT_SOURCEGEN_FILES
. Turning it on will cost Compilation Time. - Replaced .Name with .FullName for duplicated component message in baking.
- Removed
IIsFullyUnmanaged
due to obtrusiveness when compilation fails. Instead gives runtime error when incorrectly scheduling managed IJobEntity. - ManagedComponents and Shared Managed Components can now be Scheduled in IJobEntity (ScheduleParallel still not allowed. Runtime error will be thrown if you try.)
- Invalid entities now show their index and version when viewed in the inspector
- In Bakers AddTransformUsageFlags now takes an entity instead of a GameObject or a Component.
- Baking log output to be more succinct.
- In cases where there are no attributes constraining the order of system creation, updating, and destruction, the order will have changed to enable optimizations. If you have mysterious bugs after this update, check for missing [CreateAfter], [CreateBefore], [UpdateAfter], and [UpdateBefore] attributes.
Deprecated
- Deprecated
RegisterBindingAttribute(Type runtimeComponent, string runtimeField, bool generated)
. Vector type fields can now be registered automatically without thegenerated
option. - SceneSystem.UnloadParameters and SceneSystem.UnloadScene receiving SceneSystem.UnloadParameters as parameters.
Removed
- SourceGen no longer outputs .cs files in
Temp/GeneratedCode
by default, because most IDEs such as Rider and Visual Studio support SourceGen output. If you want to emit the output (at the cost of significant compilation time), use theDOTS_OUTPUT_SOURCEGEN_FILES
define. - From Unity Editor version 2022.2 and later, the Auto Generate mode in the Lighting window is unavailable with the Entities package. This is because when you generate lighting in a project, the Unity Editor opens all loaded subscenes, which might slow down Editor performance. On demand baking is still available and is the recommended way of generating lighting.
- Tooling to re-write user files to add missing partial keywords to systems.
Fixed
- A selection issue with keyboard arrow keys in Entities Hierarchy window.
- GetComponent on Transform triggers now a rebake when the gameobject is reparented.
- Removed unnecessary test assemblies from always being loaded in projects.
- In DOTS Runtime, shared components containing managed references could generate incorrect results when calling
TypeManager.Equals
and/orTypeManager.GetHashCode
. We also now reinforce that all shared components containing managed references must implementIEquatable<>
- Using
EnabledRefRO<T>
andEnabledRefRW<T>
parameters inIJobEntity.Execute()
with zero-sized enableable components is now supported. - The transform system no longer increments the change version of
WorldTransform
andLocalToWorld
on all world-space entities every frame. This prevents entity hierarchies from being processed redundantly, even if their root entity had not moved since the last update. - Fixes lightmaps for player builds
- Creating multiple additional entities in a baker now scales linearly
- Fixed the behavior of EntityRemapUtility.HasEntityReferencesManaged for types where Entity or BlobAsset reference fields are succeeded by two or more strings.
- Setting a shared component to its default value using an EntityCommandBuffer could cause the default value to be duplicated and this would prevent query filtering from working correctly.
- Using
EnabledRefXX<T>
andRefXX<T>
wrappers on the same component in the sameIJobEntity.Execute()
method no longer throws compiler errors. - It is now possible to force reimport a single or multiple subscenes from the inspector when the last import of the subscene failed.
- Fix SubScene issue with File -> Save As when having a SubScene as the Active Scene.
EntityQueryEnumerator.MoveNextEntityRange()
now consistently returns the correctentityCount
value.- IJobEntity compile error when using an aspect's lookup type as field.
- Invalid subscene nodes issues in Entities Hierarchy window.
- Some
EntityManager
methods (includingRemoveComponent()
were not calling their Burst-compiled implementations. - Badly formatted error messages when they are emitted while in burst-compiled code.
- Performance issue in Entities Hierarchy when opening large subscenes.
- An
EntityCommandBuffer
containing references to managed components will no longer throw an exception if it is disposed from a Burst-compiled context. - Errors for DynamicSharedComponentTypeHandle were reporting as DynamicComponentTypeHandle
- Entities Hierarchy reset properly after test runner execution.
- Fixed a small memory leak that would occur when calling
EntityManager.GetAllUniqueSharedComponents
with anunmanaged
componentT
type. - Improve subscene handling in Entities Hierarchy
- Stack overflow in source generators when IComponentData has a cycle.
- Fix a NullReferenceException happening in the BakingFilterSettings when an assembly definition added in the excluded list of baking assemblies is missing.
- First cross reference to section 0 being lost.
- Fix missing subscene sections to load and unload from the subscene inspector.
- Aspect generator cache flush. Nested aspects no longer cause compilation error when their fields are changed.
- Added implicit dependency on transform hierarchy for transform bakers.
- Section 0 unloading is delayed until all the other sections are unloaded.
- Loading scene sections with
BlockOnStreamIn
failed if section 0 wasn't loaded first. - Components window's list view item height is fixed to the correct value.
- IJobEntityChunkBeginEnd now doesn't update change version if
shouldExecuteChunk
is false. - The detection of duplicate components during baking was failing between different baking passes.
- Issue with types used in codegen not being found if there if they exist in a more namespace name that aliases with a more immediate namespace name.
- The following
ArchetypeChunk
methods may now be invoked on zero-sized components without triggering any exception:GetNativeArray<T>(ref ComponentTypeHandle<T> typeHandle)
,GetComponentDataPtrRO<T>(ref ComponentTypeHandle<T> typeHandle)
, `GetComponentDataPtrRW(ref...
1.0.0-pre.15
[1.0.0-pre.15] - 2022-11-16
Added
- Support serializing UnityEngine.AnimationCurves in managed components.
- Changing shared component data (managed or unmanaged) is now tracked by the entities structural changes profiler module.
- WorldUnmanaged.GetAllSystems
- Support for enabling or disabling components in the entity inspector, for components that derives from the
IEnableableComponent
interface. TypeManager.TypeIndex
type providing type safety and improved debugging working with type indices given from theTypeManager
.- Missing docs for Scratchpad and UpdateAllocator public APIs.
ComponentTypeSet
now has a debugger type proxy, to show the list of components it contains.- DotsPlayerSettings can provide their own set of custom scripting defines.
- UnityObjectRef now implements IEquatable<UnityObjectRef>.
- Support for
RefRW<T>
,RefRO<T>
,EnabledRefRW<T>
andEnabledRefRO<T>
parameters inIJobEntity.Execute()
. - Added convenience methods for adding Chunk Components to an EntityQueryBuilder.
- Docs to provide an overview of prebuilt custom allocators.
SystemAPI.ManagedAPI.HasComponent
,SystemAPI.ManagedAPI.GetComponent
,SystemAPI.ManagedAPI.TryGetComponent
,SystemAPI.ManagedAPI.GetSingleton
,SystemAPI.ManagedAPI.TryGetSingleton
.- managed
EntityQuery.TryGetSingleton
SystemAPI.Query<ManagedAPI.UnityEngineComponent<MyUnityEngineComp>>
support.EntityQuery.TryGetSingletonRW
andSystemAPI.TryGetSingletonRW
- Workflow for preparing builds for publishing
- Workflow for preparing content updates for published builds
- Runtime functionality to download and update remote content
- Profiler module for the runtime content manager that tracks loading information.
SystemAPI.IsComponentEnabled
,SystemAPI.IsBufferEnabled
,SystemAPI.ManagedAPI.IsComponentEnabled
to get component enabledness from an entity. To do this in jobs, do so in ComponentLookup/BufferLookup.SystemAPI.SetComponentEnabled
,SystemAPI.SetBufferEnabled
,SystemAPI.ManagedAPI.SetComponentEnabled
to set component enabledness from an entity. To do this in jobs, do so in ComponentLookup/BufferLookup.RequireForUpdateWithSystemComponent
to SystemBase and ISystem to help explain that system components won't normally partake in queries without explicitly mentioning it.- EntityQueryBuilder ChunkComponent calls to SystemAPI.EntityQueryBuilder for better symmetry.
- Added
EntityCommandBuffer.ParallelWriter.SetEnabled(Entity,bool)
method, for parity with the main-thread interface. - A isReadOnly field (with default arg) to
TryGetSingletonBuffer
so it matches its cousinGetSingletonBuffer
- ArchetypeChunk.Has and ArchetypeChunk.HasChunkComponent for ease of checking (useful for
IJobEntityChunkBeginEnd
) IJobEntityChunkBeginEnd
- allowing you to run code at the start and end of chunk iteration.SystemAPI.GetXTypeHandle
to easily get cached and.Update
'd handles :3- The new tag component
PropagateLocalToWorld
must be added to any entity which needs its children to inherit its fullLocalToWorld
matrix, instead of the more compactWorldTransform
representation. This path is slightly slower, but supports additional features likePostTransformMatrix
(for non-uniform scale), and interpolation by the Physics and Netcode packages. - Added
ArchetypeChunk.IsComponentEnabled(ref DynamicComponentTypeHandle)
. - ContentDeliverySystem.UpdateContent API
- Added
No aspects
message for Aspects tab in Inspector when no aspect is available for selected entity. - Support for sticky data mode to the Entities Hierarchy window and the Inspector window.
- Support for automatic data mode switching to the Entities Hierarchy window and the Inspector window.
Changed
- Entities package test components such as
EcsTestData
are no longer part of the package's public API; they are only intended for internal package testing. - WorldUnmanaged.CurrentTime renamed to WorldUnamanged.Time
- WorldUnmanaged.TryGetSystemStateForId is now internal
- WorldUnmanaged.IsCreated is now public
- SystemState.ShouldRunSystem is now public
- Renamed the fields of
EntityBlobRefResult
to match the C# coding standard. - Renamed the
DOTS Hierarchy
window toEntities Hierarchy
. - Renamed the
DOTS
sub-menu from the top-levelWindow
menu toEntities
. - Renamed the
DOTS
section in thePreferences
window toEntities
. - Changed the order of the items under
Window>Entities
to be deterministic. - Moved the baking options to the DOTS Editor preferences page.
- EntityQueries created via EntityManager.CreateEntityQuery or EntityQueryBuilder.Build(EntityManager) will be owned by the EntityManager and be disposed by the EntityManager when it is destroyed.
- RuntimeContentManager API for loading and managing Unity engine objects loaded from Content Archives.
- WeakObjectReference can be used to manage weak objects at runtime.
- Asset bundles are no longer build and loaded for referenced unity objects. AssetBundleManager class has been removed.
- Bakers for base component types and decorated with
[BakeDerivedTypes]
are evaluated before bakers for derived component types. - Renamed
EntityCommandBuffer.*ForEntityQuery
methods to be their singular overload equivalentsEntityCommandBuffer.*
. E.g.EntityCommandBuffer.DestroyEntitiesForEntityQuery
is now an overload inEntityCommandBuffer.DestroyEntity
. EntityCommandBuffer is now more in line with EntityManager!. EntityQuery.CalculateEntityCount(NativeArray<Entity>)
EntityQuery.CalculateEntityCountWithoutFiltering(NativeArray<Entity>)
EntityQuery.MatchesAny(NativeArray<Entity>)
EntityQuery.MatchesAnyIgnoreFilter(NativeArray<Entity>)
EntityQuery.ToEntityArray(NativeArray<Entity>, Allocator)
EntityQuery.ToComponentDataArray(NativeArray<Entity>, Allocator)
Entities.ForEach.WithFilter(NativeArray<Entity>)
- Renamed
BufferLookup.IsComponentEnabled
toBufferLookup.SetBufferEnabled
andBufferLookup.SetComponetEnabled
toBufferLookup.SetBufferEnabled
. - Renamed IJobEntity
EntityInQueryIndex
toEntityIndexInQuery
to match name scheme found inChunkIndexInQuery
andEntityIndexInChunk
- Renamed
BlobAssetStore.Remove
toBlobAssetStore.TryRemove
, to better convey its functionality, as it only removes the BlobAsset if it is present. - added some missing xml docs
- removed cleanup call from RuntimeContentSystem.OnDestroy as this could be called multiple times when there are multiple worlds
- Baked primary entities no longer have an implicit dependency on the Transform component.
- Removed the inner TransformData struct from WorldTransform, LocalTransform and ParentTransform (and instead use extension methods and properties). Position/Rotation/Scale can now be accessed directly on the transform type itself.
ComponentTypeHandle
,BufferTypeHandle
,DynamicComponentTypeHandle
, andDynamicSharedComponentTypeHandle
arguments toArchetypeChunk
methods are now passed byref
instead of by value. This facilitates a caching optimization that will be implemented in a future release.- Renamed the PostTransformMatrix component to PostTransformScale, and changed its value type to float3x3.
- Searching the Entities hierarchy using the component filter now treats multiple entries as AND rather than OR.
- Updated transform documentation.
- Improved performance of
EntityManager.DestroyEntity(EntityQuery)
- The build settings are no longer stored in the Assets folder.
- It's now a compile error to schedule with managed code (for IJobEntity and IJobChunk)
- Blob asset safety verifier rewritten as a Roslyn analyzer (results in domain reload time improvements and IDE support with CodeFixes).
- Blob assets now create a compile error if it contains a pointer e.g.
fixed byte[16]
. - Blob assets now warn on new assignments e.g.
var test = new MyBlob()
andvar test = default(MyBlob)
. ComponentTypeSet
is now areadonly
struct, which is passed byin
instead of byvalue
Deprecated
- rename
EntityManager.CompleteAllJobs
toEntityManager.CompleteAllTrackedJobs
, to more accuractly describe what it is doing. - SystemState.Time and SystemBase.Time has been deprecated in favor of World.Time and SystemAPI.Time
[WithEntityQueryOptions]
for IJobEntity becomes[WithOptions]
to be consistent withEntityQueryBuilder
andSystemAPI.QueryBuilder
SystemAPI.Query.WithEntityQueryOptions
becomesSystemAPI.Query.WithOptions
to be consistent withEntityQueryBuilder
andSystemAPI.QueryBuilder
ArchetypeChunk.ChunkEntityCount
is now deprecated. It is guaranteed to always have the same value asArchetypeChunk.Count
, and the latter should be preferred.- SystemAPI duplicated API in
ComponentSystemBase
.HasSingleton
,GetSingleton
,GetSingletonRW
,GetSingletonBuffer
,TryGetSingleton
,TryGetSingletonBuffer
,SetSingleton
,GetSingletonEntity
,TryGetSingletonEntity
. Use SystemAPI alternatives instead. - SystemAPI duplicated API in
ComponentSystemBaseManagedComponentExtensions
.GetSingleton
,GetSingletonRW
,SetSingleton
. Use SystemAPI alternatives instead. - SystemAPI duplicated API in
SystemBase
.GetComponent
,SetComponent
,HasComponent
,GetBuffer
andExists
. Use SystemAPI alternatives instead.
Removed
ISystemBase
as the old name for good, use the new nameISystem
- Removed the
Journaling
sub-menu from theDOTS
top-level menu.Enable Entities Journaling
can be set through thePreferences
window or from theJournaling
window.Export to CSV
can be triggered from theJournaling
window. - The "Add missing partials keyword to systems" menu item has been removed. It was intended to help older DOTS projects update to the 0.50.x, and is no longer necessary for 1.0 and beyond.
- Removed
BufferAccessor
constructor from the public API. Use methods likeGetBufferAccessor()
to create instances of this type. - Removed unit-test helper method `Ar...
1.0.0-exp.12
[1.0.0-exp.12] - 2022-10-19
Changed
- updates to package dependencies
1.0.0-exp.8
[1.0.0-exp.8] - 2022-09-21
Added
- Added
GetSingletonBuffer(bool isReadOnly)
method onComponentSystemBase
andEntityQuery
, for use with singletonDynamicBuffer
s. NoSetSingletonBuffer()
is needed; once you have a copy of the buffer, its contents can be modified directly. CreateSystemsAndLogException()
creates managed and unmanaged systems such that all the system instances are created before their OnCreate are called. The unmanaged equivalent isGetOrCreateUnmanagedSystemsAndLogException()
.AudioSource
is supported as a companion component in subscenes- Components and buffer components can now implement the
IEnableableComponent
interface to be enabled and disabled at runtime without structural changes. See the Entities manual for more details on this feature. TypeOverridesAttribute
can be applied to components to force a type to appear to have no entity and/or BlobAssetReference fields. This attribute is useful for managed components to reduce time taken during deserialization since un-sealed
managed field types cannot statically be checked for entity/blob references and thus must be scanned at runtime.EntityManager.MoveComponent
supports moving managed components to other entities.- Added
public bool HasBuffer<T>(Entity entity) where T : struct, IBufferElementData
toEntityManager
, which can be used to check whether an entity has a dynamic buffer of a givenIBufferElementData
type - Added
protected internal bool HasBuffer<T>(Entity entity) where T : struct, IBufferElementData
toSystemBase
, which can be used to check whether an entity has a dynamic buffer of a givenIBufferElementData
type - Added
DynamicBuffer.Resize(int length, NativeArrayOptions options)
- Added
BufferTypeHandle.Update(ref SystemState)
matching the same methods onComponentTypeHandle
to improve main thread performance - Added
EntityManager.EntityManagerDebug.GetLastWriterSystemName()
, a debug method to help identify which system last touched component data in a chunk - Added
EntityManager.AddComponent(NativeArray<Entity>, ComponentTypeSet)
andEntityManager.RemoveComponent(NativeArray<Entity>, ComponentTypeSet)
to perform batch component operations on a specific set of entities - Added
EntityCommandBuffer.SetEnabled(Entity e, bool value)
to enable/disable entities from anEntityCommandBuffer
. - Added property
UpdateAllocatorEnableBlockFree
inWorld
to enable or disable world update allocator to free individual block when no memory is allocated in that block. - Added
SystemBase.Exists(Entity e)
to check if an Entity exists and is valid. Can be used inside of Entities.ForEach. GetStorageInfoLookup
can now be used inside E.FEComponentType
now provides aToFixedString
method as a Burst-compatible way of generating a component's name and access mode.Entities.ForEach
lambdas inISystem
may access system state through Systems proxy type- Added
IAspect<T>
interface for declaring aspects. See the user manual for more details on this feature. - Added
ComponentDataRef<T>
, used inside an aspect struct declaration as a proxy to the component data. It is also used during the generation of aspect code to identify the composition of the aspect. - Added
OptionalAttribute
, used for declaring optional components inside an aspect declaration. - Added
DisableGenerationAttribute
, used to disable source generation of aspect declarations. - Added
ComponentDataFromEntity.GetDataRef
andGetDataRefOptional
, used to createComponentDataRef<T>
from entity. - Added
GetAspect<T>(Entity)
andGetAspectRO<T>(Entity)
to bothSystemBase
andSystemState
, used to retrieve an aspect from an entity. - Aspect sample in EntitiesSample project. Demonstrate a few use-case using with a simple R.P.G. game design.
- Added
ComponentType.Combine()
, which combines multiple arrays of components types and removes duplicates in the process. - Added
EntityQueryEnumerator
, a new public low-level API to efficiently enumerate entities in an EntityQuery on the main thread. - Added
TransformAspect
, an aspect-based interface to transform data. - New
EntityQueryOptions.IgnoreComponentEnabledState
flag forces anEntityQuery
to match all entities in all matching chunks, regardless of their enabled-bit values. [WithAll]
Attribute that can be added to a struct that implements IJobEntity. Adding additional required components to the existing execute parameter required components.[WithNone]
Attribute that can be added to a struct that implements IJobEntity. Specifying which components shouldn't be on the entity found by the query.[WithAny]
Attribute that can be added to a struct that implements IJobEntity. Specifying that the entity found by this query should have at least one of these components.[WithChangeFilter]
Attribute that can be added to a struct that implements IJobEntity, as well as on component parameters within the signature of the execute method. This makes it so that the query only runs on entities, which has marked a change on the component specified by the[WithChangeFilter]
.[WithEntityQueryOptions]
Attribute that can be added to a struct that implements IJobEntity. Enabling you to query on disabled entities, prefab entities, and use write groups on entities.- Added
BufferLookup.Update
, allowing users to update a reference within a system instead of constructing a new lookup object every frame. - Relaxed entity creation structural safety checks in certain cases (for example, creating an entity in an unrelated archetype while iterating over a query).
- Added
[CreateBefore]
and[CreateAfter]
attributes to control the explict ordering for when systemsOnCreate
method is invoked relative to other systems. - Added
static AspectQueryEnumerable<T> Query<T>() where T : struct
in theSystemAPI
class, allowing users to performforeach
iteration through a query without having to manually set up any arguments beforehand. This method may only be used inside methods inISystem
types. - IJobEntity supports Aspects in
Execute
parameters. - Added
Update(SystemBase)
andUpdate(SystemState)
toDynamicComponentTypeHandle
,SharedComponentHandle
,DynamicSharedCompoentHandle
, andEntityTypeHandle
, in order to allow for incremental updates. - Added warnings when using slow API's from ISystem.OnUpdate. (managed SystemBase is unchanged). For example,
SystemState.GetEntityQuery
orSystemState.GetTypeHandle
. We expect users to store these objects on the system as fields and use incremental-update methods likeComponentTypeHandle<>.Update
in OnUpdate instead. - Added new menu item for exporting entities journaling data to CSV.
- Importance scaling: Custom entry for per-chunk tile data.
- Added
TypeManager.HasDescendants()
,TypeManager.IsDescendantOf()
, andTypeManager.GetDescendantCount()
for checking the inheritance relationship between types. ComponentSystemBaseManagedComponentExtensions.GetSingletonRW<T>
andComponentSystemBase.GetSingletonRW<T>()
to access singletons by reference in systems, with read/write access to the data.- Added
EntityQuery.GetSingletonRW<T>()
to access singletons by reference from an EntityQuery, with read/write access to the data. - Added new singleton access methods
EntityQuery.TryGetSingleton<T>(out T)
,EntityQuery.HasSingleton<T>()
,EntityQuery.TryGetSingletonBuffer<T>(out DynamicBuffer<T>)
, andEntityQuery.TryGetSingletonEntity<T>(out Entity)
- Added new singleton access methods to SystemAPI:
HasSingleton<T>()
,GetSingleton<T>()
,GetSingletonBuffer<T>(bool)
,TryGetSingleton<T>(out T)
,TryGetSingletonBuffer<T>(out DynamicBuffer<T>)
,SetSingleton<T>(T value)
,GetSingletonEntity<T>()
,TryGetSingletonEntity<T>(out Entity)
, andGetSingletonRW<T>()
(all of which are now supported inside Systems). - Bakers now support declaring TransformUsageFlags which specifies how the transform component will be used at runtime
- Some extra
EntityCommandBuffer
debug checks can now be enabled during playback, by settingEntityCommandBuffer.ENABLE_PRE_PLAYBACK_VALIDATION
to true. QueryEnumerable<T> SystemAPI.Query<T>()
can now accept up to 8 type arguments, i.e.QueryEnumerable<(T1, T2)> Query<T1, T2>()
,QueryEnumerable<(T1, T2, T3)> Query<T1, T2, T3>()
, and so forth. The maximum number of type arguments is set to 8, and correspondingly the maximum number of elements in the returned tuple is 8. This is in accordance with current C# convention.- Idiomatic
foreach
iteration through aspects/components is now supported insideSystemBase
types. - Added
GetEntityDataPtrRO()
,GetRequiredComponentDataPtrRO()
, andGetRequiredComponentDataPtrRW()
methods toArchetypeChunk
(mostly for internal use, to provide efficient access to a Chunk'sEntity
array for generated job code). - The DOTS Hierarchy content is now filtered based on the currently selected DataMode
- Added an indicator to the items in the DOTS Hierarchy when they are in the Runtime DataMode to differentiate them from items in the Authoring DataMode.
- Added netcode-aware
WorldSystemFilterFlags
andWorldFlags
. - Added
SystemAPI.GetComponent
,SystemAPI.SetComponent
,SystemAPI.GetBuffer
,SystemAPI.HasBuffer
,SystemAPI.GetAspect
,SystemAPI.GetAspectRO
. - Added
[ChunkIndexInQuery]
attribute, to acquire the current index of the chunk inside the query an IJobEntity is iterating over. - Added
[EntityIndexInChunk]
attribute, to acquire the current index of the entity inside the chunk an IJobEntity is iterating over. - Add an opt-in define to disable baking by default:
ENABLE_LEGACY_ENTITY_CONVERSION_BY_DEFAULT
- Added
[RequireMatchingQueriesForUpdate]
attribute, which causes a system to only call OnUpdate if anyEntityQuery
it creates matches an entity. - Added
EntityQuery
methods for asynchronous bulk en...
0.51.1-preview.21
[0.51.1] - 2022-06-27
Changed
- Package Dependencies
com.unity.jobs
to version0.51.1
com.unity.platforms
to version0.51.1
com.unity.collections
to version1.4.0
com.unity.jobs
to version0.70.0
Fixed
- an issue with source generator that was causing a compilation error when the generator was unable to create the temporary output folder.
- an issue with netcode source generator that was trying to run on assembly that did not have the right references and also when the project path was not assigned, making impossible to load the templates files.
- Entities.ForEach in method with nullable parameter types.
- SetComponent in Entities.ForEach with argument that has an element accessor.
[0.51.0] - 2022-05-04
Changed
- Package Dependencies
com.unity.jobs
to version0.51.0
com.unity.platforms
to version0.51.0
com.unity.mathematics
to version1.2.6
com.unity.collections
to version1.3.1
com.unity.burst
to version1.6.6
- Increased the maximum number of shared components per entity from 8 to 16.
- Updated dependency on version of com.unity.roslyn package that will work with both Unity 2020 and Unity 2021.
Fixed
- DOTS Entities throws a compilation error when using named arguments.
- Fix Create -> ECS -> System template now adds partial keyword.
- Fixed a possible memory stomp triggered by specific sequences of
ComponentDataFromEntity
orBufferFromEntity
calls. - EntityQuery.CopyFromComponentDataArray() and EntityQuery.CopyFromComponentDataArrayAsync() now correctly set the change version of any chunks they write to.
- If the value of the Parent component of an entity is changed while the previous parent entity was destroyed at the same time, an exception could be thrown during the next update of the transform system.
- Changes to ComponentData made outside of Systems will be properly detected by EntityQueries with changed version filters.
EntityQuery
objects are consistently compared, regardless of which version ofGetEntityQuery
is called.
Added
- New
BufferTypeHandle.Update()
method. Rather than creating new type handles every frame inOnUpdate()
, it is more efficient to create the handle once in a system'sOnCreate()
, cache it as a member on the system, and call its.Update()
method fromOnUpdate()
before using the handle. - SystemBase.GetEntityQuery can now take an EntityQueryDescBuilder.
0.51.0-preview.32
[0.51.0] - 2022-05-04
Changed
- Package Dependencies
com.unity.jobs
to version0.51.0
com.unity.platforms
to version0.51.0
com.unity.mathematics
to version1.2.6
com.unity.collections
to version1.3.1
com.unity.burst
to version1.6.6
- Increased the maximum number of shared components per entity from 8 to 16.
- Updated dependency on version of com.unity.roslyn package that will work with both Unity 2020 and Unity 2021.
Fixed
- DOTS Entities throws a compilation error when using named arguments.
- Fix Create -> ECS -> System template now adds partial keyword.
- Fixed a possible memory stomp triggered by specific sequences of
ComponentDataFromEntity
orBufferFromEntity
calls. - EntityQuery.CopyFromComponentDataArray() and EntityQuery.CopyFromComponentDataArrayAsync() now correctly set the change version of any chunks they write to.
- If the value of the Parent component of an entity is changed while the previous parent entity was destroyed at the same time, an exception could be thrown during the next update of the transform system.
- Changes to ComponentData made outside of Systems will be properly detected by EntityQueries with changed version filters.
Added
- New
BufferTypeHandle.Update()
method. Rather than creating new type handles every frame inOnUpdate()
, it is more efficient to create the handle once in a system'sOnCreate()
, cache it as a member on the system, and call its.Update()
method fromOnUpdate()
before using the handle. - SystemBase.GetEntityQuery can now take an EntityQueryDescBuilder.
[0.50.1-preview.3] - 2022-04-28
Changed
Release preparations, no functional changes.
0.50.1-preview.2
[0.50.1-preview.2] - 2022-04-20
Changed
Release preparations, no functional changes.
[0.50.1-preview.1] - 2022-04-07
Added
- Documentation on EntityCommandBuffer public functions including ParallelWriter and EntityCommandBufferManagedComponentExtensions.
- Hybrid assemblies will not be included in DOTS Runtime builds.
[WithAll]
Attribute that can be added to a struct that implements IJobEntity. Adding additional required components to the existing execute parameter required components.[WithNone]
Attribute that can be added to a struct that implements IJobEntity. Specifying which components shouldn't be on the entity found by the query.[WithAny]
Attribute that can be added to a struct that implements IJobEntity. Specifying that the entity found by this query should have at least one of these components.[WithChangeFilter]
Attribute that can be added to a struct that implements IJobEntity, as well as on component parameters within the signature of the execute method. This makes it so that the query only runs on entities, which has marked a change on the component specified by the[WithChangeFilter]
.[WithEntityQueryOptions]
Attribute that can be added to a struct that implements IJobEntity. Enabling you to query on disabled entities, prefab entities, and use write groups on entities.- Diagnostic suppressor to ignore specific generation of CS0282 warnings due to codegen.
- SystemBase.GetBuffer takes an optional isReadOnly parameter.
Changed
- DOTS Hierarchy now display SubScenes' state (opened, livelinked, closed or not loaded).
- When using
EntityManager.SetName
with a managedstring
as a parameter, if a string longer than 61 characters is used, the string will be truncated to fit within anEntityName
, - Improved the performance of the
EntityQuery
matching chunk cache in applications with many empty archetypes. - Removed
IJobForeach
, due to long notice of deprecation - Changed
LiveLinkPatcher
andLiveLinkPlayerSystem
to useIJobEntityBatch
, due to removal ofIJobForeach
- Changed docs from
IJobForeach
andIJobChunk
to refer toIJobEntity
, andIJobEntityBatch
respectivly - Changed IJE out of
DOTS_EXPERIMENTAL
0.50.0-preview.24
[0.50.0] - 2021-09-17
Added
- Window > DOTS > Entities window to show all Entities in a world in real time, with ability to search, select each, and inspect it via the Inspector.
- Window > DOTS > Components window to show all Component types, with ability to search, select each, and inspect it via the Inspector.
- Window > DOTS > Systems window to show all Systems running in a world, categorized by System Group, with ability to search, select each, and inspect it via the Inspector.
- Introduced two new ECS specific Window > Analysis > Profiler modules: * Entities Structural Changes profiler module can record which world/system produced a structural change, and how much time it cost per frame. * Entities Memory profiler module can record which world/system allocates memory chunks, with additional details per archetype.
ArchetypeChunk.GetComponentDataPtrRO()
andArchetypeChunk.GetComponentDataPtrRW()
provide unsafe raw access to a chunk's component data, as a lower-overhead alternative toArchetypeChunk.GetNativeArray()
ComponentTypeHandle.Update()
allowsComponentTypeHandle
s to be created once at system creation time, and incrementally updated each frame before use.- Adds clearer message when TypeManager hasn't been initialized yet, instead of only reporting a component type we don't know about has been requested.
- Disabled entities in Entity Window now have the same style as the disabled gameobjects in the gameobject hierarchy
- Go-to button to update Inspector content to reflect selected system and highlight the system in the Systems window if there is one open.
- It's now possible to specify an alignment when allocating an array with BlobBuilder
- Upgraded to burst 1.5.2
- Added go-to buttons to update Inspector content to reflect selected component and highlight the component in the Components window if there is one open.
- Routines to create unmanaged systems on worlds were made available for public use
- It's now possible for a scene to contain weak asset references to other scenes and prefabs. All referenced scenes and prefabs will automatically be included in a player build. The sample in "EntitiesSamples/Assets/Advanced/WeakAssetReferences" shows how to use weak asset references to scenes and prefabs.
- Incremental conversion now tracks GameObject names to rename Entities when they change.
- New method
CanBeginExclusiveEntityTransaction
onEntityManager
to check whether or not a new exclusive entity transaction can be made. - Wrapper functions are added in CollectionHelper to create/allocate NativeArray from custom allocator
- Entities.ForEach() will now accept a lambda with no parameters.
- WithSharedComponentFilter now also works with two shared component parameters.
EntityCommandBuffer
has anIsEmpty
property, which returns true if at least one command has been successfully recorded.- TryGetComponent in ComponentDataFromEntity
- TryGetBuffer in BufferFromEntity
- Entities journaling, which can record ECS past events and inspected from the static class
EntitiesJournaling
properties. - Allow for easier viewing of
EntityCommandBuffer
within an IDE through a new debug proxy. - Within an
EntityCommandBufferDebugView
, each command will have a summary of the action performed before expanding the command. - SystemRef.Update to allow updating unmanaged systems manually.
- Support WithScheduleGranularity with Entities.ForEach to allow per-entity scheduling
EntityCommandBuffer.Instantiate()
can now instantiate more than oneEntity
in a single command, writing the resulting entities to aNativeArray<Entity>
.- Support for fully-bursted Entities.ForEach.Run in ISystemBase systems.
- RateUtils.VariableRateManager to facilitate update rate
- DefaultWorld.BeginVariableRateSimulationEntityCommandBufferSystem
- DefaultWorld.VariableRateSimulationSystemGroup
- DefaultWorld.EndVariableRateSimulationEntityCommandBufferSystem
- Element EnableBlockFree is added to enum WorldFlags to indicate whether World.UpdateAllocator is enabled to free individual memory block.
ComponentTypes
has a new constructor variant that takes aFixedList128Bytes<ComponentType>
, suitable for use in Burst-compiled code.EntityCommandBuffer
has several new variants that target aNativeArray<Entity>
, which may be more efficient in many cases than recording individual commands for individual entities.- New Archetypes window that can display current archetype memory usage.
- IJob* types use SharedStatic so they can be burst compiled eventually
- Add ability to add missing partials during generation if
DOTS_ADD_PARTIAL_KEYWORD
scripting define is set.
Changed
- Added a fast path for
IJobEntityBatch.RunWithoutJobs()
andIJobEntityBatchWithIndex.RunWithoutJobs()
where query filtering is disabled, resulting up to a 30% reduction in performance overhead. - Merged
com.unity.dots.editor
package intocom.unity.entities
package, effectively deprecating the DOTS Editor as a standalone package. All the DOTS Editor package functionality is now included when referencing the Entities package. - DOTS Runtime now uses source generators for codegen.
- Make parts of EntityPatcher burst compatible to prepare for burst compilation of EntityPatcher for its performance improvement.
Entity.Equals(object compare)
now returns false if thecompare
object is null, rather than throwing aNullReferenceException
.- Made
DynamicBuffer
an always blittable type (even in the Editor with safety checks on), so that it can be passed by reference to Burst function pointers. - BlobAssetStore.ComputeKeyAndTypeHash hash calculation reduced chance of collision
- Capped the maximum number of previewable GameObjects to 100 in the Entity Conversion Preview.
- Capped the maximum number of additional entities shown to 250 in the Entity Conversion Preview.
- Improved overall performance of the Entity Conversion Preview.
- Source generators are now used as the default mode of codegen for Entities.ForEach and Generated Authoring Component. These can be disabled with
SYSTEM_SOURCEGEN_DISABLED
andAUTHORINGCOMPONENT_SOURCEGEN_DISABLED
scripting defines if necessary. The largest change is that generated code can now be inspected and debugged (when not bursted). Generated code lives in Temp/GeneratedCode and can be stepped into with both Visual Studio and Rider. - Documentation to highlight necessary prerequisites in the Build Configuration for making a profilable build.
- Entities window now shows prefab entities with a style similar to the one in the GameObject hierarchy
- Systems in the Entity inspector relationships tab are now sorted by scheduling order instead of creation order.
- Subscene headers are now loaded asynchronously and will no longer stall the main thread while loading.
- Performance of LiveTweaking has been improved.
- EntityDiffer capture entity changes when only entity's name is changed.
- With an IDE debugger, EntityQuery will present more information related to it. The raw view
- Debugging output for a
ComponentType
will present clearer info. - The
batchesPerChunk
parameter toIJobEntityBatch.ScheduleParallel()
has been replaced with a newScheduleGranularity
enum. PassScheduleGranularity.Chunk
to distribute work to worker threads at the level of entire chunks (the default behavior). PassScheduleGranularity.Entity
to distribute individual entities to each worker thread. This can improve load balancing in jobs that perform a large amount of work on a small number of entities.
*Make generate linker xml files deterministic in order. - Within an IDE debugger,
ComponentSystemGroup
will present more relevant information. The raw view will be available for those who need the precise makeup of the class. ComponentSystemGroup.RemoveSystemFromUpdateList
andComponentSystemGroup.RemoveUnmanagedSystemFromUpdateList
can now be used whenComponentSystemGroup.EnableSystemSorting
is set to false- Add debug checks to detect "placeholder" Entities created by one
EntityCommandBuffer
from being passed into a differentEntityCommandBuffer
. - Clarified error message when calling
.Dispose()
on anEntityQuery
created byGetEntityQuery()
. This is always an error; these queries belong to the associated system, and should never be manually disposed. They will be cleaned up along with the system itself. - Within an IDE debugger,
ArchetypeChunk
will present more relevant information. The raw view will be available for those who need the precise makeup of the struct. - Within an IDE debugger,
EntityArchetype
will present more relevant information. The raw view will be available for those who need the precise makeup of the struct. - IJobEntityBatch batchIndex parameter has been renamed to batchId. Documentation regarding what values to expect from this parameter have been updated accordingly.
- Changed: Within an IDE debugger,
EntityManager
will present more relevant information. The raw view will be available for those who need the precise makeup of the struct. - Changed: Within an IDE debugger, an
ArchetypeChunk
's OrderVersion and ChangeVersions per ComponentType will be easier to view. - Changed: Within an IDE debugger,
SystemState
will present more relevant information. The raw view will be available for those who need the precise makeup of the struct. - Changed: Within an IDE debugger,
World
will present more relevant information. The raw view will be available for those who need the precise makeup of the struct. EntityCommandBufferSystem.CreateCommandBuffer()
now uses theWorld.UpdateAllocator
to allocate command buffers instead ofAllocator.TempJob
. Allocations from this allocator have a fixed lifetime of two full World Update cycles, rather than being tied to the display frame rate.EntityCommandBuffer.AddComponentForEntityQuery<T>()
now asserts if the providedT
value contains a reference to a temporaryEntity
c...