Fix audio on MacOS (#214)

* JoyShockLibrary

Fix PlayerInput.cs errors on MacOS
Fix libraries not being added to the final build

* how did i do this

* both !

* Fix Audio on MacOS (and fix JSL again)

* Extra notes
This commit is contained in:
Saraistupid 2023-01-21 04:35:00 +02:00 committed by GitHub
parent d41463ed82
commit 002fa19971
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 59 additions and 58 deletions

Binary file not shown.

View file

@ -6,7 +6,7 @@ PluginImporter:
iconMap: {} iconMap: {}
executionOrder: {} executionOrder: {}
defineConstraints: [] defineConstraints: []
isPreloaded: 0 isPreloaded: 1
isOverridable: 0 isOverridable: 0
isExplicitlyReferenced: 0 isExplicitlyReferenced: 0
validateReferences: 1 validateReferences: 1
@ -16,23 +16,23 @@ PluginImporter:
second: second:
enabled: 0 enabled: 0
settings: settings:
Exclude Android: 1 Exclude Android: 0
Exclude Editor: 0 Exclude Editor: 0
Exclude Linux64: 1 Exclude Linux64: 1
Exclude OSXUniversal: 0 Exclude OSXUniversal: 0
Exclude Win: 1 Exclude Win: 1
Exclude Win64: 1 Exclude Win64: 1
Exclude iOS: 1 Exclude iOS: 0
- first: - first:
Android: Android Android: Android
second: second:
enabled: 0 enabled: 1
settings: settings:
CPU: ARMv7 CPU: ARMv7
- first: - first:
Any: Any:
second: second:
enabled: 0 enabled: 1
settings: {} settings: {}
- first: - first:
Editor: Editor Editor: Editor
@ -41,7 +41,7 @@ PluginImporter:
settings: settings:
CPU: AnyCPU CPU: AnyCPU
DefaultValueInitialized: true DefaultValueInitialized: true
OS: OSX OS: AnyOS
- first: - first:
Standalone: Linux64 Standalone: Linux64
second: second:
@ -69,7 +69,7 @@ PluginImporter:
- first: - first:
iPhone: iOS iPhone: iOS
second: second:
enabled: 0 enabled: 1
settings: settings:
AddToEmbeddedBinaries: false AddToEmbeddedBinaries: false
CPU: AnyCPU CPU: AnyCPU

View file

@ -14,17 +14,17 @@ namespace HeavenStudio
public const int RIGHT = 1; public const int RIGHT = 1;
public const int DOWN = 2; public const int DOWN = 2;
public const int LEFT = 3; public const int LEFT = 3;
/////////////////////////////// ///////////////////////////////
////TEMPORARY JSL FUNCTIONS//// ////TEMPORARY JSL FUNCTIONS////
/////////////////////////////// ///////////////////////////////
static int jslDevicesFound = 0; static int jslDevicesFound = 0;
static int jslDevicesConnected = 0; static int jslDevicesConnected = 0;
static int[] jslDeviceHandles; static int[] jslDeviceHandles;
static List<InputController> inputDevices; static List<InputController> inputDevices;
public static int InitInputControllers() public static int InitInputControllers()
{ {
inputDevices = new List<InputController>(); inputDevices = new List<InputController>();
@ -34,11 +34,11 @@ namespace HeavenStudio
keyboard.InitializeController(); keyboard.InitializeController();
inputDevices.Add(keyboard); inputDevices.Add(keyboard);
//end Keyboard setup //end Keyboard setup
//JoyShock setup //JoyShock setup
Debug.Log("Flushing possible JoyShocks..."); Debug.Log("Flushing possible JoyShocks...");
DisconnectJoyshocks(); DisconnectJoyshocks();
jslDevicesFound = JslConnectDevices(); jslDevicesFound = JslConnectDevices();
if (jslDevicesFound > 0) if (jslDevicesFound > 0)
{ {
@ -53,7 +53,7 @@ namespace HeavenStudio
Debug.Log("Found " + jslDevicesFound + " JoyShocks."); Debug.Log("Found " + jslDevicesFound + " JoyShocks.");
Debug.Log("Connected " + jslDevicesConnected + " JoyShocks."); Debug.Log("Connected " + jslDevicesConnected + " JoyShocks.");
} }
foreach (int i in jslDeviceHandles) foreach (int i in jslDeviceHandles)
{ {
Debug.Log("Setting up JoyShock: ( Handle " + i + ", type " + JslGetControllerType(i) + " )"); Debug.Log("Setting up JoyShock: ( Handle " + i + ", type " + JslGetControllerType(i) + " )");
@ -68,27 +68,27 @@ namespace HeavenStudio
Debug.Log("No JoyShocks found."); Debug.Log("No JoyShocks found.");
} }
//end JoyShock setup //end JoyShock setup
//TODO: XInput setup (boo) //TODO: XInput setup (boo)
//end XInput setup //end XInput setup
return inputDevices.Count; return inputDevices.Count;
} }
public static int GetNumControllersConnected() public static int GetNumControllersConnected()
{ {
return inputDevices.Count; return inputDevices.Count;
} }
public static List<InputController> GetInputControllers() public static List<InputController> GetInputControllers()
{ {
return inputDevices; return inputDevices;
} }
public static InputController GetInputController(int player) public static InputController GetInputController(int player)
{ {
// Needed so Keyboard works on MacOS // Needed so Keyboard works on MacOS
#if UNITY_EDITOR_OSX #if UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX
inputDevices = new List<InputController>(); inputDevices = new List<InputController>();
if(inputDevices.Count < 1) if(inputDevices.Count < 1)
{ {
@ -110,7 +110,7 @@ namespace HeavenStudio
} }
return null; return null;
} }
public static int GetInputControllerId(int player) public static int GetInputControllerId(int player)
{ {
//select input controller id that has player field set to player //select input controller id that has player field set to player
@ -120,7 +120,7 @@ namespace HeavenStudio
// Needed so Keyboard works on MacOS // Needed so Keyboard works on MacOS
#if UNITY_EDITOR_OSX #if UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX
inputDevices = new List<InputController>(); inputDevices = new List<InputController>();
if(inputDevices.Count < 1) if(inputDevices.Count < 1)
{ {
@ -139,11 +139,11 @@ namespace HeavenStudio
} }
return -1; return -1;
} }
public static void UpdateInputControllers() public static void UpdateInputControllers()
{ {
// Needed so Keyboard works on MacOS // Needed so Keyboard works on MacOS
#if UNITY_EDITOR_OSX #if UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX
inputDevices = new List<InputController>(); inputDevices = new List<InputController>();
if(inputDevices.Count < 1) if(inputDevices.Count < 1)
{ {
@ -158,7 +158,7 @@ namespace HeavenStudio
i.UpdateState(); i.UpdateState();
} }
} }
public static void DisconnectJoyshocks() public static void DisconnectJoyshocks()
{ {
if (jslDeviceHandles != null && jslDevicesConnected > 0 && jslDeviceHandles.Length > 0) if (jslDeviceHandles != null && jslDevicesConnected > 0 && jslDeviceHandles.Length > 0)
@ -176,7 +176,7 @@ namespace HeavenStudio
jslDevicesFound = 0; jslDevicesFound = 0;
jslDevicesConnected = 0; jslDevicesConnected = 0;
} }
// The autoplay isn't activated AND // The autoplay isn't activated AND
// The song is actually playing AND // The song is actually playing AND
// The GameManager allows you to Input // The GameManager allows you to Input
@ -184,96 +184,96 @@ namespace HeavenStudio
{ {
return !GameManager.instance.autoplay && Conductor.instance.isPlaying && GameManager.instance.canInput; return !GameManager.instance.autoplay && Conductor.instance.isPlaying && GameManager.instance.canInput;
} }
/*--------------------*/ /*--------------------*/
/* MAIN INPUT METHODS */ /* MAIN INPUT METHODS */
/*--------------------*/ /*--------------------*/
// BUTTONS // BUTTONS
//TODO: refactor for controller and custom binds, currently uses temporary button checks //TODO: refactor for controller and custom binds, currently uses temporary button checks
public static bool Pressed(bool includeDPad = false) public static bool Pressed(bool includeDPad = false)
{ {
bool keyDown = GetInputController(1).GetButtonDown((int) InputController.ButtonsPad.PadE) || (includeDPad && GetAnyDirectionDown()); bool keyDown = GetInputController(1).GetButtonDown((int) InputController.ButtonsPad.PadE) || (includeDPad && GetAnyDirectionDown());
return keyDown && !GameManager.instance.autoplay && Conductor.instance.isPlaying && GameManager.instance.canInput ; return keyDown && !GameManager.instance.autoplay && Conductor.instance.isPlaying && GameManager.instance.canInput ;
} }
public static bool PressedUp(bool includeDPad = false) public static bool PressedUp(bool includeDPad = false)
{ {
bool keyUp = GetInputController(1).GetButtonUp((int) InputController.ButtonsPad.PadE) || (includeDPad && GetAnyDirectionUp()); bool keyUp = GetInputController(1).GetButtonUp((int) InputController.ButtonsPad.PadE) || (includeDPad && GetAnyDirectionUp());
return keyUp && !GameManager.instance.autoplay && Conductor.instance.isPlaying && GameManager.instance.canInput; return keyUp && !GameManager.instance.autoplay && Conductor.instance.isPlaying && GameManager.instance.canInput;
} }
public static bool Pressing(bool includeDPad = false) public static bool Pressing(bool includeDPad = false)
{ {
bool pressing = GetInputController(1).GetButton((int) InputController.ButtonsPad.PadE) || (includeDPad && GetAnyDirection()); bool pressing = GetInputController(1).GetButton((int) InputController.ButtonsPad.PadE) || (includeDPad && GetAnyDirection());
return pressing && !GameManager.instance.autoplay && Conductor.instance.isPlaying && GameManager.instance.canInput; return pressing && !GameManager.instance.autoplay && Conductor.instance.isPlaying && GameManager.instance.canInput;
} }
public static bool AltPressed() public static bool AltPressed()
{ {
bool down = GetInputController(1).GetButtonDown((int) InputController.ButtonsPad.PadS); bool down = GetInputController(1).GetButtonDown((int) InputController.ButtonsPad.PadS);
return down && playerHasControl(); return down && playerHasControl();
} }
public static bool AltPressedUp() public static bool AltPressedUp()
{ {
bool up = GetInputController(1).GetButtonUp((int) InputController.ButtonsPad.PadS); bool up = GetInputController(1).GetButtonUp((int) InputController.ButtonsPad.PadS);
return up && playerHasControl(); return up && playerHasControl();
} }
public static bool AltPressing() public static bool AltPressing()
{ {
bool pressing = GetInputController(1).GetButton((int) InputController.ButtonsPad.PadS); bool pressing = GetInputController(1).GetButton((int) InputController.ButtonsPad.PadS);
return pressing && playerHasControl(); return pressing && playerHasControl();
} }
//Directions //Directions
public static bool GetAnyDirectionDown() public static bool GetAnyDirectionDown()
{ {
InputController c = GetInputController(1); InputController c = GetInputController(1);
return (c.GetHatDirectionDown((InputController.InputDirection) UP) return (c.GetHatDirectionDown((InputController.InputDirection) UP)
|| c.GetHatDirectionDown((InputController.InputDirection) DOWN) || c.GetHatDirectionDown((InputController.InputDirection) DOWN)
|| c.GetHatDirectionDown((InputController.InputDirection) LEFT) || c.GetHatDirectionDown((InputController.InputDirection) LEFT)
|| c.GetHatDirectionDown((InputController.InputDirection) RIGHT) || c.GetHatDirectionDown((InputController.InputDirection) RIGHT)
) && playerHasControl(); ) && playerHasControl();
} }
public static bool GetAnyDirectionUp() public static bool GetAnyDirectionUp()
{ {
InputController c = GetInputController(1); InputController c = GetInputController(1);
return (c.GetHatDirectionUp((InputController.InputDirection) UP) return (c.GetHatDirectionUp((InputController.InputDirection) UP)
|| c.GetHatDirectionUp((InputController.InputDirection) DOWN) || c.GetHatDirectionUp((InputController.InputDirection) DOWN)
|| c.GetHatDirectionUp((InputController.InputDirection) LEFT) || c.GetHatDirectionUp((InputController.InputDirection) LEFT)
|| c.GetHatDirectionUp((InputController.InputDirection) RIGHT) || c.GetHatDirectionUp((InputController.InputDirection) RIGHT)
) && playerHasControl(); ) && playerHasControl();
} }
public static bool GetAnyDirection() public static bool GetAnyDirection()
{ {
InputController c = GetInputController(1); InputController c = GetInputController(1);
return (c.GetHatDirection((InputController.InputDirection) UP) return (c.GetHatDirection((InputController.InputDirection) UP)
|| c.GetHatDirection((InputController.InputDirection) DOWN) || c.GetHatDirection((InputController.InputDirection) DOWN)
|| c.GetHatDirection((InputController.InputDirection) LEFT) || c.GetHatDirection((InputController.InputDirection) LEFT)
|| c.GetHatDirection((InputController.InputDirection) RIGHT) || c.GetHatDirection((InputController.InputDirection) RIGHT)
) && playerHasControl(); ) && playerHasControl();
} }
public static bool GetSpecificDirection(int direction) public static bool GetSpecificDirection(int direction)
{ {
return GetInputController(1).GetHatDirection((InputController.InputDirection) direction) && playerHasControl(); return GetInputController(1).GetHatDirection((InputController.InputDirection) direction) && playerHasControl();
} }
public static bool GetSpecificDirectionDown(int direction) public static bool GetSpecificDirectionDown(int direction)
{ {
return GetInputController(1).GetHatDirectionDown((InputController.InputDirection) direction) && playerHasControl(); return GetInputController(1).GetHatDirectionDown((InputController.InputDirection) direction) && playerHasControl();
} }
public static bool GetSpecificDirectionUp(int direction) public static bool GetSpecificDirectionUp(int direction)
{ {
return GetInputController(1).GetHatDirectionUp((InputController.InputDirection) direction) && playerHasControl(); return GetInputController(1).GetHatDirectionUp((InputController.InputDirection) direction) && playerHasControl();

View file

@ -29,7 +29,8 @@ This project is still in development, so there are currently no release builds y
- [MacOS](https://nightly.link/megaminerjenny/HeavenStudio/workflows/main/master/StandaloneOSX-build.zip) - [MacOS](https://nightly.link/megaminerjenny/HeavenStudio/workflows/main/master/StandaloneOSX-build.zip)
## Self-Building ## Self-Building
#### Note: Mac-OS and Linux-based builds are not fully tested, you may [experience bugs with audio-related tasks](https://github.com/megaminerjenny/HeavenStudio/issues/72). #### Note: MacOS and Linux-based builds are not fully tested, you may [experience bugs with audio-related tasks](https://github.com/megaminerjenny/HeavenStudio/issues/72).
#### Note: on MacOS, You need to [set the app as executable by yourself](https://cdn.discordapp.com/attachments/954121092564402207/1060769484278861844/IMG_6336.jpg).
Heaven Studio is made in [Unity 2020.3.25f1](https://unity3d.com/unity/whats-new/2020.3.25), Heaven Studio is made in [Unity 2020.3.25f1](https://unity3d.com/unity/whats-new/2020.3.25),
and programmed with [Visual Studio Code](https://code.visualstudio.com/). and programmed with [Visual Studio Code](https://code.visualstudio.com/).