diff --git a/unity-ggjj/Assets/Plugins/NVorbis.meta b/unity-ggjj/Assets/Plugins/NVorbis.meta
new file mode 100644
index 000000000..87bae1fc7
--- /dev/null
+++ b/unity-ggjj/Assets/Plugins/NVorbis.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 877960ca8e59e4c48ac2c372c6e01f52
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/unity-ggjj/Assets/Plugins/NVorbis/NVorbis.dll b/unity-ggjj/Assets/Plugins/NVorbis/NVorbis.dll
new file mode 100644
index 000000000..0bee510b3
--- /dev/null
+++ b/unity-ggjj/Assets/Plugins/NVorbis/NVorbis.dll
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d4fd7a6a7b8672b30f77de08c0256dbcbd0d3eee07b78554ebce97741aa7a819
+size 81408
diff --git a/unity-ggjj/Assets/Plugins/NVorbis/NVorbis.dll.meta b/unity-ggjj/Assets/Plugins/NVorbis/NVorbis.dll.meta
new file mode 100644
index 000000000..85f202b0e
--- /dev/null
+++ b/unity-ggjj/Assets/Plugins/NVorbis/NVorbis.dll.meta
@@ -0,0 +1,33 @@
+fileFormatVersion: 2
+guid: 1a75cebd38c690646863f50d05681e0e
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ - first:
+ Any:
+ second:
+ enabled: 1
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/unity-ggjj/Assets/Scripts/SceneLoading/LoopableMusicClip.cs b/unity-ggjj/Assets/Scripts/SceneLoading/LoopableMusicClip.cs
new file mode 100644
index 000000000..d09a778b3
--- /dev/null
+++ b/unity-ggjj/Assets/Scripts/SceneLoading/LoopableMusicClip.cs
@@ -0,0 +1,168 @@
+using System;
+using System.Collections;
+using System.IO;
+using UnityEngine;
+using UnityEngine.Networking;
+
+///
+/// Handles playing back .ogg files with loop markers
+///
+///
+/// Music with loop markers consist of up to 3 sections:
+/// 1. Intro
+/// 2. Loop
+/// 3. Outro (optional)
+///
+/// Inside the .ogg file, the loop markers are defined as tags with the names LOOP_START and LOOP_END in the format HH:MM:SS.mmm.
+///
+/// If ContinueLooping is true, a track will start with the intro and continue looping the loop section. If ContinueLooping is set to false during playback, it will play finish the current loop and then play the outro.
+/// If ContinueLooping is false, a track will start with the intro, loop the loop section once, and then play the outro.
+/// If no outro exists, the track will simply end after the last loop.
+///
+/// Usage:
+/// 1. Instantiate an instance of this class
+/// 2. Call `.Initialize(pathToOGGWithinMusicDirectory)` to load an .ogg file with loop markers.
+/// 3. Assign the `.Clip` property to an `AudioSource.clip` of your choice.
+/// 4. Call `AudioSource.Play()` to start playback. By default, the track will loop indefinitely.
+/// 5. Change the `.ContinueLooping` property to false to finish the current loop and play the outro, if it exists.
+///
+public class LoopableMusicClip
+{
+ private readonly string _clipName;
+ private float[] _rawData;
+ private int _preLoopSampleLength;
+ private int _loopSampleLength;
+ private int _fullTrackSampleLength;
+ private int _sampleRate;
+ private int _channelCount;
+
+ public int TimeToSamples(double time)
+ {
+ return (int) (time * _sampleRate * _channelCount);
+ }
+
+ public double SamplesToTime(int samples)
+ {
+ return (double) samples / _sampleRate / _channelCount;
+ }
+
+ public bool ContinueLooping { get; set; } = true;
+
+ private AudioClip _clip;
+ public AudioClip Clip
+ {
+ get
+ {
+ if (_rawData == null || _rawData.Length == 0)
+ {
+ throw new InvalidOperationException($"Clip has not been initialized yet; call {nameof(Initialize)}(pathToOGGWithinMusicDirectory) first");
+ }
+ if (_clip != null)
+ {
+ return _clip;
+ }
+
+ _clip = AudioClip.Create("preLoop", _preLoopSampleLength + _loopSampleLength, _channelCount, _sampleRate, true, GenerateStream, SetCurrentPlaybackHead);
+ return _clip;
+ }
+ }
+
+ public IEnumerator Initialize(string pathToOGGWithinMusicDirectory)
+ {
+ if (!pathToOGGWithinMusicDirectory.EndsWith(".ogg"))
+ {
+ throw new NotSupportedException("Only ogg files are supported");
+ }
+
+ using var www = UnityWebRequestMultimedia.GetAudioClip(Application.streamingAssetsPath + "/Music/" + pathToOGGWithinMusicDirectory, AudioType.OGGVORBIS);
+ yield return www.SendWebRequest();
+
+ using var vorbis = new NVorbis.VorbisReader(new MemoryStream(www.downloadHandler.data));
+
+ _rawData = new float[vorbis.TotalSamples * vorbis.Channels];
+ vorbis.ReadSamples(_rawData, 0, (int) vorbis.TotalSamples * vorbis.Channels);
+ var loopStart = vorbis.Tags.GetTagSingle("LOOP_START");
+ var loopEnd = vorbis.Tags.GetTagSingle("LOOP_END");
+ Debug.Log("loopStart: " + loopStart);
+ Debug.Log("loopEnd: " + loopEnd);
+ var loopStartSeconds = TimeSpan.Parse(loopStart).TotalSeconds;
+ var loopEndSeconds = TimeSpan.Parse(loopEnd).TotalSeconds;
+ Debug.Log("loopStartSeconds: " + loopStartSeconds);
+ Debug.Log("loopEndSeconds: " + loopEndSeconds);
+ Debug.Log("loopSeconds: " + (loopEndSeconds - loopStartSeconds));
+ _sampleRate = vorbis.SampleRate;
+ _channelCount = vorbis.Channels;
+
+ _preLoopSampleLength = TimeToSamples(loopStartSeconds);
+ _loopSampleLength = TimeToSamples(loopEndSeconds - loopStartSeconds);
+ _fullTrackSampleLength = TimeToSamples(vorbis.TotalTime.TotalSeconds);
+
+ Debug.Log("preLoopSampleLength: " + _preLoopSampleLength);
+ Debug.Log("loopSampleLength: " + _loopSampleLength);
+ Debug.Log("totalSamples: " + vorbis.TotalSamples);
+ }
+
+ public void SetCurrentPlaybackHead(int position)
+ {
+ _currentPlaybackHead = position;
+ }
+
+ private int _currentPlaybackHead;
+
+ public void GenerateStream(float[] data)
+ {
+ int dataIndex = 0;
+
+ while (dataIndex < data.Length)
+ {
+ if (_currentPlaybackHead < _preLoopSampleLength)
+ {
+ Debug.Log("1. Pre loop");
+ var availableSampleLength = Math.Min(data.Length - dataIndex, _preLoopSampleLength - _currentPlaybackHead);
+ Array.Copy(_rawData, _currentPlaybackHead, data, dataIndex, availableSampleLength);
+ _currentPlaybackHead += availableSampleLength;
+ dataIndex += availableSampleLength;
+ }
+
+ if (dataIndex >= data.Length)
+ {
+ break;
+ }
+
+ if (_currentPlaybackHead >= _preLoopSampleLength && _currentPlaybackHead < (_loopSampleLength + _preLoopSampleLength))
+ {
+ Debug.Log("5. Loop");
+ var availableSampleLength = Math.Min(data.Length - dataIndex, _loopSampleLength + _preLoopSampleLength - _currentPlaybackHead);
+ Array.Copy(_rawData, _currentPlaybackHead, data, dataIndex, availableSampleLength);
+ _currentPlaybackHead += availableSampleLength;
+ dataIndex += availableSampleLength;
+ }
+
+ if (dataIndex >= data.Length)
+ {
+ break;
+ }
+
+ if (_currentPlaybackHead >= (_loopSampleLength + _preLoopSampleLength))
+ {
+ if (!ContinueLooping)
+ {
+ Debug.Log("7. End of loop");
+ var availableSamplesOfEnd = _fullTrackSampleLength - _currentPlaybackHead;
+ Array.Copy(_rawData, _currentPlaybackHead, data, dataIndex, availableSamplesOfEnd);
+ dataIndex += availableSamplesOfEnd;
+ _currentPlaybackHead = _fullTrackSampleLength;
+ break;
+ }
+ Debug.Log("3. Loop wrap around");
+ _currentPlaybackHead = _preLoopSampleLength;
+ }
+ }
+
+ if (dataIndex < data.Length)
+ {
+ Debug.Log("Clearing remaining data");
+ Array.Clear(data, dataIndex, data.Length - dataIndex);
+ }
+ }
+}
\ No newline at end of file
diff --git a/unity-ggjj/Assets/Scripts/SceneLoading/LoopableMusicClip.cs.meta b/unity-ggjj/Assets/Scripts/SceneLoading/LoopableMusicClip.cs.meta
new file mode 100644
index 000000000..da055e57f
--- /dev/null
+++ b/unity-ggjj/Assets/Scripts/SceneLoading/LoopableMusicClip.cs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 8e6978e948ed17b4cab0f4f80661f63b
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/unity-ggjj/Assets/StreamingAssets.meta b/unity-ggjj/Assets/StreamingAssets.meta
new file mode 100644
index 000000000..42ca65a66
--- /dev/null
+++ b/unity-ggjj/Assets/StreamingAssets.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 16288d63f9197d24e96216524d69bfe7
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/unity-ggjj/Assets/StreamingAssets/Music.meta b/unity-ggjj/Assets/StreamingAssets/Music.meta
new file mode 100644
index 000000000..1c2547cef
--- /dev/null
+++ b/unity-ggjj/Assets/StreamingAssets/Music.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a6abaf0dea3ce8444990f2978915a823
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItaly.ogg b/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItaly.ogg
new file mode 100644
index 000000000..d936b6abc
--- /dev/null
+++ b/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItaly.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7bb5a831ab091a91bebcd23632238be4ac90375212983c1c2ac28e987730229a
+size 2615997
diff --git a/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItaly.ogg.meta b/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItaly.ogg.meta
new file mode 100644
index 000000000..ebdfd978d
--- /dev/null
+++ b/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItaly.ogg.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 7138780c323ee4e45a56380e1d94efd7
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItaly.wav b/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItaly.wav
new file mode 100644
index 000000000..3d44b8474
--- /dev/null
+++ b/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItaly.wav
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:933979b254cc24c93100000aa9106f90c8e202e50a221cc2598024ded45daea8
+size 37956572
diff --git a/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItaly.wav.meta b/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItaly.wav.meta
new file mode 100644
index 000000000..11d874771
--- /dev/null
+++ b/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItaly.wav.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 46e4944de631d6346b8e649ec02c623d
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItalyShort.ogg b/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItalyShort.ogg
new file mode 100644
index 000000000..6c09c50eb
--- /dev/null
+++ b/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItalyShort.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6bbcb59c5147ae912dc7c24d99079002f8f1595a43fbcc6d62a0356b5a767e08
+size 1277276
diff --git a/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItalyShort.ogg.meta b/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItalyShort.ogg.meta
new file mode 100644
index 000000000..2573f928f
--- /dev/null
+++ b/unity-ggjj/Assets/StreamingAssets/Music/ObjectingInItalyShort.ogg.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b764e41e1b4a8aa4191069571c415d3e
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/unity-ggjj/Assets/StreamingAssets/Music/Tests.meta b/unity-ggjj/Assets/StreamingAssets/Music/Tests.meta
new file mode 100644
index 000000000..4d50ea62b
--- /dev/null
+++ b/unity-ggjj/Assets/StreamingAssets/Music/Tests.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 27af95fd16ff49942a55e2055b82795d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/unity-ggjj/Assets/StreamingAssets/Music/Tests/static.ogg b/unity-ggjj/Assets/StreamingAssets/Music/Tests/static.ogg
new file mode 100644
index 000000000..f7e0e1afc
--- /dev/null
+++ b/unity-ggjj/Assets/StreamingAssets/Music/Tests/static.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a998066049626061376ae878f58bfff7013ea596fa9b38118be2b6ed78977b3a
+size 31832
diff --git a/unity-ggjj/Assets/StreamingAssets/Music/Tests/static.ogg.meta b/unity-ggjj/Assets/StreamingAssets/Music/Tests/static.ogg.meta
new file mode 100644
index 000000000..a4e06f7aa
--- /dev/null
+++ b/unity-ggjj/Assets/StreamingAssets/Music/Tests/static.ogg.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 3c85667956b5a1246b464e805f01ebb3
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/unity-ggjj/Assets/Tests/PlayModeTests/Scripts/LoopableMusicClipTests.cs b/unity-ggjj/Assets/Tests/PlayModeTests/Scripts/LoopableMusicClipTests.cs
new file mode 100644
index 000000000..0a96f6bb2
--- /dev/null
+++ b/unity-ggjj/Assets/Tests/PlayModeTests/Scripts/LoopableMusicClipTests.cs
@@ -0,0 +1,131 @@
+using System;
+using System.Collections;
+using NUnit.Framework;
+using UnityEngine.TestTools;
+
+namespace Tests.PlayModeTests.Scripts
+{
+ public class PlayLoopTests
+ {
+ private LoopableMusicClip _playLoop;
+ private int _second;
+
+ [UnitySetUp]
+ public IEnumerator UnitySetUp()
+ {
+ _playLoop = new LoopableMusicClip();
+ var initialize = _playLoop.Initialize("Tests/static.ogg");
+ yield return initialize;
+ _second = _playLoop.TimeToSamples(1);
+ }
+
+ [TearDown]
+ public void UnityTearDown()
+ {
+ _playLoop.SetCurrentPlaybackHead(0);
+ }
+
+ [Test]
+ public void EnsureMP3Fails()
+ {
+ Assert.Throws(() => {
+ _playLoop.Initialize("Tests/static.mp3").MoveNext();
+ });
+ }
+
+ [Test]
+ public void Handle5SecondsWithLoop()
+ {
+ var data = new float[_playLoop.TimeToSamples(5)];
+ _playLoop.GenerateStream(data);
+
+ for (var i = 0; i < data.Length; i++)
+ {
+ if (i < _second)
+ {
+ Assert.That(data[i], i % 2 != 1 ? Is.EqualTo(0.75f).Within(0.05f) : Is.EqualTo(-0.75f).Within(0.05f));
+ continue;
+ }
+
+ Assert.That(data[i], i % 2 != 1 ? Is.EqualTo(0.5f).Within(0.05f) : Is.EqualTo(-0.5f).Within(0.05f));
+ }
+ }
+
+ [Test]
+ public void HandleIntroOnly()
+ {
+ var data = new float[_playLoop.TimeToSamples(1)];
+ _playLoop.GenerateStream(data);
+
+ for (var i = 0; i < data.Length; i++)
+ {
+ Assert.That(data[i], i % 2 != 1 ? Is.EqualTo(0.75f).Within(0.05f) : Is.EqualTo(-0.75f).Within(0.05f));
+ }
+ }
+
+ [Test]
+ public void Handle5SecondsWithLoopAndOutro()
+ {
+ _playLoop.ContinueLooping = false;
+
+ var data = new float[_playLoop.TimeToSamples(5)];
+ _playLoop.GenerateStream(data);
+
+ for (var i = 0; i < data.Length; i++)
+ {
+ if (i < _second)
+ {
+ Assert.That(data[i], i % 2 != 1 ? Is.EqualTo(0.75f).Within(0.05f) : Is.EqualTo(-0.75f).Within(0.05f));
+ continue;
+ }
+
+ if (i < _second * 2)
+ {
+ Assert.That(data[i], i % 2 != 1 ? Is.EqualTo(0.5f).Within(0.05f) : Is.EqualTo(-0.5f).Within(0.05f));
+ continue;
+ }
+
+ if (i < _second * 3)
+ {
+ Assert.That(data[i], i % 2 != 1 ? Is.EqualTo(0.25f).Within(0.05f) : Is.EqualTo(-0.25f).Within(0.05f));
+ continue;
+ }
+
+ Assert.That(data[i], Is.EqualTo(0f).Within(0.05f));
+ }
+ }
+
+ [Test]
+ public void TimeToSamplesAndBackwards()
+ {
+ const int SECONDS = 5;
+ const int SAMPLES = 44100 * 2 * SECONDS;
+ var time = _playLoop.SamplesToTime(SAMPLES);
+ Assert.That(time, Is.EqualTo(SECONDS));
+
+ var calculatedSamples = _playLoop.TimeToSamples(time);
+ Assert.That(calculatedSamples, Is.EqualTo(SAMPLES));
+ }
+
+ [Test]
+ public void GettingClipPreInitializationFails()
+ {
+ Assert.Throws(() =>
+ {
+ var newLoop = new LoopableMusicClip();
+ _ = newLoop.Clip;
+ });
+ }
+
+ [Test]
+ public void GettingClipThriceWorks()
+ {
+ var clip = _playLoop.Clip;
+ Assert.That(clip, Is.Not.Null);
+ clip = _playLoop.Clip;
+ Assert.That(clip, Is.Not.Null);
+ clip = _playLoop.Clip;
+ Assert.That(clip, Is.Not.Null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/unity-ggjj/Assets/Tests/PlayModeTests/Scripts/LoopableMusicClipTests.cs.meta b/unity-ggjj/Assets/Tests/PlayModeTests/Scripts/LoopableMusicClipTests.cs.meta
new file mode 100644
index 000000000..c70b21bde
--- /dev/null
+++ b/unity-ggjj/Assets/Tests/PlayModeTests/Scripts/LoopableMusicClipTests.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: b56f2735c2cc43cbaaa7a11c937c31e1
+timeCreated: 1705786289
\ No newline at end of file
diff --git a/unity-ggjj/Assets/audiotest.unity b/unity-ggjj/Assets/audiotest.unity
new file mode 100644
index 000000000..1197336a2
--- /dev/null
+++ b/unity-ggjj/Assets/audiotest.unity
@@ -0,0 +1,373 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 9
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 3
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_GIWorkflowMode: 1
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 0
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &1338945248
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1338945252}
+ - component: {fileID: 1338945251}
+ - component: {fileID: 1338945250}
+ - component: {fileID: 1338945253}
+ - component: {fileID: 1338945249}
+ m_Layer: 0
+ m_Name: GameObject
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1338945249
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1338945248}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 8e6978e948ed17b4cab0f4f80661f63b, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ source: {fileID: 1338945250}
+--- !u!82 &1338945250
+AudioSource:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1338945248}
+ m_Enabled: 1
+ serializedVersion: 4
+ OutputAudioMixerGroup: {fileID: 0}
+ m_audioClip: {fileID: 0}
+ m_PlayOnAwake: 1
+ m_Volume: 1
+ m_Pitch: 1
+ Loop: 0
+ Mute: 0
+ Spatialize: 0
+ SpatializePostEffects: 0
+ Priority: 128
+ DopplerLevel: 1
+ MinDistance: 1
+ MaxDistance: 500
+ Pan2D: 0
+ rolloffMode: 0
+ BypassEffects: 0
+ BypassListenerEffects: 0
+ BypassReverbZones: 0
+ rolloffCustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ - serializedVersion: 3
+ time: 1
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ panLevelCustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ spreadCustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ reverbZoneMixCustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+--- !u!81 &1338945251
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1338945248}
+ m_Enabled: 1
+--- !u!4 &1338945252
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1338945248}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0.016266668, y: 0, z: 90}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!82 &1338945253
+AudioSource:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1338945248}
+ m_Enabled: 1
+ serializedVersion: 4
+ OutputAudioMixerGroup: {fileID: 0}
+ m_audioClip: {fileID: 0}
+ m_PlayOnAwake: 1
+ m_Volume: 1
+ m_Pitch: 1
+ Loop: 0
+ Mute: 0
+ Spatialize: 0
+ SpatializePostEffects: 0
+ Priority: 128
+ DopplerLevel: 1
+ MinDistance: 1
+ MaxDistance: 500
+ Pan2D: 0
+ rolloffMode: 0
+ BypassEffects: 0
+ BypassListenerEffects: 0
+ BypassReverbZones: 0
+ rolloffCustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ - serializedVersion: 3
+ time: 1
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ panLevelCustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ spreadCustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 0
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ reverbZoneMixCustomCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
diff --git a/unity-ggjj/Assets/audiotest.unity.meta b/unity-ggjj/Assets/audiotest.unity.meta
new file mode 100644
index 000000000..66d2572e6
--- /dev/null
+++ b/unity-ggjj/Assets/audiotest.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 52e74c2db29781942808775e8c7ee124
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/unity-ggjj/ProjectSettings/EditorBuildSettings.asset b/unity-ggjj/ProjectSettings/EditorBuildSettings.asset
index 32decdcf9..4d03a6799 100644
--- a/unity-ggjj/ProjectSettings/EditorBuildSettings.asset
+++ b/unity-ggjj/ProjectSettings/EditorBuildSettings.asset
@@ -6,8 +6,8 @@ EditorBuildSettings:
serializedVersion: 2
m_Scenes:
- enabled: 1
- path: Assets/Scenes/Splash.unity
- guid: 1959a19be84d14112b3a7d5d3710de22
+ path: Assets/audiotest.unity
+ guid: 52e74c2db29781942808775e8c7ee124
- enabled: 1
path: Assets/Scenes/MainMenu.unity
guid: e284f312d553e436bb12847cc8ad82ee
@@ -17,4 +17,7 @@ EditorBuildSettings:
- enabled: 1
path: Assets/Scenes/Credits.unity
guid: 3497ab32eed99544bbc089c700ca3f88
+ - enabled: 1
+ path: Assets/Scenes/Splash.unity
+ guid: 1959a19be84d14112b3a7d5d3710de22
m_configObjects: {}
diff --git a/unity-ggjj/unity-ggjj.sln.DotSettings b/unity-ggjj/unity-ggjj.sln.DotSettings
index 842dbf580..0a894cf6a 100644
--- a/unity-ggjj/unity-ggjj.sln.DotSettings
+++ b/unity-ggjj/unity-ggjj.sln.DotSettings
@@ -1,5 +1,7 @@
BG
+ MP
+ OGG
True
True
True