some sound bug fixes
This commit is contained in:
parent
e12c5f2f98
commit
ef3b4c363e
@ -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()
|
||||
{
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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<Image>();
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<Image>().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
|
||||
}
|
||||
|
||||
@ -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<Vector2>();
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
BIN
Assets/_PROJECT/Scenes/DeltaBuilding_base.unity
(Stored with Git LFS)
BIN
Assets/_PROJECT/Scenes/DeltaBuilding_base.unity
(Stored with Git LFS)
Binary file not shown.
164
Assets/_PROJECT/Scripts/Audio/FirstPersonOcclusion.cs
Normal file
164
Assets/_PROJECT/Scripts/Audio/FirstPersonOcclusion.cs
Normal file
@ -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<Rigidbody>()
|
||||
);
|
||||
|
||||
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<StudioListener>() != null);
|
||||
Listener = FindObjectOfType<StudioListener>();
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
@ -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<StudioListener>() != null);
|
||||
Listener = FindObjectOfType<StudioListener>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -69,7 +69,7 @@
|
||||
</object>
|
||||
<object class="EventAutomatableProperties" id="{c76e816d-57c8-456c-a329-17eb0603d09f}">
|
||||
<property name="maximumDistance">
|
||||
<value>60</value>
|
||||
<value>45</value>
|
||||
</property>
|
||||
</object>
|
||||
<object class="MarkerTrack" id="{59eaef25-4ee8-45f7-92cb-43f884ffe19f}" />
|
||||
|
||||
@ -60,7 +60,7 @@
|
||||
<destination>{99406875-ba7e-46e6-8a1c-583c35145678}</destination>
|
||||
</relationship>
|
||||
<relationship name="output">
|
||||
<destination>{c751273e-6b77-46b1-8c19-a99f6f08e61e}</destination>
|
||||
<destination>{ce68ea24-56d6-4af5-a850-87bda0652ecc}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="EventAutomatableProperties" id="{9d7e6e68-4635-4e3b-a66b-975d89419ca5}">
|
||||
|
||||
@ -64,7 +64,7 @@
|
||||
<destination>{785a0218-171c-43b0-a400-ed5b478e0e52}</destination>
|
||||
</relationship>
|
||||
<relationship name="output">
|
||||
<destination>{c751273e-6b77-46b1-8c19-a99f6f08e61e}</destination>
|
||||
<destination>{ce68ea24-56d6-4af5-a850-87bda0652ecc}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="EventAutomatableProperties" id="{bae5b038-7025-49bb-a46b-664b3b2cf708}">
|
||||
|
||||
@ -60,7 +60,7 @@
|
||||
<destination>{d6578bd3-e81d-4e23-9b1f-d98a017a7b35}</destination>
|
||||
</relationship>
|
||||
<relationship name="output">
|
||||
<destination>{c751273e-6b77-46b1-8c19-a99f6f08e61e}</destination>
|
||||
<destination>{ce68ea24-56d6-4af5-a850-87bda0652ecc}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="EventAutomatableProperties" id="{6a901485-ac65-4417-b96f-749644c60b5f}">
|
||||
|
||||
@ -53,7 +53,7 @@
|
||||
<destination>{cd5d92df-177f-4077-b83b-a1d3846825e9}</destination>
|
||||
</relationship>
|
||||
<relationship name="output">
|
||||
<destination>{c751273e-6b77-46b1-8c19-a99f6f08e61e}</destination>
|
||||
<destination>{ce68ea24-56d6-4af5-a850-87bda0652ecc}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="EventAutomatableProperties" id="{009221a7-eede-4793-b2fe-d8fe720d1052}">
|
||||
|
||||
@ -54,7 +54,7 @@
|
||||
<destination>{692e7fb8-403d-4ed5-99e4-7e138fa06823}</destination>
|
||||
</relationship>
|
||||
<relationship name="output">
|
||||
<destination>{8431e203-753a-4633-bbee-15f9c2412d0a}</destination>
|
||||
<destination>{9f27e443-4657-4fe2-9f99-cb50bf4bb534}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="EventAutomatableProperties" id="{b0d3a5ad-8759-4304-af27-29078fab72f3}">
|
||||
|
||||
@ -53,7 +53,7 @@
|
||||
<destination>{b883c971-d553-41c9-8d37-3b20092b7741}</destination>
|
||||
</relationship>
|
||||
<relationship name="output">
|
||||
<destination>{69ee688f-dc4e-4df2-a125-df79ed93217e}</destination>
|
||||
<destination>{9f27e443-4657-4fe2-9f99-cb50bf4bb534}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="EventAutomatableProperties" id="{88cc1d43-9b50-4bde-a353-56b0e49c0812}" />
|
||||
|
||||
@ -56,7 +56,7 @@
|
||||
<destination>{6721f316-4c14-42f0-abed-906731885df2}</destination>
|
||||
</relationship>
|
||||
<relationship name="output">
|
||||
<destination>{9f27e443-4657-4fe2-9f99-cb50bf4bb534}</destination>
|
||||
<destination>{69ee688f-dc4e-4df2-a125-df79ed93217e}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="EventAutomatableProperties" id="{27b9bba1-5a4c-4886-9adf-acfd3ae2c80e}" />
|
||||
|
||||
@ -53,7 +53,7 @@
|
||||
<destination>{9fa374b5-4d33-4d57-9e95-cbd43def38b3}</destination>
|
||||
</relationship>
|
||||
<relationship name="output">
|
||||
<destination>{9f27e443-4657-4fe2-9f99-cb50bf4bb534}</destination>
|
||||
<destination>{69ee688f-dc4e-4df2-a125-df79ed93217e}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="EventAutomatableProperties" id="{0521ae5c-7f73-4be8-9de7-1d9031eb4f5c}">
|
||||
|
||||
@ -54,7 +54,7 @@
|
||||
<destination>{e9d8a9af-9a9b-4cdc-921e-bdc5b1db9955}</destination>
|
||||
</relationship>
|
||||
<relationship name="output">
|
||||
<destination>{c751273e-6b77-46b1-8c19-a99f6f08e61e}</destination>
|
||||
<destination>{8431e203-753a-4633-bbee-15f9c2412d0a}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="EventAutomatableProperties" id="{3ddbb4f1-4569-45de-9f6b-4cdda476e6ff}">
|
||||
@ -87,7 +87,7 @@
|
||||
</object>
|
||||
<object class="EventMixerMaster" id="{09541088-24f8-4cef-ad4f-6e713e129f95}">
|
||||
<property name="volume">
|
||||
<value>6</value>
|
||||
<value>8</value>
|
||||
</property>
|
||||
<relationship name="effectChain">
|
||||
<destination>{0fee013d-657b-47c5-85d1-475195a25a23}</destination>
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
</relationship>
|
||||
<relationship name="parameters">
|
||||
<destination>{052e1f9c-5b6f-476b-946d-b2bdcdc8f8eb}</destination>
|
||||
<destination>{9abe2acc-a8b4-4415-840b-2ac27847b4ff}</destination>
|
||||
<destination>{68bf40d2-7df8-4b0c-a6bc-9d3c36d63439}</destination>
|
||||
</relationship>
|
||||
<relationship name="banks">
|
||||
<destination>{9d1145b0-e099-4ee4-ab1d-23cc274af901}</destination>
|
||||
@ -49,6 +49,7 @@
|
||||
<object class="MasterTrack" id="{cd01f012-7f74-4693-8f68-395acd8b0d35}">
|
||||
<relationship name="automationTracks">
|
||||
<destination>{087063af-72f8-4cca-b56a-eda53b878587}</destination>
|
||||
<destination>{980354c8-26a3-47a1-80a6-769cbf436bda}</destination>
|
||||
</relationship>
|
||||
<relationship name="modules">
|
||||
<destination>{05ec5f01-3eb6-4f68-b75b-e99b7c476eee}</destination>
|
||||
@ -118,12 +119,15 @@
|
||||
<destination>{c6ed1c8a-6317-4b6e-9c2f-a9de5d998f05}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="ParameterProxy" id="{9abe2acc-a8b4-4415-840b-2ac27847b4ff}">
|
||||
<object class="ParameterProxy" id="{68bf40d2-7df8-4b0c-a6bc-9d3c36d63439}">
|
||||
<relationship name="preset">
|
||||
<destination>{8d183079-30c4-4cbb-837b-5db8c493ed3b}</destination>
|
||||
<destination>{fb894807-eb7f-48db-b3de-e2f5dd3322a2}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="EventMixerMaster" id="{783c2004-c047-4bf0-a1b5-05f363b1ec24}">
|
||||
<relationship name="automators">
|
||||
<destination>{93017814-5ff7-41bb-a85c-fc00228d6511}</destination>
|
||||
</relationship>
|
||||
<relationship name="effectChain">
|
||||
<destination>{5ac38b31-98b7-473d-8882-03fa4bb5da28}</destination>
|
||||
</relationship>
|
||||
@ -139,6 +143,11 @@
|
||||
<destination>{6d4159b3-ea9e-461b-ba14-b1be5405eb95}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="AutomationTrack" id="{980354c8-26a3-47a1-80a6-769cbf436bda}">
|
||||
<relationship name="automator">
|
||||
<destination>{93017814-5ff7-41bb-a85c-fc00228d6511}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="TransitionSourceSound" id="{05ec5f01-3eb6-4f68-b75b-e99b7c476eee}">
|
||||
<property name="length">
|
||||
<value>0</value>
|
||||
@ -317,6 +326,14 @@
|
||||
<destination>{7007bc9b-631e-461e-b46e-f1cb71b0a9e3}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="Automator" id="{93017814-5ff7-41bb-a85c-fc00228d6511}">
|
||||
<property name="nameOfPropertyBeingAutomated">
|
||||
<value>volume</value>
|
||||
</property>
|
||||
<relationship name="automationCurves">
|
||||
<destination>{c6483dc0-3132-49c3-9ba3-ef97f7f31091}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="MixerBusEffectChain" id="{5ac38b31-98b7-473d-8882-03fa4bb5da28}">
|
||||
<relationship name="effects">
|
||||
<destination>{17b6686c-b69a-4290-9a34-f1615792f5c3}</destination>
|
||||
@ -414,6 +431,17 @@
|
||||
<destination>{c6ed1c8a-6317-4b6e-9c2f-a9de5d998f05}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="AutomationCurve" id="{c6483dc0-3132-49c3-9ba3-ef97f7f31091}">
|
||||
<relationship name="parameter">
|
||||
<destination>{fb894807-eb7f-48db-b3de-e2f5dd3322a2}</destination>
|
||||
</relationship>
|
||||
<relationship name="automationPoints">
|
||||
<destination>{6511c4b5-301e-45ff-b07e-2dc25691ad3c}</destination>
|
||||
<destination>{f27b755e-124b-49b8-8d3f-d69403044a53}</destination>
|
||||
<destination>{2f40e6d1-2e17-4ac1-93ec-f9cdf454778e}</destination>
|
||||
<destination>{9c80fde5-1b08-459f-a1d1-e3b7830cc8f9}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="MixerBusFader" id="{17b6686c-b69a-4290-9a34-f1615792f5c3}" />
|
||||
<object class="SpatialiserEffect" id="{fe7fa346-05af-4c7e-900c-1772749be6a1}" />
|
||||
<object class="MultibandEqEffect" id="{c43e9d3e-ce29-4e53-8209-26b736863d02}">
|
||||
@ -516,61 +544,93 @@
|
||||
</property>
|
||||
</object>
|
||||
<object class="MixerBusFader" id="{b99da5db-4add-462e-999e-35bad8a56417}" />
|
||||
<object class="AutomationPoint" id="{6511c4b5-301e-45ff-b07e-2dc25691ad3c}">
|
||||
<property name="position">
|
||||
<value>0.001076426264800861</value>
|
||||
</property>
|
||||
<property name="value">
|
||||
<value>3.81469727e-06</value>
|
||||
</property>
|
||||
</object>
|
||||
<object class="AutomationPoint" id="{f27b755e-124b-49b8-8d3f-d69403044a53}">
|
||||
<property name="position">
|
||||
<value>0.47631862217438103</value>
|
||||
</property>
|
||||
<property name="value">
|
||||
<value>-7</value>
|
||||
</property>
|
||||
</object>
|
||||
<object class="AutomationPoint" id="{2f40e6d1-2e17-4ac1-93ec-f9cdf454778e}">
|
||||
<property name="position">
|
||||
<value>0.99946178686759946</value>
|
||||
</property>
|
||||
<property name="value">
|
||||
<value>-80</value>
|
||||
</property>
|
||||
</object>
|
||||
<object class="AutomationPoint" id="{9c80fde5-1b08-459f-a1d1-e3b7830cc8f9}">
|
||||
<property name="position">
|
||||
<value>0.9903121636167922</value>
|
||||
</property>
|
||||
<property name="value">
|
||||
<value>-10.9341545</value>
|
||||
</property>
|
||||
</object>
|
||||
<object class="Automator" id="{6d4159b3-ea9e-461b-ba14-b1be5405eb95}">
|
||||
<property name="nameOfPropertyBeingAutomated">
|
||||
<value>frequencyA</value>
|
||||
</property>
|
||||
<relationship name="automationCurves">
|
||||
<destination>{2e2c0b59-cd7c-4f56-a6fb-948fb66056bf}</destination>
|
||||
<destination>{6c505241-c058-47cb-b714-f520fdbe0caa}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="AutomationCurve" id="{2e2c0b59-cd7c-4f56-a6fb-948fb66056bf}">
|
||||
<object class="AutomationCurve" id="{6c505241-c058-47cb-b714-f520fdbe0caa}">
|
||||
<relationship name="parameter">
|
||||
<destination>{8d183079-30c4-4cbb-837b-5db8c493ed3b}</destination>
|
||||
<destination>{fb894807-eb7f-48db-b3de-e2f5dd3322a2}</destination>
|
||||
</relationship>
|
||||
<relationship name="automationPoints">
|
||||
<destination>{50d95503-71eb-40cd-bf3c-9c81df86ce9c}</destination>
|
||||
<destination>{dd976ac6-fd76-433d-9529-838cfc6b729f}</destination>
|
||||
<destination>{271ac30f-9855-4d8d-9c3f-e9decd599a63}</destination>
|
||||
<destination>{ca5c5e24-641a-4abe-a446-fb75c5add4a8}</destination>
|
||||
<destination>{c5d1b0fa-4a02-495b-b7b9-213d29640d30}</destination>
|
||||
<destination>{0b8a39b4-4ce2-4b14-b5f9-09d0d5ecb004}</destination>
|
||||
<destination>{3d47a52a-5449-42c0-b0b3-b7dbb7694761}</destination>
|
||||
<destination>{411906cd-ff80-4c62-8a5b-d2d075404e9e}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="AutomationPoint" id="{50d95503-71eb-40cd-bf3c-9c81df86ce9c}">
|
||||
<object class="AutomationPoint" id="{c5d1b0fa-4a02-495b-b7b9-213d29640d30}">
|
||||
<property name="position">
|
||||
<value>0</value>
|
||||
<value>0.001076426264800861</value>
|
||||
</property>
|
||||
<property name="value">
|
||||
<value>22000</value>
|
||||
<value>18000</value>
|
||||
</property>
|
||||
<property name="curveShape">
|
||||
<value>-0.12912713</value>
|
||||
</property>
|
||||
</object>
|
||||
<object class="AutomationPoint" id="{0b8a39b4-4ce2-4b14-b5f9-09d0d5ecb004}">
|
||||
<property name="position">
|
||||
<value>0.47524219590958017</value>
|
||||
</property>
|
||||
<property name="value">
|
||||
<value>4500</value>
|
||||
</property>
|
||||
</object>
|
||||
<object class="AutomationPoint" id="{3d47a52a-5449-42c0-b0b3-b7dbb7694761}">
|
||||
<property name="position">
|
||||
<value>0.98170075349838526</value>
|
||||
</property>
|
||||
<property name="value">
|
||||
<value>150</value>
|
||||
</property>
|
||||
<property name="curveShape">
|
||||
<value>0.0435885787</value>
|
||||
</property>
|
||||
</object>
|
||||
<object class="AutomationPoint" id="{411906cd-ff80-4c62-8a5b-d2d075404e9e}">
|
||||
<property name="position">
|
||||
<value>1</value>
|
||||
</property>
|
||||
<property name="isSCurve">
|
||||
<value>true</value>
|
||||
</property>
|
||||
</object>
|
||||
<object class="AutomationPoint" id="{dd976ac6-fd76-433d-9529-838cfc6b729f}">
|
||||
<property name="position">
|
||||
<value>39.604519774011301</value>
|
||||
</property>
|
||||
<property name="value">
|
||||
<value>30</value>
|
||||
</property>
|
||||
</object>
|
||||
<object class="AutomationPoint" id="{271ac30f-9855-4d8d-9c3f-e9decd599a63}">
|
||||
<property name="position">
|
||||
<value>25.5</value>
|
||||
</property>
|
||||
<property name="value">
|
||||
<value>35</value>
|
||||
</property>
|
||||
</object>
|
||||
<object class="AutomationPoint" id="{ca5c5e24-641a-4abe-a446-fb75c5add4a8}">
|
||||
<property name="position">
|
||||
<value>14.5</value>
|
||||
</property>
|
||||
<property name="value">
|
||||
<value>3500</value>
|
||||
<value>20</value>
|
||||
</property>
|
||||
</object>
|
||||
</objects>
|
||||
|
||||
@ -152,7 +152,7 @@
|
||||
</object>
|
||||
<object class="EventMixerGroup" id="{cdf80f01-e74c-4af6-98fc-be0a8a66d5fa}">
|
||||
<property name="volume">
|
||||
<value>9.5</value>
|
||||
<value>7.5</value>
|
||||
</property>
|
||||
<property name="name">
|
||||
<value>Audio 2</value>
|
||||
|
||||
@ -1,28 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<objects serializationModel="Studio.02.03.00">
|
||||
<object class="ParameterPreset" id="{319559ef-04bf-4399-ad4d-f2857201675d}">
|
||||
<property name="name">
|
||||
<value>Car</value>
|
||||
</property>
|
||||
<relationship name="folder">
|
||||
<destination>{72821a40-1f9b-449e-9f29-45c4d8800c81}</destination>
|
||||
</relationship>
|
||||
<relationship name="parameter">
|
||||
<destination>{8d183079-30c4-4cbb-837b-5db8c493ed3b}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="GameParameter" id="{8d183079-30c4-4cbb-837b-5db8c493ed3b}">
|
||||
<property name="parameterType">
|
||||
<value>3</value>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<value>40</value>
|
||||
</property>
|
||||
<property name="initialValue">
|
||||
<value>0</value>
|
||||
</property>
|
||||
<property name="isExposedRecursively">
|
||||
<value>false</value>
|
||||
</property>
|
||||
</object>
|
||||
</objects>
|
||||
@ -1,19 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<objects serializationModel="Studio.02.03.00">
|
||||
<object class="ParameterPreset" id="{78b39a91-4363-470b-94f5-ebddc0e41885}">
|
||||
<property name="name">
|
||||
<value>CafeEQ</value>
|
||||
</property>
|
||||
<relationship name="folder">
|
||||
<destination>{72821a40-1f9b-449e-9f29-45c4d8800c81}</destination>
|
||||
</relationship>
|
||||
<relationship name="parameter">
|
||||
<destination>{f83835cd-446d-4f3c-9fc6-2c0e984edbad}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
<object class="GameParameter" id="{f83835cd-446d-4f3c-9fc6-2c0e984edbad}">
|
||||
<property name="initialValue">
|
||||
<value>0</value>
|
||||
</property>
|
||||
</object>
|
||||
</objects>
|
||||
@ -13,7 +13,7 @@
|
||||
</object>
|
||||
<object class="GameParameter" id="{fb894807-eb7f-48db-b3de-e2f5dd3322a2}">
|
||||
<property name="initialValue">
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
</property>
|
||||
<relationship name="modulators">
|
||||
<destination>{a1523d7a-fecc-424f-8e27-bd2c5cb9a80f}</destination>
|
||||
|
||||
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<objects serializationModel="Studio.02.03.00">
|
||||
<object class="MixerVCA" id="{162960f4-09a2-4526-a61e-7ac7e219d27d}">
|
||||
<property name="name">
|
||||
<value>SFX</value>
|
||||
</property>
|
||||
<relationship name="mixer">
|
||||
<destination>{a1197cab-76c8-4da4-a41f-969ff1afdca4}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
</objects>
|
||||
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<objects serializationModel="Studio.02.03.00">
|
||||
<object class="MixerVCA" id="{6a1a7123-bd44-49b1-9092-22ef5bb105ec}">
|
||||
<property name="name">
|
||||
<value>UI</value>
|
||||
</property>
|
||||
<relationship name="mixer">
|
||||
<destination>{a1197cab-76c8-4da4-a41f-969ff1afdca4}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
</objects>
|
||||
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<objects serializationModel="Studio.02.03.00">
|
||||
<object class="MixerVCA" id="{7db632b8-c5c2-4e3e-ab97-f087b29d2976}">
|
||||
<property name="name">
|
||||
<value>Ambiences</value>
|
||||
</property>
|
||||
<relationship name="masters">
|
||||
<destination>{abdd8187-ee40-4826-82f2-b919c3daf22c}</destination>
|
||||
</relationship>
|
||||
<relationship name="mixer">
|
||||
<destination>{a1197cab-76c8-4da4-a41f-969ff1afdca4}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
</objects>
|
||||
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<objects serializationModel="Studio.02.03.00">
|
||||
<object class="MixerVCA" id="{abdd8187-ee40-4826-82f2-b919c3daf22c}">
|
||||
<property name="name">
|
||||
<value>Master</value>
|
||||
</property>
|
||||
<relationship name="mixer">
|
||||
<destination>{a1197cab-76c8-4da4-a41f-969ff1afdca4}</destination>
|
||||
</relationship>
|
||||
</object>
|
||||
</objects>
|
||||
@ -4,6 +4,10 @@
|
||||
"name": "iopprnbb ,,p",
|
||||
"score": 491.0
|
||||
},
|
||||
{
|
||||
"name": "timmi",
|
||||
"score": 469.0
|
||||
},
|
||||
{
|
||||
"name": "jtimu",
|
||||
"score": 465.0
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user