You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			145 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C#
		
	
			
		
		
	
	
			145 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C#
		
	
//======= Copyright (c) Valve Corporation, All rights reserved. ===============
 | 
						|
 | 
						|
using System;
 | 
						|
using System.Collections;
 | 
						|
using UnityEngine;
 | 
						|
using Valve.VR;
 | 
						|
 | 
						|
using System.Linq;
 | 
						|
 | 
						|
namespace Valve.VR
 | 
						|
{
 | 
						|
    public class SteamVR_Skeleton_Pose : ScriptableObject
 | 
						|
    {
 | 
						|
        public SteamVR_Skeleton_Pose_Hand leftHand = new SteamVR_Skeleton_Pose_Hand(SteamVR_Input_Sources.LeftHand);
 | 
						|
        public SteamVR_Skeleton_Pose_Hand rightHand = new SteamVR_Skeleton_Pose_Hand(SteamVR_Input_Sources.RightHand);
 | 
						|
 | 
						|
        protected const int leftHandInputSource = (int)SteamVR_Input_Sources.LeftHand;
 | 
						|
        protected const int rightHandInputSource = (int)SteamVR_Input_Sources.RightHand;
 | 
						|
 | 
						|
        public bool applyToSkeletonRoot = true;
 | 
						|
 | 
						|
        public SteamVR_Skeleton_Pose_Hand GetHand(int hand)
 | 
						|
        {
 | 
						|
            if (hand == leftHandInputSource)
 | 
						|
                return leftHand;
 | 
						|
            else if (hand == rightHandInputSource)
 | 
						|
                return rightHand;
 | 
						|
            return null;
 | 
						|
        }
 | 
						|
 | 
						|
        public SteamVR_Skeleton_Pose_Hand GetHand(SteamVR_Input_Sources hand)
 | 
						|
        {
 | 
						|
            if (hand == SteamVR_Input_Sources.LeftHand)
 | 
						|
                return leftHand;
 | 
						|
            else if (hand == SteamVR_Input_Sources.RightHand)
 | 
						|
                return rightHand;
 | 
						|
            return null;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    [Serializable]
 | 
						|
    public class SteamVR_Skeleton_Pose_Hand
 | 
						|
    {
 | 
						|
        public SteamVR_Input_Sources inputSource;
 | 
						|
 | 
						|
        public SteamVR_Skeleton_FingerExtensionTypes thumbFingerMovementType = SteamVR_Skeleton_FingerExtensionTypes.Static;
 | 
						|
        public SteamVR_Skeleton_FingerExtensionTypes indexFingerMovementType = SteamVR_Skeleton_FingerExtensionTypes.Static;
 | 
						|
        public SteamVR_Skeleton_FingerExtensionTypes middleFingerMovementType = SteamVR_Skeleton_FingerExtensionTypes.Static;
 | 
						|
        public SteamVR_Skeleton_FingerExtensionTypes ringFingerMovementType = SteamVR_Skeleton_FingerExtensionTypes.Static;
 | 
						|
        public SteamVR_Skeleton_FingerExtensionTypes pinkyFingerMovementType = SteamVR_Skeleton_FingerExtensionTypes.Static;
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Get extension type for a particular finger. Thumb is 0, Index is 1, etc.
 | 
						|
        /// </summary>
 | 
						|
        public SteamVR_Skeleton_FingerExtensionTypes GetFingerExtensionType(int finger)
 | 
						|
        {
 | 
						|
            if (finger == 0)
 | 
						|
                return thumbFingerMovementType;
 | 
						|
            if (finger == 1)
 | 
						|
                return indexFingerMovementType;
 | 
						|
            if (finger == 2)
 | 
						|
                return middleFingerMovementType;
 | 
						|
            if (finger == 3)
 | 
						|
                return ringFingerMovementType;
 | 
						|
            if (finger == 4)
 | 
						|
                return pinkyFingerMovementType;
 | 
						|
 | 
						|
            //default to static
 | 
						|
            Debug.LogWarning("Finger not in range!");
 | 
						|
            return SteamVR_Skeleton_FingerExtensionTypes.Static;
 | 
						|
        }
 | 
						|
 | 
						|
        public bool ignoreRootPoseData = true;
 | 
						|
        public bool ignoreWristPoseData = true;
 | 
						|
 | 
						|
        public Vector3 position;
 | 
						|
        public Quaternion rotation;
 | 
						|
 | 
						|
        public Vector3[] bonePositions;
 | 
						|
        public Quaternion[] boneRotations;
 | 
						|
 | 
						|
        public SteamVR_Skeleton_Pose_Hand(SteamVR_Input_Sources source)
 | 
						|
        {
 | 
						|
            inputSource = source;
 | 
						|
        }
 | 
						|
 | 
						|
        public SteamVR_Skeleton_FingerExtensionTypes GetMovementTypeForBone(int boneIndex)
 | 
						|
        {
 | 
						|
            int fingerIndex = SteamVR_Skeleton_JointIndexes.GetFingerForBone(boneIndex);
 | 
						|
 | 
						|
            switch (fingerIndex)
 | 
						|
            {
 | 
						|
                case SteamVR_Skeleton_FingerIndexes.thumb:
 | 
						|
                    return thumbFingerMovementType;
 | 
						|
 | 
						|
                case SteamVR_Skeleton_FingerIndexes.index:
 | 
						|
                    return indexFingerMovementType;
 | 
						|
 | 
						|
                case SteamVR_Skeleton_FingerIndexes.middle:
 | 
						|
                    return middleFingerMovementType;
 | 
						|
 | 
						|
                case SteamVR_Skeleton_FingerIndexes.ring:
 | 
						|
                    return ringFingerMovementType;
 | 
						|
 | 
						|
                case SteamVR_Skeleton_FingerIndexes.pinky:
 | 
						|
                    return pinkyFingerMovementType;
 | 
						|
            }
 | 
						|
 | 
						|
            return SteamVR_Skeleton_FingerExtensionTypes.Static;
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public enum SteamVR_Skeleton_FingerExtensionTypes
 | 
						|
    {
 | 
						|
        Static,
 | 
						|
        Free,
 | 
						|
        Extend,
 | 
						|
        Contract,
 | 
						|
    }
 | 
						|
 | 
						|
    public class SteamVR_Skeleton_FingerExtensionTypeLists
 | 
						|
    {
 | 
						|
        private SteamVR_Skeleton_FingerExtensionTypes[] _enumList;
 | 
						|
        public SteamVR_Skeleton_FingerExtensionTypes[] enumList
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                if (_enumList == null)
 | 
						|
                    _enumList = (SteamVR_Skeleton_FingerExtensionTypes[])System.Enum.GetValues(typeof(SteamVR_Skeleton_FingerExtensionTypes));
 | 
						|
                return _enumList;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private string[] _stringList;
 | 
						|
        public string[] stringList
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                if (_stringList == null)
 | 
						|
                    _stringList = enumList.Select(element => element.ToString()).ToArray();
 | 
						|
                return _stringList;
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |