1
0
forked from cgvr/DeltaVR

Merge remote-tracking branch 'upstream/master'

This commit is contained in:
2026-01-25 12:31:58 +02:00
428 changed files with 6576 additions and 225 deletions
Binary file not shown.
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3ca33810cadcc3f438e1c22aef4b84e2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fdd84c412b9f8e54190abf5fb9d822e8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b95ea1a21a2515b428e818f2ba0071ab
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6a5c837d928416b468e7886bb15a44ea
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d6c33fb52eb7c5d48b88b1ce923918e4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 659e5b6b771c6e84288fab70870e71ca
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a802a304ac7a06f4aa7ec3a5343ec6ca
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9d9d2a3944a244a4cb506fe9a06b6eab
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 45fe15686901bcf4d806b3fcfa9767af
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d0a0941231c25de4599a045b84fbbbe4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 18de2bee3762c3d42aade5e9a1105f2d
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 98d6925b0e4041d4cb810364c9e59186
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f20dfff913b4cf048ba81c8951e1d515
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c6a124544b1bffe4b98d7143af781d70
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1064f096f3015c74c943703650d7406b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 254823b7963809f489ac39e4edfc6a46
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a122a6d15a6f1aa49893a06e3ecb16fc
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6da26a4752be7ce43a29e0e1bf247e72
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e0723bda80a360c4a954fee1242f8e6a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a2ad72c769431494e87176ee57a9dbe5
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 477e8c72e4a98d84bb70bfb6e1399699
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 35b818bce640964478f8e964b97d2294
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a68ec6ce65a198c40a587c6e0f0c8faa
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 0aa0fe8bc08f949459ac26cef320400e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2fc4b956c3bddc841a11bec32d579b3f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1629c3cacc79199489bb6696a90c6b74
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 0322733d2ec0a5e4880d27eba19da8d4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d8c0aa0bcbfc8724a87c386340b0c227
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 92658b78307678e4790910a8d7799650
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0c63edcea3f1eb64aa4eaa0f9b65d4ec
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3dadebd0d94106b44a80fbcb1965d6de
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9270b2bbe46c8fe4fb76644cf9e0c2a2
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b2c8a4e7715582b42a4b6eebff90743b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ee35784d923986c4c832e3a1c02f7ea9
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 53dac4a8b4a6e5845b4ca1c859e81866
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 620343e30e35adf4aaf3fe1296540e0f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: bf6d885db63d3a542b3dd07acc16fc3b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: fb8a9fcfd50369448a9535727e91be9a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 497e3485a60147a41a9a6df9ff32b6b6
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8d725d2a72e75474da7b2012a77b2039
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3301bed657a92434fb8f62ac4bd61406
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d46684e8664c4ba4ba512f67e1c54310
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1ffe3d974ca4c4d45ae71410bd60ea1f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 634c2a7aac3130544aeae124c4c49bb0
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -2551,7 +2551,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: ebe1ab889a9bed940995d4f47bc743ef, type: 3} m_Script: {fileID: 11500000, guid: ebe1ab889a9bed940995d4f47bc743ef, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
target: 2 target: 5
--- !u!1 &3847096334227967442 --- !u!1 &3847096334227967442
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -3539,8 +3539,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -2000.1, y: 34.7} m_AnchoredPosition: {x: -2404.8, y: 34.7}
m_SizeDelta: {x: 117.7, y: 49.6} m_SizeDelta: {x: 220, y: 49.6}
m_Pivot: {x: 0.5, y: 0.5} m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2306375091028476275 --- !u!222 &2306375091028476275
CanvasRenderer: CanvasRenderer:
@@ -3570,7 +3570,7 @@ MonoBehaviour:
m_OnCullStateChanged: m_OnCullStateChanged:
m_PersistentCalls: m_PersistentCalls:
m_Calls: [] m_Calls: []
m_text: 'Music:' m_text: 'Voiceovers:'
m_isRightToLeft: 0 m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: d564a6b9a8a781b438125b614edcc297, type: 2} m_fontAsset: {fileID: 11400000, guid: d564a6b9a8a781b438125b614edcc297, type: 2}
m_sharedMaterial: {fileID: 2467261418627247352, guid: d564a6b9a8a781b438125b614edcc297, m_sharedMaterial: {fileID: 2467261418627247352, guid: d564a6b9a8a781b438125b614edcc297,
@@ -4890,7 +4890,7 @@ GameObject:
- component: {fileID: 9123126080211807181} - component: {fileID: 9123126080211807181}
- component: {fileID: 2844805864736818914} - component: {fileID: 2844805864736818914}
m_Layer: 5 m_Layer: 5
m_Name: Music Slider m_Name: Voiceover Slider
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
@@ -8,7 +8,8 @@ public class SliderToVCA : MonoBehaviour
Ambiences, Ambiences,
Music, Music,
SFX, SFX,
UI UI,
Voiceovers
} }
public VCATarget target; public VCATarget target;
@@ -40,6 +41,8 @@ private float GetInitialValueFromAudioManager()
return AudioManager.Instance.SFXVolume; return AudioManager.Instance.SFXVolume;
case VCATarget.UI: case VCATarget.UI:
return AudioManager.Instance.UIVolume; return AudioManager.Instance.UIVolume;
case VCATarget.Voiceovers:
return AudioManager.Instance.VoiceoverVolume;
default: default:
return 0.5f; return 0.5f;
} }
@@ -76,6 +79,10 @@ private float GetInitialValueFromAudioManager()
case VCATarget.UI: case VCATarget.UI:
AudioManager.Instance.SetUIVCA(value); AudioManager.Instance.SetUIVCA(value);
break; break;
case VCATarget.Voiceovers:
AudioManager.Instance.SetVoiceoverVCA(value);
break;
} }
} }
} }
@@ -184,8 +184,6 @@ public class TutorialAudioListener : MonoBehaviour
} }
} }
private void HandleGrab(XRGrabInteractable grab) private void HandleGrab(XRGrabInteractable grab)
{ {
if (grab == null) if (grab == null)
@@ -131,4 +131,4 @@ MonoBehaviour:
PlayerOcclusionWidening: 1 PlayerOcclusionWidening: 1
OcclusionLayer: OcclusionLayer:
serializedVersion: 2 serializedVersion: 2
m_Bits: 0 m_Bits: 268438528
Binary file not shown.
+116 -2
View File
@@ -20,6 +20,7 @@ public class AudioManager : MonoBehaviour
private VCA sfxVCA; private VCA sfxVCA;
private VCA uiVCA; private VCA uiVCA;
private VCA ambienceVCA; private VCA ambienceVCA;
private VCA voiceoverVCA;
[SerializeField] [SerializeField]
[Header("Volume")] [Header("Volume")]
@@ -40,6 +41,9 @@ public class AudioManager : MonoBehaviour
public float UIVolume = 0.5f; public float UIVolume = 0.5f;
[Range(0, 1)] [Range(0, 1)]
public float VoiceoverVolume = 0.5f;
[Range(0, 1)]
private Bus masterBus; private Bus masterBus;
private Bus ambientBus; private Bus ambientBus;
private Bus musicBus; private Bus musicBus;
@@ -63,6 +67,7 @@ public class AudioManager : MonoBehaviour
// public static AudioManager instance; // public static AudioManager instance;
private static EventInstance musicEventInstance; private static EventInstance musicEventInstance;
private EVENT_CALLBACK dialogueCallback;
// public access for the Singleton // public access for the Singleton
// and lazy instantiation if not exists // and lazy instantiation if not exists
@@ -108,18 +113,22 @@ public class AudioManager : MonoBehaviour
_instance.sfxBus = RuntimeManager.GetBus("bus:/SFX"); _instance.sfxBus = RuntimeManager.GetBus("bus:/SFX");
_instance.uiBus = RuntimeManager.GetBus("bus:/UI"); _instance.uiBus = RuntimeManager.GetBus("bus:/UI");
_instance.masterVCA = RuntimeManager.GetVCA("vca:/Master"); _instance.masterVCA = RuntimeManager.GetVCA("vca:/Master");
_instance.musicVCA = RuntimeManager.GetVCA("vca:/Music"); _instance.musicVCA = RuntimeManager.GetVCA("vca:/Music");
_instance.ambienceVCA = RuntimeManager.GetVCA("vca:/Ambiences"); _instance.ambienceVCA = RuntimeManager.GetVCA("vca:/Ambiences");
_instance.sfxVCA = RuntimeManager.GetVCA("vca:/SFX"); _instance.sfxVCA = RuntimeManager.GetVCA("vca:/SFX");
_instance.uiVCA = RuntimeManager.GetVCA("vca:/UI"); _instance.uiVCA = RuntimeManager.GetVCA("vca:/UI");
_instance.voiceoverVCA = RuntimeManager.GetVCA("vca:/Voiceovers");
_instance.masterVCA.setVolume(_instance.MasterVolume); _instance.masterVCA.setVolume(_instance.MasterVolume);
_instance.musicVCA.setVolume(_instance.MusicVolume); _instance.musicVCA.setVolume(_instance.MusicVolume);
_instance.ambienceVCA.setVolume(_instance.AmbienceVolume); _instance.ambienceVCA.setVolume(_instance.AmbienceVolume);
_instance.sfxVCA.setVolume(_instance.SFXVolume); _instance.sfxVCA.setVolume(_instance.SFXVolume);
_instance.uiVCA.setVolume(_instance.UIVolume); _instance.uiVCA.setVolume(_instance.UIVolume);
_instance.voiceoverVCA.setVolume(_instance.VoiceoverVolume);
_instance.dialogueCallback = new EVENT_CALLBACK(DialogueEventCallback);
} }
@@ -152,6 +161,11 @@ public class AudioManager : MonoBehaviour
UIVolume = value; UIVolume = value;
uiVCA.setVolume(UIVolume); uiVCA.setVolume(UIVolume);
} }
public void SetVoiceoverVCA(float value)
{
VoiceoverVolume = value;
voiceoverVCA.setVolume(VoiceoverVolume);
}
private void Awake() private void Awake()
@@ -207,7 +221,7 @@ public class AudioManager : MonoBehaviour
EventInstance instance = RuntimeManager.CreateInstance(sound); EventInstance instance = RuntimeManager.CreateInstance(sound);
RuntimeManager.AttachInstanceToGameObject(instance, go); RuntimeManager.AttachInstanceToGameObject(instance, go);
instance.start(); instance.start();
// instance.release(); instance.release();
eventInstances.Add(instance); eventInstances.Add(instance);
return instance; return instance;
@@ -280,6 +294,106 @@ public class AudioManager : MonoBehaviour
//=====// //=====//
//=====// //=====//
public void PlayDialogue(string audioTableKey, GameObject emitter = null, float radioAmount = 0f)
{
var dialogueEvent = FMODEvents.Instance.VoiceoverAll;
if (dialogueEvent.IsNull)
{
Debug.LogWarning("Dialogue EventReference is not assigned!");
return;
}
EventInstance instance = RuntimeManager.CreateInstance(dialogueEvent);
if (emitter != null)
{
RuntimeManager.AttachInstanceToGameObject(instance, emitter);
instance.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(emitter.gameObject));
}
// Assign the FMOD parameter value (in this case: Continous type)
instance.setParameterByName("Radio", radioAmount);
// Pin the key for programmer sound callback
GCHandle stringHandle = GCHandle.Alloc(audioTableKey);
instance.setUserData(GCHandle.ToIntPtr(stringHandle));
// Set the callback for programmer sounds
instance.setCallback(dialogueCallback);
// Add occlusion if available on the emitter
if (emitter != null)
{
FirstPersonOcclusion occlusion = emitter.GetComponent<FirstPersonOcclusion>();
if (occlusion != null)
{
occlusion.InitialiseWithInstance(instance);
}
}
instance.start();
instance.release();
}
[AOT.MonoPInvokeCallback(typeof(EVENT_CALLBACK))]
private static FMOD.RESULT DialogueEventCallback(
EVENT_CALLBACK_TYPE type,
IntPtr instancePtr,
IntPtr parameterPtr)
{
EventInstance instance = new EventInstance(instancePtr);
instance.getUserData(out IntPtr stringPtr);
GCHandle stringHandle = GCHandle.FromIntPtr(stringPtr);
string key = stringHandle.Target as string;
switch (type)
{
case EVENT_CALLBACK_TYPE.CREATE_PROGRAMMER_SOUND:
{
var parameter = Marshal.PtrToStructure<PROGRAMMER_SOUND_PROPERTIES>(parameterPtr);
FMOD.Studio.SOUND_INFO soundInfo;
var result = RuntimeManager.StudioSystem.getSoundInfo(key, out soundInfo);
if (result != FMOD.RESULT.OK)
break;
FMOD.Sound sound;
RuntimeManager.CoreSystem.createSound(
soundInfo.name_or_data,
soundInfo.mode | FMOD.MODE.CREATECOMPRESSEDSAMPLE,
ref soundInfo.exinfo,
out sound
);
parameter.sound = sound.handle;
parameter.subsoundIndex = soundInfo.subsoundindex;
Marshal.StructureToPtr(parameter, parameterPtr, false);
break;
}
case EVENT_CALLBACK_TYPE.DESTROY_PROGRAMMER_SOUND:
{
var parameter = Marshal.PtrToStructure<PROGRAMMER_SOUND_PROPERTIES>(parameterPtr);
var sound = new FMOD.Sound(parameter.sound);
sound.release();
break;
}
case EVENT_CALLBACK_TYPE.DESTROYED:
{
// Release pinned string
stringHandle.Free();
break;
}
}
return FMOD.RESULT.OK;
}
public void StopSFX() public void StopSFX()
{ {
sfxBus.stopAllEvents(FMOD.Studio.STOP_MODE.IMMEDIATE); sfxBus.stopAllEvents(FMOD.Studio.STOP_MODE.IMMEDIATE);
@@ -3,6 +3,9 @@ using UnityEngine;
public class FMODEvents : MonoBehaviour public class FMODEvents : MonoBehaviour
{ {
[field: Header("Voiceline FMOD Programmer Event")]
[field: SerializeField] public EventReference VoiceoverAll { get; private set; }
[field: Header("Musical Ambiences")] [field: Header("Musical Ambiences")]
[field: SerializeField] public EventReference Kosmos { get; private set; } [field: SerializeField] public EventReference Kosmos { get; private set; }
@@ -19,6 +22,7 @@ public class FMODEvents : MonoBehaviour
[field: SerializeField] public EventReference BowGrab { get; private set; } [field: SerializeField] public EventReference BowGrab { get; private set; }
[field: SerializeField] public EventReference Spray { get; private set; } [field: SerializeField] public EventReference Spray { get; private set; }
[field: SerializeField] public EventReference Coughing { get; private set; } [field: SerializeField] public EventReference Coughing { get; private set; }
//[field: SerializeField] public EventReference MyNewSoundEffect { get; private set; }
[field: Header("CAR")] [field: Header("CAR")]
[field: SerializeField] public EventReference DoorOpen { get; private set; } [field: SerializeField] public EventReference DoorOpen { get; private set; }
@@ -0,0 +1,13 @@
using UnityEngine;
public class VoiceoverTester : MonoBehaviour
{
//[Tooltip("Audio Table key")]
public string dialogueKey = "Chef/Ulrich_Terribly_Sorry1";
private void OnTriggerEnter(Collider other)
{
AudioManager.Instance.PlayDialogue(dialogueKey, gameObject, 0f);
//Debug.LogError("Voiceline played (in 3D)");
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e77f6976a4505294797905646ff02a8a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More