﻿using System;

namespace FOHEART_Mocap
{
    public class FoheartSkeletonName
    {
        public enum kinemHumanSkeleton53Index
        {
            Hips = 0,
            Spine1 = 1,
            Spine2 = 2,
            Spine3 = 3,
            Spine4 = 4,
            Neck = 5,
            Head = 6,

            RightShoulder = 7,
            RightArm = 8,
            RightForeArm = 9,
            RightHand = 10,
            RightHandThumb1 = 11,
            RightHandThumb2 = 12,
            RightHandThumb3 = 13,
            RightHandIndex1 = 14,
            RightHandIndex2 = 15,
            RightHandIndex3 = 16,
            RightHandMiddle1 = 17,
            RightHandMiddle2 = 18,
            RightHandMiddle3 = 19,
            RightHandRing1 = 20,
            RightHandRing2 = 21,
            RightHandRing3 = 22,
            RightHandPinky1 = 23,
            RightHandPinky2 = 24,
            RightHandPinky3 = 25,

            LeftShoulder = 26,
            LeftArm = 27,
            LeftForeArm = 28,
            LeftHand = 29,
            LeftHandThumb1 = 30,
            LeftHandThumb2 = 31,
            LeftHandThumb3 = 32,
            LeftHandIndex1 = 33,
            LeftHandIndex2 = 34,
            LeftHandIndex3 = 35,
            LeftHandMiddle1 = 36,
            LeftHandMiddle2 = 37,
            LeftHandMiddle3 = 38,
            LeftHandRing1 = 39,
            LeftHandRing2 = 40,
            LeftHandRing3 = 41,
            LeftHandPinky1 = 42,
            LeftHandPinky2 = 43,
            LeftHandPinky3 = 44,

            RightUpLeg = 45,
            RightLeg = 46,
            RightFoot = 47,
            RightToeBase = 48,
            LeftUpLeg = 49,
            LeftLeg = 50,
            LeftFoot = 51,
            LeftToeBase = 52,

            NumOfBones
        };
        public enum kinemHumanHandsSkeleton32Index
        {
            RightHand = 0,
            RightHandThumb1 = 1,
            RightHandThumb2 = 2,
            RightHandThumb3 = 3,
            RightHandIndex1 = 4,
            RightHandIndex2 = 5,
            RightHandIndex3 = 6,
            RightHandMiddle1 = 7,
            RightHandMiddle2 = 8,
            RightHandMiddle3 = 9,
            RightHandRing1 = 10,
            RightHandRing2 = 11,
            RightHandRing3 = 12,
            RightHandPinky1 = 13,
            RightHandPinky2 = 14,
            RightHandPinky3 = 15,

            LeftHand = 16,
            LeftHandThumb1 = 17,
            LeftHandThumb2 = 18,
            LeftHandThumb3 = 19,
            LeftHandIndex1 = 20,
            LeftHandIndex2 = 21,
            LeftHandIndex3 = 22,
            LeftHandMiddle1 = 23,
            LeftHandMiddle2 = 24,
            LeftHandMiddle3 = 25,
            LeftHandRing1 = 26,
            LeftHandRing2 = 27,
            LeftHandRing3 = 28,
            LeftHandPinky1 = 29,
            LeftHandPinky2 = 30,
            LeftHandPinky3 = 31,

            NumOfBones
        };
        public enum kinemHumanHandsEndPoint12Index
        {
            RightWristEndPoint ,
        
            RightHandThumbEndPoint ,
            RightHandIndexEndPoint ,
            RightHandMiddleEndPoint ,
            RightHandRingEndPoint ,
            RightHandPinkyEndPoint ,

            LeftWristEndPoint,

            LeftHandThumbEndPoint,
            LeftHandIndexEndPoint,
            LeftHandMiddleEndPoint,
            LeftHandRingEndPoint,
            LeftHandPinkyEndPoint,

            NumOfBones
        };
        public enum U3D_GloveSkeleton_Template_TypeDef
        {
            U3D_GLOVE_SKELETON_TEMPLATE_STRAIGHT,
            U3D_GLOVE_SKELETON_TEMPLATE_THUMBOPEN,
            U3D_GLOVE_SKELETON_TEMPLATE_STEAMVRGLOVE
        };

