DigitalzombieTLD vor 3 Jahren
Ursprung
Commit
e5b94eb488
7 geänderte Dateien mit 105 neuen und 47 gelöschten Zeilen
  1. 36 3
      AudioMain.cs
  2. 12 0
      AudioManager.csproj
  3. 2 2
      Components/Queue.cs
  4. 23 13
      Components/Shot.cs
  5. 2 1
      Harmony/VolumePatches.cs
  6. 11 9
      Manager/ClipManager.cs
  7. 19 19
      Master/SettingMaster.cs

+ 36 - 3
AudioMain.cs

@@ -1,11 +1,16 @@
 using MelonLoader;
 using Il2CppInterop.Runtime.Injection;
+using Il2Cpp;
+using UnityEngine;
+using UnityEngine.Rendering;
 
 namespace AudioMgr
 {
     public class AudioMain : MelonMod
 	{
-        bool initialized = false;           
+        bool initialized = false;
+        ClipManager myClipManager;
+        Shot myPlayerShot;
 
         public override void OnInitializeMelon() 
 		{
@@ -18,11 +23,24 @@ namespace AudioMgr
             if (sceneName.Contains("Boot"))
             {
                 AudioMaster.CreateMasterParent();
+                myClipManager = new ClipManager();
+
+                myClipManager.LoadClipFromFile("start", "start.mp3", ClipManager.LoadType.Decompressed);
+                myClipManager.LoadClipFromFile("shutdown", "shutdown.mp3", ClipManager.LoadType.Decompressed);
             }
 
             if (sceneName.Contains("Menu"))
             {
                 initialized = true;
+               
+
+                myPlayerShot = AudioMaster.CreatePlayerShot(AudioMaster.SourceType.Ambience);
+
+
+                PatchMaster.AddReplacePatch("PLAY_SNDMECHDOORWOODOPEN1", myClipManager, "start", AudioMaster.SourceType.SFX);
+                PatchMaster.AddReplacePatch("PLAY_SNDMECHDOORWOODCLOSE1", myClipManager, "shutdown", AudioMaster.SourceType.SFX);
+
+              
             }
         }
 
@@ -32,6 +50,21 @@ namespace AudioMgr
             {
                 AudioMaster.MoveMasterToPlayer();
             }
-        }        
-	}
+        }
+
+        public override void OnUpdate()
+        {
+            /*
+            if (InputManager.GetKeyDown(InputManager.m_CurrentContext, KeyCode.Keypad0))
+            {
+                // myPlayerShot.PlayOneshot(myClipManager.GetClip("waterfall"));
+                PatchMaster.AddSkipPatch("PLAY_RANDOMBUILDINGCREAKS1");
+                PatchMaster.AddParameterPatch("WINDGUSTINTENSITY", 0f, PatchMaster.ParameterType.Limitter);
+                PatchMaster.AddParameterPatch("WINDACTUALSPEED", 0f, PatchMaster.ParameterType.Limitter); 
+                PatchMaster.AddParameterPatch("AMBIENTVOLUME", 0f, PatchMaster.ParameterType.Limitter);
+                PatchMaster.AddParameterPatch("GLOBALVOLUME", 0f, PatchMaster.ParameterType.Limitter);
+            }          
+            */
+        }
+    }
 }

+ 12 - 0
AudioManager.csproj

@@ -48,6 +48,18 @@
 
     <!--This is the list of assemblies that the mod references. Most of these are unnecessary for normal mods, but are included here for completeness.-->
     <ItemGroup>
+        <Reference Include="Il2CppAk.Wwise.Api.WAAPI">
+          <HintPath>..\..\..\..\Games\Steam\steamapps\common\TheLongDark\MelonLoader\Il2CppAssemblies\Il2CppAk.Wwise.Api.WAAPI.dll</HintPath>
+        </Reference>
+        <Reference Include="Il2CppAK.Wwise.Unity.API">
+          <HintPath>..\..\..\..\Games\Steam\steamapps\common\TheLongDark\MelonLoader\Il2CppAssemblies\Il2CppAK.Wwise.Unity.API.dll</HintPath>
+        </Reference>
+        <Reference Include="Il2CppAK.Wwise.Unity.API.WwiseTypes">
+          <HintPath>..\..\..\..\Games\Steam\steamapps\common\TheLongDark\MelonLoader\Il2CppAssemblies\Il2CppAK.Wwise.Unity.API.WwiseTypes.dll</HintPath>
+        </Reference>
+        <Reference Include="Il2CppAK.Wwise.Unity.MonoBehaviour">
+          <HintPath>..\..\..\..\Games\Steam\steamapps\common\TheLongDark\MelonLoader\Il2CppAssemblies\Il2CppAK.Wwise.Unity.MonoBehaviour.dll</HintPath>
+        </Reference>
         <Reference Include="MelonLoader" />
         <Reference Include="0Harmony" />
         <Reference Include="Il2CppInterop.Common" />

