summaryrefslogtreecommitdiff
path: root/ROUNDS/SoundImplementation/SoundHierarchyPlay.cs
diff options
context:
space:
mode:
Diffstat (limited to 'ROUNDS/SoundImplementation/SoundHierarchyPlay.cs')
-rw-r--r--ROUNDS/SoundImplementation/SoundHierarchyPlay.cs105
1 files changed, 105 insertions, 0 deletions
diff --git a/ROUNDS/SoundImplementation/SoundHierarchyPlay.cs b/ROUNDS/SoundImplementation/SoundHierarchyPlay.cs
new file mode 100644
index 0000000..567b0c4
--- /dev/null
+++ b/ROUNDS/SoundImplementation/SoundHierarchyPlay.cs
@@ -0,0 +1,105 @@
+using System;
+using Sonigon;
+using UnityEngine;
+
+namespace SoundImplementation;
+
+public class SoundHierarchyPlay : MonoBehaviour
+{
+ [NonSerialized]
+ public Transform instanceIDTransform;
+
+ [NonSerialized]
+ public SoundHierarchySpawn soundHierarchySpawn;
+
+ [NonSerialized]
+ public SoundHierarchyDepth soundHierarchyDepth;
+
+ private SoundParameterIntensity soundParameterIntensityParentContinious = new SoundParameterIntensity(1f, UpdateMode.Continuous);
+
+ private SoundParameterIntensity soundParameterIntensityChildOnce = new SoundParameterIntensity(0f);
+
+ private Vector3 lastPosition;
+
+ private Transform transformPosition;
+
+ private bool bulletHasTriggered;
+
+ private bool stopOnDisablePlaying;
+
+ private Transform GetCurrentInstanceIDTransform()
+ {
+ if (soundHierarchySpawn.soundPolyGrouping == SoundPolyGrouping.global)
+ {
+ return SoundManager.Instance.GetTransform();
+ }
+ return instanceIDTransform;
+ }
+
+ private void FixedUpdate()
+ {
+ if (soundHierarchyDepth == SoundHierarchyDepth.bulletParent && soundHierarchySpawn.soundParentVelocityToIntensity && bulletHasTriggered && soundHierarchySpawn != null)
+ {
+ soundParameterIntensityParentContinious.intensity = Vector3.Distance(lastPosition, transformPosition.position);
+ lastPosition = transformPosition.position;
+ }
+ }
+
+ private void OnDisable()
+ {
+ if (bulletHasTriggered && stopOnDisablePlaying)
+ {
+ stopOnDisablePlaying = false;
+ SoundManager.Instance.StopAtPosition(soundHierarchySpawn.soundChildChildStopOnDisable, transformPosition);
+ }
+ }
+
+ public void PlayBullet()
+ {
+ transformPosition = base.transform;
+ bulletHasTriggered = true;
+ lastPosition = transformPosition.position;
+ if (soundHierarchyDepth == SoundHierarchyDepth.bulletParent)
+ {
+ if (soundHierarchySpawn.soundParent != null)
+ {
+ if (soundHierarchySpawn.soundParentVelocityToIntensity)
+ {
+ SoundManager.Instance.PlayAtPosition(soundHierarchySpawn.soundParent, GetCurrentInstanceIDTransform(), transformPosition, soundParameterIntensityParentContinious);
+ }
+ else
+ {
+ SoundManager.Instance.PlayAtPosition(soundHierarchySpawn.soundParent, GetCurrentInstanceIDTransform(), transformPosition);
+ }
+ }
+ if (soundHierarchySpawn.soundParentStopOnDisable != null)
+ {
+ stopOnDisablePlaying = true;
+ SoundManager.Instance.PlayAtPosition(soundHierarchySpawn.soundParentStopOnDisable, GetCurrentInstanceIDTransform(), transformPosition);
+ }
+ }
+ else if (soundHierarchyDepth == SoundHierarchyDepth.bulletChild && soundHierarchySpawn.soundChild != null)
+ {
+ if (soundHierarchySpawn.soundChildVelocityToIntensity)
+ {
+ SoundManager.Instance.PlayAtPosition(soundHierarchySpawn.soundChild, GetCurrentInstanceIDTransform(), transformPosition, soundParameterIntensityChildOnce);
+ }
+ else
+ {
+ SoundManager.Instance.PlayAtPosition(soundHierarchySpawn.soundChild, GetCurrentInstanceIDTransform(), transformPosition);
+ }
+ }
+ else if (soundHierarchyDepth == SoundHierarchyDepth.bulletChildChild)
+ {
+ if (soundHierarchySpawn.soundChildChild != null)
+ {
+ SoundManager.Instance.PlayAtPosition(soundHierarchySpawn.soundChildChild, GetCurrentInstanceIDTransform(), transformPosition);
+ }
+ if (soundHierarchySpawn.soundChildChildStopOnDisable != null)
+ {
+ stopOnDisablePlaying = true;
+ SoundManager.Instance.PlayAtPosition(soundHierarchySpawn.soundChildChildStopOnDisable, GetCurrentInstanceIDTransform(), transformPosition);
+ }
+ }
+ }
+}