        public enum _kinemHumanSkeleton32Index
        {
            KHS32_RightHand,              //rHAND
            KHS32_RightHandThumb1, //RHT1
            KHS32_RightHandThumb2, //RHT2
            KHS32_RightHandThumb3, //RHT3
            KHS32_RightHandIndex1, //RHI1
            KHS32_RightHandIndex2, //RHI2
            KHS32_RightHandIndex3, //RHI3
            KHS32_RightHandMiddle1,//RHM1
            KHS32_RightHandMiddle2,//RHM2
            KHS32_RightHandMiddle3,//RHM3
            KHS32_RightHandRing1,  //RHR1
            KHS32_RightHandRing2,  //RHR2
            KHS32_RightHandRing3,  //RHR3
            KHS32_RightHandPinky1, //RHP1
            KHS32_RightHandPinky2, //RHP2
            KHS32_RightHandPinky3, //RHP3

            KHS32_LeftHand,    //lHAND
            KHS32_LeftHandThumb1,   //LHT1
            KHS32_LeftHandThumb2,   //LHT2
            KHS32_LeftHandThumb3,   //LHT3
            KHS32_LeftHandIndex1,   //LHI1
            KHS32_LeftHandIndex2,   //LHI2
            KHS32_LeftHandIndex3,   //LHI3
            KHS32_LeftHandMiddle1,  //LHM1
            KHS32_LeftHandMiddle2,  //LHM2
            KHS32_LeftHandMiddle3,  //LHM3
            KHS32_LeftHandRing1,    //LHR1
            KHS32_LeftHandRing2,    //LHR2
            KHS32_LeftHandRing3,    //LHR3
            KHS32_LeftHandPinky1,   //LHP1
            KHS32_LeftHandPinky2,   //LHP2
            KHS32_LeftHandPinky3,   //LHP3

            KHS32_Count
        };

        public static readonly int[] JointEulerFather30 = new int[32]{
            -1,
    (int)_kinemHumanSkeleton32Index.KHS32_RightHand,			  //KHJ52_RightHandThumbJoint1,
	(int)_kinemHumanSkeleton32Index.KHS32_RightHandThumb1,		  //KHJ52_RightHandThumbJoint2,
	(int)_kinemHumanSkeleton32Index.KHS32_RightHandThumb2,       //KHJ52_RightHandThumbJoint3,
	(int)_kinemHumanSkeleton32Index.KHS32_RightHand,       //KHJ52_RightHandIndexJoint1,
	(int)_kinemHumanSkeleton32Index.KHS32_RightHandIndex1, //KHJ52_RightHandIndexJoint2,
	(int)_kinemHumanSkeleton32Index.KHS32_RightHandIndex2, //KHJ52_RightHandIndexJoint3,
	(int)_kinemHumanSkeleton32Index.KHS32_RightHand,       //KHJ52_RightHandMiddleJoint1,
	(int)_kinemHumanSkeleton32Index.KHS32_RightHandMiddle1,//KHJ52_RightHandMiddleJoint2,
	(int)_kinemHumanSkeleton32Index.KHS32_RightHandMiddle2,//KHJ52_RightHandMiddleJoint3,
	(int)_kinemHumanSkeleton32Index.KHS32_RightHand,       //KHJ52_RightHandRingJoint1,
	(int)_kinemHumanSkeleton32Index.KHS32_RightHandRing1,  //KHJ52_RightHandRingJoint2,
	(int)_kinemHumanSkeleton32Index.KHS32_RightHandRing2,  //KHJ52_RightHandRingJoint3,
	(int)_kinemHumanSkeleton32Index.KHS32_RightHand,       //KHJ52_RightHandPinkyJoint1,
	(int)_kinemHumanSkeleton32Index.KHS32_RightHandPinky1, //KHJ52_RightHandPinkyJoint2,
	(int)_kinemHumanSkeleton32Index.KHS32_RightHandPinky2, //KHJ52_RightHandPinkyJoint3,

    -1,
	(int)_kinemHumanSkeleton32Index.KHS32_LeftHand,		//KHJ52_LeftHandThumbJoint1,
	(int)_kinemHumanSkeleton32Index.KHS32_LeftHandThumb1,//KHJ52_LeftHandThumbJoint2,
	(int)_kinemHumanSkeleton32Index.KHS32_LeftHandThumb2, //KHJ52_LeftHandThumbJoint3,
	(int)_kinemHumanSkeleton32Index.KHS32_LeftHand,       //KHJ52_LeftHandIndexJoint1,
	(int)_kinemHumanSkeleton32Index.KHS32_LeftHandIndex1, //KHJ52_LeftHandIndexJoint2,
	(int)_kinemHumanSkeleton32Index.KHS32_LeftHandIndex2, //KHJ52_LeftHandIndexJoint3,
	(int)_kinemHumanSkeleton32Index.KHS32_LeftHand,       //KHJ52_LeftHandMiddleJoint1,
	(int)_kinemHumanSkeleton32Index.KHS32_LeftHandMiddle1,//KHJ52_LeftHandMiddleJoint2,
	(int)_kinemHumanSkeleton32Index.KHS32_LeftHandMiddle2,//KHJ52_LeftHandMiddleJoint3,
	(int)_kinemHumanSkeleton32Index.KHS32_LeftHand,       //KHJ52_LeftHandRingJoint1,
	(int)_kinemHumanSkeleton32Index.KHS32_LeftHandRing1,  //KHJ52_LeftHandRingJoint2,
	(int)_kinemHumanSkeleton32Index.KHS32_LeftHandRing2,  //KHJ52_LeftHandRingJoint3,
	(int)_kinemHumanSkeleton32Index.KHS32_LeftHand,       //KHJ52_LeftHandPinkyJoint1,
	(int)_kinemHumanSkeleton32Index.KHS32_LeftHandPinky1, //KHJ52_LeftHandPinkyJoint2,
	(int)_kinemHumanSkeleton32Index.KHS32_LeftHandPinky2 //KHJ52_LeftHandPinkyJoint3,
};

