SFXGroup.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using Sirenix.OdinInspector;
  5. namespace KairoEngine.SFX
  6. {
  7. [System.Serializable]
  8. [HideMonoScript]
  9. [CreateAssetMenu(menuName = "KairoEngine/SFX/Group", fileName = "SFXGroup", order = 2)]
  10. public class SFXGroup : SerializedScriptableObject
  11. {
  12. [Space] public Dictionary<PhysicMaterial, SFXClip> clips = new Dictionary<PhysicMaterial, SFXClip>();
  13. public void Play(PhysicMaterial physicMaterial, Vector3 position)
  14. {
  15. if(!physicMaterial)
  16. {
  17. Debug.LogError($"Missing physicMaterial in call to SFXGroup ({this.name})", this);
  18. return;
  19. }
  20. string materialName = physicMaterial.name.Replace(" (Instance)", "");
  21. SFXClip clip = null;
  22. foreach(KeyValuePair<PhysicMaterial,SFXClip> item in clips)
  23. {
  24. if(item.Key.name == materialName) clip = item.Value;
  25. }
  26. if(clip != null) SoundController.EmmitSound(clip, position);
  27. else Debug.LogError($"Missing SFX clip for material \'{materialName}\' in SFXGroup ({this.name})", this);
  28. }
  29. }
  30. }