forked from cgvr/DeltaVR
FMODi paigaldamine projekti sisse, fmod project created, assets are imported into FMOD; AudioManager and FMODEvents scripts, VR is set up
This commit is contained in:
118
Assets/Plugins/FMOD/src/StudioBankLoader.cs
Normal file
118
Assets/Plugins/FMOD/src/StudioBankLoader.cs
Normal file
@@ -0,0 +1,118 @@
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace FMODUnity
|
||||
{
|
||||
[AddComponentMenu("FMOD Studio/FMOD Studio Bank Loader")]
|
||||
public class StudioBankLoader : MonoBehaviour
|
||||
{
|
||||
public LoaderGameEvent LoadEvent;
|
||||
public LoaderGameEvent UnloadEvent;
|
||||
[BankRef]
|
||||
public List<string> Banks;
|
||||
public string CollisionTag;
|
||||
public bool PreloadSamples;
|
||||
private bool isQuitting;
|
||||
|
||||
private void HandleGameEvent(LoaderGameEvent gameEvent)
|
||||
{
|
||||
if (LoadEvent == gameEvent)
|
||||
{
|
||||
Load();
|
||||
}
|
||||
if (UnloadEvent == gameEvent)
|
||||
{
|
||||
Unload();
|
||||
}
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
RuntimeUtils.EnforceLibraryOrder();
|
||||
HandleGameEvent(LoaderGameEvent.ObjectStart);
|
||||
}
|
||||
|
||||
private void OnApplicationQuit()
|
||||
{
|
||||
isQuitting = true;
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
if (!isQuitting)
|
||||
{
|
||||
HandleGameEvent(LoaderGameEvent.ObjectDestroy);
|
||||
}
|
||||
}
|
||||
|
||||
#if UNITY_PHYSICS_EXIST
|
||||
private void OnTriggerEnter(Collider other)
|
||||
{
|
||||
if (string.IsNullOrEmpty(CollisionTag) || other.CompareTag(CollisionTag))
|
||||
{
|
||||
HandleGameEvent(LoaderGameEvent.TriggerEnter);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnTriggerExit(Collider other)
|
||||
{
|
||||
if (string.IsNullOrEmpty(CollisionTag) || other.CompareTag(CollisionTag))
|
||||
{
|
||||
HandleGameEvent(LoaderGameEvent.TriggerExit);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if UNITY_PHYSICS2D_EXIST
|
||||
private void OnTriggerEnter2D(Collider2D other)
|
||||
{
|
||||
if (string.IsNullOrEmpty(CollisionTag) || other.CompareTag(CollisionTag))
|
||||
{
|
||||
HandleGameEvent(LoaderGameEvent.TriggerEnter2D);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnTriggerExit2D(Collider2D other)
|
||||
{
|
||||
if (string.IsNullOrEmpty(CollisionTag) || other.CompareTag(CollisionTag))
|
||||
{
|
||||
HandleGameEvent(LoaderGameEvent.TriggerExit2D);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
HandleGameEvent(LoaderGameEvent.ObjectEnable);
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
HandleGameEvent(LoaderGameEvent.ObjectDisable);
|
||||
}
|
||||
|
||||
public void Load()
|
||||
{
|
||||
foreach (var bankRef in Banks)
|
||||
{
|
||||
try
|
||||
{
|
||||
RuntimeManager.LoadBank(bankRef, PreloadSamples);
|
||||
}
|
||||
catch (BankLoadException e)
|
||||
{
|
||||
RuntimeUtils.DebugLogException(e);
|
||||
}
|
||||
}
|
||||
RuntimeManager.WaitForAllSampleLoading();
|
||||
}
|
||||
|
||||
public void Unload()
|
||||
{
|
||||
foreach (var bankRef in Banks)
|
||||
{
|
||||
RuntimeManager.UnloadBank(bankRef);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user