diff --git a/Assets/Scenes/SplitScreenTest.unity b/Assets/Scenes/SplitScreenTest.unity index 5907baa..2ac40b5 100644 --- a/Assets/Scenes/SplitScreenTest.unity +++ b/Assets/Scenes/SplitScreenTest.unity @@ -158,22 +158,22 @@ MonoBehaviour: baseGame: 0 modPath: arguments: - libraryName: + playerNumber: 1 - mainCamera: {fileID: 821010101} baseGame: 1 modPath: arguments: - libraryName: uniquake2 + playerNumber: 2 - mainCamera: {fileID: 1512894441} baseGame: 2 modPath: arguments: - libraryName: uniquake3 + playerNumber: 3 - mainCamera: {fileID: 506815091} baseGame: 0 modPath: dopa arguments: - libraryName: uniquake4 + playerNumber: 4 visualStyles: - {fileID: 11400000, guid: d187fe54fb9a3e047bf4cec083877e72, type: 2} --- !u!4 &157597865 diff --git a/Assets/Scripts/SplitScreenTest.cs b/Assets/Scripts/SplitScreenTest.cs index 90a2fae..459cc76 100644 --- a/Assets/Scripts/SplitScreenTest.cs +++ b/Assets/Scripts/SplitScreenTest.cs @@ -31,7 +31,7 @@ public class SplitScreenTest : MonoBehaviour uq.Camera = gameInstance.mainCamera; uq.GameLayer = gameLayer; uq.ViewModelLayer = viewLayer; - uq.LibraryOverride = gameInstance.libraryName; + uq.PlayerNumber = gameInstance.playerNumber; uq.SetVisualStyle(visualStyles[0]); gameLayer += layerStride; @@ -58,6 +58,6 @@ public class SplitScreenTest : MonoBehaviour public string arguments; - public string libraryName; + public int playerNumber; } } diff --git a/Assets/Scripts/UniQuake.Interop.cs b/Assets/Scripts/UniQuake.Interop.cs index 5dc79da..578ac1e 100644 --- a/Assets/Scripts/UniQuake.Interop.cs +++ b/Assets/Scripts/UniQuake.Interop.cs @@ -44,11 +44,12 @@ public partial class UniQuake string dllFile = Path.Combine(Application.dataPath, DllPath); // Experimental code to allow running multiple instances of Quake next to each other - if (!string.IsNullOrEmpty(LibraryOverride)) + if (PlayerNumber > 1) { string directory = Path.GetDirectoryName(dllFile); + string filename = Path.GetFileNameWithoutExtension(dllFile); string extension = Path.GetExtension(dllFile); - dllFile = Path.Combine(directory, LibraryOverride + extension); + dllFile = Path.Combine(directory, filename + PlayerNumber + extension); } libraryHandle = SystemLibrary.LoadLibrary(dllFile); diff --git a/Assets/Scripts/UniQuake.cs b/Assets/Scripts/UniQuake.cs index bdf2f81..7c513ec 100644 --- a/Assets/Scripts/UniQuake.cs +++ b/Assets/Scripts/UniQuake.cs @@ -28,7 +28,7 @@ public partial class UniQuake: MonoBehaviour public string ModDirectory { get; set; } public string[] AdditionalArguments { get; set; } - public string LibraryOverride { get; set; } + public int PlayerNumber { get; set; } /// /// Time since startup for this particular instance of Quake @@ -101,7 +101,7 @@ public partial class UniQuake: MonoBehaviour try { - UniQuake_SetFmodSystem(AudioManager.Instance.FmodSystem.handle); + UniQuake_SetFmodSystem(AudioManager.Instance.FmodSystem.handle, PlayerNumber); UniQuake_SetSysCallbacks(systemModule.ContextPtr, systemModule.CallbacksPtr); UniQuake_SetRenderCallbacks(renderModule.ContextPtr, renderModule.CallbacksPtr); UniQuake_SetGameCallbacks(gameModule.ContextPtr, gameModule.CallbacksPtr);