605 lines
18 KiB
C#
605 lines
18 KiB
C#
|
|
using UnityEngine;
|
|||
|
|
using System.Collections;
|
|||
|
|
using System.Runtime.InteropServices;
|
|||
|
|
using System;
|
|||
|
|
|
|||
|
|
public class mouseCursorController : MonoBehaviour
|
|||
|
|
{
|
|||
|
|
[Header ("Main Settings")]
|
|||
|
|
[Space]
|
|||
|
|
|
|||
|
|
public bool useMouseCursorEnabled = true;
|
|||
|
|
|
|||
|
|
public bool useSmoothCursorSpeedOnGame = true;
|
|||
|
|
public float cursorSpeedOnGame = 400;
|
|||
|
|
public float cursorSpeedOnPauseMenu = 7;
|
|||
|
|
|
|||
|
|
public float cursorLerpSpeed = 10;
|
|||
|
|
|
|||
|
|
public bool enableGamepadCursorOnPause = true;
|
|||
|
|
public float timeToResetCursorAfterDisable = 1;
|
|||
|
|
|
|||
|
|
public bool useMouseLimits = true;
|
|||
|
|
|
|||
|
|
public bool activateCursorOnStart;
|
|||
|
|
|
|||
|
|
public bool useFixedTimeEnabled;
|
|||
|
|
|
|||
|
|
[Space]
|
|||
|
|
[Header ("Input Settings")]
|
|||
|
|
[Space]
|
|||
|
|
|
|||
|
|
public string horizontalXString = "Horizontal X";
|
|||
|
|
public string verticalYString = "Vertical Y";
|
|||
|
|
|
|||
|
|
public string mouseXString = "Mouse X";
|
|||
|
|
public string mouseYString = "Mouse Y";
|
|||
|
|
|
|||
|
|
public int buttonIndex = 0;
|
|||
|
|
public int joystickNumber = 1;
|
|||
|
|
|
|||
|
|
public bool useRightJoystickAxis = true;
|
|||
|
|
public bool useBothJoysticks;
|
|||
|
|
|
|||
|
|
[Space]
|
|||
|
|
[Header ("Debug")]
|
|||
|
|
[Space]
|
|||
|
|
|
|||
|
|
public bool showDebugPrint;
|
|||
|
|
|
|||
|
|
public bool ignoreMouseCursorUpdateActive;
|
|||
|
|
|
|||
|
|
public bool useTryCatchOnUpdateCursorActive;
|
|||
|
|
|
|||
|
|
[Space]
|
|||
|
|
|
|||
|
|
public float currentMouseSpeed;
|
|||
|
|
public Vector2 currentResolution;
|
|||
|
|
|
|||
|
|
[Space]
|
|||
|
|
[Space]
|
|||
|
|
|
|||
|
|
public Vector2 cursorPosition;
|
|||
|
|
float newX, newY;
|
|||
|
|
|
|||
|
|
Point cursorPos = new Point ();
|
|||
|
|
|
|||
|
|
[Space]
|
|||
|
|
[Space]
|
|||
|
|
|
|||
|
|
public bool usingActualMouse;
|
|||
|
|
public bool screenFocused;
|
|||
|
|
|
|||
|
|
[Space]
|
|||
|
|
[Space]
|
|||
|
|
|
|||
|
|
public bool cursorCurrentlyActive;
|
|||
|
|
public bool cursorPreviouslyActive;
|
|||
|
|
|
|||
|
|
public Vector2 mouseLimits;
|
|||
|
|
public bool horizontalLimitConfigured;
|
|||
|
|
public bool verticalLimitConfigured;
|
|||
|
|
|
|||
|
|
public Vector2 realMouseAxisInput;
|
|||
|
|
|
|||
|
|
public Vector2 axisInput;
|
|||
|
|
|
|||
|
|
public bool ignoreSetSelectedGameObjectOnUIByGamepad;
|
|||
|
|
|
|||
|
|
[Space]
|
|||
|
|
[Space]
|
|||
|
|
|
|||
|
|
public bool playerInputLocated;
|
|||
|
|
|
|||
|
|
public bool inputLocated;
|
|||
|
|
|
|||
|
|
[Space]
|
|||
|
|
[Header ("Components")]
|
|||
|
|
[Space]
|
|||
|
|
|
|||
|
|
public playerInputManager playerInput;
|
|||
|
|
public inputManager input;
|
|||
|
|
|
|||
|
|
[DllImport ("user32.dll")]
|
|||
|
|
static extern bool SetCursorPos (int X, int Y);
|
|||
|
|
|
|||
|
|
[DllImport ("user32.dll")]
|
|||
|
|
static extern bool GetCursorPos (out Point pos);
|
|||
|
|
|
|||
|
|
float lastTimeCursorEnabled;
|
|||
|
|
float lastTimeCursorDisabled;
|
|||
|
|
|
|||
|
|
bool mouseLimitsAssigned;
|
|||
|
|
|
|||
|
|
float lastTimeRealMouseUsed;
|
|||
|
|
float inputDifference;
|
|||
|
|
|
|||
|
|
string joystickString;
|
|||
|
|
|
|||
|
|
bool canUseGamepad;
|
|||
|
|
|
|||
|
|
string mouseXPlayerIDString;
|
|||
|
|
string mouseYPlayerIDString;
|
|||
|
|
string horizontalXPlayerIDString;
|
|||
|
|
string vertircalYPlayerIDString;
|
|||
|
|
|
|||
|
|
float originalCursorSpeedOnGame = -1;
|
|||
|
|
|
|||
|
|
|
|||
|
|
private static mouseCursorController _mouseCursorControllerInstance;
|
|||
|
|
|
|||
|
|
public static mouseCursorController Instance { get { return _mouseCursorControllerInstance; } }
|
|||
|
|
|
|||
|
|
bool instanceInitialized;
|
|||
|
|
|
|||
|
|
float currentUnscaledTime;
|
|||
|
|
|
|||
|
|
public void getComponentInstance ()
|
|||
|
|
{
|
|||
|
|
if (instanceInitialized) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (_mouseCursorControllerInstance != null && _mouseCursorControllerInstance != this) {
|
|||
|
|
Destroy (this.gameObject);
|
|||
|
|
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
_mouseCursorControllerInstance = this;
|
|||
|
|
|
|||
|
|
instanceInitialized = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void getComponentInstanceOnApplicationPlaying ()
|
|||
|
|
{
|
|||
|
|
if (Application.isPlaying) {
|
|||
|
|
getComponentInstance ();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void Awake ()
|
|||
|
|
{
|
|||
|
|
getComponentInstance ();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void Start ()
|
|||
|
|
{
|
|||
|
|
updateJoystickString ();
|
|||
|
|
|
|||
|
|
if (!playerInputLocated) {
|
|||
|
|
playerInputLocated = playerInput != null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!inputLocated) {
|
|||
|
|
inputLocated = input != null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
mouseXPlayerIDString = mouseXString + joystickNumber;
|
|||
|
|
mouseYPlayerIDString = mouseYString + joystickNumber;
|
|||
|
|
|
|||
|
|
horizontalXPlayerIDString = horizontalXString + joystickNumber;
|
|||
|
|
vertircalYPlayerIDString = verticalYString + joystickNumber;
|
|||
|
|
|
|||
|
|
if (activateCursorOnStart) {
|
|||
|
|
menuPause.setCursorVisibleState (true);
|
|||
|
|
|
|||
|
|
menuPause.setCursorLockState (false);
|
|||
|
|
|
|||
|
|
showOrHideMouseController (playerInput, true, joystickNumber, false);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void updateJoystickString ()
|
|||
|
|
{
|
|||
|
|
joystickString = "joystick " + joystickNumber + " button " + buttonIndex;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void Update ()
|
|||
|
|
{
|
|||
|
|
if (cursorCurrentlyActive) {
|
|||
|
|
|
|||
|
|
canUseGamepad = false;
|
|||
|
|
|
|||
|
|
if (inputLocated) {
|
|||
|
|
if (!input.isUsingTouchControls () && input.isUsingGamepad ()) {
|
|||
|
|
canUseGamepad = true;
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
canUseGamepad = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (canUseGamepad) {
|
|||
|
|
if (inputLocated) {
|
|||
|
|
if (input.checkJoystickButton (joystickString, inputManager.buttonType.getKeyDown)) {
|
|||
|
|
MouseOperations.MouseEvent (MouseOperations.MouseEventFlags.LeftDown);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (input.checkJoystickButton (joystickString, inputManager.buttonType.getKeyUp)) {
|
|||
|
|
MouseOperations.MouseEvent (MouseOperations.MouseEventFlags.LeftUp);
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
if (Input.GetKeyDown (joystickString)) {
|
|||
|
|
MouseOperations.MouseEvent (MouseOperations.MouseEventFlags.LeftDown);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (Input.GetKeyUp (joystickString)) {
|
|||
|
|
MouseOperations.MouseEvent (MouseOperations.MouseEventFlags.LeftUp);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//Check if the actual mouse is being used
|
|||
|
|
screenFocused = Application.isFocused;
|
|||
|
|
|
|||
|
|
if (playerInputLocated) {
|
|||
|
|
realMouseAxisInput = playerInput.getRealMouseAxisInput ();
|
|||
|
|
} else {
|
|||
|
|
realMouseAxisInput = new Vector2 (Input.GetAxis (mouseXString), Input.GetAxis (mouseYString));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
inputDifference = Mathf.Abs (realMouseAxisInput.sqrMagnitude);
|
|||
|
|
|
|||
|
|
if (useFixedTimeEnabled) {
|
|||
|
|
currentUnscaledTime = Time.fixedUnscaledTime;
|
|||
|
|
} else {
|
|||
|
|
currentUnscaledTime = Time.unscaledTime;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (inputDifference > 0.01f) {
|
|||
|
|
lastTimeRealMouseUsed = currentUnscaledTime;
|
|||
|
|
|
|||
|
|
axisInput = realMouseAxisInput;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (currentUnscaledTime > lastTimeRealMouseUsed + 1 && screenFocused) {
|
|||
|
|
if (usingActualMouse) {
|
|||
|
|
cursorPosition.x = cursorPos.X;
|
|||
|
|
cursorPosition.y = cursorPos.Y;
|
|||
|
|
|
|||
|
|
newX = cursorPosition.x;
|
|||
|
|
newY = cursorPosition.y;
|
|||
|
|
|
|||
|
|
usingActualMouse = false;
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
usingActualMouse = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//Assign the input values according to if the gamepad or the actual mouse is being used
|
|||
|
|
if (!usingActualMouse) {
|
|||
|
|
if (playerInputLocated) {
|
|||
|
|
if (playerInput.isInputPaused () || playerInput.isPlayerDead ()) {
|
|||
|
|
if (useBothJoysticks) {
|
|||
|
|
axisInput = playerInput.getRealMouseGamepadAxisInput () + playerInput.getRealMovementGamepadAxisInput ();
|
|||
|
|
} else {
|
|||
|
|
if (useRightJoystickAxis) {
|
|||
|
|
axisInput = playerInput.getRealMouseGamepadAxisInput ();
|
|||
|
|
} else {
|
|||
|
|
axisInput = playerInput.getRealMovementGamepadAxisInput ();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
if (useBothJoysticks) {
|
|||
|
|
axisInput = playerInput.getPlayerMouseAxis () + playerInput.getPlayerMovementAxis ();
|
|||
|
|
} else {
|
|||
|
|
if (useRightJoystickAxis) {
|
|||
|
|
axisInput = playerInput.getPlayerMouseAxis ();
|
|||
|
|
} else {
|
|||
|
|
axisInput = playerInput.getPlayerMovementAxis ();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
if (useBothJoysticks) {
|
|||
|
|
axisInput = new Vector2 (Input.GetAxis (mouseXPlayerIDString), Input.GetAxis (mouseYPlayerIDString)) +
|
|||
|
|
new Vector2 (Input.GetAxis (horizontalXPlayerIDString), Input.GetAxis (vertircalYPlayerIDString));
|
|||
|
|
} else {
|
|||
|
|
if (useRightJoystickAxis) {
|
|||
|
|
axisInput = new Vector2 (Input.GetAxis (mouseXPlayerIDString), Input.GetAxis (mouseYPlayerIDString));
|
|||
|
|
} else {
|
|||
|
|
axisInput = new Vector2 (Input.GetAxis (horizontalXPlayerIDString), Input.GetAxis (vertircalYPlayerIDString));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!ignoreMouseCursorUpdateActive) {
|
|||
|
|
updateGetCursorPos ();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (Time.deltaTime > 0) {
|
|||
|
|
if (useSmoothCursorSpeedOnGame) {
|
|||
|
|
currentMouseSpeed = currentUnscaledTime * cursorSpeedOnGame;
|
|||
|
|
} else {
|
|||
|
|
currentMouseSpeed = cursorSpeedOnPauseMenu;
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
currentMouseSpeed = cursorSpeedOnPauseMenu;
|
|||
|
|
|
|||
|
|
if (!enableGamepadCursorOnPause) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!usingActualMouse) {
|
|||
|
|
if (axisInput.x > 0) {
|
|||
|
|
cursorPosition.x += currentMouseSpeed;
|
|||
|
|
} else if (axisInput.x < 0) {
|
|||
|
|
cursorPosition.x -= currentMouseSpeed;
|
|||
|
|
}
|
|||
|
|
if (axisInput.y > 0) {
|
|||
|
|
cursorPosition.y -= currentMouseSpeed;
|
|||
|
|
} else if (axisInput.y < 0) {
|
|||
|
|
cursorPosition.y += currentMouseSpeed;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (useMouseLimits) {
|
|||
|
|
cursorPosition.x = Mathf.Clamp (cursorPosition.x, 0, mouseLimits.x);
|
|||
|
|
cursorPosition.y = Mathf.Clamp (cursorPosition.y, 0, mouseLimits.y);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (Time.deltaTime > 0 && !usingActualMouse) {
|
|||
|
|
newX = Mathf.Lerp (newX, cursorPosition.x, currentUnscaledTime * cursorLerpSpeed);
|
|||
|
|
newY = Mathf.Lerp (newY, cursorPosition.y, currentUnscaledTime * cursorLerpSpeed);
|
|||
|
|
} else {
|
|||
|
|
newX = cursorPosition.x;
|
|||
|
|
newY = cursorPosition.y;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!usingActualMouse) {
|
|||
|
|
if (!ignoreMouseCursorUpdateActive) {
|
|||
|
|
updateSetCursorPos ((int)newX, (int)newY);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
getScreenClampValues ();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void showOrHideMouseController (playerInputManager newInput, bool state, int newJoystickNumber, bool pausingGame)
|
|||
|
|
{
|
|||
|
|
if (newInput == null || !newInput.useOnlyKeyboard) {
|
|||
|
|
playerInput = newInput;
|
|||
|
|
|
|||
|
|
joystickNumber = newJoystickNumber;
|
|||
|
|
|
|||
|
|
updateJoystickString ();
|
|||
|
|
|
|||
|
|
showOrHideMouseController (state, pausingGame);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void setIgnoreSetSelectedGameObjectOnUIByGamepadState (bool state)
|
|||
|
|
{
|
|||
|
|
ignoreSetSelectedGameObjectOnUIByGamepad = state;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void getScreenClampValues ()
|
|||
|
|
{
|
|||
|
|
if (useMouseLimits && (!horizontalLimitConfigured || !verticalLimitConfigured)) {
|
|||
|
|
if (Time.deltaTime == 0 || Time.time > lastTimeCursorEnabled + 0.4f) {
|
|||
|
|
if (!horizontalLimitConfigured) {
|
|||
|
|
if (cursorPos.X > 0 && newX > (cursorPos.X + 50)) {
|
|||
|
|
|
|||
|
|
if (cursorPos.X > currentResolution.x / 1.5f) {
|
|||
|
|
mouseLimits.x = cursorPos.X;
|
|||
|
|
|
|||
|
|
horizontalLimitConfigured = true;
|
|||
|
|
|
|||
|
|
// print ("max X");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!verticalLimitConfigured) {
|
|||
|
|
if (cursorPos.Y > 0 && newY > (cursorPos.Y + 50)) {
|
|||
|
|
if (cursorPos.Y > currentResolution.y / 1.5f) {
|
|||
|
|
mouseLimits.y = cursorPos.Y;
|
|||
|
|
|
|||
|
|
verticalLimitConfigured = true;
|
|||
|
|
|
|||
|
|
// print ("max Y");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void showOrHideMouseController (bool state, bool pausingGame)
|
|||
|
|
{
|
|||
|
|
if (input != null && !input.isUsingGamepad ()) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!useMouseCursorEnabled) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (pausingGame) {
|
|||
|
|
cursorPreviouslyActive = false;
|
|||
|
|
} else {
|
|||
|
|
if (!state) {
|
|||
|
|
if (cursorCurrentlyActive) {
|
|||
|
|
cursorPreviouslyActive = true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (state) {
|
|||
|
|
if (Time.time > lastTimeCursorDisabled + timeToResetCursorAfterDisable) {
|
|||
|
|
cursorPreviouslyActive = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (state && (pausingGame || !cursorPreviouslyActive)) {
|
|||
|
|
resetCursorPosition ();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
cursorCurrentlyActive = state;
|
|||
|
|
|
|||
|
|
if (showDebugPrint) {
|
|||
|
|
print ("Setting cursor active state as " + cursorCurrentlyActive);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!pausingGame && state) {
|
|||
|
|
if (!cursorCurrentlyActive) {
|
|||
|
|
cursorPreviouslyActive = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (!ignoreSetSelectedGameObjectOnUIByGamepad) {
|
|||
|
|
if (state) {
|
|||
|
|
StartCoroutine (FocusButton ());
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
ignoreSetSelectedGameObjectOnUIByGamepad = false;
|
|||
|
|
|
|||
|
|
if (state) {
|
|||
|
|
lastTimeCursorEnabled = Time.time;
|
|||
|
|
} else {
|
|||
|
|
lastTimeCursorDisabled = Time.time;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
IEnumerator FocusButton ()
|
|||
|
|
{
|
|||
|
|
yield return null;
|
|||
|
|
|
|||
|
|
GKC_Utils.setSelectedGameObjectOnUI (true, false, null, showDebugPrint);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void resetCursorPosition ()
|
|||
|
|
{
|
|||
|
|
if (!ignoreMouseCursorUpdateActive) {
|
|||
|
|
updateGetCursorPos ();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
cursorPosition.x = cursorPos.X;
|
|||
|
|
cursorPosition.y = cursorPos.Y;
|
|||
|
|
|
|||
|
|
if (!mouseLimitsAssigned) {
|
|||
|
|
currentResolution = new Vector2 (Screen.currentResolution.width, Screen.currentResolution.height);
|
|||
|
|
|
|||
|
|
mouseLimits = currentResolution;
|
|||
|
|
|
|||
|
|
mouseLimitsAssigned = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
newX = cursorPosition.x;
|
|||
|
|
newY = cursorPosition.y;
|
|||
|
|
|
|||
|
|
if (!ignoreMouseCursorUpdateActive) {
|
|||
|
|
updateSetCursorPos ((int)cursorPosition.x, (int)cursorPosition.y);
|
|||
|
|
updateGetCursorPos ();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void updateSetCursorPos (int cursorPositionX, int cursorPositionY)
|
|||
|
|
{
|
|||
|
|
if (useTryCatchOnUpdateCursorActive) {
|
|||
|
|
try {
|
|||
|
|
SetCursorPos (cursorPositionX, cursorPositionY);
|
|||
|
|
}
|
|||
|
|
catch (Exception e) {
|
|||
|
|
print (e + " updateSetCursorPos error");
|
|||
|
|
|
|||
|
|
throw;
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
SetCursorPos (cursorPositionX, cursorPositionY);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void updateGetCursorPos ()
|
|||
|
|
{
|
|||
|
|
if (useTryCatchOnUpdateCursorActive) {
|
|||
|
|
try {
|
|||
|
|
GetCursorPos (out cursorPos);
|
|||
|
|
}
|
|||
|
|
catch (Exception e) {
|
|||
|
|
print (e + " updateGetCursorPos error");
|
|||
|
|
|
|||
|
|
throw;
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
GetCursorPos (out cursorPos);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public Point getCursorPos ()
|
|||
|
|
{
|
|||
|
|
return cursorPos;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void setUseRightOrLeftJoysticsAxis (bool state)
|
|||
|
|
{
|
|||
|
|
useRightJoystickAxis = state;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public int getCurrentJoystickNumber ()
|
|||
|
|
{
|
|||
|
|
return joystickNumber;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void setMouseCursorControllerSpeedOnGameValue (float newValue)
|
|||
|
|
{
|
|||
|
|
if (originalCursorSpeedOnGame == -1) {
|
|||
|
|
originalCursorSpeedOnGame = cursorSpeedOnGame;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
cursorSpeedOnGame = newValue;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void setOriginalMouseCursorControllerSpeedOnGameValue ()
|
|||
|
|
{
|
|||
|
|
if (originalCursorSpeedOnGame != -1) {
|
|||
|
|
setMouseCursorControllerSpeedOnGameValue (originalCursorSpeedOnGame);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
[System.Serializable]
|
|||
|
|
public struct Point
|
|||
|
|
{
|
|||
|
|
public int X;
|
|||
|
|
public int Y;
|
|||
|
|
|
|||
|
|
public Point (int x, int y)
|
|||
|
|
{
|
|||
|
|
this.X = x;
|
|||
|
|
this.Y = y;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public Vector2 getMouseAxis ()
|
|||
|
|
{
|
|||
|
|
if (playerInputLocated) {
|
|||
|
|
if (cursorCurrentlyActive) {
|
|||
|
|
return playerInput.getRealMouseGamepadAxisInput ();
|
|||
|
|
} else {
|
|||
|
|
return playerInput.getRealMouseAxisInput ();
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
return new Vector2 (Input.GetAxis (mouseXPlayerIDString), Input.GetAxis (mouseYPlayerIDString)) +
|
|||
|
|
new Vector2 (Input.GetAxis (mouseXString), Input.GetAxis (mouseYString));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public Vector2 getMovementAxis ()
|
|||
|
|
{
|
|||
|
|
if (playerInputLocated) {
|
|||
|
|
if (cursorCurrentlyActive) {
|
|||
|
|
return playerInput.getRealMovementGamepadAxisInput ();
|
|||
|
|
} else {
|
|||
|
|
return playerInput.getRealMovementAxisInput ();
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
return new Vector2 (Input.GetAxis (horizontalXPlayerIDString), Input.GetAxis (vertircalYPlayerIDString)) +
|
|||
|
|
new Vector2 (Input.GetAxis (horizontalXString), Input.GetAxis (verticalYString));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|