OSDN Git Service

Undid HDRP
[mindgames/Mindgames_main.git] / Mindgames / Assets / Plugins / FMOD / src / Runtime / StudioBankLoader.cs
1 using UnityEngine;
2 using System.Collections.Generic;
3
4 namespace FMODUnity
5 {
6     [AddComponentMenu("FMOD Studio/FMOD Studio Bank Loader")]
7     public class StudioBankLoader : MonoBehaviour
8     {
9         public LoaderGameEvent LoadEvent;
10         public LoaderGameEvent UnloadEvent;
11         [BankRef]
12         public List<string> Banks;
13         public string CollisionTag;
14         public bool PreloadSamples;
15         private bool isQuitting;
16         
17         void HandleGameEvent(LoaderGameEvent gameEvent)
18         {
19             if (LoadEvent == gameEvent)
20             {
21                 Load();
22             }
23             if (UnloadEvent == gameEvent)
24             {
25                 Unload();
26             }
27         }
28
29         void Start()
30         {
31             RuntimeUtils.EnforceLibraryOrder();
32             HandleGameEvent(LoaderGameEvent.ObjectStart);
33         }
34
35         void OnApplicationQuit()
36         {
37             isQuitting = true;
38         }
39
40         void OnDestroy()
41         {
42             if (!isQuitting)
43             {
44                 HandleGameEvent(LoaderGameEvent.ObjectDestroy);
45             }
46         }
47
48         void OnTriggerEnter(Collider other)
49         {
50             if (string.IsNullOrEmpty(CollisionTag) || other.CompareTag(CollisionTag))
51             {
52                 HandleGameEvent(LoaderGameEvent.TriggerEnter);
53             }
54         }
55
56         void OnTriggerExit(Collider other)
57         {
58             if (string.IsNullOrEmpty(CollisionTag) || other.CompareTag(CollisionTag))
59             {
60                 HandleGameEvent(LoaderGameEvent.TriggerExit);
61             }
62         }
63
64         void OnTriggerEnter2D(Collider2D other)
65         {
66             if (string.IsNullOrEmpty(CollisionTag) || other.CompareTag(CollisionTag))
67             {
68                 HandleGameEvent(LoaderGameEvent.TriggerEnter2D);
69             }
70         }
71
72         void OnTriggerExit2D(Collider2D other)
73         {
74             if (string.IsNullOrEmpty(CollisionTag) || other.CompareTag(CollisionTag))
75             {
76                 HandleGameEvent(LoaderGameEvent.TriggerExit2D);
77             }
78         }
79
80         public void Load()
81         {
82             foreach (var bankRef in Banks)
83             {
84                 try
85                 {
86                     RuntimeManager.LoadBank(bankRef, PreloadSamples);
87                 }
88                 catch (BankLoadException e)
89                 {
90                     UnityEngine.Debug.LogException(e);
91                 }
92             }
93             RuntimeManager.WaitForAllLoads();
94         }
95
96         public void Unload()
97         {
98             foreach (var bankRef in Banks)
99             {
100                 RuntimeManager.UnloadBank(bankRef);
101             }
102         }
103     }
104 }