using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Audio; using UnityEngine.EventSystems; using UnityEngine.UI; namespace DarkTonic.MasterAudio { [AudioScriptOrder(-30)] [AddComponentMenu("Dark Tonic/Master Audio/Event Sounds")] public class EventSounds : MonoBehaviour, ICustomEventReceiver { public enum UnityUIVersion { Legacy = 0, uGUI = 1 } public enum EventType { OnStart = 0, OnVisible = 1, OnInvisible = 2, OnCollision = 3, OnTriggerEnter = 4, OnTriggerExit = 5, OnMouseEnter = 6, OnMouseClick = 7, OnSpawned = 8, OnDespawned = 9, OnEnable = 10, OnDisable = 11, OnDestroy = 12, OnCollision2D = 13, OnTriggerEnter2D = 14, OnTriggerExit2D = 15, OnParticleCollision = 16, UserDefinedEvent = 17, OnCollisionExit = 18, OnCollisionExit2D = 19, OnMouseUp = 20, OnMouseExit = 21, OnMouseDrag = 22, NGUIOnClick = 23, NGUIMouseDown = 24, NGUIMouseUp = 25, NGUIMouseEnter = 26, NGUIMouseExit = 27, MechanimStateChanged = 28, UnitySliderChanged = 29, UnityButtonClicked = 30, UnityPointerDown = 31, UnityPointerUp = 32, UnityPointerEnter = 33, UnityPointerExit = 34, UnityDrag = 35, UnityDrop = 36, UnityScroll = 37, UnityUpdateSelected = 38, UnitySelect = 39, UnityDeselect = 40, UnityMove = 41, UnityInitializePotentialDrag = 42, UnityBeginDrag = 43, UnityEndDrag = 44, UnitySubmit = 45, UnityCancel = 46, UnityToggle = 47, OnTriggerStay = 48, OnTriggerStay2D = 49, CodeTriggeredEvent1 = 50, CodeTriggeredEvent2 = 51 } public enum GlidePitchType { None = 0, RaisePitch = 1, LowerPitch = 2 } public enum VariationType { PlaySpecific = 0, PlayRandom = 1 } public enum PreviousSoundStopMode { None = 0, Stop = 1, FadeOut = 2 } public enum PlaySoundType { PlaySoundGroup = 0, InvokeParameterCommand = 1 } public enum RetriggerLimMode { None = 0, FrameBased = 1, TimeBased = 2 } public MasterAudio.SoundSpawnLocationMode soundSpawnMode = MasterAudio.SoundSpawnLocationMode.AttachToCaller; public bool disableSounds; public bool showPoolManager; public bool showNGUI; public AudioEvent eventToGizmo; public UnityUIVersion unityUIMode = UnityUIVersion.uGUI; public bool logMissingEvents = true; public static List LayerTagFilterEvents = new List { EventType.OnCollision.ToString(), EventType.OnTriggerEnter.ToString(), EventType.OnTriggerExit.ToString(), EventType.OnCollision2D.ToString(), EventType.OnTriggerEnter2D.ToString(), EventType.OnTriggerExit2D.ToString(), EventType.OnParticleCollision.ToString(), EventType.OnCollisionExit.ToString(), EventType.OnCollisionExit2D.ToString() }; public static List PlaylistCommandsWithAll = new List { MasterAudio.PlaylistCommand.FadeToVolume, MasterAudio.PlaylistCommand.Pause, MasterAudio.PlaylistCommand.PlayNextSong, MasterAudio.PlaylistCommand.PlayRandomSong, MasterAudio.PlaylistCommand.Resume, MasterAudio.PlaylistCommand.Stop, MasterAudio.PlaylistCommand.Mute, MasterAudio.PlaylistCommand.Unmute, MasterAudio.PlaylistCommand.ToggleMute, MasterAudio.PlaylistCommand.Restart, MasterAudio.PlaylistCommand.StopLoopingCurrentSong, MasterAudio.PlaylistCommand.StopPlaylistAfterCurrentSong }; public AudioEventGroup startSound; public AudioEventGroup visibleSound; public AudioEventGroup invisibleSound; public AudioEventGroup collisionSound; public AudioEventGroup collisionExitSound; public AudioEventGroup triggerSound; public AudioEventGroup triggerExitSound; public AudioEventGroup triggerStaySound; public AudioEventGroup mouseEnterSound; public AudioEventGroup mouseExitSound; public AudioEventGroup mouseClickSound; public AudioEventGroup mouseUpSound; public AudioEventGroup mouseDragSound; public AudioEventGroup spawnedSound; public AudioEventGroup despawnedSound; public AudioEventGroup enableSound; public AudioEventGroup disableSound; public AudioEventGroup destroySound; public AudioEventGroup collision2dSound; public AudioEventGroup collisionExit2dSound; public AudioEventGroup triggerEnter2dSound; public AudioEventGroup triggerStay2dSound; public AudioEventGroup triggerExit2dSound; public AudioEventGroup particleCollisionSound; public AudioEventGroup nguiOnClickSound; public AudioEventGroup nguiMouseDownSound; public AudioEventGroup nguiMouseUpSound; public AudioEventGroup nguiMouseEnterSound; public AudioEventGroup nguiMouseExitSound; public AudioEventGroup codeTriggeredEvent1Sound; public AudioEventGroup codeTriggeredEvent2Sound; public AudioEventGroup unitySliderChangedSound; public AudioEventGroup unityButtonClickedSound; public AudioEventGroup unityPointerDownSound; public AudioEventGroup unityDragSound; public AudioEventGroup unityPointerUpSound; public AudioEventGroup unityPointerEnterSound; public AudioEventGroup unityPointerExitSound; public AudioEventGroup unityDropSound; public AudioEventGroup unityScrollSound; public AudioEventGroup unityUpdateSelectedSound; public AudioEventGroup unitySelectSound; public AudioEventGroup unityDeselectSound; public AudioEventGroup unityMoveSound; public AudioEventGroup unityInitializePotentialDragSound; public AudioEventGroup unityBeginDragSound; public AudioEventGroup unityEndDragSound; public AudioEventGroup unitySubmitSound; public AudioEventGroup unityCancelSound; public AudioEventGroup unityToggleSound; public List userDefinedSounds = new List(); public List mechanimStateChangedSounds = new List(); public bool useStartSound; public bool useVisibleSound; public bool useInvisibleSound; public bool useCollisionSound; public bool useCollisionExitSound; public bool useTriggerEnterSound; public bool useTriggerExitSound; public bool useTriggerStaySound; public bool useMouseEnterSound; public bool useMouseExitSound; public bool useMouseClickSound; public bool useMouseUpSound; public bool useMouseDragSound; public bool useSpawnedSound; public bool useDespawnedSound; public bool useEnableSound; public bool useDisableSound; public bool useDestroySound; public bool useCollision2dSound; public bool useCollisionExit2dSound; public bool useTriggerEnter2dSound; public bool useTriggerStay2dSound; public bool useTriggerExit2dSound; public bool useParticleCollisionSound; public bool useNguiOnClickSound; public bool useNguiMouseDownSound; public bool useNguiMouseUpSound; public bool useNguiMouseEnterSound; public bool useNguiMouseExitSound; public bool useCodeTriggeredEvent1Sound; public bool useCodeTriggeredEvent2Sound; public bool useUnitySliderChangedSound; public bool useUnityButtonClickedSound; public bool useUnityPointerDownSound; public bool useUnityDragSound; public bool useUnityPointerUpSound; public bool useUnityPointerEnterSound; public bool useUnityPointerExitSound; public bool useUnityDropSound; public bool useUnityScrollSound; public bool useUnityUpdateSelectedSound; public bool useUnitySelectSound; public bool useUnityDeselectSound; public bool useUnityMoveSound; public bool useUnityInitializePotentialDragSound; public bool useUnityBeginDragSound; public bool useUnityEndDragSound; public bool useUnitySubmitSound; public bool useUnityCancelSound; public bool useUnityToggleSound; private Slider _slider; private Toggle _toggle; private Button _button; private bool _isVisible; private bool _needsCoroutine; private float? _triggerEnterTime; private float? _triggerEnter2dTime; private bool _mouseDragSoundPlayed; private PlaySoundResult _mouseDragResult; private Transform _trans; private readonly List _validMechanimStateChangedSounds = new List(); private Animator _anim; private AudioEventGroup eventsToPlayDuringStart; private bool startHappened; private bool IsSetToUGUI => unityUIMode != UnityUIVersion.Legacy; private bool IsSetToLegacyUI => unityUIMode == UnityUIVersion.Legacy; private Transform Trans { get { if (_trans != null) { return _trans; } _trans = base.transform; return _trans; } } private void Awake() { _trans = base.transform; _anim = GetComponent(); _slider = GetComponent(); _button = GetComponent