summaryrefslogtreecommitdiff
path: root/Thronefall_v1.57/Thronefall/Rewired.Demos/PlayerMouseSpriteExample.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Thronefall_v1.57/Thronefall/Rewired.Demos/PlayerMouseSpriteExample.cs')
-rw-r--r--Thronefall_v1.57/Thronefall/Rewired.Demos/PlayerMouseSpriteExample.cs116
1 files changed, 116 insertions, 0 deletions
diff --git a/Thronefall_v1.57/Thronefall/Rewired.Demos/PlayerMouseSpriteExample.cs b/Thronefall_v1.57/Thronefall/Rewired.Demos/PlayerMouseSpriteExample.cs
new file mode 100644
index 0000000..194fb5d
--- /dev/null
+++ b/Thronefall_v1.57/Thronefall/Rewired.Demos/PlayerMouseSpriteExample.cs
@@ -0,0 +1,116 @@
+using System;
+using UnityEngine;
+
+namespace Rewired.Demos;
+
+[AddComponentMenu("")]
+public class PlayerMouseSpriteExample : MonoBehaviour
+{
+ [Tooltip("The Player that will control the mouse")]
+ public int playerId;
+
+ [Tooltip("The Rewired Action used for the mouse horizontal axis.")]
+ public string horizontalAction = "MouseX";
+
+ [Tooltip("The Rewired Action used for the mouse vertical axis.")]
+ public string verticalAction = "MouseY";
+
+ [Tooltip("The Rewired Action used for the mouse wheel axis.")]
+ public string wheelAction = "MouseWheel";
+
+ [Tooltip("The Rewired Action used for the mouse left button.")]
+ public string leftButtonAction = "MouseLeftButton";
+
+ [Tooltip("The Rewired Action used for the mouse right button.")]
+ public string rightButtonAction = "MouseRightButton";
+
+ [Tooltip("The Rewired Action used for the mouse middle button.")]
+ public string middleButtonAction = "MouseMiddleButton";
+
+ [Tooltip("The distance from the camera that the pointer will be drawn.")]
+ public float distanceFromCamera = 1f;
+
+ [Tooltip("The scale of the sprite pointer.")]
+ public float spriteScale = 0.05f;
+
+ [Tooltip("The pointer prefab.")]
+ public GameObject pointerPrefab;
+
+ [Tooltip("The click effect prefab.")]
+ public GameObject clickEffectPrefab;
+
+ [Tooltip("Should the hardware pointer be hidden?")]
+ public bool hideHardwarePointer = true;
+
+ [NonSerialized]
+ private GameObject pointer;
+
+ [NonSerialized]
+ private PlayerMouse mouse;
+
+ private void Awake()
+ {
+ pointer = UnityEngine.Object.Instantiate(pointerPrefab);
+ pointer.transform.localScale = new Vector3(spriteScale, spriteScale, spriteScale);
+ if (hideHardwarePointer)
+ {
+ Cursor.visible = false;
+ }
+ mouse = PlayerMouse.Factory.Create();
+ mouse.playerId = playerId;
+ mouse.xAxis.actionName = horizontalAction;
+ mouse.yAxis.actionName = verticalAction;
+ mouse.wheel.yAxis.actionName = wheelAction;
+ mouse.leftButton.actionName = leftButtonAction;
+ mouse.rightButton.actionName = rightButtonAction;
+ mouse.middleButton.actionName = middleButtonAction;
+ mouse.pointerSpeed = 1f;
+ mouse.wheel.yAxis.repeatRate = 5f;
+ mouse.screenPosition = new Vector2((float)Screen.width * 0.5f, (float)Screen.height * 0.5f);
+ mouse.ScreenPositionChangedEvent += OnScreenPositionChanged;
+ OnScreenPositionChanged(mouse.screenPosition);
+ }
+
+ private void Update()
+ {
+ if (ReInput.isReady)
+ {
+ pointer.transform.Rotate(Vector3.forward, mouse.wheel.yAxis.value * 20f);
+ if (mouse.leftButton.justPressed)
+ {
+ CreateClickEffect(new Color(0f, 1f, 0f, 1f));
+ }
+ if (mouse.rightButton.justPressed)
+ {
+ CreateClickEffect(new Color(1f, 0f, 0f, 1f));
+ }
+ if (mouse.middleButton.justPressed)
+ {
+ CreateClickEffect(new Color(1f, 1f, 0f, 1f));
+ }
+ }
+ }
+
+ private void OnDestroy()
+ {
+ if (ReInput.isReady)
+ {
+ mouse.ScreenPositionChangedEvent -= OnScreenPositionChanged;
+ }
+ }
+
+ private void CreateClickEffect(Color color)
+ {
+ GameObject obj = UnityEngine.Object.Instantiate(clickEffectPrefab);
+ obj.transform.localScale = new Vector3(spriteScale, spriteScale, spriteScale);
+ obj.transform.position = Camera.main.ScreenToWorldPoint(new Vector3(mouse.screenPosition.x, mouse.screenPosition.y, distanceFromCamera));
+ obj.GetComponentInChildren<SpriteRenderer>().color = color;
+ UnityEngine.Object.Destroy(obj, 0.5f);
+ }
+
+ private void OnScreenPositionChanged(Vector2 position)
+ {
+ Vector3 position2 = Camera.main.ScreenToWorldPoint(new Vector3(position.x, position.y, distanceFromCamera));
+ pointer.transform.position = position2;
+ }
+}