+ 2 - 2
Components/Queue.cs

@@ -188,15 +188,15 @@ namespace AudioMgr
         }
 
         [HideFromIl2Cpp]
-        public void Settings(ClipManager assignedClipManager, float timeGap, Loop loopType)
+        public void AssignClipManager(ClipManager assignedClipManager, float timeGap, Loop loopType)
         {
+            Stop();
             _assignedClipManager = assignedClipManager;
             _timeGap = timeGap;
             _loop = loopType;
             _currentClipIndex = 0;
         }
        
-
         [HideFromIl2Cpp]
         private void OnEnable()
         {

+ 23 - 13
Components/Shot.cs

@@ -3,6 +3,7 @@ using Il2CppInterop.Runtime.Attributes;
 using MelonLoader;
 using System.Collections;
 using UnityEngine;
+using UnityEngine.Playables;
 
 namespace AudioMgr
 {
@@ -18,6 +19,8 @@ namespace AudioMgr
         private bool _isEnabled = false;
        
         private AudioMaster.SourceType _sourceType;
+        public enum PlayState { Stopped, Playing, Paused };
+        private PlayState _playState = PlayState.Stopped;
 
         [HideFromIl2Cpp]
         public void Setup(AudioMaster.SourceType sourceType)
@@ -77,26 +80,33 @@ namespace AudioMgr
         }
 
         [HideFromIl2Cpp]
-        public void Pause()
+        public void Play(Clip audioClip)
         {
-            _audioSource.Pause();
+            Stop();
+            _playState = PlayState.Playing;
+            MelonCoroutines.Start(PlayRoutine(audioClip));
         }
 
-        [HideFromIl2Cpp]
-        public void Resume()
+        private IEnumerator PlayRoutine(Clip audioClip)
         {
-            _audioSource.UnPause();           
-        }
+            double _startTime = AudioSettings.dspTime + 0.6;
+            double _endTime = _startTime + audioClip.clipLength + 0.6;
 
-        [HideFromIl2Cpp]
-        public void Play()
-        {
-            _audioSource.Play();
-        }
+            _audioSource.PlayScheduled(_startTime);
+            _playState = PlayState.Playing;
+
+            while (AudioSettings.dspTime < _endTime)
+            {
+                yield return null;
+            }
+
+            Stop();
+        }      
 
         [HideFromIl2Cpp]
         public void Stop()
         {
+            _playState = PlayState.Stopped;
             _audioSource.Stop();
         }
 
@@ -110,14 +120,14 @@ namespace AudioMgr
         }
 
         [HideFromIl2Cpp]
-        public void Play(Clip audioClip)
+        public void PlayOneshot(Clip audioClip)
         {           
             MelonCoroutines.Start(PlayOneshotRoutine(audioClip));
         }
 
         [HideFromIl2Cpp]
         private IEnumerator PlayOneshotRoutine(Clip audioClip)
-        {            
+        {     
             _audioSource.PlayOneShot(audioClip.audioClip);
             yield return null;
         }

+ 2 - 1
Harmony/VolumePatches.cs

@@ -3,6 +3,7 @@ using UnityEngine;
 
 namespace AudioMgr
 {    
+    /*
     [HarmonyLib.HarmonyPatch(typeof(GameAudioManager), "SetRTPCValue")]
     public class VolumeChanged
     {
@@ -18,5 +19,5 @@ namespace AudioMgr
                 VolumeMaster.SetVolume(VolumeIDs.GetRtpcIDList()[rtpcID], rtpcValue/100);
             }           
         }
-    }    
+    } */   
 }

+ 11 - 9
Manager/ClipManager.cs

@@ -63,7 +63,8 @@ namespace AudioMgr
                 return;
             }
 
-            MelonCoroutines.Start(LoadClipFromBundleRoutine(newClipName, clipInBundle, assetBundle));
+            //MelonCoroutines.Start(LoadClipFromBundleRoutine(newClipName, clipInBundle, assetBundle));
+            LoadClipFromBundleRoutine(newClipName, clipInBundle, assetBundle);
         }
 
         public void LoadAllClipsFromBundle(AssetBundle assetBundle)