        public static readonly String[] u3dSkeletonTemplate = {
    "Straight Figure",
    "Thumb Open",
    "Steam VR Glove"
};

        public static readonly String[] kinemHumanSkeleton32 = new string[(int)kinemHumanHandsSkeleton32Index.NumOfBones]{

                "RightHand",

                "RightHandThumb1",
                "RightHandThumb2",
                "RightHandThumb3",
                "RightHandIndex1",
                "RightHandIndex2",
                "RightHandIndex3",
                "RightHandMiddle1",
                "RightHandMiddle2",
                "RightHandMiddle3",
                  "RightHandRing1",
                "RightHandRing2",
                "RightHandRing3",
                "RightHandPinky1",
                "RightHandPinky2",
                "RightHandPinky3",



                "LeftHand",

                "LeftHandThumb1",
                "LeftHandThumb2",
                "LeftHandThumb3",
                "LeftHandIndex1",
                "LeftHandIndex2",
                "LeftHandIndex3",
                "LeftHandMiddle1",
                "LeftHandMiddle2",
                "LeftHandMiddle3",
                    "LeftHandRing1",
                "LeftHandRing2",
                "LeftHandRing3",
                "LeftHandPinky1",
                "LeftHandPinky2",
                "LeftHandPinky3"
            };

        public static readonly string[] mixAnimSkeletonNames = new string[(int)kinemHumanHandsSkeleton32Index.NumOfBones]
      {

        "RightHand",
        "RightHandThumb1",
        "RightHandThumb2",
        "RightHandThumb3",
        "RightHandIndex1",
        "RightHandIndex2",
        "RightHandIndex3",
        "RightHandMiddle1",
        "RightHandMiddle2",
        "RightHandMiddle3",
        "RightHandRing1",
        "RightHandRing2",
        "RightHandRing3",
        "RightHandPinky1",
        "RightHandPinky2",
        "RightHandPinky3",


        "LeftHand",
        "LeftHandThumb1",
        "LeftHandThumb2",
        "LeftHandThumb3",
        "LeftHandIndex1",
        "LeftHandIndex2",
        "LeftHandIndex3",
        "LeftHandMiddle1",
        "LeftHandMiddle2",
        "LeftHandMiddle3",
        "LeftHandRing1",
        "LeftHandRing2",
        "LeftHandRing3",
        "LeftHandPinky1",
        "LeftHandPinky2",
        "LeftHandPinky3"

    };

