#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 DOTSSveltoEGID: IComponentData { public EGID egid; public DOTSSveltoEGID(EGID egid) { this.egid = egid; } } /// /// 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