1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459 |
-
- using UnityEngine;
- using System.Collections;
- using System;
- using System.Runtime.InteropServices;
- using System.Collections.Generic;
- using System.Text;
- namespace Valve.VR
- {
- [Serializable]
-
-
-
-
- public class SteamVR_Action_Skeleton : SteamVR_Action_Pose_Base<SteamVR_Action_Skeleton_Source_Map, SteamVR_Action_Skeleton_Source>, ISteamVR_Action_Skeleton_Source, ISerializationCallbackReceiver
- {
- public const int numBones = 31;
- public delegate void ActiveChangeHandler(SteamVR_Action_Skeleton fromAction, bool active);
- public delegate void ChangeHandler(SteamVR_Action_Skeleton fromAction);
- public delegate void UpdateHandler(SteamVR_Action_Skeleton fromAction);
- public delegate void TrackingChangeHandler(SteamVR_Action_Skeleton fromAction, ETrackingResult trackingState);
- public delegate void ValidPoseChangeHandler(SteamVR_Action_Skeleton fromAction, bool validPose);
- public delegate void DeviceConnectedChangeHandler(SteamVR_Action_Skeleton fromAction, bool deviceConnected);
-
- public event ActiveChangeHandler onActiveChange
- { add { sourceMap[SteamVR_Input_Sources.Any].onActiveChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveChange -= value; } }
-
- public event ActiveChangeHandler onActiveBindingChange
- { add { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onActiveBindingChange -= value; } }
-
- public event ChangeHandler onChange
- { add { sourceMap[SteamVR_Input_Sources.Any].onChange += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onChange -= value; } }
-
- public event UpdateHandler onUpdate
- { add { sourceMap[SteamVR_Input_Sources.Any].onUpdate += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onUpdate -= value; } }
-
- public event TrackingChangeHandler onTrackingChanged
- { add { sourceMap[SteamVR_Input_Sources.Any].onTrackingChanged += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onTrackingChanged -= value; } }
-
- public event ValidPoseChangeHandler onValidPoseChanged
- { add { sourceMap[SteamVR_Input_Sources.Any].onValidPoseChanged += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onValidPoseChanged -= value; } }
-
- public event DeviceConnectedChangeHandler onDeviceConnectedChanged
- { add { sourceMap[SteamVR_Input_Sources.Any].onDeviceConnectedChanged += value; } remove { sourceMap[SteamVR_Input_Sources.Any].onDeviceConnectedChanged -= value; } }
- public SteamVR_Action_Skeleton() { }
-
-
-
-
- public virtual void UpdateValue(bool skipStateAndEventUpdates)
- {
- sourceMap[SteamVR_Input_Sources.Any].UpdateValue(skipStateAndEventUpdates);
- }
-
-
-
-
- public void UpdateValueWithoutEvents()
- {
- sourceMap[SteamVR_Input_Sources.Any].UpdateValue(true);
- }
-
-
-
-
- public void UpdateTransform(Transform transformToUpdate)
- {
- base.UpdateTransform(SteamVR_Input_Sources.Any, transformToUpdate);
- }
- #region skeleton source properties
-
- public Vector3[] bonePositions { get { return sourceMap[SteamVR_Input_Sources.Any].bonePositions; } }
-
- public Quaternion[] boneRotations { get { return sourceMap[SteamVR_Input_Sources.Any].boneRotations; } }
-
- public Vector3[] lastBonePositions { get { return sourceMap[SteamVR_Input_Sources.Any].lastBonePositions; } }
-
- public Quaternion[] lastBoneRotations { get { return sourceMap[SteamVR_Input_Sources.Any].lastBoneRotations; } }
-
- public EVRSkeletalMotionRange rangeOfMotion
- {
- get { return sourceMap[SteamVR_Input_Sources.Any].rangeOfMotion; }
- set { sourceMap[SteamVR_Input_Sources.Any].rangeOfMotion = value; }
- }
-
- public EVRSkeletalTransformSpace skeletalTransformSpace
- {
- get { return sourceMap[SteamVR_Input_Sources.Any].skeletalTransformSpace; }
- set { sourceMap[SteamVR_Input_Sources.Any].skeletalTransformSpace = value; }
- }
-
- public EVRSummaryType summaryDataType
- {
- get { return sourceMap[SteamVR_Input_Sources.Any].summaryDataType; }
- set { sourceMap[SteamVR_Input_Sources.Any].summaryDataType = value; }
- }
-
-
-
-
-
-
- public EVRSkeletalTrackingLevel skeletalTrackingLevel
- {
- get { return sourceMap[SteamVR_Input_Sources.Any].skeletalTrackingLevel; }
- }
-
- public float thumbCurl { get { return sourceMap[SteamVR_Input_Sources.Any].thumbCurl; } }
-
- public float indexCurl { get { return sourceMap[SteamVR_Input_Sources.Any].indexCurl; } }
-
- public float middleCurl { get { return sourceMap[SteamVR_Input_Sources.Any].middleCurl; } }
-
- public float ringCurl { get { return sourceMap[SteamVR_Input_Sources.Any].ringCurl; } }
-
- public float pinkyCurl { get { return sourceMap[SteamVR_Input_Sources.Any].pinkyCurl; } }
-
- public float thumbIndexSplay { get { return sourceMap[SteamVR_Input_Sources.Any].thumbIndexSplay; } }
-
- public float indexMiddleSplay { get { return sourceMap[SteamVR_Input_Sources.Any].indexMiddleSplay; } }
-
- public float middleRingSplay { get { return sourceMap[SteamVR_Input_Sources.Any].middleRingSplay; } }
-
- public float ringPinkySplay { get { return sourceMap[SteamVR_Input_Sources.Any].ringPinkySplay; } }
-
- public float lastThumbCurl { get { return sourceMap[SteamVR_Input_Sources.Any].lastThumbCurl; } }
-
- public float lastIndexCurl { get { return sourceMap[SteamVR_Input_Sources.Any].lastIndexCurl; } }
-
- public float lastMiddleCurl { get { return sourceMap[SteamVR_Input_Sources.Any].lastMiddleCurl; } }
-
- public float lastRingCurl { get { return sourceMap[SteamVR_Input_Sources.Any].lastRingCurl; } }
-
- public float lastPinkyCurl { get { return sourceMap[SteamVR_Input_Sources.Any].lastPinkyCurl; } }
-
- public float lastThumbIndexSplay { get { return sourceMap[SteamVR_Input_Sources.Any].lastThumbIndexSplay; } }
-
- public float lastIndexMiddleSplay { get { return sourceMap[SteamVR_Input_Sources.Any].lastIndexMiddleSplay; } }
-
- public float lastMiddleRingSplay { get { return sourceMap[SteamVR_Input_Sources.Any].lastMiddleRingSplay; } }
-
- public float lastRingPinkySplay { get { return sourceMap[SteamVR_Input_Sources.Any].lastRingPinkySplay; } }
-
- public float[] fingerCurls { get { return sourceMap[SteamVR_Input_Sources.Any].fingerCurls; } }
-
- public float[] fingerSplays { get { return sourceMap[SteamVR_Input_Sources.Any].fingerSplays; } }
-
- public float[] lastFingerCurls { get { return sourceMap[SteamVR_Input_Sources.Any].lastFingerCurls; } }
-
- public float[] lastFingerSplays { get { return sourceMap[SteamVR_Input_Sources.Any].lastFingerSplays; } }
-
- public bool poseChanged { get { return sourceMap[SteamVR_Input_Sources.Any].poseChanged; } }
-
- public bool onlyUpdateSummaryData { get { return sourceMap[SteamVR_Input_Sources.Any].onlyUpdateSummaryData; } set { sourceMap[SteamVR_Input_Sources.Any].onlyUpdateSummaryData = value; } }
- #endregion
- #region pose functions with SteamVR_Input_Sources.Any
-
- public bool GetActive()
- {
- return sourceMap[SteamVR_Input_Sources.Any].active;
- }
-
- public bool GetSetActive()
- {
- return actionSet.IsActive(SteamVR_Input_Sources.Any);
- }
-
-
-
-
-
- public bool GetVelocitiesAtTimeOffset(float secondsFromNow, out Vector3 velocity, out Vector3 angularVelocity)
- {
- return sourceMap[SteamVR_Input_Sources.Any].GetVelocitiesAtTimeOffset(secondsFromNow, out velocity, out angularVelocity);
- }
-
-
-
-
-
- public bool GetPoseAtTimeOffset(float secondsFromNow, out Vector3 position, out Quaternion rotation, out Vector3 velocity, out Vector3 angularVelocity)
- {
- return sourceMap[SteamVR_Input_Sources.Any].GetPoseAtTimeOffset(secondsFromNow, out position, out rotation, out velocity, out angularVelocity);
- }
-
- public Vector3 GetLocalPosition()
- {
- return sourceMap[SteamVR_Input_Sources.Any].localPosition;
- }
-
- public Quaternion GetLocalRotation()
- {
- return sourceMap[SteamVR_Input_Sources.Any].localRotation;
- }
-
- public Vector3 GetVelocity()
- {
- return sourceMap[SteamVR_Input_Sources.Any].velocity;
- }
-
- public Vector3 GetAngularVelocity()
- {
- return sourceMap[SteamVR_Input_Sources.Any].angularVelocity;
- }
-
- public bool GetDeviceIsConnected()
- {
- return sourceMap[SteamVR_Input_Sources.Any].deviceIsConnected;
- }
-
- public bool GetPoseIsValid()
- {
- return sourceMap[SteamVR_Input_Sources.Any].poseIsValid;
- }
-
- public ETrackingResult GetTrackingResult()
- {
- return sourceMap[SteamVR_Input_Sources.Any].trackingState;
- }
-
- public Vector3 GetLastLocalPosition()
- {
- return sourceMap[SteamVR_Input_Sources.Any].lastLocalPosition;
- }
-
- public Quaternion GetLastLocalRotation()
- {
- return sourceMap[SteamVR_Input_Sources.Any].lastLocalRotation;
- }
-
- public Vector3 GetLastVelocity()
- {
- return sourceMap[SteamVR_Input_Sources.Any].lastVelocity;
- }
-
- public Vector3 GetLastAngularVelocity()
- {
- return sourceMap[SteamVR_Input_Sources.Any].lastAngularVelocity;
- }
-
- public bool GetLastDeviceIsConnected()
- {
- return sourceMap[SteamVR_Input_Sources.Any].lastDeviceIsConnected;
- }
-
- public bool GetLastPoseIsValid()
- {
- return sourceMap[SteamVR_Input_Sources.Any].lastPoseIsValid;
- }
-
- public ETrackingResult GetLastTrackingResult()
- {
- return sourceMap[SteamVR_Input_Sources.Any].lastTrackingState;
- }
- #endregion
-
-
-
- public int boneCount { get { return (int)GetBoneCount(); } }
-
-
-
-
- public Vector3[] GetBonePositions(bool copy = false)
- {
- if (copy)
- return (Vector3[])sourceMap[SteamVR_Input_Sources.Any].bonePositions.Clone();
- return sourceMap[SteamVR_Input_Sources.Any].bonePositions;
- }
-
-
-
-
- public Quaternion[] GetBoneRotations(bool copy = false)
- {
- if (copy)
- return (Quaternion[])sourceMap[SteamVR_Input_Sources.Any].boneRotations.Clone();
- return sourceMap[SteamVR_Input_Sources.Any].boneRotations;
- }
-
-
-
-
- public Vector3[] GetLastBonePositions(bool copy = false)
- {
- if (copy)
- return (Vector3[])sourceMap[SteamVR_Input_Sources.Any].lastBonePositions.Clone();
- return sourceMap[SteamVR_Input_Sources.Any].lastBonePositions;
- }
-
-
-
-
- public Quaternion[] GetLastBoneRotations(bool copy = false)
- {
- if (copy)
- return (Quaternion[])sourceMap[SteamVR_Input_Sources.Any].lastBoneRotations.Clone();
- return sourceMap[SteamVR_Input_Sources.Any].lastBoneRotations;
- }
-
-
-
-
- public void SetRangeOfMotion(EVRSkeletalMotionRange range)
- {
- sourceMap[SteamVR_Input_Sources.Any].rangeOfMotion = range;
- }
-
-
-
-
- public void SetSkeletalTransformSpace(EVRSkeletalTransformSpace space)
- {
- sourceMap[SteamVR_Input_Sources.Any].skeletalTransformSpace = space;
- }
-
-
-
- public uint GetBoneCount()
- {
- return sourceMap[SteamVR_Input_Sources.Any].GetBoneCount();
- }
-
-
-
- public int[] GetBoneHierarchy()
- {
- return sourceMap[SteamVR_Input_Sources.Any].GetBoneHierarchy();
- }
-
-
-
- public string GetBoneName(int boneIndex)
- {
- return sourceMap[SteamVR_Input_Sources.Any].GetBoneName(boneIndex);
- }
-
-
-
-
-
-
- public SteamVR_Utils.RigidTransform[] GetReferenceTransforms(EVRSkeletalTransformSpace transformSpace, EVRSkeletalReferencePose referencePose)
- {
- return sourceMap[SteamVR_Input_Sources.Any].GetReferenceTransforms(transformSpace, referencePose);
- }
-
-
-
-
-
-
-
-
-
-
- public EVRSkeletalTrackingLevel GetSkeletalTrackingLevel()
- {
- return sourceMap[SteamVR_Input_Sources.Any].GetSkeletalTrackingLevel();
- }
-
-
-
-
- public float[] GetFingerCurls(bool copy = false)
- {
- if (copy)
- return (float[])sourceMap[SteamVR_Input_Sources.Any].fingerCurls.Clone();
- else
- return sourceMap[SteamVR_Input_Sources.Any].fingerCurls;
- }
-
-
-
-
- public float[] GetLastFingerCurls(bool copy = false)
- {
- if (copy)
- return (float[])sourceMap[SteamVR_Input_Sources.Any].lastFingerCurls.Clone();
- else
- return sourceMap[SteamVR_Input_Sources.Any].lastFingerCurls;
- }
-
-
-
-
- public float[] GetFingerSplays(bool copy = false)
- {
- if (copy)
- return (float[])sourceMap[SteamVR_Input_Sources.Any].fingerSplays.Clone();
- else
- return sourceMap[SteamVR_Input_Sources.Any].fingerSplays;
- }
-
-
-
-
- public float[] GetLastFingerSplays(bool copy = false)
- {
- if (copy)
- return (float[])sourceMap[SteamVR_Input_Sources.Any].lastFingerSplays.Clone();
- else
- return sourceMap[SteamVR_Input_Sources.Any].lastFingerSplays;
- }
-
-
-
-
-
- public float GetFingerCurl(int finger)
- {
- return sourceMap[SteamVR_Input_Sources.Any].fingerCurls[finger];
- }
-
-
-
-
-
- public float GetSplay(int fingerGapIndex)
- {
- return sourceMap[SteamVR_Input_Sources.Any].fingerSplays[fingerGapIndex];
- }
-
-
-
-
-
- public float GetFingerCurl(SteamVR_Skeleton_FingerIndexEnum finger)
- {
- return GetFingerCurl((int)finger);
- }
-
-
-
-
-
- public float GetSplay(SteamVR_Skeleton_FingerSplayIndexEnum fingerSplay)
- {
- return GetSplay((int)fingerSplay);
- }
-
-
-
-
-
- public float GetLastFingerCurl(int finger)
- {
- return sourceMap[SteamVR_Input_Sources.Any].lastFingerCurls[finger];
- }
-
-
-
-
-
- public float GetLastSplay(int fingerGapIndex)
- {
- return sourceMap[SteamVR_Input_Sources.Any].lastFingerSplays[fingerGapIndex];
- }
-
-
-
-
-
- public float GetLastFingerCurl(SteamVR_Skeleton_FingerIndexEnum finger)
- {
- return GetLastFingerCurl((int)finger);
- }
-
-
-
-
-
- public float GetLastSplay(SteamVR_Skeleton_FingerSplayIndexEnum fingerSplay)
- {
- return GetLastSplay((int)fingerSplay);
- }
-
-
-
-
-
-
-
-
-
-
-
- public string GetLocalizedName(params EVRInputStringBits[] localizedParts)
- {
- return sourceMap[SteamVR_Input_Sources.Any].GetLocalizedOriginPart(localizedParts);
- }
-
-
- public void AddOnDeviceConnectedChanged(DeviceConnectedChangeHandler functionToCall)
- {
- sourceMap[SteamVR_Input_Sources.Any].onDeviceConnectedChanged += functionToCall;
- }
-
-
- public void RemoveOnDeviceConnectedChanged(DeviceConnectedChangeHandler functionToStopCalling)
- {
- sourceMap[SteamVR_Input_Sources.Any].onDeviceConnectedChanged -= functionToStopCalling;
- }
-
-
- public void AddOnTrackingChanged(TrackingChangeHandler functionToCall)
- {
- sourceMap[SteamVR_Input_Sources.Any].onTrackingChanged += functionToCall;
- }
-
-
- public void RemoveOnTrackingChanged(TrackingChangeHandler functionToStopCalling)
- {
- sourceMap[SteamVR_Input_Sources.Any].onTrackingChanged -= functionToStopCalling;
- }
-
-
- public void AddOnValidPoseChanged(ValidPoseChangeHandler functionToCall)
- {
- sourceMap[SteamVR_Input_Sources.Any].onValidPoseChanged += functionToCall;
- }
-
-
- public void RemoveOnValidPoseChanged(ValidPoseChangeHandler functionToStopCalling)
- {
- sourceMap[SteamVR_Input_Sources.Any].onValidPoseChanged -= functionToStopCalling;
- }
-
- public void AddOnActiveChangeListener(ActiveChangeHandler functionToCall)
- {
- sourceMap[SteamVR_Input_Sources.Any].onActiveChange += functionToCall;
- }
-
-
- public void RemoveOnActiveChangeListener(ActiveChangeHandler functionToStopCalling)
- {
- sourceMap[SteamVR_Input_Sources.Any].onActiveChange -= functionToStopCalling;
- }
-
-
- public void AddOnChangeListener(ChangeHandler functionToCall)
- {
- sourceMap[SteamVR_Input_Sources.Any].onChange += functionToCall;
- }
-
-
- public void RemoveOnChangeListener(ChangeHandler functionToStopCalling)
- {
- sourceMap[SteamVR_Input_Sources.Any].onChange -= functionToStopCalling;
- }
-
-
- public void AddOnUpdateListener(UpdateHandler functionToCall)
- {
- sourceMap[SteamVR_Input_Sources.Any].onUpdate += functionToCall;
- }
-
-
- public void RemoveOnUpdateListener(UpdateHandler functionToStopCalling)
- {
- sourceMap[SteamVR_Input_Sources.Any].onUpdate -= functionToStopCalling;
- }
- void ISerializationCallbackReceiver.OnBeforeSerialize()
- {
- }
- void ISerializationCallbackReceiver.OnAfterDeserialize()
- {
- InitAfterDeserialize();
- }
- public static Quaternion steamVRFixUpRotation = Quaternion.AngleAxis(Mathf.PI * Mathf.Rad2Deg, Vector3.up);
- }
- public class SteamVR_Action_Skeleton_Source_Map : SteamVR_Action_Pose_Source_Map<SteamVR_Action_Skeleton_Source>
- {
- protected override SteamVR_Action_Skeleton_Source GetSourceElementForIndexer(SteamVR_Input_Sources inputSource)
- {
- return sources[0];
- }
- }
-
-
-
-
- public class SteamVR_Action_Skeleton_Source : SteamVR_Action_Pose_Source, ISteamVR_Action_Skeleton_Source
- {
- protected static uint skeletonActionData_size = 0;
-
- public new event SteamVR_Action_Skeleton.ActiveChangeHandler onActiveChange;
-
- public new event SteamVR_Action_Skeleton.ActiveChangeHandler onActiveBindingChange;
-
- public new event SteamVR_Action_Skeleton.ChangeHandler onChange;
-
- public new event SteamVR_Action_Skeleton.UpdateHandler onUpdate;
-
- public new event SteamVR_Action_Skeleton.TrackingChangeHandler onTrackingChanged;
-
- public new event SteamVR_Action_Skeleton.ValidPoseChangeHandler onValidPoseChanged;
-
- public new event SteamVR_Action_Skeleton.DeviceConnectedChangeHandler onDeviceConnectedChanged;
-
- public override bool activeBinding { get { return skeletonActionData.bActive; } }
-
- public override bool lastActiveBinding { get { return lastSkeletonActionData.bActive; } }
-
- public Vector3[] bonePositions { get; protected set; }
-
- public Quaternion[] boneRotations { get; protected set; }
-
- public Vector3[] lastBonePositions { get; protected set; }
-
- public Quaternion[] lastBoneRotations { get; protected set; }
-
- public EVRSkeletalMotionRange rangeOfMotion { get; set; }
-
- public EVRSkeletalTransformSpace skeletalTransformSpace { get; set; }
-
- public EVRSummaryType summaryDataType { get; set; }
-
- public float thumbCurl { get { return fingerCurls[SteamVR_Skeleton_FingerIndexes.thumb]; } }
-
- public float indexCurl { get { return fingerCurls[SteamVR_Skeleton_FingerIndexes.index]; } }
-
- public float middleCurl { get { return fingerCurls[SteamVR_Skeleton_FingerIndexes.middle]; } }
-
- public float ringCurl { get { return fingerCurls[SteamVR_Skeleton_FingerIndexes.ring]; } }
-
- public float pinkyCurl { get { return fingerCurls[SteamVR_Skeleton_FingerIndexes.pinky]; } }
-
- public float thumbIndexSplay { get { return fingerSplays[SteamVR_Skeleton_FingerSplayIndexes.thumbIndex]; } }
-
- public float indexMiddleSplay { get { return fingerSplays[SteamVR_Skeleton_FingerSplayIndexes.indexMiddle]; } }
-
- public float middleRingSplay { get { return fingerSplays[SteamVR_Skeleton_FingerSplayIndexes.middleRing]; } }
-
- public float ringPinkySplay { get { return fingerSplays[SteamVR_Skeleton_FingerSplayIndexes.ringPinky]; } }
-
- public float lastThumbCurl { get { return lastFingerCurls[SteamVR_Skeleton_FingerIndexes.thumb]; } }
-
- public float lastIndexCurl { get { return lastFingerCurls[SteamVR_Skeleton_FingerIndexes.index]; } }
-
- public float lastMiddleCurl { get { return lastFingerCurls[SteamVR_Skeleton_FingerIndexes.middle]; } }
-
- public float lastRingCurl { get { return lastFingerCurls[SteamVR_Skeleton_FingerIndexes.ring]; } }
-
- public float lastPinkyCurl { get { return lastFingerCurls[SteamVR_Skeleton_FingerIndexes.pinky]; } }
-
- public float lastThumbIndexSplay { get { return lastFingerSplays[SteamVR_Skeleton_FingerSplayIndexes.thumbIndex]; } }
-
- public float lastIndexMiddleSplay { get { return lastFingerSplays[SteamVR_Skeleton_FingerSplayIndexes.indexMiddle]; } }
-
- public float lastMiddleRingSplay { get { return lastFingerSplays[SteamVR_Skeleton_FingerSplayIndexes.middleRing]; } }
-
- public float lastRingPinkySplay { get { return lastFingerSplays[SteamVR_Skeleton_FingerSplayIndexes.ringPinky]; } }
-
- public float[] fingerCurls { get; protected set; }
-
- public float[] fingerSplays { get; protected set; }
-
- public float[] lastFingerCurls { get; protected set; }
-
- public float[] lastFingerSplays { get; protected set; }
-
- public bool poseChanged { get; protected set; }
-
- public bool onlyUpdateSummaryData { get; set; }
- protected VRSkeletalSummaryData_t skeletalSummaryData = new VRSkeletalSummaryData_t();
- protected VRSkeletalSummaryData_t lastSkeletalSummaryData = new VRSkeletalSummaryData_t();
- protected SteamVR_Action_Skeleton skeletonAction;
- protected VRBoneTransform_t[] tempBoneTransforms = new VRBoneTransform_t[SteamVR_Action_Skeleton.numBones];
- protected InputSkeletalActionData_t skeletonActionData = new InputSkeletalActionData_t();
- protected InputSkeletalActionData_t lastSkeletonActionData = new InputSkeletalActionData_t();
- protected InputSkeletalActionData_t tempSkeletonActionData = new InputSkeletalActionData_t();
- public override void Preinitialize(SteamVR_Action wrappingAction, SteamVR_Input_Sources forInputSource)
- {
- base.Preinitialize(wrappingAction, forInputSource);
- skeletonAction = (SteamVR_Action_Skeleton)wrappingAction;
- bonePositions = new Vector3[SteamVR_Action_Skeleton.numBones];
- lastBonePositions = new Vector3[SteamVR_Action_Skeleton.numBones];
- boneRotations = new Quaternion[SteamVR_Action_Skeleton.numBones];
- lastBoneRotations = new Quaternion[SteamVR_Action_Skeleton.numBones];
- rangeOfMotion = EVRSkeletalMotionRange.WithController;
- skeletalTransformSpace = EVRSkeletalTransformSpace.Parent;
- fingerCurls = new float[SteamVR_Skeleton_FingerIndexes.enumArray.Length];
- fingerSplays = new float[SteamVR_Skeleton_FingerSplayIndexes.enumArray.Length];
- lastFingerCurls = new float[SteamVR_Skeleton_FingerIndexes.enumArray.Length];
- lastFingerSplays = new float[SteamVR_Skeleton_FingerSplayIndexes.enumArray.Length];
- }
-
-
-
-
- public override void Initialize()
- {
- base.Initialize();
- if (skeletonActionData_size == 0)
- skeletonActionData_size = (uint)Marshal.SizeOf(typeof(InputSkeletalActionData_t));
- }
-
-
-
- public override void UpdateValue()
- {
- UpdateValue(false);
- }
-
-
-
- public override void UpdateValue(bool skipStateAndEventUpdates)
- {
- lastActive = active;
- lastSkeletonActionData = skeletonActionData;
- lastSkeletalSummaryData = skeletalSummaryData;
- if (onlyUpdateSummaryData == false)
- {
- for (int boneIndex = 0; boneIndex < SteamVR_Action_Skeleton.numBones; boneIndex++)
- {
- lastBonePositions[boneIndex] = bonePositions[boneIndex];
- lastBoneRotations[boneIndex] = boneRotations[boneIndex];
- }
- }
- for (int fingerIndex = 0; fingerIndex < SteamVR_Skeleton_FingerIndexes.enumArray.Length; fingerIndex++)
- {
- lastFingerCurls[fingerIndex] = fingerCurls[fingerIndex];
- }
- for (int fingerIndex = 0; fingerIndex < SteamVR_Skeleton_FingerSplayIndexes.enumArray.Length; fingerIndex++)
- {
- lastFingerSplays[fingerIndex] = fingerSplays[fingerIndex];
- }
- base.UpdateValue(true);
- poseChanged = changed;
- EVRInputError error = OpenVR.Input.GetSkeletalActionData(handle, ref skeletonActionData, skeletonActionData_size);
- if (error != EVRInputError.None)
- {
- Debug.LogError("<b>[SteamVR]</b> GetSkeletalActionData error (" + fullPath + "): " + error.ToString() + " handle: " + handle.ToString());
- return;
- }
- if (active)
- {
- if (onlyUpdateSummaryData == false)
- {
- error = OpenVR.Input.GetSkeletalBoneData(handle, skeletalTransformSpace, rangeOfMotion, tempBoneTransforms);
- if (error != EVRInputError.None)
- Debug.LogError("<b>[SteamVR]</b> GetSkeletalBoneData error (" + fullPath + "): " + error.ToString() + " handle: " + handle.ToString());
- for (int boneIndex = 0; boneIndex < tempBoneTransforms.Length; boneIndex++)
- {
-
-
- bonePositions[boneIndex].x = -tempBoneTransforms[boneIndex].position.v0;
- bonePositions[boneIndex].y = tempBoneTransforms[boneIndex].position.v1;
- bonePositions[boneIndex].z = tempBoneTransforms[boneIndex].position.v2;
- boneRotations[boneIndex].x = tempBoneTransforms[boneIndex].orientation.x;
- boneRotations[boneIndex].y = -tempBoneTransforms[boneIndex].orientation.y;
- boneRotations[boneIndex].z = -tempBoneTransforms[boneIndex].orientation.z;
- boneRotations[boneIndex].w = tempBoneTransforms[boneIndex].orientation.w;
- }
-
-
- boneRotations[0] = SteamVR_Action_Skeleton.steamVRFixUpRotation * boneRotations[0];
- }
- UpdateSkeletalSummaryData(summaryDataType, true);
- }
- if (changed == false)
- {
- for (int boneIndex = 0; boneIndex < tempBoneTransforms.Length; boneIndex++)
- {
- if (Vector3.Distance(lastBonePositions[boneIndex], bonePositions[boneIndex]) > changeTolerance)
- {
- changed = true;
- break;
- }
- if (Mathf.Abs(Quaternion.Angle(lastBoneRotations[boneIndex], boneRotations[boneIndex])) > changeTolerance)
- {
- changed = true;
- break;
- }
- }
- }
- if (changed)
- changedTime = Time.realtimeSinceStartup;
- if (skipStateAndEventUpdates == false)
- CheckAndSendEvents();
- }
-
-
-
- public int boneCount { get { return (int)GetBoneCount(); } }
-
-
-
- public uint GetBoneCount()
- {
- uint boneCount = 0;
- EVRInputError error = OpenVR.Input.GetBoneCount(handle, ref boneCount);
- if (error != EVRInputError.None)
- Debug.LogError("<b>[SteamVR]</b> GetBoneCount error (" + fullPath + "): " + error.ToString() + " handle: " + handle.ToString());
- return boneCount;
- }
-
-
-
- public int[] boneHierarchy { get { return GetBoneHierarchy(); } }
-
-
-
- public int[] GetBoneHierarchy()
- {
- int boneCount = (int)GetBoneCount();
- int[] parentIndicies = new int[boneCount];
- EVRInputError error = OpenVR.Input.GetBoneHierarchy(handle, parentIndicies);
- if (error != EVRInputError.None)
- Debug.LogError("<b>[SteamVR]</b> GetBoneHierarchy error (" + fullPath + "): " + error.ToString() + " handle: " + handle.ToString());
- return parentIndicies;
- }
-
-
-
- public string GetBoneName(int boneIndex)
- {
- StringBuilder stringBuilder = new StringBuilder(255);
- EVRInputError error = OpenVR.Input.GetBoneName(handle, boneIndex, stringBuilder, 255);
- if (error != EVRInputError.None)
- Debug.LogError("<b>[SteamVR]</b> GetBoneName error (" + fullPath + "): " + error.ToString() + " handle: " + handle.ToString());
- return stringBuilder.ToString();
- }
-
-
-
-
-
-
- public SteamVR_Utils.RigidTransform[] GetReferenceTransforms(EVRSkeletalTransformSpace transformSpace, EVRSkeletalReferencePose referencePose)
- {
- SteamVR_Utils.RigidTransform[] transforms = new SteamVR_Utils.RigidTransform[GetBoneCount()];
- VRBoneTransform_t[] boneTransforms = new VRBoneTransform_t[transforms.Length];
- EVRInputError error = OpenVR.Input.GetSkeletalReferenceTransforms(handle, transformSpace, referencePose, boneTransforms);
- if (error != EVRInputError.None)
- Debug.LogError("<b>[SteamVR]</b> GetSkeletalReferenceTransforms error (" + fullPath + "): " + error.ToString() + " handle: " + handle.ToString());
- for (int transformIndex = 0; transformIndex < boneTransforms.Length; transformIndex++)
- {
- Vector3 position = new Vector3(-boneTransforms[transformIndex].position.v0, boneTransforms[transformIndex].position.v1, boneTransforms[transformIndex].position.v2);
- Quaternion rotation = new Quaternion(boneTransforms[transformIndex].orientation.x, -boneTransforms[transformIndex].orientation.y, -boneTransforms[transformIndex].orientation.z, boneTransforms[transformIndex].orientation.w);
- transforms[transformIndex] = new SteamVR_Utils.RigidTransform(position, rotation);
- }
- if (transforms.Length > 0)
- {
-
-
- Quaternion qFixUpRot = Quaternion.AngleAxis(Mathf.PI * Mathf.Rad2Deg, Vector3.up);
- transforms[0].rot = qFixUpRot * transforms[0].rot;
- }
- return transforms;
- }
-
-
-
-
-
-
- public EVRSkeletalTrackingLevel skeletalTrackingLevel { get { return GetSkeletalTrackingLevel(); } }
-
-
-
-
-
-
- public EVRSkeletalTrackingLevel GetSkeletalTrackingLevel()
- {
- EVRSkeletalTrackingLevel skeletalTrackingLevel = EVRSkeletalTrackingLevel.VRSkeletalTracking_Estimated;
- EVRInputError error = OpenVR.Input.GetSkeletalTrackingLevel(handle, ref skeletalTrackingLevel);
- if (error != EVRInputError.None)
- Debug.LogError("<b>[SteamVR]</b> GetSkeletalTrackingLevel error (" + fullPath + "): " + error.ToString() + " handle: " + handle.ToString());
- return skeletalTrackingLevel;
- }
-
-
-
-
-
- protected VRSkeletalSummaryData_t GetSkeletalSummaryData(EVRSummaryType summaryType = EVRSummaryType.FromAnimation, bool force = false)
- {
- UpdateSkeletalSummaryData(summaryType, force);
- return skeletalSummaryData;
- }
-
-
-
-
-
- protected void UpdateSkeletalSummaryData(EVRSummaryType summaryType = EVRSummaryType.FromAnimation, bool force = false)
- {
- if (force || this.summaryDataType != summaryDataType && active)
- {
- EVRInputError error = OpenVR.Input.GetSkeletalSummaryData(handle, summaryType, ref skeletalSummaryData);
- if (error != EVRInputError.None)
- Debug.LogError("<b>[SteamVR]</b> GetSkeletalSummaryData error (" + fullPath + "): " + error.ToString() + " handle: " + handle.ToString());
- fingerCurls[0] = skeletalSummaryData.flFingerCurl0;
- fingerCurls[1] = skeletalSummaryData.flFingerCurl1;
- fingerCurls[2] = skeletalSummaryData.flFingerCurl2;
- fingerCurls[3] = skeletalSummaryData.flFingerCurl3;
- fingerCurls[4] = skeletalSummaryData.flFingerCurl4;
-
- fingerSplays[0] = skeletalSummaryData.flFingerSplay0;
- fingerSplays[1] = skeletalSummaryData.flFingerSplay1;
- fingerSplays[2] = skeletalSummaryData.flFingerSplay2;
- fingerSplays[3] = skeletalSummaryData.flFingerSplay3;
- }
- }
- protected override void CheckAndSendEvents()
- {
- if (trackingState != lastTrackingState && onTrackingChanged != null)
- onTrackingChanged.Invoke(skeletonAction, trackingState);
- if (poseIsValid != lastPoseIsValid && onValidPoseChanged != null)
- onValidPoseChanged.Invoke(skeletonAction, poseIsValid);
- if (deviceIsConnected != lastDeviceIsConnected && onDeviceConnectedChanged != null)
- onDeviceConnectedChanged.Invoke(skeletonAction, deviceIsConnected);
- if (changed && onChange != null)
- onChange.Invoke(skeletonAction);
- if (active != lastActive && onActiveChange != null)
- onActiveChange.Invoke(skeletonAction, active);
- if (activeBinding != lastActiveBinding && onActiveBindingChange != null)
- onActiveBindingChange.Invoke(skeletonAction, activeBinding);
- if (onUpdate != null)
- onUpdate.Invoke(skeletonAction);
- }
- }
- public interface ISteamVR_Action_Skeleton_Source
- {
-
-
-
-
-
-
- EVRSkeletalTrackingLevel skeletalTrackingLevel { get; }
-
- Vector3[] bonePositions { get; }
-
- Quaternion[] boneRotations { get; }
-
- Vector3[] lastBonePositions { get; }
-
- Quaternion[] lastBoneRotations { get; }
-
- EVRSkeletalMotionRange rangeOfMotion { get; set; }
-
- EVRSkeletalTransformSpace skeletalTransformSpace { get; set; }
-
- bool onlyUpdateSummaryData { get; set; }
-
- float thumbCurl { get; }
-
- float indexCurl { get; }
-
- float middleCurl { get; }
-
- float ringCurl { get; }
-
- float pinkyCurl { get; }
-
- float thumbIndexSplay { get; }
-
- float indexMiddleSplay { get; }
-
- float middleRingSplay { get; }
-
- float ringPinkySplay { get; }
-
- float lastThumbCurl { get; }
-
- float lastIndexCurl { get; }
-
- float lastMiddleCurl { get; }
-
- float lastRingCurl { get; }
-
- float lastPinkyCurl { get; }
-
- float lastThumbIndexSplay { get; }
-
- float lastIndexMiddleSplay { get; }
-
- float lastMiddleRingSplay { get; }
-
- float lastRingPinkySplay { get; }
-
- float[] fingerCurls { get; }
-
- float[] fingerSplays { get; }
-
- float[] lastFingerCurls { get; }
-
- float[] lastFingerSplays { get; }
- }
-
-
-
-
- public enum SkeletalMotionRangeChange
- {
- None = -1,
-
- WithController = 0,
-
- WithoutController = 1,
- }
-
- public static class SteamVR_Skeleton_JointIndexes
- {
- public const int root = 0;
- public const int wrist = 1;
- public const int thumbMetacarpal = 2;
- public const int thumbProximal = 2;
- public const int thumbMiddle = 3;
- public const int thumbDistal = 4;
- public const int thumbTip = 5;
- public const int indexMetacarpal = 6;
- public const int indexProximal = 7;
- public const int indexMiddle = 8;
- public const int indexDistal = 9;
- public const int indexTip = 10;
- public const int middleMetacarpal = 11;
- public const int middleProximal = 12;
- public const int middleMiddle = 13;
- public const int middleDistal = 14;
- public const int middleTip = 15;
- public const int ringMetacarpal = 16;
- public const int ringProximal = 17;
- public const int ringMiddle = 18;
- public const int ringDistal = 19;
- public const int ringTip = 20;
- public const int pinkyMetacarpal = 21;
- public const int pinkyProximal = 22;
- public const int pinkyMiddle = 23;
- public const int pinkyDistal = 24;
- public const int pinkyTip = 25;
- public const int thumbAux = 26;
- public const int indexAux = 27;
- public const int middleAux = 28;
- public const int ringAux = 29;
- public const int pinkyAux = 30;
- public static int GetFingerForBone(int boneIndex)
- {
- switch (boneIndex)
- {
- case root:
- case wrist:
- return -1;
- case thumbMetacarpal:
- case thumbMiddle:
- case thumbDistal:
- case thumbTip:
- case thumbAux:
- return 0;
- case indexMetacarpal:
- case indexProximal:
- case indexMiddle:
- case indexDistal:
- case indexTip:
- case indexAux:
- return 1;
- case middleMetacarpal:
- case middleProximal:
- case middleMiddle:
- case middleDistal:
- case middleTip:
- case middleAux:
- return 2;
- case ringMetacarpal:
- case ringProximal:
- case ringMiddle:
- case ringDistal:
- case ringTip:
- case ringAux:
- return 3;
- case pinkyMetacarpal:
- case pinkyProximal:
- case pinkyMiddle:
- case pinkyDistal:
- case pinkyTip:
- case pinkyAux:
- return 4;
- default:
- return -1;
- }
- }
- public static int GetBoneForFingerTip(int fingerIndex)
- {
- switch (fingerIndex)
- {
- case SteamVR_Skeleton_FingerIndexes.thumb:
- return thumbTip;
- case SteamVR_Skeleton_FingerIndexes.index:
- return indexTip;
- case SteamVR_Skeleton_FingerIndexes.middle:
- return middleTip;
- case SteamVR_Skeleton_FingerIndexes.ring:
- return ringTip;
- case SteamVR_Skeleton_FingerIndexes.pinky:
- return pinkyTip;
- default:
- return indexTip;
- }
- }
- }
- public enum SteamVR_Skeleton_JointIndexEnum
- {
- root = SteamVR_Skeleton_JointIndexes.root,
- wrist = SteamVR_Skeleton_JointIndexes.wrist,
- thumbMetacarpal = SteamVR_Skeleton_JointIndexes.thumbMetacarpal,
- thumbProximal = SteamVR_Skeleton_JointIndexes.thumbProximal,
- thumbMiddle = SteamVR_Skeleton_JointIndexes.thumbMiddle,
- thumbDistal = SteamVR_Skeleton_JointIndexes.thumbDistal,
- thumbTip = SteamVR_Skeleton_JointIndexes.thumbTip,
- indexMetacarpal = SteamVR_Skeleton_JointIndexes.indexMetacarpal,
- indexProximal = SteamVR_Skeleton_JointIndexes.indexProximal,
- indexMiddle = SteamVR_Skeleton_JointIndexes.indexMiddle,
- indexDistal = SteamVR_Skeleton_JointIndexes.indexDistal,
- indexTip = SteamVR_Skeleton_JointIndexes.indexTip,
- middleMetacarpal = SteamVR_Skeleton_JointIndexes.middleMetacarpal,
- middleProximal = SteamVR_Skeleton_JointIndexes.middleProximal,
- middleMiddle = SteamVR_Skeleton_JointIndexes.middleMiddle,
- middleDistal = SteamVR_Skeleton_JointIndexes.middleDistal,
- middleTip = SteamVR_Skeleton_JointIndexes.middleTip,
- ringMetacarpal = SteamVR_Skeleton_JointIndexes.ringMetacarpal,
- ringProximal = SteamVR_Skeleton_JointIndexes.ringProximal,
- ringMiddle = SteamVR_Skeleton_JointIndexes.ringMiddle,
- ringDistal = SteamVR_Skeleton_JointIndexes.ringDistal,
- ringTip = SteamVR_Skeleton_JointIndexes.ringTip,
- pinkyMetacarpal = SteamVR_Skeleton_JointIndexes.pinkyMetacarpal,
- pinkyProximal = SteamVR_Skeleton_JointIndexes.pinkyProximal,
- pinkyMiddle = SteamVR_Skeleton_JointIndexes.pinkyMiddle,
- pinkyDistal = SteamVR_Skeleton_JointIndexes.pinkyDistal,
- pinkyTip = SteamVR_Skeleton_JointIndexes.pinkyTip,
- thumbAux = SteamVR_Skeleton_JointIndexes.thumbAux,
- indexAux = SteamVR_Skeleton_JointIndexes.indexAux,
- middleAux = SteamVR_Skeleton_JointIndexes.middleAux,
- ringAux = SteamVR_Skeleton_JointIndexes.ringAux,
- pinkyAux = SteamVR_Skeleton_JointIndexes.pinkyAux,
- }
-
- public class SteamVR_Skeleton_FingerIndexes
- {
- public const int thumb = 0;
- public const int index = 1;
- public const int middle = 2;
- public const int ring = 3;
- public const int pinky = 4;
- public static SteamVR_Skeleton_FingerIndexEnum[] enumArray = (SteamVR_Skeleton_FingerIndexEnum[])System.Enum.GetValues(typeof(SteamVR_Skeleton_FingerIndexEnum));
- }
-
- public class SteamVR_Skeleton_FingerSplayIndexes
- {
- public const int thumbIndex = 0;
- public const int indexMiddle = 1;
- public const int middleRing = 2;
- public const int ringPinky = 3;
- public static SteamVR_Skeleton_FingerSplayIndexEnum[] enumArray = (SteamVR_Skeleton_FingerSplayIndexEnum[])System.Enum.GetValues(typeof(SteamVR_Skeleton_FingerSplayIndexEnum));
- }
- public enum SteamVR_Skeleton_FingerSplayIndexEnum
- {
- thumbIndex = SteamVR_Skeleton_FingerSplayIndexes.thumbIndex,
- indexMiddle = SteamVR_Skeleton_FingerSplayIndexes.indexMiddle,
- middleRing = SteamVR_Skeleton_FingerSplayIndexes.middleRing,
- ringPinky = SteamVR_Skeleton_FingerSplayIndexes.ringPinky,
- }
- public enum SteamVR_Skeleton_FingerIndexEnum
- {
- thumb = SteamVR_Skeleton_FingerIndexes.thumb,
- index = SteamVR_Skeleton_FingerIndexes.index,
- middle = SteamVR_Skeleton_FingerIndexes.middle,
- ring = SteamVR_Skeleton_FingerIndexes.ring,
- pinky = SteamVR_Skeleton_FingerIndexes.pinky,
- }
- }
|