Files
VR-WuKong/Packages/PICO Unity Integration SDK-3.3.2-20251111/Enterprise/Scripts/Model/HandStateAlg.cs
2025-11-13 17:40:28 +08:00

97 lines
3.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using UnityEngine;
namespace Unity.XR.PICO.TOBSupport
{
[Serializable]
public class HandStateAlg
{
public const int Hand_MaxBones = 26;
public const int Hand_MaxPinch = 5;
public const int Hand_MaxFingers = 5;
public const int Hand_Pinch_Num = 4;
public short status;
public HandJointsLocation rootPose;
public HandJointsLocation[] bonePose ;
public short pinches;
public float[] pinchStrength ;
public float clickStrength;
public Pose pointerPose;
public float handScale;
public int handConfidence;
public int[] fingerConfidence ;
public long requestedTimeStamp;
public long sampleTimeStamp;
public long outputTimeStamp;
public short poseType = 0;
public int handType ;
public Pose rootPoseVel;
public Pose[] bonePoseVel ;
public Pose rootPoseAcc;
public Pose[] bonePoseAcc;
public short clickType ;
public bool[] pinchActionReadyOpenxr ;
public bool aimActionReadyOpenxr;
public bool gripActionReadyOpenxr;
public float[] pinchActionValueOpenxr ;
public float aimActionValueOpenxr;
public float gripActionValueOpenxr;
public Pose[] pinchPoseOpenxr ;
public Pose aimPoseOpenxr;
public Pose pokePoseOpenxr;
public Pose gripPoseOpenxr;
public Pose gripSurfacePoseOpenxr;
public HandStateAlg()
{
status = 0;
rootPose = new HandJointsLocation();
bonePose = new HandJointsLocation[Hand_MaxBones];
for (int i = 0; i < Hand_MaxBones; i++) {
bonePose[i] = new HandJointsLocation();
}
pinches = 0;
pinchStrength = new float[Hand_MaxPinch];
clickStrength = 0f;
pointerPose = new Pose();
handScale = 1f;
handConfidence = 0;
fingerConfidence = new int[Hand_MaxFingers];
requestedTimeStamp = 0;
sampleTimeStamp = 0;
outputTimeStamp = 0;
poseType = 0;
handType = -1;
rootPoseVel = new Pose();
bonePoseVel = new Pose[Hand_MaxBones];
rootPoseAcc = new Pose();
bonePoseAcc = new Pose[Hand_MaxBones];
clickType = -1;
pinchActionReadyOpenxr = new bool[Hand_Pinch_Num];
aimActionReadyOpenxr = false;
gripActionReadyOpenxr = false;
pinchActionValueOpenxr = new float[Hand_Pinch_Num];
aimActionValueOpenxr = 0f;
gripActionValueOpenxr = 0f;
pinchPoseOpenxr = new Pose[Hand_Pinch_Num];
aimPoseOpenxr = new Pose();
pokePoseOpenxr = new Pose();
gripPoseOpenxr = new Pose();
gripSurfacePoseOpenxr = new Pose();
}
public static string ToJson(HandStateAlg data)
{
// 注意JsonUtility 序列化数组时需包裹在对象中,这里直接序列化根对象即可
return JsonUtility.ToJson(data, true); // 第二个参数为 true 时输出格式化的 JSON
}
}
[Serializable]
public class HandJointsLocation
{
public long locationFloags;
public Pose pose;
public float radius;
}
}