Mercurial > hg > Game > Games
annotate Orchestland/Assets/LeapMotion/Scripts/Hands/HandModel.cs @ 1:f7675884f2a1
Add Orchestland project
author | Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2015 23:09:20 +0900 |
parents | |
children |
rev | line source |
---|---|
1
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 /******************************************************************************\ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 * Copyright (C) Leap Motion, Inc. 2011-2014. * |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 * Leap Motion proprietary. Licensed under Apache 2.0 * |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 * Available at http://www.apache.org/licenses/LICENSE-2.0.html * |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 \******************************************************************************/ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 using UnityEngine; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 using System.Collections; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 using Leap; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 /** |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 * The base class for all hand models, both graphics and physics. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 * |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14 * This class serves as the interface between the HandController object |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15 * and the concrete hand object containing the graphics and physics of a hand. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 * |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 * Subclasses of HandModel must implement InitHand() and UpdateHand(). The UpdateHand() |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 * function is called in the Unity Update() phase for graphics HandModel instances; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 * and in the Unity FixedUpdate() phase for physics objects. InitHand() is called once, |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 * when the hand is created and is followed by a call to UpdateHand(). |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 public abstract class HandModel : MonoBehaviour { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 /** The number of fingers on a hand.*/ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
25 public const int NUM_FINGERS = 5; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
26 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 /** The model width of the hand in meters. This value is used with the measured value |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
28 * of the user's hand to scale the model proportionally. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
30 public float handModelPalmWidth = 0.085f; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
31 /** The array of finger objects for this hand. The array is ordered from thumb (element 0) to pinky (element 4).*/ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
32 public FingerModel[] fingers = new FingerModel[NUM_FINGERS]; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
33 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
34 // Unity references |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
35 public Transform palm; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36 public Transform forearm; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
37 public Transform wristJoint; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
38 public Transform elbowJoint; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
39 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
40 // Leap references |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
41 /** The Leap Hand object this hand model represents. */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
42 protected Hand hand_; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
43 /** The parent HandController object for this hand. */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
44 protected HandController controller_; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
45 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
46 /** Whether the parent HandController instance has been set to mirror across the z axis.*/ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
47 protected bool mirror_z_axis_ = false; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
48 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
49 /** |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
50 * Calculates the offset between the wrist position and the controller based |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
51 * on the HandController.handMovementScale property and the Leap hand wrist position. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
52 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
53 public Vector3 GetHandOffset() { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
54 if (controller_ == null || hand_ == null) |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
55 return Vector3.zero; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
56 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
57 Vector3 additional_movement = controller_.handMovementScale - Vector3.one; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
58 Vector3 scaled_wrist_position = Vector3.Scale(additional_movement, hand_.WristPosition.ToUnityScaled(mirror_z_axis_)); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
59 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
60 return controller_.transform.TransformPoint(scaled_wrist_position) - |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
61 controller_.transform.position; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
62 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
63 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
64 /** Calculates the position of the palm relative to the controller. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
65 * @returns A Vector3 containing the Unity coordinates of the palm position. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
66 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
67 public Vector3 GetPalmPosition() { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
68 if (controller_ != null && hand_ != null) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
69 return controller_.transform.TransformPoint (hand_.PalmPosition.ToUnityScaled (mirror_z_axis_)) + GetHandOffset (); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
70 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
71 if (palm) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
72 return palm.position; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
73 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
74 return Vector3.zero; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
75 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
76 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
77 /** Calculates the rotation of the hand relative to the controller. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
78 * @returns A Quaternion representing the rotation of the hand relative to the controller. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
79 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
80 public Quaternion GetPalmRotation() { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
81 if (controller_ != null && hand_ != null) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
82 return controller_.transform.rotation * hand_.Basis.Rotation(mirror_z_axis_); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
83 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
84 if (palm) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
85 return palm.rotation; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
86 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
87 return Quaternion.identity; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
88 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
89 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
90 /** Calculates the direction vector of the hand relative to the controller. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
91 * @returns A Vector3 representing the direction of the hand relative to the controller. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
92 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
93 public Vector3 GetPalmDirection() { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
94 if (controller_ != null && hand_ != null) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
95 return controller_.transform.TransformDirection(hand_.Direction.ToUnity(mirror_z_axis_)); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
96 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
97 if (palm) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
98 return palm.forward; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
99 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
100 return Vector3.forward; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
101 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
102 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
103 /** Calculates the normal vector projecting from the hand relative to the controller. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
104 * @returns A Vector3 representing the vector perpendicular to the palm. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
105 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
106 public Vector3 GetPalmNormal() { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
107 if (controller_ != null && hand_ != null) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
108 return controller_.transform.TransformDirection(hand_.PalmNormal.ToUnity(mirror_z_axis_)); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
109 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
110 if (palm) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
111 return -palm.up; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
112 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
113 return -Vector3.up; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
114 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
115 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
116 /** Calculates the direction vector of the forearm relative to the controller. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
117 * @returns A Vector3 representing the direction of the forearm (pointing from elbow to wrist). |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
118 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
119 public Vector3 GetArmDirection() { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
120 if (controller_ != null && hand_ != null) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
121 return controller_.transform.TransformDirection(hand_.Arm.Direction.ToUnity(mirror_z_axis_)); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
122 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
123 if (forearm) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
124 return forearm.forward; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
125 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
126 return Vector3.forward; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
127 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
128 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
129 /** Calculates the center of the forearm relative to the controller. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
130 * @returns A Vector3 containing the Unity coordinates of the center of the forearm. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
131 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
132 public Vector3 GetArmCenter() { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
133 if (controller_ != null && hand_ != null) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
134 Vector leap_center = 0.5f * (hand_.Arm.WristPosition + hand_.Arm.ElbowPosition); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
135 return controller_.transform.TransformPoint (leap_center.ToUnityScaled (mirror_z_axis_)) + GetHandOffset (); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
136 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
137 if (forearm) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
138 return forearm.position; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
139 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
140 return Vector3.zero; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
141 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
142 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
143 /** Returns the measured length of the forearm in meters.*/ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
144 public float GetArmLength() { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
145 return (hand_.Arm.WristPosition - hand_.Arm.ElbowPosition).Magnitude * UnityVectorExtension.INPUT_SCALE; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
146 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
147 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
148 /** Returns the measured width of the forearm in meters.*/ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
149 public float GetArmWidth() { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
150 return hand_.Arm.Width * UnityVectorExtension.INPUT_SCALE; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
151 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
152 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
153 /** Calculates the position of the elbow relative to the controller. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
154 * @returns A Vector3 containing the Unity coordinates of the elbow. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
155 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
156 public Vector3 GetElbowPosition() { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
157 if (controller_ != null && hand_ != null) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
158 Vector3 local_position = hand_.Arm.ElbowPosition.ToUnityScaled (mirror_z_axis_); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
159 return controller_.transform.TransformPoint (local_position) + GetHandOffset (); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
160 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
161 if (elbowJoint) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
162 return elbowJoint.position; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
163 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
164 return Vector3.zero; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
165 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
166 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
167 /** Calculates the position of the wrist relative to the controller. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
168 * @returns A Vector3 containing the Unity coordinates of the wrist. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
169 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
170 public Vector3 GetWristPosition() { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
171 if (controller_ != null && hand_ != null) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
172 Vector3 local_position = hand_.Arm.WristPosition.ToUnityScaled (mirror_z_axis_); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
173 return controller_.transform.TransformPoint (local_position) + GetHandOffset (); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
174 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
175 if (wristJoint) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
176 return wristJoint.position; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
177 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
178 return Vector3.zero; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
179 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
180 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
181 /** Calculates the rotation of the forearm relative to the controller. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
182 * @returns A Quaternion representing the rotation of the arm relative to the controller. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
183 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
184 public Quaternion GetArmRotation() { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
185 if (controller_ != null && hand_ != null) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
186 Quaternion local_rotation = hand_.Arm.Basis.Rotation (mirror_z_axis_); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
187 return controller_.transform.rotation * local_rotation; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
188 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
189 if (forearm) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
190 return forearm.rotation; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
191 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
192 return Quaternion.identity; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
193 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
194 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
195 /** |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
196 * Returns the Leap Hand object represented by this HandModel. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
197 * Note that any physical quantities and directions obtained from the |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
198 * Leap Hand object are relative to the Leap Motion coordinate system, |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
199 * which uses a right-handed axes and units of millimeters. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
200 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
201 public Hand GetLeapHand() { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
202 return hand_; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
203 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
204 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
205 /** |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
206 * Assigns a Leap Hand object to this hand model. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
207 * Note that the Leap Hand objects are recreated every frame. The parent |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
208 * HandController calls this method to set or update the underlying hand. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
209 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
210 public void SetLeapHand(Hand hand) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
211 hand_ = hand; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
212 for (int i = 0; i < fingers.Length; ++i) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
213 if (fingers[i] != null) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
214 fingers[i].SetLeapHand(hand_); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
215 fingers[i].SetOffset(GetHandOffset()); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
216 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
217 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
218 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
219 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
220 /** |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
221 * Sets the mirror z-axis flag for this Hand Model and its fingers. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
222 * Mirroring the z axis reverses the hand so that they face the opposite direction -- as if in a mirror. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
223 * @param mirror Set true, the default value to mirror; false for normal rendering. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
224 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
225 public void MirrorZAxis(bool mirror = true) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
226 mirror_z_axis_ = mirror; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
227 for (int i = 0; i < fingers.Length; ++i) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
228 if (fingers[i] != null) |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
229 fingers[i].MirrorZAxis(mirror); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
230 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
231 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
232 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
233 /** Whether this hand is currently mirrored.*/ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
234 public bool IsMirrored() { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
235 return mirror_z_axis_; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
236 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
237 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
238 /** The parent HandController object of this hand.*/ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
239 public HandController GetController() { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
240 return controller_; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
241 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
242 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
243 /** Sets the parent HandController object. */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
244 public void SetController(HandController controller) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
245 controller_ = controller; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
246 for (int i = 0; i < fingers.Length; ++i) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
247 if (fingers[i] != null) |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
248 fingers[i].SetController(controller_); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
249 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
250 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
251 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
252 /** |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
253 * Implement this function to initialise this hand after it is created. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
254 * This function is called by the HandController during the Unity Update() phase when a new hand is detected |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
255 * by the Leap Motion device. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
256 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
257 public virtual void InitHand() { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
258 for (int f = 0; f < fingers.Length; ++f) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
259 if (fingers[f] != null) { |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
260 fingers[f].fingerType = (Finger.FingerType)f; |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
261 fingers[f].InitFinger(); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
262 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
263 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
264 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
265 UpdateHand (); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
266 } |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
267 |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
268 /** |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
269 * Implement this function to update this hand once every game loop. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
270 * For HandModel instances assigned to the HandController graphics hand list, the HandController calls this |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
271 * function during the Unity Update() phase. For HandModel instances in the physics hand list, the HandController |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
272 * calls this function in the FixedUpdate() phase. |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
273 */ |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
274 public abstract void UpdateHand(); |
f7675884f2a1
Add Orchestland project
Daiki OYAKAWA <e135764@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
275 } |