Пример #1
0
    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);
    }