public static ISkeleton CreateInMapSkeleton()
        {
            int centerY = 0;
            int neckY = 400;
            var centerOrientation = new Vector4(0, 0, 0, 0);
            var s = new InMapSkeleton{ Valid = true };

            foreach (var joint in CreateArm(Side.LEFT))
            {
                s.Add(joint);
            }

            foreach (var joint in CreateArm(Side.RIGHT))
            {
                s.Add(joint);
            }

            foreach (var joint in CreateLeg(Side.LEFT))
            {
                s.Add(joint);
            }

            foreach (var joint in CreateLeg(Side.RIGHT))
            {
                s.Add(joint);
            }

            s.Add(CreateHead());
            s.Add(new OrientedJoint(JointType.NECK, true) { Point = new Vector3(0, neckY, 0) });
            s.Add(new OrientedJoint(JointType.CENTER, true) { Point = new Vector3(0, centerY, 0), Orientation = centerOrientation });
            s.Root = s.GetJoint(JointType.CENTER);

            return s;
        }
        public ISkeleton Clone()
        {
            var s = new InMapSkeleton(id, valid, timestamp);

            lock (_joints)
            {
                foreach (var key in _joints.Keys)
                {
                    s._joints.Add(key, _joints[key]);
                }
            }

            return(s);
        }
        public static ISkeleton CreateInMapSkeleton()
        {
            int centerY           = 0;
            int neckY             = 400;
            var centerOrientation = new Vector4(0, 0, 0, 0);
            var s = new InMapSkeleton {
                Valid = true
            };

            foreach (var joint in CreateArm(Side.LEFT))
            {
                s.Add(joint);
            }

            foreach (var joint in CreateArm(Side.RIGHT))
            {
                s.Add(joint);
            }

            foreach (var joint in CreateLeg(Side.LEFT))
            {
                s.Add(joint);
            }

            foreach (var joint in CreateLeg(Side.RIGHT))
            {
                s.Add(joint);
            }

            s.Add(CreateHead());
            s.Add(new OrientedJoint(JointType.NECK, true)
            {
                Point = new Vector3(0, neckY, 0)
            });
            s.Add(new OrientedJoint(JointType.CENTER, true)
            {
                Point = new Vector3(0, centerY, 0), Orientation = centerOrientation
            });
            s.Root = s.GetJoint(JointType.CENTER);

            return(s);
        }
        public ISkeleton Clone()
        {
            var s = new InMapSkeleton(id, valid, timestamp);
            lock (_joints)
            {
                foreach (var key in _joints.Keys)
                {
                    s._joints.Add(key, _joints[key]);
                }
            }

            return s;
        }