コード例 #1
0
 private void SetNPCCharacter(Entity entity, int id, int metaID, float3 position) //  Entity world,
 {
     if (meta.ContainsKey(metaID))
     {
         CharacterDatam characterDatam = meta[metaID];
         BehaviourData  beh            = characterDatam.behaviour.Value;
         SetNPC(entity, beh, id, characterDatam.movementSpeed, characterDatam.turnSpeed);
     }
 }
コード例 #2
0
 private void SetNPC(Entity entity, BehaviourData beh, int id, float movementSpeed, float turnSpeed)
 {
     //Debug.LogError("Spawning NPC: " + id);
     if (World.EntityManager.HasComponent <AIState>(entity) == false)
     {
         Debug.LogError("NPC does not have AI State.");
         return;
     }
     World.EntityManager.SetComponentData(entity, new AIState
     {
         state        = AIStates.Idle,
         idleTime     = beh.idleTime,
         isAggressive = beh.isAggressive
     });
     World.EntityManager.SetComponentData(entity, new Mover
     {
         moveSpeed = movementSpeed,
         turnSpeed = turnSpeed
     });
     if (beh.wander.waitCooldownMin == 0 && beh.wander.wanderCooldownMax == 0)
     {
         // Debug.LogError("Removed wander.");
         World.EntityManager.RemoveComponent <Wander>(entity);
     }
     else
     {
         Unity.Mathematics.Random rand = new Unity.Mathematics.Random();
         rand.InitState((uint)id);
         World.EntityManager.SetComponentData(entity, new Wander
         {
             uniqueness = id,
             Value      = beh.wander,
             random     = rand,
             //targetRotation = quaternion.identity,//quaternion.EulerXYZ(new float3(0, rand.NextFloat(0, 360), 0)),
             lastWandered   = UnityEngine.Time.time + rand.NextFloat(4),
             wanderCooldown = rand.NextFloat(beh.wander.wanderCooldownMin, beh.wander.wanderCooldownMax),
             waitCooldown   = rand.NextFloat(beh.wander.waitCooldownMin, beh.wander.waitCooldownMax)
         });
     }
 }