Exemplo n.º 1
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JObject jObject = JObject.Load(reader);

            Model.LeapMotion.EFingerBoneType eFingerBoneType =
                (EFingerBoneType)Enum.Parse(typeof(EFingerBoneType), jObject["Type"].ToString());
            FingerBone fingerBone = new FingerBone(eFingerBoneType);

            string localStartPositionString = jObject["LocalStartPosition"].ToString().TrimStart('<').TrimEnd('>');

            string[] localStartPositions = localStartPositionString.Split(',');
            fingerBone.LocalStartPosition = new Vector3(
                float.Parse(localStartPositions[0]),
                float.Parse(localStartPositions[1]),
                float.Parse(localStartPositions[2])
                );

            string localEndPositionString = jObject["LocalEndPosition"].ToString().TrimStart('<').TrimEnd('>');

            string[] localEndPositions = localEndPositionString.Split(',');
            fingerBone.LocalEndPosition = new Vector3(
                float.Parse(localEndPositions[0]),
                float.Parse(localEndPositions[1]),
                float.Parse(localEndPositions[2])
                );


            return(fingerBone);
        }
Exemplo n.º 2
0
        public Quaternion GetBoneRotation(uint actorId, Side side, Finger fingerId, FingerBone fingerboneId)
        {
            SideBone   sideBoneId = BoneReference.HumanoidSideBone(fingerId, fingerboneId);
            Quaternion q          = GetBoneRotation(actorId, side, sideBoneId);

            return(q);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Auto detect finger bones, set offset.
        /// </summary>
        /// <param name="type">Left or right hand</param>
        /// <param name="offset">Offset the finger rotation to make it works correctly. For right hand, it needs an offset of Vector3(0.0f, 0.0f, 180.0f).</param>
        public RocketBoxHand(HandType type, Vector3 offset = new Vector3())
        {
            handType = type;
            for (int fingerIndex = 0; fingerIndex <= fingerBones.GetUpperBound(0); fingerIndex++)
            {
                for (int fingerBoneIndex = 0; fingerBoneIndex <= fingerBones.GetUpperBound(1); fingerBoneIndex++)
                {
                    string    name       = "Finger" + fingerIndex + ((fingerBoneIndex == 0) ? "" : fingerBoneIndex.ToString());
                    string    namePrefix = "Bip01 " + ((type == HandType.LeftHand) ? "L " : "R ");
                    Transform transform  = GameObject.Find(namePrefix + name).transform;

                    fingerBones[fingerIndex, fingerBoneIndex] = new FingerBone(name, transform, offset);
                }
            }
        }
Exemplo n.º 4
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JObject jObject = JObject.Load(reader);

            Model.LeapMotion.EFingerType fingerType =
                (EFingerType)Enum.Parse(typeof(Model.LeapMotion.EFingerType), jObject["Type"].ToString());
            Finger finger = new Finger(fingerType);

            IList <FingerBone> fingerBones = new List <FingerBone>();

            serializer.Converters.Add(new FingerBoneTypeConverter());

            foreach (var child in jObject["Bones"])
            {
                FingerBone fingerBone = child.ToObject <FingerBone>(serializer);
                fingerBones.Add(fingerBone);
            }

            finger.Bones = fingerBones;

            return(finger);
        }
Exemplo n.º 5
0
        public static SideBone HumanoidSideBone(Finger fingerId, FingerBone fingerBoneId)
        {
            SideBone boneId = (SideBone)(((int)Tracking.SideBone.ThumbProximal - 1) + (int)fingerId * 4 + (int)fingerBoneId);

            return(boneId);
        }