public override Entity Create(EntityManager entityManager, int predictingPlayerId) { entities.Clear(); var entity = entityManager.CreateEntity(); // We add CharBehaviour to BehaviourController so we have a common way to define character entityManager.AddComponentData(entity, new CharBehaviour()); // Add uninitialized replicated entity var repData = new ReplicatedDataEntity { id = -1, typeId = registryId, predictingPlayerId = predictingPlayerId, }; entityManager.AddComponentData(entity, repData); var internalState = new InternalState { abilityMovement = abilityMovement.Create(entityManager, entities), // abilityPrimFire = abilityPrimFire.Create(entityManager, entities), // abilitySecFire = abilitySecFire.Create(entityManager, entities), abilitySprint = abilitySprint.Create(entityManager, entities), abilityMelee = abilityMelee.Create(entityManager, entities), abilityEmote = abilityEmote.Create(entityManager, entities), abilityDead = abilityDead.Create(entityManager, entities), }; entityManager.AddComponentData(entity, internalState); entityManager.AddComponentData(entity, new PredictedState()); // Register replicated entity children so they all get serialized as data on this entity entityManager.AddBuffer <EntityGroupChildren>(entity); var buffer = entityManager.GetBuffer <EntityGroupChildren>(entity); GameDebug.Assert(entities.Count <= buffer.Capacity, "Buffer capacity is to small to fit all behaviors"); for (int i = 0; i < entities.Count; i++) { var elm = new EntityGroupChildren { entity = entities[i] }; buffer.Add(elm); } return(entity); }
public override Entity Create(EntityManager entityManager) { var entity = entityManager.CreateEntity(typeof(ReplicatedDataEntity), typeof(ProjectileData)); // Add uninitialized replicated entity var repData = new ReplicatedDataEntity { id = -1, typeId = typeId, }; entityManager.SetComponentData(entity, repData); // GameDebug.Log("ProjectileEntityFactory.Crate entity:" + entity + " typeId:" + repData.typeId + " id:" + repData.id); return(entity); }