All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
InputEvents.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include <vector>
7 
8 namespace Eegeo
9 {
10  namespace Emscripten
11  {
12  namespace Input
13  {
14  enum MouseInputAction
15  {
16  NoMouseAction = 0,
17  MousePrimaryDown,
18  MousePrimaryUp,
19  MouseSecondaryDown,
20  MouseSecondaryUp,
21  MouseMiddleDown,
22  MouseMiddleUp,
23  MouseMove,
24  MouseWheel
25  };
26 
27  enum KeyboardModifiers
28  {
29  KeyboardModifierNone = 0,
30  KeyboardModifierAlt = 1,
31  KeyboardModifierControl = 2,
32  KeyboardModifierShift = 4
33  };
34 
35  enum TouchInputAction
36  {
37  NoTouchAction = 0,
38  TouchDown,
39  TouchUp,
40  TouchMove,
41  TouchCancel
42  };
43 
45  {
46  MouseInputAction action;
47  u32 keyboardModifiers;
48  float x;
49  float y;
50  float z;
51 
53  MouseInputAction mouseInputAction,
54  u32 keyboardModifiers,
55  float x,
56  float y,
57  float z)
58  : action(mouseInputAction)
59  , keyboardModifiers(keyboardModifiers)
60  , x(x)
61  , y(y)
62  , z(z)
63  {
64 
65  }
66 
67  bool IsAltDown() const { return (keyboardModifiers & KeyboardModifierAlt) != 0; }
68  bool IsShiftDown() const { return (keyboardModifiers & KeyboardModifierShift) != 0; }
69  bool IsControlDown() const { return (keyboardModifiers & KeyboardModifierControl) != 0; }
70  };
71 
73  {
74  char keyCode;
75  bool keyDownEvent;
76  };
77 
79  {
80  long pointerId;
81  float pointerX;
82  float pointerY;
83  bool changed;
84  };
85 
87  {
88  TouchInputAction action;
89  std::vector<TouchInputPoint> touches;
90 
91  int GetFirstChangedIndex() const
92  {
93  for (int i=0; i<touches.size(); ++i)
94  {
95  if (touches[i].changed)
96  {
97  return i;
98  }
99  }
100  return -1;
101  }
102  };
103  }
104  }
105 }