Exemplo n.º 1
0
 private void Initialize(string name, Area area)
 {
     base.initialize(name);
     this.currentArea = area;
     taskManager      = new TaskManager(this);
     inventory        = new Inventory(this);
     if (baseSpecies == BASE_SPECIES.Gnat)
     {
         species = new Species('m', "Gnat", true, BASE_SPECIES.Gnat,
                               CONSUMPTION_TYPE.OMNIVORE, this);
     }
     else if (baseSpecies == BASE_SPECIES.Gagk)
     {
         species = new Species('n', baseSpecies.ToString(), true, BASE_SPECIES.Gagk,
                               CONSUMPTION_TYPE.HERBIVORE, this);
     }
     creaturePhysicalStats = CreatureConstants.PhysicalStatsInitialize(species.getBaseSpecies(), this);
     agent        = new CreatureAgent(this);
     audioSource  = GetComponent <AudioSource>();
     currentState = CREATURE_STATE.IDLE;
     creaturePhysicalStats.Initialize(species.getBaseSpecies());
     agent.Initialize(species.getBaseSpecies());
     miscVariables           = MiscVariables.GetCreatureMiscVariables(this);
     memberOfTribe           = null;
     knownGridSectorsVisited = new Dictionary <GridSector, bool>();
     lastObserved            = Random.Range(0, Time.time);
     observeEvery            = 2.5f;
     initialized             = true;
 }
Exemplo n.º 2
0
        /*private Vector3 GetBeforeCollision()
         * {
         *
         *  Transform worldOrigin = creature.transform;
         *  Vector3 relativeVel =
         *      rigidbody.transform.InverseTransformDirection(rigidbody.velocity);
         *  RaycastHit hit;
         *  float distanceZ = float.MaxValue, distanceX = float.MaxValue;
         *
         *
         *  Vector3 direction;
         *  if (relativeVel.x > 0)
         *      direction = creature.transform.right;
         *  else
         *      direction = -creature.transform.right;
         *  rayLength = miscVariables[MiscVariables.AgentMiscVariables.Agent_Detect_Collision_X_Distance];
         *  if (Physics.Raycast(worldOrigin.position + direction, direction, out hit, rayLength))
         *  {
         *      if(DEBUG)
         *          Debug.DrawLine(worldOrigin.position + direction, hit.point, Color.blue, .5f);
         *      distanceX = Vector3.Distance(worldOrigin.position, hit.point);
         *  }
         *  if (distanceX < 0) distanceX = 0;
         *  if (distanceZ < 0) distanceZ = 0;
         *  if(_inTime)
         *      return new Vector3(distanceX/relativeVel.x, -1, distanceZ/relativeVel.z);
         *  else
         *      return new Vector3(distanceX, -1, distanceZ);
         * }
         * public Vector3 GetDistanceBeforeCollision()
         * {
         *  GetBeforeCollision();
         * }
         * public Vector3 GetTimeBeforeCollision()
         * {
         *  return GetBeforeCollision(true,false);
         * }*/
        #endregion CALCULATION METHODS

        // CONSTRUCTOR //
        public CreatureAgent(Creature creature)
        {
            this.creature           = creature;
            positionLastUpdate      = Vector3.zero;
            DistanceMovedLastUpdate = 0;
            touchingBodies          = new List <Transform>();
            miscVariables           = MiscVariables.GetAgentMiscVariables(creature);
            Active = true;
        }
Exemplo n.º 3
0
        protected Dictionary <MiscVariables.AgentMiscVariables, float> miscVariables; // Misc Constants

        public Part(CreaturePart creaturePart, Transform transform, float updateEvery)
        {
            this.PartType      = creaturePart;
            this.PartTransform = transform;
            this.UpdateEvery   = updateEvery;

            this.parentCreature = transform.GetComponentInParent <Creature>();
            this.attachedAgent  = parentCreature.GetCreatureAgent();
            miscVariables       = MiscVariables.GetAgentMiscVariables(parentCreature);
            audioClip           = CreatureConstants.GetCreaturePartAudioClip(parentCreature.GetBaseSpecies(), creaturePart);
            Enabled             = true;
        }