// ----------------------------------------------------------------- // Name : Awake // Desc : Cache Components // ----------------------------------------------------------------- protected virtual void Awake() { // Cache all frequently accessed components _transform = transform; _animator = GetComponent <Animator>(); _navAgent = GetComponent <NavMeshAgent>(); _collider = GetComponent <Collider>(); // Cache Audio Source Reference for Layered AI Audio AudioSource audioSource = GetComponent <AudioSource>(); // Get BodyPart Layer _aiBodyPartLayer = LayerMask.NameToLayer("AI Body Part"); // Do we have a valid Game Scene Manager if (GameSceneManager.instance != null) { // Register State Machines with Scene Database if (_collider) { GameSceneManager.instance.RegisterAIStateMachine(_collider.GetInstanceID(), this); } if (_sensorTrigger) { GameSceneManager.instance.RegisterAIStateMachine(_sensorTrigger.GetInstanceID(), this); } } if (_rootBone != null) { Rigidbody[] bodies = _rootBone.GetComponentsInChildren <Rigidbody>(); foreach (Rigidbody bodyPart in bodies) { if (bodyPart != null && bodyPart.gameObject.layer == _aiBodyPartLayer) { _bodyParts.Add(bodyPart); GameSceneManager.instance.RegisterAIStateMachine(bodyPart.GetInstanceID(), this); } } } // Register the Layered Audio Source if (_animator && audioSource && AudioManager.instance) { _layeredAudioSource = AudioManager.instance.RegisterLayeredAudioSource(audioSource, _animator.layerCount); } }
protected virtual void Awake() { // Cache all frequently accessed components _transform = transform; _animator = GetComponent <Animator>(); _navAgent = GetComponent <NavMeshAgent>(); _collider = GetComponent <Collider>(); AudioSource audioSource = GetComponent <AudioSource>(); // Register the instance IDs of all the agent's collider and sensor collider if (GameSceneManager.instance != null) { if (_collider) { GameSceneManager.instance.RegisterAIStateMachine(_collider.GetInstanceID(), this); } if (_sensorTrigger) { GameSceneManager.instance.RegisterAIStateMachine(_sensorTrigger.GetInstanceID(), this); } } // Get layers _aiBodyPartLayer = LayerMask.NameToLayer("AI Body Part"); // Adding all our body parts to the our body parts list (To be able to change them to kinematic or non kinematic state if (_rootBone != null) { Rigidbody[] bodies = _rootBone.GetComponentsInChildren <Rigidbody>(); foreach (Rigidbody bodyPart in bodies) { if (bodyPart != null && bodyPart.gameObject.layer == _aiBodyPartLayer) { _bodyParts.Add(bodyPart); GameSceneManager.instance.RegisterAIStateMachine(bodyPart.GetInstanceID(), this); } } } if (_animator && audioSource && AudioManager.instance) { _layeredAudioSource = AudioManager.instance.RegisterLayeredAudioSource(audioSource, _animator.layerCount); } }
// ------------------------------------------------------------------------------- // Name : UnregisterLayeredAudioSource (Overload) // Desc : // ------------------------------------------------------------------------------- public void UnregisterLayeredAudioSource(ILayeredAudioSource source) { _layeredAudio.Remove((LayeredAudioSource)source); }