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