diff --git a/Assets/_PROJECT/Components/Bolt/Intercation Logic/Car Driving Routine.cs b/Assets/_PROJECT/Components/Bolt/Intercation Logic/Car Driving Routine.cs index bdd434d1..25d92e2a 100644 --- a/Assets/_PROJECT/Components/Bolt/Intercation Logic/Car Driving Routine.cs +++ b/Assets/_PROJECT/Components/Bolt/Intercation Logic/Car Driving Routine.cs @@ -28,6 +28,7 @@ public class CarDrivingRoutine : NetworkBehaviour private EventInstance CarMovement; + private void Awake() { //Debug.LogError("AUDIO MANAGER:"); @@ -39,6 +40,7 @@ public class CarDrivingRoutine : NetworkBehaviour CarMovement = AudioManager.Instance.CreateInstance(FMODEvents.Instance.BoltCarSimpleDriving); //initialising the variable CarMovement.setParameterByName("EasyBoltLogic", 0); //"Driving - 0 in FMOD" CarMovement.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(gameObject)); //setting 3d attributes + } private void Start() { diff --git a/Assets/_PROJECT/Components/Bow/Scripts/KeyBoardManager.cs b/Assets/_PROJECT/Components/Bow/Scripts/KeyBoardManager.cs index 8c6e83a6..1d24b197 100644 --- a/Assets/_PROJECT/Components/Bow/Scripts/KeyBoardManager.cs +++ b/Assets/_PROJECT/Components/Bow/Scripts/KeyBoardManager.cs @@ -123,7 +123,7 @@ public class KeyboardManager : NetworkBehaviour void OnEnterPressed() { - AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Hover, gameObject); + AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Click, gameObject); if (_input.Length > 0) { diff --git a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Floor Button Visualizer.cs b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Floor Button Visualizer.cs index 7d950e43..f8883bfe 100644 --- a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Floor Button Visualizer.cs +++ b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Floor Button Visualizer.cs @@ -9,7 +9,11 @@ public class FloorButtonVisualizer : MonoBehaviour public Sprite ActiveSprite; public bool ActiveState; private Image buttonImage; - // Start is called before the first frame update + + // --- Static tracking for selection change --- + private static FloorButtonVisualizer lastActiveButton = null; + private static bool initialized = false; + void Start() { buttonImage = gameObject.GetComponent(); @@ -19,12 +23,20 @@ public class FloorButtonVisualizer : MonoBehaviour { this.ActiveState = true; buttonImage.sprite = ActiveSprite; - //Debug.Log("Floorbutton of " + gameObject.name + " activated"); + + // --- Only play hover if selection actually changed --- + if (initialized && lastActiveButton != this) + { + AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Hover, gameObject); + } + + lastActiveButton = this; + initialized = true; } + public void Deactivate() { this.ActiveState = false; buttonImage.sprite = InactiveSprite; - //Debug.Log("Floorbutton of " + gameObject.name + " deactivated"); } } diff --git a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu Teleport Button.cs b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu Teleport Button.cs index faf17a70..70273c6b 100644 --- a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu Teleport Button.cs +++ b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/Menu Teleport Button.cs @@ -25,6 +25,9 @@ public class MenuTeleportButton : MonoBehaviour private EventInstance TeleportingSound; FMOD.Studio.Bus SpecialBus; //FMOD bus variable + private static MenuTeleportButton lastSelectedButton = null; + private static bool initialized = false; + private void Awake() { TeleportingSound = AudioManager.Instance.CreateInstance(FMODEvents.Instance.Teleport); //initialise the instance @@ -58,12 +61,19 @@ public class MenuTeleportButton : MonoBehaviour public void SetStateSelected() { - AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Hover, gameObject); if (button != null && HoverSprite != null) { button.targetGraphic.GetComponent().sprite = HoverSprite; + + // --- Only play hover sound if selection actually changed --- + if (initialized && lastSelectedButton != this) + { + AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Hover, gameObject); + } + + lastSelectedButton = this; + initialized = true; } - } public void SetStateDefault() @@ -106,7 +116,7 @@ public class MenuTeleportButton : MonoBehaviour button.interactable = false; button.interactable = true; - StartCoroutine(MuteBusForSeconds(1.5f)); + StartCoroutine(MuteBusForSeconds(2.0f)); TeleportingSound.start(); //playing 2d oneshot } diff --git a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/TutorialAudioListener.cs b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/TutorialAudioListener.cs index a53c139b..1ba43b33 100644 --- a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/TutorialAudioListener.cs +++ b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/Scripts/TutorialAudioListener.cs @@ -14,10 +14,16 @@ public class TutorialAudioListener : MonoBehaviour private TeleportationProvider teleportationProvider; private float lastStepTime; - [SerializeField] private float baseStepCooldown = 0.5f; // base interval at speed = 1 - private float stepCooldown; + + [Header("Settings")] + [SerializeField] private float baseStepRate = 0.5f; // Step interval at joystick = 1 and slider = 1 + [SerializeField] private float joystickThreshold = 0.1f; // Minimum stick movement to count as walking + + private float settingsSpeedMultiplier = 1f; // From slider (1 = default) private bool locomotionEnabled = false; + private Vector2 currentMoveVector; + private void Awake() { if (tutorialController == null) @@ -32,14 +38,15 @@ public class TutorialAudioListener : MonoBehaviour turnAction = tutorialController.turnProvider.rightHandSnapTurnAction.action; teleportationProvider = tutorialController.teleportProvider; } - - stepCooldown = baseStepCooldown; } private void OnEnable() { if (moveAction != null) - moveAction.performed += OnMovePerformed; + { + moveAction.performed += OnMoveInput; + moveAction.canceled += OnMoveCanceled; + } if (turnAction != null) turnAction.performed += OnTurnPerformed; @@ -57,7 +64,10 @@ public class TutorialAudioListener : MonoBehaviour private void OnDisable() { if (moveAction != null) - moveAction.performed -= OnMovePerformed; + { + moveAction.performed -= OnMoveInput; + moveAction.canceled -= OnMoveCanceled; + } if (turnAction != null) turnAction.performed -= OnTurnPerformed; @@ -75,26 +85,48 @@ public class TutorialAudioListener : MonoBehaviour private void HandleLocomotionToggled(bool enabled) { locomotionEnabled = enabled; - Debug.Log($"[TutorialAudioListener] Locomotion toggled: {enabled}"); } private void HandleSpeedChanged(float newSpeed) { - // Invert proportionality: faster speed = shorter step interval - float calculatedCooldown = baseStepCooldown / Mathf.Max(newSpeed, 0.01f); - - // Clamp the result between 0.4 and 0.6 seconds - stepCooldown = Mathf.Clamp(calculatedCooldown, 0.3f, 0.69f); - - Debug.Log($"[TutorialAudioListener] Step cooldown adjusted: {stepCooldown}"); + // Slider is allowed to range normally but we clamp for stability + settingsSpeedMultiplier = Mathf.Clamp(newSpeed, 0.4f, 1.2f); } - private void OnMovePerformed(InputAction.CallbackContext context) + private void OnMoveInput(InputAction.CallbackContext ctx) + { + currentMoveVector = ctx.ReadValue(); + } + + private void OnMoveCanceled(InputAction.CallbackContext ctx) + { + currentMoveVector = Vector2.zero; + } + + private void Update() + { + TryPlayStep(); + } + + private void TryPlayStep() { if (!locomotionEnabled) return; - if (Time.time - lastStepTime < stepCooldown) + float joystickMagnitude = currentMoveVector.magnitude; + + if (joystickMagnitude < joystickThreshold) + return; // Not moving enough to walk + + // --- NEW: Slider influence (very light touch) --- + float sliderInfluence = 1f + (settingsSpeedMultiplier) * 0.25f; + float effectiveMagnitude = joystickMagnitude * sliderInfluence; + + // --- NEW: Step cooldown --- + float dynamicCooldown = baseStepRate / Mathf.Max(effectiveMagnitude, 0.01f); + dynamicCooldown = Mathf.Clamp(dynamicCooldown, 0.33f, 0.65f); + + if (Time.time - lastStepTime < dynamicCooldown) return; lastStepTime = Time.time; @@ -103,13 +135,16 @@ public class TutorialAudioListener : MonoBehaviour private void OnTurnPerformed(InputAction.CallbackContext context) { + // If magnitude above threshold = walking don't play spin sound + if (currentMoveVector.magnitude > joystickThreshold) + return; + + // Otherwise play turning sound AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.StepSpin, gameObject); } private void OnTeleportEnd(LocomotionSystem locomotionSystem) { - - // Optional: Uncomment if teleport should play sound - // AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Steps, gameObject); + // Optional teleport sound } } diff --git a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/XR Origin.prefab b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/XR Origin.prefab index 60d5b288..11e353e4 100644 --- a/Assets/_PROJECT/Components/NewHandPresence/Prefabs/XR Origin.prefab +++ b/Assets/_PROJECT/Components/NewHandPresence/Prefabs/XR Origin.prefab @@ -3221,6 +3221,7 @@ GameObject: - component: {fileID: 2567477070120516364} - component: {fileID: 5667922335807455518} - component: {fileID: 9130699439852735294} + - component: {fileID: 244862221083601452} m_Layer: 5 m_Name: Level 1 button m_TagString: Untagged @@ -3346,6 +3347,35 @@ MonoBehaviour: InactiveSprite: {fileID: 21300000, guid: 9b9161f51c7cdb84eba98c454b3f542c, type: 3} ActiveSprite: {fileID: 21300000, guid: 594b1f27343305e4e99551b5fb8a1b76, type: 3} ActiveState: 0 +--- !u!114 &244862221083601452 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4006117569149960393} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 9130699439852735294} + m_TargetAssemblyTypeName: FloorButtonVisualizer, Assembly-CSharp + m_MethodName: Activate + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 --- !u!1 &4122378368372937094 GameObject: m_ObjectHideFlags: 0 @@ -3395,6 +3425,7 @@ GameObject: - component: {fileID: 735405659653074444} - component: {fileID: 1877344747539671532} - component: {fileID: 2993125651756248496} + - component: {fileID: 5719623585416982853} m_Layer: 5 m_Name: Level 2 button m_TagString: Untagged @@ -3520,6 +3551,35 @@ MonoBehaviour: InactiveSprite: {fileID: 21300000, guid: 28748e86c9a1f0c4694006461434eca7, type: 3} ActiveSprite: {fileID: 21300000, guid: a84b9455a04a3ca459595ecb5810fb98, type: 3} ActiveState: 1 +--- !u!114 &5719623585416982853 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4441188026596657465} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2993125651756248496} + m_TargetAssemblyTypeName: FloorButtonVisualizer, Assembly-CSharp + m_MethodName: Activate + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 --- !u!1 &4552840262979230797 GameObject: m_ObjectHideFlags: 0 @@ -7700,7 +7760,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: tutorialController: {fileID: 8296457994299276779} - stepCooldown: 0.4 + locomotionConfigurator: {fileID: 0} + baseStepRate: 0.5 + joystickThreshold: 0.1 --- !u!4 &4954755430420460766 stripped Transform: m_CorrespondingSourceObject: {fileID: 1894017693134941767, guid: d90913a7f0b00844a8c4482b2afc2c66, diff --git a/Assets/_PROJECT/Scenes/DeltaBuilding_base.unity b/Assets/_PROJECT/Scenes/DeltaBuilding_base.unity index 91165708..a85e69ce 100644 --- a/Assets/_PROJECT/Scenes/DeltaBuilding_base.unity +++ b/Assets/_PROJECT/Scenes/DeltaBuilding_base.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:99fc35a2dd295f40d34050aa6124f31603308433a5065b41ee6bc0178755f3d3 -size 63658624 +oid sha256:8c322dfaae011801beb0d55250c6f297e389bf71e0f83ec21e23678fbb61e77d +size 63661333 diff --git a/Assets/_PROJECT/Scripts/Audio/FirstPersonOcclusion.cs b/Assets/_PROJECT/Scripts/Audio/FirstPersonOcclusion.cs new file mode 100644 index 00000000..b445b5b1 --- /dev/null +++ b/Assets/_PROJECT/Scripts/Audio/FirstPersonOcclusion.cs @@ -0,0 +1,164 @@ +using UnityEngine; +using FMODUnity; +using FMOD.Studio; +using System.Collections; + +public class FirstPersonOcclusion : MonoBehaviour +{ + [Header("FMOD Event")] + [SerializeField] private EventReference SelectAudio; + + private EventInstance AudioOccluded; + private EventDescription AudioDes; + private StudioListener Listener; + private PLAYBACK_STATE pb; + + [Header("Occlusion Options")] + [SerializeField][Range(0f, 10f)] private float SoundOcclusionWidening = 1f; + [SerializeField][Range(0f, 10f)] private float PlayerOcclusionWidening = 1f; + [SerializeField] private LayerMask OcclusionLayer; + + private bool AudioIsVirtual; + private float MaxDistance; + private float ListenerDistance; + private float lineCastHitCount = 0f; + private Color colour; + + private bool initialisedExternally = false; + + // ============================================================ + // NEW — Optional external initialiser + // ============================================================ + public void InitialiseWithInstance(EventInstance instance) + { + AudioOccluded = instance; + initialisedExternally = true; + + RuntimeManager.AttachInstanceToGameObject( + AudioOccluded, + gameObject, + GetComponent() + ); + + AudioOccluded.getDescription(out AudioDes); + AudioDes.getMinMaxDistance(out float min, out MaxDistance); + } + + // ============================================================ + // ORIGINAL START — kept exactly the same unless external init used + // ============================================================ + private IEnumerator Start() + { + // If already initialised, skip internal creation + if (!initialisedExternally) + { + AudioOccluded = RuntimeManager.CreateInstance(SelectAudio); + RuntimeManager.AttachInstanceToGameObject(AudioOccluded, gameObject); + AudioOccluded.start(); + AudioOccluded.release(); + + AudioDes = RuntimeManager.GetEventDescription(SelectAudio); + AudioDes.getMinMaxDistance(out float minDistance, out MaxDistance); + } + + // Find listener (kept exactly as before) + yield return new WaitUntil(() => FindObjectOfType() != null); + Listener = FindObjectOfType(); + } + + // ============================================================ + // UNCHANGED core functionality + // ============================================================ + private void FixedUpdate() + { + if (Listener == null) return; + + AudioOccluded.isVirtual(out AudioIsVirtual); + AudioOccluded.getPlaybackState(out pb); + ListenerDistance = Vector3.Distance(transform.position, Listener.transform.position); + + if (!AudioIsVirtual && pb == PLAYBACK_STATE.PLAYING && ListenerDistance <= MaxDistance) + { + OccludeBetween(transform.position, Listener.transform.position); + } + + lineCastHitCount = 0f; + } + + private void OccludeBetween(Vector3 sound, Vector3 listener) + { + Vector3 SoundLeft = CalculatePoint(sound, listener, SoundOcclusionWidening, true); + Vector3 SoundRight = CalculatePoint(sound, listener, SoundOcclusionWidening, false); + + Vector3 ListenerLeft = CalculatePoint(listener, sound, PlayerOcclusionWidening, true); + Vector3 ListenerRight = CalculatePoint(listener, sound, PlayerOcclusionWidening, false); + + Vector3 SoundAbove = new Vector3(sound.x, sound.y + SoundOcclusionWidening, sound.z); + Vector3 SoundBelow = new Vector3(sound.x, sound.y - SoundOcclusionWidening, sound.z); + Vector3 ListenerAbove = new Vector3(listener.x, listener.y + PlayerOcclusionWidening * .5f, listener.z); + Vector3 ListenerBelow = new Vector3(listener.x, listener.y - PlayerOcclusionWidening * .5f, listener.z); + + CastLine(SoundLeft, ListenerLeft); + CastLine(SoundLeft, listener); + CastLine(SoundLeft, ListenerRight); + + CastLine(sound, ListenerLeft); + CastLine(sound, listener); + CastLine(sound, ListenerRight); + + CastLine(SoundRight, ListenerLeft); + CastLine(SoundRight, listener); + CastLine(SoundRight, ListenerRight); + + CastLine(SoundAbove, ListenerAbove); + CastLine(SoundBelow, ListenerBelow); + + colour = (PlayerOcclusionWidening == 0f || SoundOcclusionWidening == 0f) ? Color.blue : Color.green; + + SetParameter(); + } + + private Vector3 CalculatePoint(Vector3 a, Vector3 b, float m, bool posOrneg) + { + float n = Vector3.Distance(new Vector3(a.x, 0f, a.z), new Vector3(b.x, 0f, b.z)); + if (n == 0f) return a; + + float mn = (m / n); + float x, z; + + if (posOrneg) + { + x = a.x + (mn * (a.z - b.z)); + z = a.z - (mn * (a.x - b.x)); + } + else + { + x = a.x - (mn * (a.z - b.z)); + z = a.z + (mn * (a.x - b.x)); + } + + return new Vector3(x, a.y, z); + } + + private void CastLine(Vector3 Start, Vector3 End) + { + RaycastHit hit; + bool isHit = Physics.Linecast(Start, End, out hit, OcclusionLayer); + + if (isHit) + { + lineCastHitCount++; + Debug.DrawLine(Start, End, Color.red); + } + else + { + Debug.DrawLine(Start, End, colour); + } + } + + private void SetParameter() + { + float occlusionValue = lineCastHitCount / 11; + AudioOccluded.setParameterByName("Occlusion", occlusionValue); + } +} diff --git a/Assets/_PROJECT/Scripts/Audio/Occlusion.cs.meta b/Assets/_PROJECT/Scripts/Audio/FirstPersonOcclusion.cs.meta similarity index 100% rename from Assets/_PROJECT/Scripts/Audio/Occlusion.cs.meta rename to Assets/_PROJECT/Scripts/Audio/FirstPersonOcclusion.cs.meta diff --git a/Assets/_PROJECT/Scripts/Audio/Occlusion.cs b/Assets/_PROJECT/Scripts/Audio/Occlusion.cs deleted file mode 100644 index af4cd457..00000000 --- a/Assets/_PROJECT/Scripts/Audio/Occlusion.cs +++ /dev/null @@ -1,195 +0,0 @@ -using UnityEngine; -using FMODUnity; -using FMOD.Studio; -using System.Collections; - -public class FirstPersonOcclusion : MonoBehaviour -{ - [Header("FMOD Event")] - [SerializeField] - private FMODUnity.EventReference SelectAudio; - private EventInstance AudioOccluded; - private EventDescription AudioDes; - private StudioListener Listener; - private PLAYBACK_STATE pb; - - [Header("Occlusion Options")] - [SerializeField] - [Range(0f, 10f)] - private float SoundOcclusionWidening = 1f; - [SerializeField] - [Range(0f, 10f)] - private float PlayerOcclusionWidening = 1f; - [SerializeField] - private LayerMask OcclusionLayer; - - private bool AudioIsVirtual; - private float MaxDistance; - private float ListenerDistance; - private float lineCastHitCount = 0f; - private Color colour; - - private IEnumerator Start() - { - Debug.Log("--- Start Method ---"); - - // 1. Event Instance Creation - AudioOccluded = RuntimeManager.CreateInstance(SelectAudio); - //Debug.Log($"Created FMOD Event Instance for: {SelectAudio.Path}"); - - // 2. Attaching Instance - RuntimeManager.AttachInstanceToGameObject(AudioOccluded, gameObject); - Debug.Log($"Attached FMOD Event Instance to GameObject: {gameObject.name}"); - - // 3. Starting Audio - AudioOccluded.start(); - Debug.Log("Started FMOD Event Instance."); - - // 4. Releasing Instance (This allows the event to self-manage its lifetime, which is fine) - AudioOccluded.release(); - Debug.Log("Released FMOD Event Instance."); - - // 5. Getting Event Description and Max Distance - AudioDes = RuntimeManager.GetEventDescription(SelectAudio); - AudioDes.getMinMaxDistance(out float minDistance, out MaxDistance); - Debug.Log($"FMOD Event Min/Max Distance: {minDistance:F2} / {MaxDistance:F2}"); - - // 6. Finding Listener - yield return new WaitUntil(() => FindObjectOfType() != null); - Listener = FindObjectOfType(); - Debug.Log($"FMOD StudioListener found on {Listener.gameObject.name}"); - - Debug.Log("--- End Start Method ---"); - } - - private void FixedUpdate() - { - // Debug.Log("--- FixedUpdate Method ---"); // Too frequent, only log conditions - if (Listener == null) return; // Skip until listener exists - - AudioOccluded.isVirtual(out AudioIsVirtual); - AudioOccluded.getPlaybackState(out pb); - ListenerDistance = Vector3.Distance(transform.position, Listener.transform.position); - - // 7. Check Occlusion Condition - if (!AudioIsVirtual && pb == PLAYBACK_STATE.PLAYING && ListenerDistance <= MaxDistance) - { - Debug.Log($"Occlusion Check: Not Virtual, Playing, Distance {ListenerDistance:F2} <= Max {MaxDistance:F2}. Calling OccludeBetween."); - OccludeBetween(transform.position, Listener.transform.position); - } - else - { - // Log reasons why occlusion is NOT being checked - if (AudioIsVirtual) Debug.Log("Occlusion Skipped: Audio is Virtual."); - if (pb != PLAYBACK_STATE.PLAYING) Debug.Log($"Occlusion Skipped: Playback State is not PLAYING. State: {pb}"); - if (ListenerDistance > MaxDistance) Debug.Log($"Occlusion Skipped: Distance {ListenerDistance:F2} > Max Distance {MaxDistance:F2}."); - } - - // 8. Reset Hit Count - // Debug.Log($"Resetting lineCastHitCount from {lineCastHitCount:F0} to 0."); - lineCastHitCount = 0f; - } - - private void OccludeBetween(Vector3 sound, Vector3 listener) - { - Debug.Log("--- OccludeBetween Method ---"); - - // 9. Calculate Points (Log only a few to avoid clutter) - Vector3 SoundLeft = CalculatePoint(sound, listener, SoundOcclusionWidening, true); - Vector3 SoundRight = CalculatePoint(sound, listener, SoundOcclusionWidening, false); - // Debug.Log($"Sound Positions: Center {sound}, Left {SoundLeft}, Right {SoundRight}"); - - Vector3 ListenerLeft = CalculatePoint(listener, sound, PlayerOcclusionWidening, true); - Vector3 ListenerRight = CalculatePoint(listener, sound, PlayerOcclusionWidening, false); - // Debug.Log($"Listener Positions: Center {listener}, Left {ListenerLeft}, Right {ListenerRight}"); - - Vector3 SoundAbove = new Vector3(sound.x, sound.y + SoundOcclusionWidening, sound.z); - Vector3 SoundBelow = new Vector3(sound.x, sound.y - SoundOcclusionWidening, sound.z); - Vector3 ListenerAbove = new Vector3(listener.x, listener.y + PlayerOcclusionWidening * 0.5f, listener.z); - Vector3 ListenerBelow = new Vector3(listener.x, listener.y - PlayerOcclusionWidening * 0.5f, listener.z); - - // 10. Casting Lines (The line casts themselves will log hits) - CastLine(SoundLeft, ListenerLeft); - CastLine(SoundLeft, listener); - CastLine(SoundLeft, ListenerRight); - - CastLine(sound, ListenerLeft); - CastLine(sound, listener); - CastLine(sound, ListenerRight); - - CastLine(SoundRight, ListenerLeft); - CastLine(SoundRight, listener); - CastLine(SoundRight, ListenerRight); - - CastLine(SoundAbove, ListenerAbove); - CastLine(SoundBelow, ListenerBelow); - - if (PlayerOcclusionWidening == 0f || SoundOcclusionWidening == 0f) - { - colour = Color.blue; - } - else - { - colour = Color.green; - } - - SetParameter(); - Debug.Log("--- End OccludeBetween Method ---"); - } - - private Vector3 CalculatePoint(Vector3 a, Vector3 b, float m, bool posOrneg) - { - // Debug.Log($"Calculating offset point for: {a} to {b} with magnitude {m} and posOrneg {posOrneg}"); - float x; - float z; - // n is the 2D distance between a and b - float n = Vector3.Distance(new Vector3(a.x, 0f, a.z), new Vector3(b.x, 0f, b.z)); - float mn = (m / n); - - // Safety check for division by zero (if sound and listener are exactly on top of each other horizontally) - if (n == 0f) - { - // If points are on the same XZ position, just return the point 'a' - // Debug.LogWarning("CalculatePoint: Division by zero avoided. Sound and Listener are at the same XZ position."); - return a; - } - - if (posOrneg) - { - x = a.x + (mn * (a.z - b.z)); - z = a.z - (mn * (a.x - b.x)); - } - else - { - x = a.x - (mn * (a.z - b.z)); - z = a.z + (mn * (a.x - b.x)); - } - return new Vector3(x, a.y, z); - } - - private void CastLine(Vector3 Start, Vector3 End) - { - RaycastHit hit; - // 11. Raycast result - bool isHit = Physics.Linecast(Start, End, out hit, OcclusionLayer); - - if (isHit) - { - lineCastHitCount++; - Debug.Log($"Linecast HIT! Hit Count: {lineCastHitCount:F0}/11. Object hit: {hit.collider.name}."); - Debug.DrawLine(Start, End, Color.red); - } - else - { - Debug.DrawLine(Start, End, colour); - } - } - - private void SetParameter() - { - float occlusionValue = lineCastHitCount / 11; // 11 is the total number of line casts - // 12. Final Parameter Value - Debug.Log($"Setting FMOD Parameter 'Occlusion' to: {occlusionValue:F2} (Hits: {lineCastHitCount:F0}/11)"); - AudioOccluded.setParameterByName("Occlusion", occlusionValue); - } -} \ No newline at end of file diff --git a/DeltaVRFMOD/.cache/buildrecords/Desktop/Ambience.br b/DeltaVRFMOD/.cache/buildrecords/Desktop/Ambience.br index 67a2ea2e..8c3db878 100644 Binary files a/DeltaVRFMOD/.cache/buildrecords/Desktop/Ambience.br and b/DeltaVRFMOD/.cache/buildrecords/Desktop/Ambience.br differ diff --git a/DeltaVRFMOD/.cache/buildrecords/Desktop/Master.br b/DeltaVRFMOD/.cache/buildrecords/Desktop/Master.br index 49317c7d..1ff9b51c 100644 Binary files a/DeltaVRFMOD/.cache/buildrecords/Desktop/Master.br and b/DeltaVRFMOD/.cache/buildrecords/Desktop/Master.br differ diff --git a/DeltaVRFMOD/.cache/buildrecords/Desktop/SFX.br b/DeltaVRFMOD/.cache/buildrecords/Desktop/SFX.br index cdfde19c..cd4528bc 100644 Binary files a/DeltaVRFMOD/.cache/buildrecords/Desktop/SFX.br and b/DeltaVRFMOD/.cache/buildrecords/Desktop/SFX.br differ diff --git a/DeltaVRFMOD/.cache/buildrecords/Desktop/UI.br b/DeltaVRFMOD/.cache/buildrecords/Desktop/UI.br index 220aa75f..4e07fe29 100644 Binary files a/DeltaVRFMOD/.cache/buildrecords/Desktop/UI.br and b/DeltaVRFMOD/.cache/buildrecords/Desktop/UI.br differ diff --git a/DeltaVRFMOD/.cache/{7ebf9bdd-7480-426c-9b39-32db83daba94}.pdc b/DeltaVRFMOD/.cache/{7ebf9bdd-7480-426c-9b39-32db83daba94}.pdc index c49193ec..2a37980d 100644 Binary files a/DeltaVRFMOD/.cache/{7ebf9bdd-7480-426c-9b39-32db83daba94}.pdc and b/DeltaVRFMOD/.cache/{7ebf9bdd-7480-426c-9b39-32db83daba94}.pdc differ diff --git a/DeltaVRFMOD/Build/Desktop/Desktop/Ambience.bank b/DeltaVRFMOD/Build/Desktop/Desktop/Ambience.bank index 1552545b..ca205532 100644 Binary files a/DeltaVRFMOD/Build/Desktop/Desktop/Ambience.bank and b/DeltaVRFMOD/Build/Desktop/Desktop/Ambience.bank differ diff --git a/DeltaVRFMOD/Build/Desktop/Desktop/Master.bank b/DeltaVRFMOD/Build/Desktop/Desktop/Master.bank index 43f960ac..9f4b8737 100644 Binary files a/DeltaVRFMOD/Build/Desktop/Desktop/Master.bank and b/DeltaVRFMOD/Build/Desktop/Desktop/Master.bank differ diff --git a/DeltaVRFMOD/Build/Desktop/Desktop/Master.strings.bank b/DeltaVRFMOD/Build/Desktop/Desktop/Master.strings.bank index 4725f842..1de18a58 100644 Binary files a/DeltaVRFMOD/Build/Desktop/Desktop/Master.strings.bank and b/DeltaVRFMOD/Build/Desktop/Desktop/Master.strings.bank differ diff --git a/DeltaVRFMOD/Build/Desktop/Desktop/SFX.bank b/DeltaVRFMOD/Build/Desktop/Desktop/SFX.bank index 7d141bfc..e8ab39ec 100644 Binary files a/DeltaVRFMOD/Build/Desktop/Desktop/SFX.bank and b/DeltaVRFMOD/Build/Desktop/Desktop/SFX.bank differ diff --git a/DeltaVRFMOD/Build/Desktop/Desktop/UI.bank b/DeltaVRFMOD/Build/Desktop/Desktop/UI.bank index f57b1130..e7c12bae 100644 Binary files a/DeltaVRFMOD/Build/Desktop/Desktop/UI.bank and b/DeltaVRFMOD/Build/Desktop/Desktop/UI.bank differ diff --git a/DeltaVRFMOD/Metadata/Event/{0cc3b481-962c-43bc-a963-058a71c1632b}.xml b/DeltaVRFMOD/Metadata/Event/{0cc3b481-962c-43bc-a963-058a71c1632b}.xml index 7dc44a05..df53f6d0 100644 --- a/DeltaVRFMOD/Metadata/Event/{0cc3b481-962c-43bc-a963-058a71c1632b}.xml +++ b/DeltaVRFMOD/Metadata/Event/{0cc3b481-962c-43bc-a963-058a71c1632b}.xml @@ -69,7 +69,7 @@ - 60 + 45 diff --git a/DeltaVRFMOD/Metadata/Event/{1067667c-4322-4be7-88b5-ec1bb6973b2a}.xml b/DeltaVRFMOD/Metadata/Event/{1067667c-4322-4be7-88b5-ec1bb6973b2a}.xml index 157bb0e7..07d13cf3 100644 --- a/DeltaVRFMOD/Metadata/Event/{1067667c-4322-4be7-88b5-ec1bb6973b2a}.xml +++ b/DeltaVRFMOD/Metadata/Event/{1067667c-4322-4be7-88b5-ec1bb6973b2a}.xml @@ -60,7 +60,7 @@ {99406875-ba7e-46e6-8a1c-583c35145678} - {c751273e-6b77-46b1-8c19-a99f6f08e61e} + {ce68ea24-56d6-4af5-a850-87bda0652ecc} diff --git a/DeltaVRFMOD/Metadata/Event/{11bf17f9-9c7d-44f2-b105-627916d832e6}.xml b/DeltaVRFMOD/Metadata/Event/{11bf17f9-9c7d-44f2-b105-627916d832e6}.xml index 5a951073..2f206e4f 100644 --- a/DeltaVRFMOD/Metadata/Event/{11bf17f9-9c7d-44f2-b105-627916d832e6}.xml +++ b/DeltaVRFMOD/Metadata/Event/{11bf17f9-9c7d-44f2-b105-627916d832e6}.xml @@ -64,7 +64,7 @@ {785a0218-171c-43b0-a400-ed5b478e0e52} - {c751273e-6b77-46b1-8c19-a99f6f08e61e} + {ce68ea24-56d6-4af5-a850-87bda0652ecc} diff --git a/DeltaVRFMOD/Metadata/Event/{62c2315e-424a-4d4a-a651-6b9673a3100b}.xml b/DeltaVRFMOD/Metadata/Event/{62c2315e-424a-4d4a-a651-6b9673a3100b}.xml index 91d27bab..5bbeb11f 100644 --- a/DeltaVRFMOD/Metadata/Event/{62c2315e-424a-4d4a-a651-6b9673a3100b}.xml +++ b/DeltaVRFMOD/Metadata/Event/{62c2315e-424a-4d4a-a651-6b9673a3100b}.xml @@ -60,7 +60,7 @@ {d6578bd3-e81d-4e23-9b1f-d98a017a7b35} - {c751273e-6b77-46b1-8c19-a99f6f08e61e} + {ce68ea24-56d6-4af5-a850-87bda0652ecc} diff --git a/DeltaVRFMOD/Metadata/Event/{6fe27f03-35f6-4e00-ba0d-60648a3d1e3d}.xml b/DeltaVRFMOD/Metadata/Event/{6fe27f03-35f6-4e00-ba0d-60648a3d1e3d}.xml index 95f4705c..a6c9980f 100644 --- a/DeltaVRFMOD/Metadata/Event/{6fe27f03-35f6-4e00-ba0d-60648a3d1e3d}.xml +++ b/DeltaVRFMOD/Metadata/Event/{6fe27f03-35f6-4e00-ba0d-60648a3d1e3d}.xml @@ -53,7 +53,7 @@ {cd5d92df-177f-4077-b83b-a1d3846825e9} - {c751273e-6b77-46b1-8c19-a99f6f08e61e} + {ce68ea24-56d6-4af5-a850-87bda0652ecc} diff --git a/DeltaVRFMOD/Metadata/Event/{7e2cb674-9881-4577-a8fd-b87f1908a0c9}.xml b/DeltaVRFMOD/Metadata/Event/{7e2cb674-9881-4577-a8fd-b87f1908a0c9}.xml index b05dfeed..a38d6000 100644 --- a/DeltaVRFMOD/Metadata/Event/{7e2cb674-9881-4577-a8fd-b87f1908a0c9}.xml +++ b/DeltaVRFMOD/Metadata/Event/{7e2cb674-9881-4577-a8fd-b87f1908a0c9}.xml @@ -54,7 +54,7 @@ {692e7fb8-403d-4ed5-99e4-7e138fa06823} - {8431e203-753a-4633-bbee-15f9c2412d0a} + {9f27e443-4657-4fe2-9f99-cb50bf4bb534} diff --git a/DeltaVRFMOD/Metadata/Event/{904bd9bc-6376-4493-89b2-7926d5bf9c5b}.xml b/DeltaVRFMOD/Metadata/Event/{904bd9bc-6376-4493-89b2-7926d5bf9c5b}.xml index 419aba77..adb65871 100644 --- a/DeltaVRFMOD/Metadata/Event/{904bd9bc-6376-4493-89b2-7926d5bf9c5b}.xml +++ b/DeltaVRFMOD/Metadata/Event/{904bd9bc-6376-4493-89b2-7926d5bf9c5b}.xml @@ -53,7 +53,7 @@ {b883c971-d553-41c9-8d37-3b20092b7741} - {69ee688f-dc4e-4df2-a125-df79ed93217e} + {9f27e443-4657-4fe2-9f99-cb50bf4bb534} diff --git a/DeltaVRFMOD/Metadata/Event/{af15be7d-d2b1-4b03-9e5a-a609f5948419}.xml b/DeltaVRFMOD/Metadata/Event/{af15be7d-d2b1-4b03-9e5a-a609f5948419}.xml index fc8b1bbd..c97bdf50 100644 --- a/DeltaVRFMOD/Metadata/Event/{af15be7d-d2b1-4b03-9e5a-a609f5948419}.xml +++ b/DeltaVRFMOD/Metadata/Event/{af15be7d-d2b1-4b03-9e5a-a609f5948419}.xml @@ -56,7 +56,7 @@ {6721f316-4c14-42f0-abed-906731885df2} - {9f27e443-4657-4fe2-9f99-cb50bf4bb534} + {69ee688f-dc4e-4df2-a125-df79ed93217e} diff --git a/DeltaVRFMOD/Metadata/Event/{c5372ba0-f2da-498b-b849-cc1130ead0cb}.xml b/DeltaVRFMOD/Metadata/Event/{c5372ba0-f2da-498b-b849-cc1130ead0cb}.xml index 0dcd684a..07ec37a3 100644 --- a/DeltaVRFMOD/Metadata/Event/{c5372ba0-f2da-498b-b849-cc1130ead0cb}.xml +++ b/DeltaVRFMOD/Metadata/Event/{c5372ba0-f2da-498b-b849-cc1130ead0cb}.xml @@ -53,7 +53,7 @@ {9fa374b5-4d33-4d57-9e95-cbd43def38b3} - {9f27e443-4657-4fe2-9f99-cb50bf4bb534} + {69ee688f-dc4e-4df2-a125-df79ed93217e} diff --git a/DeltaVRFMOD/Metadata/Event/{cc8d8359-af54-4abf-a1bc-bcdccc342747}.xml b/DeltaVRFMOD/Metadata/Event/{cc8d8359-af54-4abf-a1bc-bcdccc342747}.xml index 365f7d3d..a08a9741 100644 --- a/DeltaVRFMOD/Metadata/Event/{cc8d8359-af54-4abf-a1bc-bcdccc342747}.xml +++ b/DeltaVRFMOD/Metadata/Event/{cc8d8359-af54-4abf-a1bc-bcdccc342747}.xml @@ -54,7 +54,7 @@ {e9d8a9af-9a9b-4cdc-921e-bdc5b1db9955} - {c751273e-6b77-46b1-8c19-a99f6f08e61e} + {8431e203-753a-4633-bbee-15f9c2412d0a} @@ -87,7 +87,7 @@ - 6 + 8 {0fee013d-657b-47c5-85d1-475195a25a23} diff --git a/DeltaVRFMOD/Metadata/Event/{ce89abc5-417e-4800-9b30-18883a321145}.xml b/DeltaVRFMOD/Metadata/Event/{ce89abc5-417e-4800-9b30-18883a321145}.xml index 92e8ba5b..7e47bd2d 100644 --- a/DeltaVRFMOD/Metadata/Event/{ce89abc5-417e-4800-9b30-18883a321145}.xml +++ b/DeltaVRFMOD/Metadata/Event/{ce89abc5-417e-4800-9b30-18883a321145}.xml @@ -35,7 +35,7 @@ {052e1f9c-5b6f-476b-946d-b2bdcdc8f8eb} - {9abe2acc-a8b4-4415-840b-2ac27847b4ff} + {68bf40d2-7df8-4b0c-a6bc-9d3c36d63439} {9d1145b0-e099-4ee4-ab1d-23cc274af901} @@ -49,6 +49,7 @@ {087063af-72f8-4cca-b56a-eda53b878587} + {980354c8-26a3-47a1-80a6-769cbf436bda} {05ec5f01-3eb6-4f68-b75b-e99b7c476eee} @@ -118,12 +119,15 @@ {c6ed1c8a-6317-4b6e-9c2f-a9de5d998f05} - + - {8d183079-30c4-4cbb-837b-5db8c493ed3b} + {fb894807-eb7f-48db-b3de-e2f5dd3322a2} + + {93017814-5ff7-41bb-a85c-fc00228d6511} + {5ac38b31-98b7-473d-8882-03fa4bb5da28} @@ -139,6 +143,11 @@ {6d4159b3-ea9e-461b-ba14-b1be5405eb95} + + + {93017814-5ff7-41bb-a85c-fc00228d6511} + + 0 @@ -317,6 +326,14 @@ {7007bc9b-631e-461e-b46e-f1cb71b0a9e3} + + + volume + + + {c6483dc0-3132-49c3-9ba3-ef97f7f31091} + + {17b6686c-b69a-4290-9a34-f1615792f5c3} @@ -414,6 +431,17 @@ {c6ed1c8a-6317-4b6e-9c2f-a9de5d998f05} + + + {fb894807-eb7f-48db-b3de-e2f5dd3322a2} + + + {6511c4b5-301e-45ff-b07e-2dc25691ad3c} + {f27b755e-124b-49b8-8d3f-d69403044a53} + {2f40e6d1-2e17-4ac1-93ec-f9cdf454778e} + {9c80fde5-1b08-459f-a1d1-e3b7830cc8f9} + + @@ -516,61 +544,93 @@ + + + 0.001076426264800861 + + + 3.81469727e-06 + + + + + 0.47631862217438103 + + + -7 + + + + + 0.99946178686759946 + + + -80 + + + + + 0.9903121636167922 + + + -10.9341545 + + frequencyA - {2e2c0b59-cd7c-4f56-a6fb-948fb66056bf} + {6c505241-c058-47cb-b714-f520fdbe0caa} - + - {8d183079-30c4-4cbb-837b-5db8c493ed3b} + {fb894807-eb7f-48db-b3de-e2f5dd3322a2} - {50d95503-71eb-40cd-bf3c-9c81df86ce9c} - {dd976ac6-fd76-433d-9529-838cfc6b729f} - {271ac30f-9855-4d8d-9c3f-e9decd599a63} - {ca5c5e24-641a-4abe-a446-fb75c5add4a8} + {c5d1b0fa-4a02-495b-b7b9-213d29640d30} + {0b8a39b4-4ce2-4b14-b5f9-09d0d5ecb004} + {3d47a52a-5449-42c0-b0b3-b7dbb7694761} + {411906cd-ff80-4c62-8a5b-d2d075404e9e} - + - 0 + 0.001076426264800861 - 22000 + 18000 + -0.12912713 + + + + + 0.47524219590958017 + + + 4500 + + + + + 0.98170075349838526 + + + 150 + + + 0.0435885787 + + + + 1 - - true - - - - - 39.604519774011301 - - 30 - - - - - 25.5 - - - 35 - - - - - 14.5 - - - 3500 + 20 diff --git a/DeltaVRFMOD/Metadata/Event/{debd0048-f7da-4ea8-8e42-084262639fd0}.xml b/DeltaVRFMOD/Metadata/Event/{debd0048-f7da-4ea8-8e42-084262639fd0}.xml index 6077ecfc..28f368d9 100644 --- a/DeltaVRFMOD/Metadata/Event/{debd0048-f7da-4ea8-8e42-084262639fd0}.xml +++ b/DeltaVRFMOD/Metadata/Event/{debd0048-f7da-4ea8-8e42-084262639fd0}.xml @@ -152,7 +152,7 @@ - 9.5 + 7.5 Audio 2 diff --git a/DeltaVRFMOD/Metadata/ParameterPreset/{319559ef-04bf-4399-ad4d-f2857201675d}.xml b/DeltaVRFMOD/Metadata/ParameterPreset/{319559ef-04bf-4399-ad4d-f2857201675d}.xml deleted file mode 100644 index 3f80cbeb..00000000 --- a/DeltaVRFMOD/Metadata/ParameterPreset/{319559ef-04bf-4399-ad4d-f2857201675d}.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - Car - - - {72821a40-1f9b-449e-9f29-45c4d8800c81} - - - {8d183079-30c4-4cbb-837b-5db8c493ed3b} - - - - - 3 - - - 40 - - - 0 - - - false - - - diff --git a/DeltaVRFMOD/Metadata/ParameterPreset/{78b39a91-4363-470b-94f5-ebddc0e41885}.xml b/DeltaVRFMOD/Metadata/ParameterPreset/{78b39a91-4363-470b-94f5-ebddc0e41885}.xml deleted file mode 100644 index 6b008eca..00000000 --- a/DeltaVRFMOD/Metadata/ParameterPreset/{78b39a91-4363-470b-94f5-ebddc0e41885}.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - CafeEQ - - - {72821a40-1f9b-449e-9f29-45c4d8800c81} - - - {f83835cd-446d-4f3c-9fc6-2c0e984edbad} - - - - - 0 - - - diff --git a/DeltaVRFMOD/Metadata/ParameterPreset/{c4b79f2b-c503-4e8a-bc42-6c104c7bac33}.xml b/DeltaVRFMOD/Metadata/ParameterPreset/{c4b79f2b-c503-4e8a-bc42-6c104c7bac33}.xml index 7275c561..357b5eb3 100644 --- a/DeltaVRFMOD/Metadata/ParameterPreset/{c4b79f2b-c503-4e8a-bc42-6c104c7bac33}.xml +++ b/DeltaVRFMOD/Metadata/ParameterPreset/{c4b79f2b-c503-4e8a-bc42-6c104c7bac33}.xml @@ -13,7 +13,7 @@ - 0 + 1 {a1523d7a-fecc-424f-8e27-bd2c5cb9a80f} diff --git a/DeltaVRFMOD/Metadata/VCA/{162960f4-09a2-4526-a61e-7ac7e219d27d}.xml b/DeltaVRFMOD/Metadata/VCA/{162960f4-09a2-4526-a61e-7ac7e219d27d}.xml new file mode 100644 index 00000000..d8e6103e --- /dev/null +++ b/DeltaVRFMOD/Metadata/VCA/{162960f4-09a2-4526-a61e-7ac7e219d27d}.xml @@ -0,0 +1,11 @@ + + + + + SFX + + + {a1197cab-76c8-4da4-a41f-969ff1afdca4} + + + diff --git a/DeltaVRFMOD/Metadata/VCA/{6a1a7123-bd44-49b1-9092-22ef5bb105ec}.xml b/DeltaVRFMOD/Metadata/VCA/{6a1a7123-bd44-49b1-9092-22ef5bb105ec}.xml new file mode 100644 index 00000000..e079cc10 --- /dev/null +++ b/DeltaVRFMOD/Metadata/VCA/{6a1a7123-bd44-49b1-9092-22ef5bb105ec}.xml @@ -0,0 +1,11 @@ + + + + + UI + + + {a1197cab-76c8-4da4-a41f-969ff1afdca4} + + + diff --git a/DeltaVRFMOD/Metadata/VCA/{7db632b8-c5c2-4e3e-ab97-f087b29d2976}.xml b/DeltaVRFMOD/Metadata/VCA/{7db632b8-c5c2-4e3e-ab97-f087b29d2976}.xml new file mode 100644 index 00000000..fa4ab6cd --- /dev/null +++ b/DeltaVRFMOD/Metadata/VCA/{7db632b8-c5c2-4e3e-ab97-f087b29d2976}.xml @@ -0,0 +1,14 @@ + + + + + Ambiences + + + {abdd8187-ee40-4826-82f2-b919c3daf22c} + + + {a1197cab-76c8-4da4-a41f-969ff1afdca4} + + + diff --git a/DeltaVRFMOD/Metadata/VCA/{abdd8187-ee40-4826-82f2-b919c3daf22c}.xml b/DeltaVRFMOD/Metadata/VCA/{abdd8187-ee40-4826-82f2-b919c3daf22c}.xml new file mode 100644 index 00000000..c4dff5d1 --- /dev/null +++ b/DeltaVRFMOD/Metadata/VCA/{abdd8187-ee40-4826-82f2-b919c3daf22c}.xml @@ -0,0 +1,11 @@ + + + + + Master + + + {a1197cab-76c8-4da4-a41f-969ff1afdca4} + + + diff --git a/highscores.json b/highscores.json index 44453bc4..f31a80e0 100644 --- a/highscores.json +++ b/highscores.json @@ -4,6 +4,10 @@ "name": "iopprnbb ,,p", "score": 491.0 }, + { + "name": "timmi", + "score": 469.0 + }, { "name": "jtimu", "score": 465.0