AlwaysSynchronizeSystem can be applied to a SystemBase 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.
Specifies that this int parameter is used as a way to get the EntityInQuery index. Usage: An int parameter found inside the execute method of a IJobEntity.
Describes a query to find archetypes in terms of required, optional, and excluded components.
This system group is configured by default to use a fixed timestep for the duration of its updates.
Specifies the maximum number of elements to store inside a chunk.
Extensions for scheduling and running IJobChunk Jobs.
Extensions for scheduling and running IJobEntityBatch jobs.
Extensions for scheduling and running IJobEntityBatchWithIndex 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.
A IRateManager implementation providing a variable update rate in milliseconds.
Creates a table association between the Type specified and the runtime field of an IComponentData, accessible via the BindingRegistry
Only primitive types of int, bool, and float, in addition to Unity.Mathematics variants of these primitives (e.g. int2, float4) will be added to the BindingRegistry. Other non-compatible types will be silently ignored if this attribute is applied to it.
Implement SystemBase to create a systems in ECS.
The specified Type must be a ComponentSystemGroup. Updating in a group means this system will be automatically updated by the specified ComponentSystemGroup when the group is updated. The system may order itself relative to other systems in the group with UpdateBefore and UpdateAfter. This ordering takes effect when the system group is sorted.
If the optional OrderFirst parameter is set to true, this system will act as if it has an implicit [UpdateBefore] targeting all other systems in the group that do not have OrderFirst=true, but it may still order itself relative to other systems with OrderFirst=true.
If the optional OrderLast parameter is set to true, this system will act as if it has an implicit [UpdateAfter] targeting all other systems in the group that do not have OrderLast=true, but it may still order itself relative to other systems with OrderLast=true.
An UpdateInGroup attribute with both OrderFirst=true and OrderLast=true is invalid, and will throw an exception.
This system group is configured by default to use a variable update rate of ~15fps (66ms).
Specifies that this IJobEntity should include ALL ComponentTypes found as attributes of the IJobEntity
Specifies that this IJobEntity should include ANY ComponentTypes found as attributes of the IJobEntity
Specifies that this IJobEntity should only play if either of the ComponentTypes found as attributes of the IJobEntity has changed,
Specifies that this IJobEntity should include a given EntityQueryOption found as attributes of the IJobEntity
Specifies that this IJobEntity should include NO ComponentTypes found as attributes of the IJobEntity
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 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 EntityManager manages entities and components in a World.
Provides information and utility functions for debugging.
The EntityManagerDiffer is used to efficiently track changes to a given world over time.
Use an EntityQuery object to select entities with components that meet specific requirements.
Struct for storing entity query data for multiple queries. Currently used to convert EntityQueryDesc into unmanaged data that EntityQueryManager can use when creating queries.
Provides an efficient test of whether a specific entity would be selected by an EntityQuery.
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.
A [NativeContainer] that provides access to information about how Entities are stored. Entity.
An identifier representing an unmanaged system struct instance in a particular world.
An identifier representing an unmanaged system struct instance in a particular world.
Allows access by reference to the struct instance backing a system
Contains raw entity system state. Used by unmanaged systems (ISystem) as well as managed systems behind the scenes.
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>.
This interface marks structs as 'unmanaged components' and classes as 'managed 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.
Any type which implements this interface and also contains an
Execute() method (with any number of parameters)
will trigger source generation of a corresponding IJobEntityBatch type. The generated IJobEntityBatch type in turn
invokes the Execute() method on the IJobEntity type with the appropriate arguments.
IJobEntityBatchWithIndex is 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.
An interface for a component type whose value is shared across all entities with the same value.
Interface implemented by unmanaged component systems.
Interface for methods only used by compiler
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.
Describes how the entities that match an
EntityQuery should be distributed when a job is scheduled to
run on multiple worker threads using
ScheduleParallel(). In most cases, Chunk
should be used.
Specify all traits a World can have.
For internal use only.