AlwaysSynchronizeSystem can be applied to a JobComponentSystem to force it to synchronize on all of its dependencies before every update. This attribute should only be applied when a synchronization point is necessary every frame.
Extensions for supporting serialization and deserialization of blob assets.
Purpose of this class is to provide a consistent cache of BlobAsset object in order to avoid rebuilding them when it is not necessary
States that a component type is serializable.
An abstract class to implement in order to create a system.
A system provides behavior in an ECS architecture.
By declaring a version number a ComponentSystem can ensure that any cached data by the asset pipeline was prepared using the active code. If the version number of any conversion system or optimization system changes or a new conversion system is added, then the scene will be re-converted.
Prevents a system from being automatically created and run.
[DisableAutoTypeRegistration] prevents a Component Type from being registered in the TypeManager during TypeManager.Initialize(). Types that are not registered will not be recognized by EntityManager.
What is this : Attribute signaling that ref returned values, of a type that has this attribute, cannot intersect with calls to methods that also have this attribute. Motivation(s): ref returns of values that are backed by native memory (unsafe), like IComponentData in ecs chunks, can have the referenced memory invalidated by certain methods. A way is needed to detect these situations a compilation time to prevent accessing invalidated references. Notes:
- This attribute is used/feeds a Static Analyzer at compilation time.
- Attribute transfers with aggragations: struct A has this attribute, struct B has a field of type A; both A and B are concidered to have the attribute.
A system that provides EntityCommandBuffer objects for other systems.
The EntityManager manages entities and components in a World.
Provides information and utility functions for debugging.
Use an EntityQuery object to select entities with components that meet specific requirements.
Describes a query used to find archetypes with specific components.
Specifies the maximum number of elements to store inside a chunk.
Extensions for scheduling and running IJobChunk Jobs.
An abstract class to implement in order to create a system that uses ECS-specific Jobs.
Attribute used to make an int field display as a layer selector drop-down.
Specifies the maximum number of components of a type that can be stored in the same chunk.
Use this attribute if you have structs that use offset pointers that are only valid when they live inside the blob storage. It will turn ensure a compiler error is generated for every time a reference to the struct is copied, or a field is read from a reference to the struct this attribute is applied on.
Implement SystemBase to create a systems in ECS.
For internal use only.
[WriteGroup] Can exclude components which are unknown at the time of creating the query that have been declared to write to the same component.
This allows for extending systems of components safely without editing the previously existing systems.
The goal is to have a way for systems that expect to transform data from one set of components (inputs) to another (output[s]) be able to declare that explicit transform, and they exclusively know about one set of inputs. If there are other inputs that want to write to the same output, the query shouldn't match because it's a nonsensical/unhandled setup. It's both a way to guard against nonsensical components (having two systems write to the same output value), and a way to "turn off" existing systems/queries by putting a component with the same write lock on an entity, letting another system handle it.
A block of unmanaged memory containing the components for entities sharing the same Unity.Entities.Archetype.
Can be passed into IJobChunk.RunWithoutJobs to iterate over an entity query without running any jobs.
Marks the entity as an asset, which is used for the Export phase of GameObject conversion.
An immutable array of value types stored in a blob asset.
Header for a changed blob asset.
The BlobAssetComputationContext must be used during Authoring to ECS conversion process to detect which BlobAsset should be computed and to declare their association with a UnityObject
A reference to a blob asset stored in unmanaged memory.
Represents a blob asset reference that was changed within a EntityChangeSet
Creates blob assets.
Used by the BlobBuilder methods to reference the arrays within a blob asset.
A pointer referencing a struct, array, or field inside a blob asset.
An immutable, variable-length string stored in a blob asset.
A [NativeContainer] that provides access to all instances of components of type T, indexed by Entity.
Disables the entity.
An array-like data structure that can be used as a component.
Identifies an entity.
An EntityArchetype is a unique combination of component types. The EntityManager uses the archetype to group all entities that have the same sets of components.
An atomic package of changes to entity and component data.
A thread-safe command buffer that can buffer commands that affect entities and components for later playback.
Allows concurrent (deterministic) command buffer recording.
This component is attached to converted Entities and is guaranteed to be unique within a World. It can be used to map back to the authoring GameObject from which it was converted. Note that an EntityGuid does not have enough information to be persistent across sessions.
The EntityManagerDiffer is used to efficiently track changes to a given world over time.
A EntityQueryMask provides a fast check of whether an entity would be selected by an entity query.
Represents an entity reference that was changed within a EntityChangeSet
This structure references the entity by it's unique EntityGuid.
Low-level utility functions for AOS->SOA (scatter) and SOA->AOS (gather) conversions.
The LinkedEntityGroup buffer makes the entity be the root of a set of connected entities.
Assign Value to each element of NativeArray
Merge sort index list referencing NativeArray values. Provide list of shared values, indices to shared values, and lists of source i value indices with identical shared value. As an example: Given Source NativeArray: [A,A,A,B,B,C,C,A,B] Provides: Shared value indices: [0,0,0,1,1,2,2,0,1] Shared value counts: [4,3,2] (number of occurrences of a shared value) Shared values: [A,B,C] (not stored in this structure) Sorted indices: [0,1,2,7,3,4,8,5,6] (using these indices to look up values in the source array would give you [A,A,A,A,B,B,B,C,C]) Shared value start offsets (into sorted indices): [0,4,7]
Represents a packed component within an EntityChangeSet
Represents a packed component data change within a EntityChangeSet
Marks the entity as a prefab, which implicitly disables the entity.
A Unity-defined shared component assigned to all entities in the same subscene.
Read only collection that doesn't generate garbage when used in a foreach.
An interface for creating structs that can be stored in a DynamicBuffer<T>.
An interface for implementing general-purpose components.
When entering playmode or the game starts in the Player a default world is created. Sometimes you need multiple worlds to be setup when the game starts or perform some custom world initialization. This lets you override the bootstrap of game code world creation.
An interface for a component type whose value is shared by all entities in the same chunk.
An interface for a component type that stores system-specific data in a buffer.
An interface for a component type that stores system-specific data.
An interface for a component type that stores shared system-specific data.
Parameters used to configure the the execution of the differ.
The bit flags to use for the Options field.
Specifies if the EntityCommandBuffer can be played a single time or multiple times.
Specify all traits a World can have.
For internal use only.