public Kinect1Backend() { this.sensors = new Kinect1Data[KinectSensor.KinectSensors.Count]; for (int i = 0; i < KinectSensor.KinectSensors.Count; i++) { Kinect1Data sensor = new Kinect1Data(KinectSensor.KinectSensors[i]); if (sensor.IsUsable()) { this.sensors[i] = sensor; } this.totalSensors += 1; } }
public Position GetRawJoint(int sensor, int skeleton, RawJointName id) { if (sensor < 0) { return(Position.Invalid); } else if (sensor < this.kv1.GetUsableKinectCount()) { Kinect1Data kinect = this.kv1.GetKinect(sensor); if (kinect == null) { return(Position.Invalid); } switch (id) // TODO: Move these to kv1 and kv2, make both extend a shared interface { case RawJointName.HandLeft1: return(new Position(kinect.GetJoint(skeleton, Kinect1JointName.HandLeft1))); case RawJointName.HandLeft2: return(new Position(kinect.GetJoint(skeleton, Kinect1JointName.HandLeft2))); case RawJointName.HandRight1: return(new Position(kinect.GetJoint(skeleton, Kinect1JointName.HandRight1))); case RawJointName.HandRight2: return(new Position(kinect.GetJoint(skeleton, Kinect1JointName.HandRight2))); case RawJointName.Head1: return(new Position(kinect.GetJoint(skeleton, Kinect1JointName.Head1))); case RawJointName.Head2: return(new Position(kinect.GetJoint(skeleton, Kinect1JointName.Head2))); case RawJointName.FootLeft1: return(new Position(kinect.GetJoint(skeleton, Kinect1JointName.FootLeft1))); case RawJointName.FootLeft2: return(new Position(kinect.GetJoint(skeleton, Kinect1JointName.FootLeft2))); case RawJointName.FootLeftHigh: return(new Position(kinect.GetJoint(skeleton, Kinect1JointName.FootLeftHigh))); case RawJointName.FootRight1: return(new Position(kinect.GetJoint(skeleton, Kinect1JointName.FootRight1))); case RawJointName.FootRight2: return(new Position(kinect.GetJoint(skeleton, Kinect1JointName.FootRight2))); case RawJointName.FootRightHigh: return(new Position(kinect.GetJoint(skeleton, Kinect1JointName.FootRightHigh))); case RawJointName.Hip1: return(new Position(kinect.GetJoint(skeleton, Kinect1JointName.Hip1))); case RawJointName.Hip2: return(new Position(kinect.GetJoint(skeleton, Kinect1JointName.Hip2))); default: return(Position.Invalid); } } else if (sensor < this.kv1.GetUsableKinectCount() + this.kv2.GetUsableKinectCount()) { Kinect2Data kinect = this.kv2.GetKinect(sensor); if (kinect == null) { return(Position.Invalid); } switch (id) { case RawJointName.HandLeft1: return(new Position(kinect.GetJoint(skeleton, Kinect2JointName.HandLeft1))); case RawJointName.HandLeft2: return(new Position(kinect.GetJoint(skeleton, Kinect2JointName.HandLeft2))); case RawJointName.HandRight1: return(new Position(kinect.GetJoint(skeleton, Kinect2JointName.HandRight1))); case RawJointName.HandRight2: return(new Position(kinect.GetJoint(skeleton, Kinect2JointName.HandRight2))); case RawJointName.Head1: return(new Position(kinect.GetJoint(skeleton, Kinect2JointName.Head1))); case RawJointName.Head2: return(new Position(kinect.GetJoint(skeleton, Kinect2JointName.Head2))); case RawJointName.FootLeft1: return(new Position(kinect.GetJoint(skeleton, Kinect2JointName.FootLeft1))); case RawJointName.FootLeft2: return(new Position(kinect.GetJoint(skeleton, Kinect2JointName.FootLeft2))); case RawJointName.FootLeftHigh: return(new Position(kinect.GetJoint(skeleton, Kinect2JointName.FootLeftHigh))); case RawJointName.FootRight1: return(new Position(kinect.GetJoint(skeleton, Kinect2JointName.FootRight1))); case RawJointName.FootRight2: return(new Position(kinect.GetJoint(skeleton, Kinect2JointName.FootRight2))); case RawJointName.FootRightHigh: return(new Position(kinect.GetJoint(skeleton, Kinect2JointName.FootRightHigh))); case RawJointName.Hip1: return(new Position(kinect.GetJoint(skeleton, Kinect2JointName.Hip1))); case RawJointName.Hip2: return(new Position(kinect.GetJoint(skeleton, Kinect2JointName.Hip2))); default: return(Position.Invalid); } } else { return(Position.Invalid); } }