        public static readonly string[] SK_MannequinSkeletonNames = new string[(int)kinemHumanHandsSkeleton32Index.NumOfBones]
              {

           // "vr_glove_right_model_slim",
            "wrist_r",

            "thumb_01_r",
            "thumb_02_r",
            "thumb_03_r",
            "index_01_r",
            "index_02_r",
            "index_03_r",
            "middle_01_r",
            "middle_02_r",
            "middle_03_r",
            "ring_01_r",
            "ring_02_r",
            "ring_03_r",
            "pinky_01_r",
            "pinky_02_r",
            "pinky_03_r",


           // "vr_glove_left_model_slim",
              "wrist_l",

            "thumb_01_l",
            "thumb_02_l",
            "thumb_03_l",
            "index_01_l",
            "index_02_l",
            "index_03_l",
            "middle_01_l",
            "middle_02_l",
            "middle_03_l",
            "ring_01_l",
            "ring_02_l",
            "ring_03_l",
            "pinky_01_l",
            "pinky_02_l",
            "pinky_03_l"
              };
        public static readonly string[] SK_MannequinEndPointNames = new string[(int)kinemHumanHandsEndPoint12Index.NumOfBones]
            {
            //"vr_glove_right_model_slim",
            "wrist_r",
            "finger_thumb_r_end",
            "finger_index_r_end",
            "finger_middle_r_end",
            "finger_ring_r_end",
            "finger_pinky_r_end",

            //"vr_glove_left_model_slim",
            "wrist_l",
            "finger_thumb_l_end",
            "finger_index_l_end",
            "finger_middle_l_end",
            "finger_ring_l_end",
            "finger_pinky_l_end",
            };
        /*U3D官方Starter Content里的模型*/
        public static readonly string[] PlayerArmatureSkeletonNames = new string[(int)kinemHumanHandsSkeleton32Index.NumOfBones]
      {

        "Right_Hand",
        "Right_ThumbProximal",
        "Right_ThumbIntermediate",
        "Right_ThumbDistal",
        "Right_IndexProximal",
        "Right_IndexIntermediate",
        "Right_IndexDistal",
        "Right_MiddleProximal",
        "Right_MiddleIntermediate",
        "Right_MiddleDistal",
        "Right_RingProximal",
        "Right_RingIntermediate",
        "Right_RingDistal",
        "Right_PinkyProximal",
        "Right_PinkyIntermediate",
        "Right_PinkyDistal",


        "Left_Hand",
        "Left_ThumbProximal",
        "Left_ThumbIntermediate",
        "Left_ThumbDistal",
        "Left_IndexProximal",
        "Left_IndexIntermediate",
        "Left_IndexDistal",
        "Left_MiddleProximal",
        "Left_MiddleIntermediate",
        "Left_MiddleDistal",
        "Left_RingProximal",
        "Left_RingIntermediate",
        "Left_RingDistal",
        "Left_PinkyProximal",
        "Left_PinkyIntermediate",
        "Left_PinkyDistal"
      };

        public static readonly string[] RealTimeRascalsSkeletonNames = new string[(int)kinemHumanHandsSkeleton32Index.NumOfBones]
           {

        "Hand.R",
        "Thumb_Proximal.R",
        "Thumb_Intermediate.R",
        "Thumb_Distal.R",
        "Index_Proximal.R",
        "Index_Intermediate.R",
        "Index_Distal.R",
        "Middle_Proximal.R",
        "Middle_Intermediate.R",
        "Middle_Distal.R",
        "Ring_Proximal.R",
        "Ring_Intermediate.R",
        "Ring_Distal.R",
        "none",
        "none",
        "none",


        "Hand.L",
        "Thumb_Proximal.L",
        "Thumb_Intermediate.L",
        "Thumb_Distal.L",
        "Index_Proximal.L",
        "Index_Intermediate.L",
        "Index_Distal.L",
        "Middle_Proximal.L",
        "Middle_Intermediate.L",
        "Middle_Distal.L",
        "Ring_Proximal.L",
        "Ring_Intermediate.L",
        "Ring_Distal.L",
        "none",
        "none",
        "none"
           };

        public static readonly string[] steamVRSkeletonNames = new string[(int)kinemHumanHandsSkeleton32Index.NumOfBones]
                 {

            "RightHand",

            "finger_thumb_0_r",
            "finger_thumb_1_r",
            "finger_thumb_2_r",
            "finger_index_0_r",
            "finger_index_1_r",
            "finger_index_2_r",
            "finger_middle_0_r",
            "finger_middle_1_r",
            "finger_middle_2_r",
            "finger_ring_0_r",
            "finger_ring_1_r",
            "finger_ring_2_r",
            "finger_pinky_0_r",
            "finger_pinky_1_r",
            "finger_pinky_2_r",


            "LeftHand",
            "finger_thumb_0_l",
            "finger_thumb_1_l",
            "finger_thumb_2_l",
            "finger_index_0_l",
            "finger_index_1_l",
            "finger_index_2_l",
            "finger_middle_0_l",
            "finger_middle_1_l",
            "finger_middle_2_l",
            "finger_ring_0_l",
            "finger_ring_1_l",
            "finger_ring_2_l",
            "finger_pinky_0_l",
            "finger_pinky_1_l",
            "finger_pinky_2_l"
                 };

    }
}
