@@ -10,10 +10,39 @@ using namespace Collections::Generic;
1010using namespace ComponentModel ::Composition;
1111using namespace Runtime ::InteropServices;
1212
13- using namespace Amethyst ::Plugins::Contract;
14-
1513namespace KinectHandler
1614{
15+ private enum TrackedJointTypeInternal
16+ {
17+ JointHead,
18+ JointNeck,
19+ JointSpineShoulder,
20+ JointShoulderLeft,
21+ JointElbowLeft,
22+ JointWristLeft,
23+ JointHandLeft,
24+ JointHandTipLeft,
25+ JointThumbLeft,
26+ JointShoulderRight,
27+ JointElbowRight,
28+ JointWristRight,
29+ JointHandRight,
30+ JointHandTipRight,
31+ JointThumbRight,
32+ JointSpineMiddle,
33+ JointSpineWaist,
34+ JointHipLeft,
35+ JointKneeLeft,
36+ JointFootLeft,
37+ JointFootTipLeft,
38+ JointHipRight,
39+ JointKneeRight,
40+ JointFootRight,
41+ JointFootTipRight,
42+ JointManual,
43+ JointCount
44+ };
45+
1746 public ref class KinectJoint sealed
1847 {
1948 public:
@@ -72,31 +101,29 @@ namespace KinectHandler
72101 const auto & states = kinect_->tracking_states ();
73102
74103 auto trackedKinectJoints = gcnew List<KinectJoint^>;
75- for each (auto v in Enum::GetValues<TrackedJointType>() )
104+ for (auto v = 0 ; v < JointCount; v++ )
76105 {
77- if (v == TrackedJointType:: JointHandTipLeft ||
78- v == TrackedJointType:: JointHandTipRight ||
79- v == TrackedJointType:: JointThumbLeft ||
80- v == TrackedJointType:: JointThumbRight ||
81- v == TrackedJointType:: JointNeck ||
82- v == TrackedJointType:: JointManual)
106+ if (v == JointHandTipLeft ||
107+ v == JointHandTipRight ||
108+ v == JointThumbLeft ||
109+ v == JointThumbRight ||
110+ v == JointNeck ||
111+ v == JointManual)
83112 continue ; // Skip unsupported joints
84113
85114 auto joint = gcnew KinectJoint (static_cast <int >(v));
86-
87- joint->TrackingState =
88- states[kinect_->KinectJointType (static_cast <int >(v))];
115+ joint->TrackingState = states[kinect_->KinectJointType (v)];
89116
90117 joint->Position = Vector3 (
91- positions[kinect_->KinectJointType (static_cast < int >(v) )].x ,
92- positions[kinect_->KinectJointType (static_cast < int >(v) )].y ,
93- positions[kinect_->KinectJointType (static_cast < int >(v) )].z );
118+ positions[kinect_->KinectJointType (v )].x ,
119+ positions[kinect_->KinectJointType (v )].y ,
120+ positions[kinect_->KinectJointType (v )].z );
94121
95122 joint->Orientation = Quaternion (
96- orientations[kinect_->KinectJointType (static_cast < int >(v) )].absoluteRotation .rotationQuaternion .x ,
97- orientations[kinect_->KinectJointType (static_cast < int >(v) )].absoluteRotation .rotationQuaternion .y ,
98- orientations[kinect_->KinectJointType (static_cast < int >(v) )].absoluteRotation .rotationQuaternion .z ,
99- orientations[kinect_->KinectJointType (static_cast < int >(v) )].absoluteRotation .rotationQuaternion .w );
123+ orientations[kinect_->KinectJointType (v )].absoluteRotation .rotationQuaternion .x ,
124+ orientations[kinect_->KinectJointType (v )].absoluteRotation .rotationQuaternion .y ,
125+ orientations[kinect_->KinectJointType (v )].absoluteRotation .rotationQuaternion .z ,
126+ orientations[kinect_->KinectJointType (v )].absoluteRotation .rotationQuaternion .w );
100127
101128 trackedKinectJoints->Add (joint);
102129 }
0 commit comments