public override Entity Create(EntityManager entityManager, BundledResourceManager resourceManager,
                                  GameWorld world, ushort type)
    {
        var entity = entityManager.CreateEntity(typeof(ReplicatedEntityData),
                                                typeof(ProjectileData));

        var repData = new ReplicatedEntityData(guid);

        entityManager.SetComponentData(entity, repData);

//        GameDebug.Log("ProjectileEntityFactory.Crate entity:" + entity + " typeId:" + repData.typeId + " id:" + repData.id);

        return(entity);
    }
Esempio n. 2
0
    public override Entity Create(EntityManager entityManager, BundledResourceManager resourceManager,
                                  GameWorld world)
    {
        var entity = entityManager.CreateEntity(typeof(PresentationOwnerData), typeof(ReplicatedEntityData),
                                                typeof(Grenade.Settings), typeof(Grenade.InternalState), typeof(Grenade.InterpolatedState));

        var repData           = new ReplicatedEntityData(guid);
        var presentationOwner = new PresentationOwnerData(0);

        var internalState = new Grenade.InternalState
        {
            active     = 1,
            rayQueryId = -1,
        };

        entityManager.SetComponentData(entity, repData);
        entityManager.SetComponentData(entity, presentationOwner);
        entityManager.SetComponentData(entity, settings);
        entityManager.SetComponentData(entity, internalState);

        return(entity);
    }
Esempio n. 3
0
    public override Entity Create(EntityManager entityManager, BundledResourceManager resourceManager,
                                  GameWorld world)
    {
        entities.Clear();

        var entity = entityManager.CreateEntity();

        var repData = new ReplicatedEntityData(guid);

        var internalState = new InternalState
        {
        };

        entityManager.AddComponentData(entity, repData);
        entityManager.AddComponentData(entity, internalState);


        // Create ability entities
        var abilityEntities = new List <Entity>(abilities.Length);

        for (int i = 0; i < abilities.Length; i++)
        {
            abilityEntities.Add(abilities[i].factory.Create(entityManager, entities));
        }

        // Add abilities to ability buffer
        entityManager.AddBuffer <AbilityEntry>(entity);
        var abilityBuffer = entityManager.GetBuffer <AbilityEntry>(entity);

        for (int i = 0; i < abilities.Length; i++)
        {
            uint canRunWith = 0;
            foreach (var ability in abilities[i].canRunWith)
            {
                var abilityIndex = GetAbilityIndex(ability);
                canRunWith |= 1U << abilityIndex;
            }

            uint canInterrupt = 0;
            if (abilities[i].canInterruptAll)
            {
                canInterrupt = ~0U;
            }
            else
            {
                foreach (var ability in abilities[i].canInterrupt)
                {
                    var abilityIndex = GetAbilityIndex(ability);
                    canInterrupt |= 1U << abilityIndex;
                }
            }

            abilityBuffer.Add(new AbilityEntry
            {
                ability      = abilityEntities[i],
                canRunWith   = canRunWith,
                canInterrupt = canInterrupt,
            });
        }



        // 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);
    }