#if UNITY_ECS using Unity.Entities; namespace Svelto.ECS.SveltoOnDOTS { /// /// If for some reason the user needs the DOTS entities to be grouped like the Svelto Entities, then this descriptor can be extended /// which will automatically enable the SveltoOnDOTSHandleLifeTimeEngine synchronization. /// This will also handle entities destruction. /// public class SveltoOnDotsSynchedEntityDescriptor: GenericEntityDescriptor { } public interface IEntityComponentForDOTS: IEntityComponent { public Entity dotsEntity { get; set; } } public struct DOTSEntityComponent:IEntityComponentForDOTS { public DOTSEntityComponent(Entity entity) { dotsEntity = entity; } public Entity dotsEntity { get; set; } } //DOTS COMPONENTS: /// /// DOTS component to keep track of the associated Svelto.ECS entity /// public struct DOTSSveltoReference: IComponentData { public EntityReference entityReference; public DOTSSveltoReference(EntityReference eEntityReference) { entityReference = eEntityReference; } } /// /// DOTS component to be able to query all the DOTS entities found in a Svelto.ECS group /// public readonly struct DOTSSveltoGroupID: ISharedComponentData { readonly ExclusiveGroupStruct group; public DOTSSveltoGroupID(ExclusiveGroupStruct exclusiveGroup) { @group = exclusiveGroup; } public static implicit operator ExclusiveGroupStruct(DOTSSveltoGroupID group) { return group.@group; } } } #endif