123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- //======= 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;
- }
- }
- }
- }
|