car occlusion, space ambience done

This commit is contained in:
Timur Nizamov
2025-11-18 22:29:02 +02:00
parent 47d37f2b7f
commit ab737e016c
32 changed files with 812 additions and 35 deletions
@@ -27,7 +27,7 @@ public class CarDrivingRoutine : NetworkBehaviour
private EventInstance CarMovement;
private FirstPersonOcclusion occlusion;
private void Awake()
{
@@ -41,6 +41,13 @@ public class CarDrivingRoutine : NetworkBehaviour
CarMovement.setParameterByName("EasyBoltLogic", 0); //"Driving - 0 in FMOD"
CarMovement.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(gameObject)); //setting 3d attributes
occlusion = GetComponent<FirstPersonOcclusion>();
if (occlusion != null)
{
occlusion.InitialiseWithInstance(CarMovement);
}
}
private void Start()
{
@@ -3,6 +3,7 @@ using System.Collections;
using System.Collections.Generic;
using Unity.XR.CoreUtils;
using UnityEngine;
using FMOD.Studio;
public class ElevatorOuter : NetworkBehaviour
{
@@ -25,10 +26,24 @@ public class ElevatorOuter : NetworkBehaviour
public ElevatorStatusPlate statusPlate;
public AudioSource arrivalBeeper;
private EventInstance arrivalBeep;
private FirstPersonOcclusion occlusion;
private void Start()
{
doorOpenTime = box.doorOpenTime;
doorCloseTime = box.doorCloseTime;
arrivalBeep = AudioManager.Instance.CreateInstance(FMODEvents.Instance.ElevatorArrival); //initialising the variable
arrivalBeep.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(gameObject)); //setting 3d attributes
occlusion = GetComponent<FirstPersonOcclusion>();
if (occlusion != null)
{
occlusion.InitialiseWithInstance(arrivalBeep);
}
}
private void OnTriggerEnter(Collider other)
{
@@ -77,6 +92,11 @@ public class ElevatorOuter : NetworkBehaviour
Debug.Log("Outer Doors moved");
}
void Update()
{
arrivalBeep.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(gameObject)); //updating the attributes
}
}
@@ -23,15 +23,15 @@ public class FloorButtonVisualizer : MonoBehaviour
{
this.ActiveState = true;
buttonImage.sprite = ActiveSprite;
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Hover, gameObject);
// --- Only play hover if selection actually changed ---
if (initialized && lastActiveButton != this)
{
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Hover, gameObject);
}
//if (initialized && lastActiveButton != this)
//{
// AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Hover, gameObject);
//}
lastActiveButton = this;
initialized = true;
//lastActiveButton = this;
//initialized = true;
}
public void Deactivate()
@@ -1,13 +1,14 @@
using FMOD.Studio;
using FMODUnity;
using System;
using System.Collections;
using System.Collections.Generic;
using Unity.XR.CoreUtils;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Rendering;
using UnityEngine.UI;
using UnityEngine.XR.Interaction.Toolkit;
using FMOD.Studio;
using FMODUnity;
public class MenuTeleportButton : MonoBehaviour
{
@@ -28,6 +29,10 @@ public class MenuTeleportButton : MonoBehaviour
private static MenuTeleportButton lastSelectedButton = null;
private static bool initialized = false;
// External state: map must be held/visible
public static bool MapIsOpen = false;
private Menu menu;
private void Awake()
{
TeleportingSound = AudioManager.Instance.CreateInstance(FMODEvents.Instance.Teleport); //initialise the instance
@@ -39,6 +44,7 @@ public class MenuTeleportButton : MonoBehaviour
void Start()
{
button = GetComponent<Button>();
menu = FindObjectOfType<Menu>();
// Subscribe to button events
button.onClick.AddListener(TeleportPlayer);
@@ -66,13 +72,18 @@ public class MenuTeleportButton : MonoBehaviour
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);
}
//if (initialized && lastSelectedButton != this)
//{
// if (!Menu.IsMapOpen) return;
// if (!menu.MapTab.activeSelf) return; // ensures only map page buttons make sound
// AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Hover, gameObject);
//}
if (!Menu.IsMapOpen) return;
if (!menu.MapTab.activeSelf) return; // ensures only map page buttons make sound
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Hover, gameObject);
lastSelectedButton = this;
initialized = true;
//lastSelectedButton = this;
//initialized = true;
}
}
@@ -59,7 +59,9 @@ public class Menu : MonoBehaviour
private bool hasFloorButtonSoundInitialized = false;
private bool hasMapButtonSoundInitialized = false;
public static bool IsMapOpen { get; private set; }
private void Awake()
{
@@ -93,6 +95,8 @@ public class Menu : MonoBehaviour
hasMapButtonSoundInitialized = true;
SetActiveTab(MenuTab.Map);
IsMapOpen = canvas.enabled;
}
private void activateOptionsPanel()
@@ -125,6 +129,8 @@ public class Menu : MonoBehaviour
public void setCanvasVisibility(bool enabled)
{
canvas.enabled = enabled;
IsMapOpen = enabled;
}
private void ToggleMenu(InputAction.CallbackContext context)
@@ -3376,6 +3376,22 @@ MonoBehaviour:
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
- eventID: 1
callback:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 9130699439852735294}
m_TargetAssemblyTypeName: FloorButtonVisualizer, Assembly-CSharp
m_MethodName: Deactivate
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
@@ -3580,6 +3596,22 @@ MonoBehaviour:
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
- eventID: 1
callback:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 2993125651756248496}
m_TargetAssemblyTypeName: FloorButtonVisualizer, Assembly-CSharp
m_MethodName: Deactivate
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
@@ -7838,6 +7870,26 @@ PrefabInstance:
value:
objectReference: {fileID: 21300000, guid: 50a077641946fcb48b05e51ec4936afc,
type: 3}
- target: {fileID: 2420913116824796466, guid: f2ade1e8dce12be43ab14956a6244406,
type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2420913116824796466, guid: f2ade1e8dce12be43ab14956a6244406,
type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2420913116824796466, guid: f2ade1e8dce12be43ab14956a6244406,
type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
value:
objectReference: {fileID: 6428633840807731315}
- target: {fileID: 2420913116824796466, guid: f2ade1e8dce12be43ab14956a6244406,
type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState
value: 2
objectReference: {fileID: 0}
- target: {fileID: 3841795681097067811, guid: f2ade1e8dce12be43ab14956a6244406,
type: 3}
propertyPath: m_Pivot.x
@@ -8068,9 +8120,9 @@ MonoBehaviour:
callback:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 6428633840807731315}
- m_Target: {fileID: 2839451055893527412}
m_TargetAssemblyTypeName: MenuTeleportButton, Assembly-CSharp
m_MethodName:
m_MethodName: SetStateDefault
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
@@ -8,11 +8,16 @@ public class SpaceEnterCollider : MonoBehaviour
{
public GameObject InstructionText;
private EventInstance PortalEntrance;
private EventInstance PortalEntrance;
private EventInstance SpaceMusic;
private bool musicStarted = false;
private void Awake()
{
PortalEntrance = AudioManager.Instance.CreateInstance(FMODEvents.Instance.PortalEnter);
SpaceMusic = AudioManager.Instance.CreateInstance(FMODEvents.Instance.Kosmos);
SpaceMusic.setParameterByName("KosmosMusicVolume", 1.0f);
}
private void OnTriggerEnter(Collider other)
@@ -46,6 +51,15 @@ public class SpaceEnterCollider : MonoBehaviour
PortalEntrance.start();
if (!musicStarted)
{
SpaceMusic.start();
musicStarted = true;
}
// Fade music in on entering
SpaceMusic.setParameterByName("KosmosMusicVolume", 0f);
}
private void OnTriggerExit(Collider other)
@@ -63,7 +77,8 @@ public class SpaceEnterCollider : MonoBehaviour
Debug.Log(other + " left space.");
PortalEntrance.start();
// Fade music out on leaving
SpaceMusic.setParameterByName("KosmosMusicVolume", 1.0f);
}
private IEnumerator DelayExit(GravityHandler playerGravity)
Binary file not shown.
@@ -3,6 +3,10 @@ using UnityEngine;
public class FMODEvents : MonoBehaviour
{
[field: Header("Musical Ambiences")]
[field: SerializeField] public EventReference Kosmos { get; private set; }
[field: Header("SFX")]
[field: SerializeField] public EventReference Steps { get; private set; }
[field: SerializeField] public EventReference StepSpin { get; private set; }
@@ -26,9 +26,6 @@ public class FirstPersonOcclusion : MonoBehaviour
private bool initialisedExternally = false;
// ============================================================
// NEW — Optional external initialiser
// ============================================================
public void InitialiseWithInstance(EventInstance instance)
{
AudioOccluded = instance;
@@ -43,32 +40,30 @@ public class FirstPersonOcclusion : MonoBehaviour
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
// 1. Event Instance Creation
if (!initialisedExternally)
{
AudioOccluded = RuntimeManager.CreateInstance(SelectAudio);
// 2. Attaching Instance
RuntimeManager.AttachInstanceToGameObject(AudioOccluded, gameObject);
// 3. Starting Audio
AudioOccluded.start();
// 4. Releasing Instance (This allows the event to self-manage its lifetime, which is fine)
AudioOccluded.release();
// 5. Getting Event Description and Max Distance
AudioDes = RuntimeManager.GetEventDescription(SelectAudio);
AudioDes.getMinMaxDistance(out float minDistance, out MaxDistance);
}
// Find listener (kept exactly as before)
// 6. Finding Listener
yield return new WaitUntil(() => FindObjectOfType<StudioListener>() != null);
Listener = FindObjectOfType<StudioListener>();
}
// ============================================================
// UNCHANGED core functionality
// ============================================================
private void FixedUpdate()
{
if (Listener == null) return;
@@ -77,16 +72,19 @@ public class FirstPersonOcclusion : MonoBehaviour
AudioOccluded.getPlaybackState(out pb);
ListenerDistance = Vector3.Distance(transform.position, Listener.transform.position);
// 7. Check Occlusion Condition
if (!AudioIsVirtual && pb == PLAYBACK_STATE.PLAYING && ListenerDistance <= MaxDistance)
{
OccludeBetween(transform.position, Listener.transform.position);
}
// 8. Reset Hit Count
lineCastHitCount = 0f;
}
private void OccludeBetween(Vector3 sound, Vector3 listener)
{
// 9. Calculate Points (Log only a few to avoid clutter)
Vector3 SoundLeft = CalculatePoint(sound, listener, SoundOcclusionWidening, true);
Vector3 SoundRight = CalculatePoint(sound, listener, SoundOcclusionWidening, false);
@@ -98,6 +96,7 @@ public class FirstPersonOcclusion : MonoBehaviour
Vector3 ListenerAbove = new Vector3(listener.x, listener.y + PlayerOcclusionWidening * .5f, listener.z);
Vector3 ListenerBelow = new Vector3(listener.x, listener.y - PlayerOcclusionWidening * .5f, listener.z);
// 10. Casting Lines (The line casts themselves will log hits)
CastLine(SoundLeft, ListenerLeft);
CastLine(SoundLeft, listener);
CastLine(SoundLeft, ListenerRight);
@@ -143,6 +142,7 @@ public class FirstPersonOcclusion : MonoBehaviour
private void CastLine(Vector3 Start, Vector3 End)
{
RaycastHit hit;
// 11. Raycast result
bool isHit = Physics.Linecast(Start, End, out hit, OcclusionLayer);
if (isHit)
@@ -159,6 +159,7 @@ public class FirstPersonOcclusion : MonoBehaviour
private void SetParameter()
{
float occlusionValue = lineCastHitCount / 11;
// 12. Final Parameter Value
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.
Binary file not shown.
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<objects serializationModel="Studio.02.03.00">
<object class="AudioFile" id="{55eaea09-18f2-47ac-aeaf-925c372afb16}">
<property name="assetPath">
<value>KosmoseTaust_layer3.wav</value>
</property>
<property name="isStreaming">
<value>true</value>
</property>
<property name="frequencyInKHz">
<value>96</value>
</property>
<property name="channelCount">
<value>2</value>
</property>
<property name="length">
<value>64</value>
</property>
<relationship name="masterAssetFolder">
<destination>{0fbc34f9-6022-42da-8b3b-f18344a8ea0f}</destination>
</relationship>
</object>
</objects>
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<objects serializationModel="Studio.02.03.00">
<object class="AudioFile" id="{696c9935-594e-405d-b153-12f9ffd1ab9d}">
<property name="assetPath">
<value>KosmoseTaust.wav</value>
</property>
<property name="isStreaming">
<value>true</value>
</property>
<property name="frequencyInKHz">
<value>96</value>
</property>
<property name="channelCount">
<value>2</value>
</property>
<property name="length">
<value>64</value>
</property>
<relationship name="masterAssetFolder">
<destination>{0fbc34f9-6022-42da-8b3b-f18344a8ea0f}</destination>
</relationship>
</object>
</objects>
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<objects serializationModel="Studio.02.03.00">
<object class="AudioFile" id="{aa0fd6ae-7de5-4065-8fcb-ffaef68b82a7}">
<property name="assetPath">
<value>KosmoseTaust_layer2.wav</value>
</property>
<property name="isStreaming">
<value>true</value>
</property>
<property name="frequencyInKHz">
<value>96</value>
</property>
<property name="channelCount">
<value>2</value>
</property>
<property name="length">
<value>64</value>
</property>
<relationship name="masterAssetFolder">
<destination>{0fbc34f9-6022-42da-8b3b-f18344a8ea0f}</destination>
</relationship>
</object>
</objects>
@@ -0,0 +1,550 @@
<?xml version="1.0" encoding="UTF-8"?>
<objects serializationModel="Studio.02.03.00">
<object class="Event" id="{58706c2f-6a9a-4b01-9f11-b2a4c3e89fae}">
<property name="name">
<value>Kosmos</value>
</property>
<property name="outputFormat">
<value>1</value>
</property>
<relationship name="folder">
<destination>{2e7ede82-ed6a-451f-aa9c-f422e9f68bb0}</destination>
</relationship>
<relationship name="mixer">
<destination>{a39bf19c-6501-4315-8437-48cf9e91e99b}</destination>
</relationship>
<relationship name="masterTrack">
<destination>{06de9361-efec-451e-85ee-143b87e55d23}</destination>
</relationship>
<relationship name="mixerInput">
<destination>{ae63f95d-ec73-4b13-84a0-4382829a782c}</destination>
</relationship>
<relationship name="automatableProperties">
<destination>{842ebe5f-205f-4fdd-a8f5-bf4e3723b9bd}</destination>
</relationship>
<relationship name="markerTracks">
<destination>{219265f7-03d7-4dee-b728-8c31ea407997}</destination>
</relationship>
<relationship name="groupTracks">
<destination>{60281e21-4257-42bd-869e-7236dff10ba6}</destination>
<destination>{ab04af5d-d29f-449a-a176-c811ba002da5}</destination>
<destination>{9338a628-fb11-4cf7-8dbe-0133ecd98489}</destination>
</relationship>
<relationship name="timeline">
<destination>{69005050-34e5-48b1-9092-b976166a4a15}</destination>
</relationship>
<relationship name="parameters">
<destination>{f8958c03-a073-4cbd-a011-92c9834cd033}</destination>
</relationship>
<relationship name="banks">
<destination>{ee5d6de3-8177-4297-9ba1-9f170e5f4cf9}</destination>
</relationship>
</object>
<object class="EventMixer" id="{a39bf19c-6501-4315-8437-48cf9e91e99b}">
<relationship name="masterBus">
<destination>{a83669f0-c5fa-4b43-9ca2-6866854621dd}</destination>
</relationship>
</object>
<object class="MasterTrack" id="{06de9361-efec-451e-85ee-143b87e55d23}">
<relationship name="automationTracks">
<destination>{8dfb04ad-4919-4f48-bb2b-d7c4ebec5c7a}</destination>
</relationship>
<relationship name="modules">
<destination>{893f5e51-4249-4f16-b8cb-86dda6700de7}</destination>
<destination>{4384709c-ec9d-418d-9130-26f1689913b6}</destination>
</relationship>
<relationship name="mixerGroup">
<destination>{a83669f0-c5fa-4b43-9ca2-6866854621dd}</destination>
</relationship>
</object>
<object class="MixerInput" id="{ae63f95d-ec73-4b13-84a0-4382829a782c}">
<relationship name="effectChain">
<destination>{461d6e75-1808-4454-bc61-ab674f8cd5be}</destination>
</relationship>
<relationship name="panner">
<destination>{fd6e8fb7-b41e-4ba6-b7f8-a3b78dfe2a0f}</destination>
</relationship>
<relationship name="output">
<destination>{c751273e-6b77-46b1-8c19-a99f6f08e61e}</destination>
</relationship>
</object>
<object class="EventAutomatableProperties" id="{842ebe5f-205f-4fdd-a8f5-bf4e3723b9bd}" />
<object class="MarkerTrack" id="{219265f7-03d7-4dee-b728-8c31ea407997}" />
<object class="GroupTrack" id="{60281e21-4257-42bd-869e-7236dff10ba6}">
<relationship name="modules">
<destination>{22bb83e7-4fa9-4e64-95f6-dad3a6f74645}</destination>
<destination>{18ec4542-88b4-4ff4-b127-9a90d7155ff3}</destination>
<destination>{23b73b39-d843-42fb-803f-9f57fac7f592}</destination>
</relationship>
<relationship name="mixerGroup">
<destination>{ed4ccff9-2472-4ee9-b905-1dbf578e03f8}</destination>
</relationship>
</object>
<object class="GroupTrack" id="{ab04af5d-d29f-449a-a176-c811ba002da5}">
<relationship name="modules">
<destination>{a3005e56-a99e-49a8-bd3e-20ec20333888}</destination>
<destination>{f561ce32-7b58-4ad3-9fea-1eed198bacd2}</destination>
<destination>{d5f07acf-2e70-48cd-aff2-cab5c29b5ede}</destination>
</relationship>
<relationship name="mixerGroup">
<destination>{b2e5f40f-ea56-4a2a-9c6d-4240cde3c95e}</destination>
</relationship>
</object>
<object class="GroupTrack" id="{9338a628-fb11-4cf7-8dbe-0133ecd98489}">
<relationship name="modules">
<destination>{47172437-a5b2-4485-a32d-545a0610a1aa}</destination>
<destination>{19c9e0e5-c01c-4ec9-a6af-4d9499b96bc6}</destination>
<destination>{a635ba32-07ce-4947-bb41-1aa9cbc9d085}</destination>
</relationship>
<relationship name="mixerGroup">
<destination>{8a3a8edb-b5dd-443f-9fae-ddd4e4e3a707}</destination>
</relationship>
</object>
<object class="Timeline" id="{69005050-34e5-48b1-9092-b976166a4a15}">
<relationship name="modules">
<destination>{22bb83e7-4fa9-4e64-95f6-dad3a6f74645}</destination>
<destination>{a3005e56-a99e-49a8-bd3e-20ec20333888}</destination>
<destination>{47172437-a5b2-4485-a32d-545a0610a1aa}</destination>
</relationship>
<relationship name="markers">
<destination>{62aef853-a04d-47b3-9bc3-e0e6704b75a6}</destination>
</relationship>
</object>
<object class="ParameterProxy" id="{f8958c03-a073-4cbd-a011-92c9834cd033}">
<relationship name="preset">
<destination>{a0e218f5-bd0f-4327-a6e8-3aa4f23990af}</destination>
</relationship>
</object>
<object class="EventMixerMaster" id="{a83669f0-c5fa-4b43-9ca2-6866854621dd}">
<property name="volume">
<value>-74</value>
</property>
<relationship name="automators">
<destination>{702c4553-3917-45f2-843c-1814112fb14c}</destination>
</relationship>
<relationship name="effectChain">
<destination>{13138e0b-6725-440a-a8cb-a35b440756ed}</destination>
</relationship>
<relationship name="panner">
<destination>{5a0153c5-3618-44cd-8d09-36be25688ff0}</destination>
</relationship>
<relationship name="mixer">
<destination>{a39bf19c-6501-4315-8437-48cf9e91e99b}</destination>
</relationship>
</object>
<object class="AutomationTrack" id="{8dfb04ad-4919-4f48-bb2b-d7c4ebec5c7a}">
<relationship name="automator">
<destination>{702c4553-3917-45f2-843c-1814112fb14c}</destination>
</relationship>
</object>
<object class="TransitionSourceSound" id="{893f5e51-4249-4f16-b8cb-86dda6700de7}">
<property name="length">
<value>0</value>
</property>
</object>
<object class="TransitionDestinationSound" id="{4384709c-ec9d-418d-9130-26f1689913b6}">
<property name="start">
<value>0.55000000000000004</value>
</property>
<property name="length">
<value>0</value>
</property>
</object>
<object class="MixerBusEffectChain" id="{461d6e75-1808-4454-bc61-ab674f8cd5be}">
<relationship name="effects">
<destination>{eb7b0211-040f-4a2f-9b52-3d957cc57335}</destination>
</relationship>
</object>
<object class="MixerBusPanner" id="{fd6e8fb7-b41e-4ba6-b7f8-a3b78dfe2a0f}" />
<object class="SingleSound" id="{22bb83e7-4fa9-4e64-95f6-dad3a6f74645}">
<property name="length">
<value>64</value>
</property>
<relationship name="audioFile">
<destination>{696c9935-594e-405d-b153-12f9ffd1ab9d}</destination>
</relationship>
</object>
<object class="TransitionSourceSound" id="{18ec4542-88b4-4ff4-b127-9a90d7155ff3}">
<property name="length">
<value>0.55000000000000004</value>
</property>
<relationship name="fadeOutCurve">
<destination>{f72262e6-f649-4e28-8d00-9714b91dc0ee}</destination>
</relationship>
</object>
<object class="TransitionDestinationSound" id="{23b73b39-d843-42fb-803f-9f57fac7f592}">
<property name="length">
<value>0.55000000000000004</value>
</property>
<relationship name="fadeInCurve">
<destination>{21098800-f378-468f-b421-0227eb80c367}</destination>
</relationship>
</object>
<object class="EventMixerGroup" id="{ed4ccff9-2472-4ee9-b905-1dbf578e03f8}">
<property name="name">
<value>Audio 1</value>
</property>
<relationship name="effectChain">
<destination>{9b44f07e-0868-4c16-8ca1-421882c840ba}</destination>
</relationship>
<relationship name="panner">
<destination>{44a0480c-4747-4218-88e2-1d772aa28cdf}</destination>
</relationship>
<relationship name="output">
<destination>{a83669f0-c5fa-4b43-9ca2-6866854621dd}</destination>
</relationship>
</object>
<object class="SingleSound" id="{a3005e56-a99e-49a8-bd3e-20ec20333888}">
<property name="length">
<value>64</value>
</property>
<relationship name="audioFile">
<destination>{aa0fd6ae-7de5-4065-8fcb-ffaef68b82a7}</destination>
</relationship>
</object>
<object class="TransitionSourceSound" id="{f561ce32-7b58-4ad3-9fea-1eed198bacd2}">
<property name="length">
<value>0.55000000000000004</value>
</property>
<relationship name="fadeOutCurve">
<destination>{b7a844ed-bc75-4b61-aa1c-a074426607ed}</destination>
</relationship>
</object>
<object class="TransitionDestinationSound" id="{d5f07acf-2e70-48cd-aff2-cab5c29b5ede}">
<property name="length">
<value>0.54999999999999993</value>
</property>
<relationship name="fadeInCurve">
<destination>{a6ac4808-b68e-4557-8401-52dd96bf8976}</destination>
</relationship>
</object>
<object class="EventMixerGroup" id="{b2e5f40f-ea56-4a2a-9c6d-4240cde3c95e}">
<property name="name">
<value>Audio 2</value>
</property>
<relationship name="effectChain">
<destination>{82f8a65c-3d1a-45b6-aea8-bafadbdc5cc2}</destination>
</relationship>
<relationship name="panner">
<destination>{1a7321b5-8f9c-4c48-9376-9cbeab6eaa4f}</destination>
</relationship>
<relationship name="output">
<destination>{a83669f0-c5fa-4b43-9ca2-6866854621dd}</destination>
</relationship>
</object>
<object class="SingleSound" id="{47172437-a5b2-4485-a32d-545a0610a1aa}">
<property name="length">
<value>64</value>
</property>
<property name="pitch">
<value>-1.80000007</value>
</property>
<relationship name="audioFile">
<destination>{55eaea09-18f2-47ac-aeaf-925c372afb16}</destination>
</relationship>
</object>
<object class="TransitionSourceSound" id="{19c9e0e5-c01c-4ec9-a6af-4d9499b96bc6}">
<property name="length">
<value>0.15000000000000002</value>
</property>
<relationship name="fadeOutCurve">
<destination>{86512017-43a0-444a-bf1e-bf9e0cd3c9e2}</destination>
</relationship>
</object>
<object class="TransitionDestinationSound" id="{a635ba32-07ce-4947-bb41-1aa9cbc9d085}">
<property name="start">
<value>0.35000000000000003</value>
</property>
<property name="length">
<value>0.20000000000000034</value>
</property>
<relationship name="fadeInCurve">
<destination>{40803f40-cdd3-4d97-aa01-897535ff25ba}</destination>
</relationship>
</object>
<object class="EventMixerGroup" id="{8a3a8edb-b5dd-443f-9fae-ddd4e4e3a707}">
<property name="volume">
<value>-2.5</value>
</property>
<property name="name">
<value>Audio 3</value>
</property>
<relationship name="effectChain">
<destination>{eb27a922-ee96-4dc5-9f70-6bfc876713e8}</destination>
</relationship>
<relationship name="panner">
<destination>{6f38baec-dd90-403f-8345-7fa61b2e7c47}</destination>
</relationship>
<relationship name="output">
<destination>{a83669f0-c5fa-4b43-9ca2-6866854621dd}</destination>
</relationship>
</object>
<object class="LoopRegion" id="{62aef853-a04d-47b3-9bc3-e0e6704b75a6}">
<property name="position">
<value>0</value>
</property>
<property name="length">
<value>63.450000000000003</value>
</property>
<relationship name="timeline">
<destination>{69005050-34e5-48b1-9092-b976166a4a15}</destination>
</relationship>
<relationship name="markerTrack">
<destination>{219265f7-03d7-4dee-b728-8c31ea407997}</destination>
</relationship>
<relationship name="transitionTimeline">
<destination>{f8823e63-06ae-46dd-9be6-c71db4431c7b}</destination>
</relationship>
</object>
<object class="Automator" id="{702c4553-3917-45f2-843c-1814112fb14c}">
<property name="nameOfPropertyBeingAutomated">
<value>volume</value>
</property>
<relationship name="automationCurves">
<destination>{40e87132-5547-4855-9262-239618750479}</destination>
</relationship>
</object>
<object class="MixerBusEffectChain" id="{13138e0b-6725-440a-a8cb-a35b440756ed}">
<relationship name="effects">
<destination>{803f5d3e-5f9d-4496-a907-282bf2a4201b}</destination>
</relationship>
</object>
<object class="MixerBusPanner" id="{5a0153c5-3618-44cd-8d09-36be25688ff0}" />
<object class="MixerBusFader" id="{eb7b0211-040f-4a2f-9b52-3d957cc57335}" />
<object class="TransitionSourceFadeOutCurve" id="{f72262e6-f649-4e28-8d00-9714b91dc0ee}">
<relationship name="startPoint">
<destination>{e4a95628-0a46-4ef9-8851-3fc11574336b}</destination>
</relationship>
<relationship name="endPoint">
<destination>{dd37e928-2389-429e-a97b-37a6bfcff540}</destination>
</relationship>
<relationship name="relatedModule">
<destination>{23b73b39-d843-42fb-803f-9f57fac7f592}</destination>
</relationship>
</object>
<object class="TransitionDestinationFadeInCurve" id="{21098800-f378-468f-b421-0227eb80c367}">
<relationship name="startPoint">
<destination>{b3f8905a-28a2-4633-a9f7-3a1f1d9ef36b}</destination>
</relationship>
<relationship name="endPoint">
<destination>{019dd326-a6c7-4b6b-aa44-c745fe0eeb00}</destination>
</relationship>
<relationship name="relatedModule">
<destination>{18ec4542-88b4-4ff4-b127-9a90d7155ff3}</destination>
</relationship>
</object>
<object class="MixerBusEffectChain" id="{9b44f07e-0868-4c16-8ca1-421882c840ba}">
<relationship name="effects">
<destination>{3a825381-6763-4f29-abac-ff30aa6cd0a1}</destination>
</relationship>
</object>
<object class="MixerBusPanner" id="{44a0480c-4747-4218-88e2-1d772aa28cdf}" />
<object class="TransitionSourceFadeOutCurve" id="{b7a844ed-bc75-4b61-aa1c-a074426607ed}">
<relationship name="startPoint">
<destination>{a6df83fb-08c1-4d62-aa14-af49153159a8}</destination>
</relationship>
<relationship name="endPoint">
<destination>{24e3cbe6-da32-4767-9abe-c87c4143faaa}</destination>
</relationship>
<relationship name="relatedModule">
<destination>{d5f07acf-2e70-48cd-aff2-cab5c29b5ede}</destination>
</relationship>
</object>
<object class="TransitionDestinationFadeInCurve" id="{a6ac4808-b68e-4557-8401-52dd96bf8976}">
<relationship name="startPoint">
<destination>{201ce2ce-26bb-4503-b50a-b4e99d7dbe20}</destination>
</relationship>
<relationship name="endPoint">
<destination>{bb57c997-4a4d-4435-8a54-535d26ce3ae8}</destination>
</relationship>
<relationship name="relatedModule">
<destination>{f561ce32-7b58-4ad3-9fea-1eed198bacd2}</destination>
</relationship>
</object>
<object class="MixerBusEffectChain" id="{82f8a65c-3d1a-45b6-aea8-bafadbdc5cc2}">
<relationship name="effects">
<destination>{51ec92e7-623a-428c-883a-3e442d94d557}</destination>
</relationship>
</object>
<object class="MixerBusPanner" id="{1a7321b5-8f9c-4c48-9376-9cbeab6eaa4f}" />
<object class="TransitionSourceFadeOutCurve" id="{86512017-43a0-444a-bf1e-bf9e0cd3c9e2}">
<relationship name="startPoint">
<destination>{7680bcd4-395f-4038-bb46-288a723cfaa4}</destination>
</relationship>
<relationship name="endPoint">
<destination>{e0126d92-e13e-402f-bfb0-c5b8e2f854f2}</destination>
</relationship>
</object>
<object class="TransitionDestinationFadeInCurve" id="{40803f40-cdd3-4d97-aa01-897535ff25ba}">
<relationship name="startPoint">
<destination>{03034751-8e70-4600-9226-bbff6c5006b8}</destination>
</relationship>
<relationship name="endPoint">
<destination>{be34ae1e-1ac8-4f03-b91d-33c1c6f12d75}</destination>
</relationship>
</object>
<object class="MixerBusEffectChain" id="{eb27a922-ee96-4dc5-9f70-6bfc876713e8}">
<relationship name="effects">
<destination>{2af4c71f-709e-4e6d-ad5e-3d74db71b2ac}</destination>
</relationship>
</object>
<object class="MixerBusPanner" id="{6f38baec-dd90-403f-8345-7fa61b2e7c47}" />
<object class="TransitionTimeline" id="{f8823e63-06ae-46dd-9be6-c71db4431c7b}">
<property name="length">
<value>0.55000000000000004</value>
</property>
<relationship name="modules">
<destination>{18ec4542-88b4-4ff4-b127-9a90d7155ff3}</destination>
<destination>{23b73b39-d843-42fb-803f-9f57fac7f592}</destination>
<destination>{f561ce32-7b58-4ad3-9fea-1eed198bacd2}</destination>
<destination>{d5f07acf-2e70-48cd-aff2-cab5c29b5ede}</destination>
<destination>{19c9e0e5-c01c-4ec9-a6af-4d9499b96bc6}</destination>
<destination>{a635ba32-07ce-4947-bb41-1aa9cbc9d085}</destination>
<destination>{893f5e51-4249-4f16-b8cb-86dda6700de7}</destination>
<destination>{4384709c-ec9d-418d-9130-26f1689913b6}</destination>
</relationship>
</object>
<object class="AutomationCurve" id="{40e87132-5547-4855-9262-239618750479}">
<relationship name="parameter">
<destination>{a0e218f5-bd0f-4327-a6e8-3aa4f23990af}</destination>
</relationship>
<relationship name="automationPoints">
<destination>{0bfe7cc9-59e2-4fa6-b137-a105c2359106}</destination>
<destination>{744b083e-7c2d-465c-954e-fc7cc6af759b}</destination>
</relationship>
</object>
<object class="MixerBusFader" id="{803f5d3e-5f9d-4496-a907-282bf2a4201b}" />
<object class="AutomationPoint" id="{e4a95628-0a46-4ef9-8851-3fc11574336b}">
<property name="position">
<value>0</value>
</property>
<property name="value">
<value>1</value>
</property>
<property name="curveShape">
<value>0.28843534</value>
</property>
</object>
<object class="AutomationPoint" id="{dd37e928-2389-429e-a97b-37a6bfcff540}">
<property name="position">
<value>0.55000000000000004</value>
</property>
<property name="value">
<value>0</value>
</property>
</object>
<object class="AutomationPoint" id="{b3f8905a-28a2-4633-a9f7-3a1f1d9ef36b}">
<property name="position">
<value>0</value>
</property>
<property name="value">
<value>0</value>
</property>
<property name="curveShape">
<value>-0.806102395</value>
</property>
</object>
<object class="AutomationPoint" id="{019dd326-a6c7-4b6b-aa44-c745fe0eeb00}">
<property name="position">
<value>0.55000000000000004</value>
</property>
<property name="value">
<value>1</value>
</property>
</object>
<object class="MixerBusFader" id="{3a825381-6763-4f29-abac-ff30aa6cd0a1}" />
<object class="AutomationPoint" id="{a6df83fb-08c1-4d62-aa14-af49153159a8}">
<property name="position">
<value>0</value>
</property>
<property name="value">
<value>1</value>
</property>
<property name="curveShape">
<value>0.213088736</value>
</property>
</object>
<object class="AutomationPoint" id="{24e3cbe6-da32-4767-9abe-c87c4143faaa}">
<property name="position">
<value>0.55000000000000004</value>
</property>
<property name="value">
<value>0</value>
</property>
</object>
<object class="AutomationPoint" id="{201ce2ce-26bb-4503-b50a-b4e99d7dbe20}">
<property name="position">
<value>0</value>
</property>
<property name="value">
<value>0</value>
</property>
<property name="curveShape">
<value>-0.685745656</value>
</property>
</object>
<object class="AutomationPoint" id="{bb57c997-4a4d-4435-8a54-535d26ce3ae8}">
<property name="position">
<value>0.54999999999999993</value>
</property>
<property name="value">
<value>1</value>
</property>
</object>
<object class="MixerBusFader" id="{51ec92e7-623a-428c-883a-3e442d94d557}" />
<object class="AutomationPoint" id="{7680bcd4-395f-4038-bb46-288a723cfaa4}">
<property name="position">
<value>0</value>
</property>
<property name="value">
<value>1</value>
</property>
<property name="curveShape">
<value>-1.00000048</value>
</property>
</object>
<object class="AutomationPoint" id="{e0126d92-e13e-402f-bfb0-c5b8e2f854f2}">
<property name="position">
<value>0.15000000000000002</value>
</property>
<property name="value">
<value>0</value>
</property>
</object>
<object class="AutomationPoint" id="{03034751-8e70-4600-9226-bbff6c5006b8}">
<property name="position">
<value>0.35000000000000003</value>
</property>
<property name="value">
<value>0</value>
</property>
<property name="curveShape">
<value>1</value>
</property>
</object>
<object class="AutomationPoint" id="{be34ae1e-1ac8-4f03-b91d-33c1c6f12d75}">
<property name="position">
<value>0.55000000000000004</value>
</property>
<property name="value">
<value>1</value>
</property>
</object>
<object class="MixerBusFader" id="{2af4c71f-709e-4e6d-ad5e-3d74db71b2ac}" />
<object class="AutomationPoint" id="{0bfe7cc9-59e2-4fa6-b137-a105c2359106}">
<property name="position">
<value>0</value>
</property>
<property name="value">
<value>-9</value>
</property>
</object>
<object class="AutomationPoint" id="{744b083e-7c2d-465c-954e-fc7cc6af759b}">
<property name="position">
<value>1</value>
</property>
<property name="value">
<value>-80</value>
</property>
</object>
</objects>
@@ -98,7 +98,7 @@
</object>
<object class="EventMixerGroup" id="{11c59dfd-3b93-4ee1-9357-d0bec479e62f}">
<property name="volume">
<value>2.5</value>
<value>1.5</value>
</property>
<property name="name">
<value>Audio 1</value>
@@ -97,6 +97,9 @@
</relationship>
</object>
<object class="EventMixerGroup" id="{e2339761-aa88-426a-b59b-bca87118f569}">
<property name="volume">
<value>-6</value>
</property>
<property name="name">
<value>Audio 1</value>
</property>
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<objects serializationModel="Studio.02.03.00">
<object class="ParameterPreset" id="{e93048b7-c7f8-4c1a-aec8-b1903abab7a8}">
<property name="name">
<value>KosmosMusicVolume</value>
</property>
<relationship name="folder">
<destination>{72821a40-1f9b-449e-9f29-45c4d8800c81}</destination>
</relationship>
<relationship name="parameter">
<destination>{a0e218f5-bd0f-4327-a6e8-3aa4f23990af}</destination>
</relationship>
</object>
<object class="GameParameter" id="{a0e218f5-bd0f-4327-a6e8-3aa4f23990af}">
<property name="initialValue">
<value>0</value>
</property>
<relationship name="modulators">
<destination>{468c7c51-1acd-44fe-bcc8-5853d339e591}</destination>
</relationship>
</object>
<object class="SeekModulator" id="{468c7c51-1acd-44fe-bcc8-5853d339e591}">
<property name="nameOfPropertyBeingModulated">
<value>cursorPosition</value>
</property>
<property name="speedAscending">
<value>1.3000000715255737</value>
</property>
</object>
</objects>