Files
2024-11-20 15:21:28 +01:00

53 lines
1.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Invector.vCharacterController.AI
{
public class vAINoiseManager : MonoBehaviour
{
static vAINoiseManager _instance;
public static vAINoiseManager Instance
{
get
{
if (_instance == null) _instance = FindObjectOfType<vAINoiseManager>();
if (_instance == null)
{
var noiseManager = new GameObject("AI Noise Manager");
_instance = noiseManager.AddComponent<vAINoiseManager>();
_instance.noises = new List<vNoise>();
}
return _instance;
}
}
/// <summary>
/// List of all noises that is listening
/// </summary>
public List<vNoise> noises;// { get; protected set; }
public void AddNoise(vNoise noise)
{
if (noises==null) noises = new List<vNoise>();
if (noises.Contains(noise))
{
noises[noises.IndexOf(noise)].AddDuration(noise.duration);
}
else
{
noise.onFinishNoise.AddListener(RemoveNoise);
noises.Add(noise);
}
if (!noise.isPlaying) StartCoroutine(noise.Play());
}
public void RemoveNoise(vNoise noise)
{
if (noises == null) noises = new List<vNoise>();
if (noises.Contains(noise))
{
noises.Remove(noise);
}
}
}
}