@@ -88,10 +89,10 @@ namespace AudioMgr
             }
         }
 
-        private IEnumerator LoadClipFromBundleRoutine(string newClipName, string clipInBundle, AssetBundle assetBundle)
+        //private IEnumerator LoadClipFromBundleRoutine(string newClipName, string clipInBundle, AssetBundle assetBundle)
+        private void LoadClipFromBundleRoutine(string newClipName, string clipInBundle, AssetBundle assetBundle)
         {
-            _loadedClips.Add(newClipName, new Clip(assetBundle.LoadAsset<AudioClip>(clipInBundle), newClipName));
-            yield break;
+            _loadedClips.Add(newClipName, new Clip(assetBundle.LoadAsset<AudioClip>(clipInBundle), newClipName));        
         }
 
         public void LoadClipsFromDir(string directory, LoadType loadType)
@@ -111,10 +112,12 @@ namespace AudioMgr
                 return;
             }
 
-            MelonCoroutines.Start(LoadClipFromFileRoutine(newClipName, fileName, loadType));
+            //MelonCoroutines.Start(LoadClipFromFileRoutine(newClipName, fileName, loadType));
+            LoadClipFromFileRoutine(newClipName, fileName, loadType);
         }
 
-        private IEnumerator LoadClipFromFileRoutine(string clipName, string fileName, LoadType loadType)
+        //private IEnumerator LoadClipFromFileRoutine(string clipName, string fileName, LoadType loadType)
+        private void LoadClipFromFileRoutine(string clipName, string fileName, LoadType loadType)
         {
             bool compressed = true;
             bool stream = false;
@@ -143,13 +146,12 @@ namespace AudioMgr
             www = UnityWebRequest.Get(downloaderPath + @"/" + fileName);
             www.SendWebRequest();
 
-            while (!www.isDone) yield return null;
+            //while (!www.isDone) yield return null;
+            while (!www.isDone)
 
             if (!www.isNetworkError && !www.isHttpError)
             {
                 _loadedClips[clipName] = new Clip(WebRequestWWW.InternalCreateAudioClipUsingDH(www.downloadHandler, www.url, stream, compressed, AudioType.UNKNOWN), clipName);
-                
-
             }
             else
             {

+ 19 - 19
Master/SettingMaster.cs

@@ -38,47 +38,47 @@ namespace AudioMgr
             _defaultSetting.Add(AudioMaster.SourceType.Custom, new Setting(AudioMaster.SourceType.Custom));
 
             _defaultSetting[AudioMaster.SourceType.SFX].spread = 0.0f;
-            _defaultSetting[AudioMaster.SourceType.SFX].panStereo = 1.0f;
-            _defaultSetting[AudioMaster.SourceType.SFX].dopplerLevel = 1.0f;
-            _defaultSetting[AudioMaster.SourceType.SFX].maxDistance = 800.0f;
+            _defaultSetting[AudioMaster.SourceType.SFX].panStereo = 0.0f;
+            _defaultSetting[AudioMaster.SourceType.SFX].dopplerLevel = 0f;
+            _defaultSetting[AudioMaster.SourceType.SFX].maxDistance = 18.0f;
             _defaultSetting[AudioMaster.SourceType.SFX].minDistance = 1.0f;
             _defaultSetting[AudioMaster.SourceType.SFX].pitch = 1.0f;
             _defaultSetting[AudioMaster.SourceType.SFX].spatialBlend = 1.0f;
-            _defaultSetting[AudioMaster.SourceType.SFX].rolloffFactor = 1.0f;
+            _defaultSetting[AudioMaster.SourceType.SFX].rolloffFactor = 0.8f;
             _defaultSetting[AudioMaster.SourceType.SFX].spatialize = true;
             _defaultSetting[AudioMaster.SourceType.SFX].rolloffMode = AudioRolloffMode.Linear;
             //_defaultSetting[AudioMaster.SourceType.SFX].rollOffCurve = stdRollOffCurve;
             _defaultSetting[AudioMaster.SourceType.SFX].priority = 128;
 
             _defaultSetting[AudioMaster.SourceType.Ambience].spread = 0.0f;
-            _defaultSetting[AudioMaster.SourceType.Ambience].panStereo = 1.0f;
-            _defaultSetting[AudioMaster.SourceType.Ambience].dopplerLevel = 1.0f;
-            _defaultSetting[AudioMaster.SourceType.Ambience].maxDistance = 500.0f;
-            _defaultSetting[AudioMaster.SourceType.Ambience].minDistance = 1.0f;
+            _defaultSetting[AudioMaster.SourceType.Ambience].panStereo = 0.0f;
+            _defaultSetting[AudioMaster.SourceType.Ambience].dopplerLevel = 0f;
+            _defaultSetting[AudioMaster.SourceType.Ambience].maxDistance = 2000.0f;
+            _defaultSetting[AudioMaster.SourceType.Ambience].minDistance = 50.0f;
             _defaultSetting[AudioMaster.SourceType.Ambience].pitch = 1.0f;
-            _defaultSetting[AudioMaster.SourceType.Ambience].spatialBlend = 0.2f;
-            _defaultSetting[AudioMaster.SourceType.Ambience].rolloffFactor = 1.0f;
+            _defaultSetting[AudioMaster.SourceType.Ambience].spatialBlend = 0.0f;
+            _defaultSetting[AudioMaster.SourceType.Ambience].rolloffFactor = 1f;
             _defaultSetting[AudioMaster.SourceType.Ambience].spatialize = true;
             _defaultSetting[AudioMaster.SourceType.Ambience].rolloffMode = AudioRolloffMode.Linear;
             //_defaultSetting[AudioMaster.SourceType.Ambience].rollOffCurve = stdRollOffCurve;
             _defaultSetting[AudioMaster.SourceType.Ambience].priority = 64;
 
-            _defaultSetting[AudioMaster.SourceType.Voice].spread = 1.0f;
-            _defaultSetting[AudioMaster.SourceType.Voice].panStereo = 1.0f;
-            _defaultSetting[AudioMaster.SourceType.Voice].dopplerLevel = 1.0f;
-            _defaultSetting[AudioMaster.SourceType.Voice].maxDistance = 50.0f;
+            _defaultSetting[AudioMaster.SourceType.Voice].spread = 0.0f;
+            _defaultSetting[AudioMaster.SourceType.Voice].panStereo = 0.0f;
+            _defaultSetting[AudioMaster.SourceType.Voice].dopplerLevel = 0f;
+            _defaultSetting[AudioMaster.SourceType.Voice].maxDistance = 20.0f;
             _defaultSetting[AudioMaster.SourceType.Voice].minDistance = 1.0f;
             _defaultSetting[AudioMaster.SourceType.Voice].pitch = 1.0f;
-            _defaultSetting[AudioMaster.SourceType.Voice].spatialBlend = 0.0f;
+            _defaultSetting[AudioMaster.SourceType.Voice].spatialBlend = 1.0f;
             _defaultSetting[AudioMaster.SourceType.Voice].rolloffFactor = 1.0f;
             _defaultSetting[AudioMaster.SourceType.Voice].spatialize = true;
             _defaultSetting[AudioMaster.SourceType.Voice].rolloffMode = AudioRolloffMode.Linear;
             //_defaultSetting[AudioMaster.SourceType.Voice].rollOffCurve = stdRollOffCurve;
             _defaultSetting[AudioMaster.SourceType.Voice].priority = 50;
 
-            _defaultSetting[AudioMaster.SourceType.BGM].spread = 1.0f;
-            _defaultSetting[AudioMaster.SourceType.BGM].panStereo = 1.0f;
-            _defaultSetting[AudioMaster.SourceType.BGM].dopplerLevel = 1.0f;
+            _defaultSetting[AudioMaster.SourceType.BGM].spread = 0.0f;
+            _defaultSetting[AudioMaster.SourceType.BGM].panStereo = 0.0f;
+            _defaultSetting[AudioMaster.SourceType.BGM].dopplerLevel = 0f;
             _defaultSetting[AudioMaster.SourceType.BGM].maxDistance = 10.0f;
             _defaultSetting[AudioMaster.SourceType.BGM].minDistance = 1.0f;
             _defaultSetting[AudioMaster.SourceType.BGM].pitch = 1.0f;
@@ -91,7 +91,7 @@ namespace AudioMgr
 
             _defaultSetting[AudioMaster.SourceType.Custom].spread = 0.0f;
             _defaultSetting[AudioMaster.SourceType.Custom].panStereo = 1.0f;
-            _defaultSetting[AudioMaster.SourceType.Custom].dopplerLevel = 1.0f;
+            _defaultSetting[AudioMaster.SourceType.Custom].dopplerLevel = 0f;
             _defaultSetting[AudioMaster.SourceType.Custom].maxDistance = 500.0f;
             _defaultSetting[AudioMaster.SourceType.Custom].minDistance = 1.0f;
             _defaultSetting[AudioMaster.SourceType.Custom].pitch = 1.0f;