Advertisement
Souliloquy

PlayMaker integration for MagicLeap input

Dec 24th, 2019
409
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.35 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.XR.MagicLeap;
  5. using HutongGames.PlayMaker;
  6.  
  7. namespace XRInput
  8. {
  9.     public class PMController : MonoBehaviour
  10.     {
  11.         public float Trigger;
  12.         public bool BumperDown;
  13.         [Space]
  14.         public bool Touch1Active;
  15.         public Vector3 Touch1PosAndForce = Vector3.zero;
  16.         public bool Touch2Active;
  17.         public Vector3 Touch2PosAndForce = Vector3.zero;
  18.         [Space]
  19.         public string TouchpadGestureType;
  20.         public MLInputControllerTouchpadGesture TouchpadGesture;
  21.         public MLInputControllerTouchpadGestureState TouchpadGestureState;
  22.  
  23.         private ControllerConnectionHandler _controllerConnectionHandler = null;
  24.         private bool _eventsSet = false;
  25.  
  26.         [Header("Event settings")]
  27.         public float TriggerThreshold = 0.1f;
  28.  
  29.         void Start()
  30.         {
  31.             _controllerConnectionHandler = GetComponent<ControllerConnectionHandler>();
  32.         }
  33.  
  34.         void Update()
  35.         {
  36.             if (!_controllerConnectionHandler.IsControllerValid())
  37.                 return;
  38.             MLInputController controller = _controllerConnectionHandler.ConnectedController;
  39.  
  40.             if (!_eventsSet)
  41.             {
  42.                 controller.OnConnect += OnConnect;
  43.                 controller.OnDisconnect += OnDisconnect;
  44.                 controller.OnTouchpadGestureContinue += OnTouchpadGestureContinue;
  45.                 controller.OnTouchpadGestureEnd += OnTouchpadGestureEnd;
  46.                 controller.OnTouchpadGestureStart += OnTouchpadGestureStart;
  47.                 controller.OnButtonUp += OnButtonUp;
  48.                 controller.OnButtonDown += OnButtonDown;
  49.  
  50.                 _eventsSet = true;
  51.             }
  52.  
  53.             // PadTouch Down\Up
  54.             if (Touch1Active == false && controller.Touch1Active)
  55.                 PlayMakerFSM.BroadcastEvent("PadTouchDown");
  56.             if (Touch1Active == true && controller.Touch1Active == false)
  57.                 PlayMakerFSM.BroadcastEvent("PadTouchUp");
  58.  
  59.             // Bumper Down\Up
  60.             if (BumperDown == false && controller.IsBumperDown)
  61.                 PlayMakerFSM.BroadcastEvent("BumperDown");
  62.             if (BumperDown == true && controller.IsBumperDown == false)
  63.                 PlayMakerFSM.BroadcastEvent("BumperUp");
  64.  
  65.             // Trigger Down\Up
  66.             if (Trigger < TriggerThreshold && controller.TriggerValue > TriggerThreshold)
  67.                 PlayMakerFSM.BroadcastEvent("TriggerDown");
  68.             if (Trigger > TriggerThreshold && controller.TriggerValue < TriggerThreshold)
  69.                 PlayMakerFSM.BroadcastEvent("TriggerUp");
  70.  
  71.             Trigger = controller.TriggerValue;
  72.             BumperDown = controller.IsBumperDown;
  73.             Touch1Active = controller.Touch1Active;
  74.             Touch2Active = controller.Touch2Active;
  75.             Touch1PosAndForce = controller.Touch1PosAndForce;
  76.             Touch2PosAndForce = controller.Touch2PosAndForce;
  77.             TouchpadGesture = controller.TouchpadGesture;
  78.             TouchpadGestureType = TouchpadGesture.Type.ToString();
  79.             TouchpadGestureState = controller.TouchpadGestureState;
  80.  
  81.         }
  82.  
  83.         void OnConnect(byte controllerId)
  84.         {
  85.             PlayMakerFSM.BroadcastEvent("OnConnect");
  86.         }
  87.  
  88.         void OnDisconnect(byte controllerId)
  89.         {
  90.             PlayMakerFSM.BroadcastEvent("OnDisconnect");
  91.         }
  92.  
  93.         void OnTouchpadGestureContinue(byte controllerId, MLInputControllerTouchpadGesture touchpadGesture)
  94.         {
  95.             PlayMakerFSM.BroadcastEvent("OnTouchpadGestureContinue");
  96.         }
  97.  
  98.         void OnTouchpadGestureEnd(byte controllerId, MLInputControllerTouchpadGesture touchpadGesture)
  99.         {
  100.             PlayMakerFSM.BroadcastEvent("OnTouchpadGestureEnd");
  101.         }
  102.  
  103.         void OnTouchpadGestureStart(byte controllerId, MLInputControllerTouchpadGesture touchpadGesture)
  104.         {
  105.             PlayMakerFSM.BroadcastEvent("OnTouchpadGestureStart");
  106.         }
  107.  
  108.         void OnButtonUp(byte controllerId, MLInputControllerButton button)
  109.         {
  110.             PlayMakerFSM.BroadcastEvent("OnButtonUp");
  111.         }
  112.  
  113.         void OnButtonDown(byte controllerId, MLInputControllerButton button)
  114.         {
  115.             PlayMakerFSM.BroadcastEvent("OnButtonDown");
  116.         }
  117.     }
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement