IMHOTEP Framework
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties Pages
InputDeviceManager.cs
1 using UnityEngine;
2 using System.Collections.Generic;
3 
4 
5 
6 public class InputDeviceManager : MonoBehaviour {
7 
8  public enum RayInfoStates
9  {
10  rayHitsUI,
11  rayHitsMesh,
12  rayHitsBackground
13  }
14 
15  public enum InputDeviceType
16  {
17  Mouse,
18  ViveController
19  }
20 
21  public RayInfoStates rayInfo = RayInfoStates.rayHitsBackground;
22 
23  public InputDevice currentInputDevice = null; //Defines with game object controlls the input
24 
25  private List<InputDevice> deviceList = new List<InputDevice>(); //List of registered input devices (e.g. mouse, vive contoller ...)
26 
27  public static InputDeviceManager instance { private set; get; }
28 
29  public LeftController leftController { private set; get; }
30 
31 
32  private Sprite iconLeftControllerLeft;
33  private Sprite iconLeftControllerRight;
34  private Sprite iconLeftControllerUp;
35  private Sprite iconLeftControllerDown;
36  private Sprite iconLeftControllerCenter;
37  private Sprite iconRightControllerLeft;
38  private Sprite iconRightControllerRight;
39  private Sprite iconRightControllerUp;
40  private Sprite iconRightControllerDown;
41  private Sprite iconRightControllerCenter;
42 
43 
44  public InputDeviceManager()
45  {
46  instance = this;
47  }
48 
49  public void registerInputDevice(InputDevice device)
50  {
51  deviceList.Add(device);
52  currentInputDevice = device; //TODO how to change currentInputDevice in game?
53 
54  if (device.getDeviceType () == InputDeviceType.ViveController) {
55  Controller c = device as Controller;
56  c.setTouchpadDirectionIcons (iconRightControllerLeft, iconRightControllerRight, iconRightControllerUp, iconRightControllerDown);
57  c.setTouchpadCentralIcon (iconRightControllerCenter);
58  }
59  }
60 
61  public void registerLeftController( LeftController left )
62  {
63  leftController = left;
64  left.setTouchpadDirectionIcons (iconLeftControllerLeft, iconLeftControllerRight, iconLeftControllerUp, iconLeftControllerDown);
65  left.setTouchpadCentralIcon (iconLeftControllerCenter);
66  }
67 
68  public void shakeLeftController( float seconds, float strength = 1f )
69  {
70  if (leftController != null) {
71  leftController.shake (seconds, strength );
72  }
73  }
74 
77  public void setLeftControllerTouchpadIcons( Sprite left, Sprite right, Sprite up, Sprite down )
78  {
79  iconLeftControllerLeft = left;
80  iconLeftControllerRight = right;
81  iconLeftControllerUp = up;
82  iconLeftControllerDown = down;
83  if (leftController != null) {
84  leftController.setTouchpadDirectionIcons (left, right, up, down);
85  }
86  }
87 
88  public void setRightControllerTouchpadIcons( Sprite left, Sprite right, Sprite up, Sprite down )
89  {
90  iconRightControllerLeft = left;
91  iconRightControllerRight = right;
92  iconRightControllerUp = up;
93  iconRightControllerDown = down;
94  if (currentInputDevice != null && currentInputDevice.getDeviceType() == InputDeviceType.ViveController) {
95  Controller c = currentInputDevice as Controller;
96  c.setTouchpadDirectionIcons (left, right, up, down);
97  }
98  }
99 
100  public void setRightControllerTouchpadIconCentral( Sprite center )
101  {
102  iconRightControllerCenter = center;
103  if (currentInputDevice != null && currentInputDevice.getDeviceType() == InputDeviceType.ViveController) {
104  Controller c = currentInputDevice as Controller;
105  c.setTouchpadCentralIcon (center);
106  }
107  }
108  public void setLeftControllerTouchpadIconCentral( Sprite center )
109  {
110  iconLeftControllerCenter = center;
111  if (leftController != null) {
112  leftController.setTouchpadCentralIcon (iconLeftControllerCenter);
113  }
114  }
115 
116  public void resetToolIcons()
117  {
118  iconRightControllerLeft = null;
119  iconRightControllerRight = null;
120  iconRightControllerUp = null;
121  iconRightControllerDown = null;
122  iconLeftControllerLeft = null;
123  iconLeftControllerRight = null;
124  iconLeftControllerUp = null;
125  iconLeftControllerDown = null;
126  if (currentInputDevice != null && currentInputDevice.getDeviceType() == InputDeviceType.ViveController) {
127  Controller c = currentInputDevice as Controller;
128  c.setTouchpadDirectionIcons (null, null, null, null);
129  }
130  if (leftController != null) {
131  leftController.setTouchpadDirectionIcons (null, null, null, null);
132  }
133  }
134 }
135 
void setLeftControllerTouchpadIcons(Sprite left, Sprite right, Sprite up, Sprite down)
Handle Icons: