@@ -55,12 +55,17 @@ UnitySubsystemErrorCode WebXRTrackingProvider::FillDeviceDefinition(UnityXRInter
55
55
{
56
56
// Fill in your connected device information here when requested. Used to create customized device states.
57
57
auto &input = *m_Ctx.input ;
58
- input.DeviceDefinition_SetName (definition, " WebXRHMD " );
58
+ input.DeviceDefinition_SetName (definition, " WebXR Tracked Display " );
59
59
input.DeviceDefinition_SetCharacteristics (definition, (UnityXRInputDeviceCharacteristics)(kUnityXRInputDeviceCharacteristicsHeadMounted | kUnityXRInputDeviceCharacteristicsTrackedDevice ));
60
60
input.DeviceDefinition_SetManufacturer (definition, " WebXR" );
61
61
62
- input.DeviceDefinition_AddFeatureWithUsage (definition, " head position" , kUnityXRInputFeatureTypeAxis3D , kUnityXRInputFeatureUsageCenterEyePosition );
63
- input.DeviceDefinition_AddFeatureWithUsage (definition, " head rotation" , kUnityXRInputFeatureTypeRotation , kUnityXRInputFeatureUsageCenterEyeRotation );
62
+ input.DeviceDefinition_AddFeatureWithUsage (definition, " is tracked" , kUnityXRInputFeatureTypeBinary , kUnityXRInputFeatureUsageIsTracked );
63
+ input.DeviceDefinition_AddFeatureWithUsage (definition, " tracking state" , kUnityXRInputFeatureTypeDiscreteStates , kUnityXRInputFeatureUsageTrackingState );
64
+
65
+ input.DeviceDefinition_AddFeatureWithUsage (definition, " device position" , kUnityXRInputFeatureTypeAxis3D , kUnityXRInputFeatureUsageDevicePosition );
66
+ input.DeviceDefinition_AddFeatureWithUsage (definition, " device rotation" , kUnityXRInputFeatureTypeRotation , kUnityXRInputFeatureUsageDeviceRotation );
67
+ input.DeviceDefinition_AddFeatureWithUsage (definition, " center eye position" , kUnityXRInputFeatureTypeAxis3D , kUnityXRInputFeatureUsageCenterEyePosition );
68
+ input.DeviceDefinition_AddFeatureWithUsage (definition, " center eye rotation" , kUnityXRInputFeatureTypeRotation , kUnityXRInputFeatureUsageCenterEyeRotation );
64
69
if (hasMultipleViews)
65
70
{
66
71
input.DeviceDefinition_AddFeatureWithUsage (definition, " left eye position" , kUnityXRInputFeatureTypeAxis3D , kUnityXRInputFeatureUsageLeftEyePosition );
@@ -96,25 +101,32 @@ UnitySubsystemErrorCode WebXRTrackingProvider::UpdateDeviceState(UnityXRInternal
96
101
if (hasMultipleViews)
97
102
{
98
103
// Left pose
99
- input.DeviceState_SetAxis3DValue (state, 2 , position);
100
- input.DeviceState_SetRotationValue (state, 3 , rotation);
104
+ input.DeviceState_SetAxis3DValue (state, 6 , position);
105
+ input.DeviceState_SetRotationValue (state, 7 , rotation);
101
106
102
107
UnityXRVector3 rightPosition;
103
108
rightPosition.x = *(m_ViewsDataArray + start + 3 );
104
109
rightPosition.y = *(m_ViewsDataArray + start + 4 );
105
110
rightPosition.z = *(m_ViewsDataArray + start + 5 );
106
111
// Right pose
107
- input.DeviceState_SetAxis3DValue (state, 4 , position);
108
- input.DeviceState_SetRotationValue (state, 5 , rotation);
112
+ input.DeviceState_SetAxis3DValue (state, 8 , position);
113
+ input.DeviceState_SetRotationValue (state, 9 , rotation);
109
114
110
115
// Update center pose
111
116
position.x = 0 .5f * (position.x + rightPosition.x );
112
117
position.y = 0 .5f * (position.y + rightPosition.y );
113
118
position.z = 0 .5f * (position.z + rightPosition.z );
114
119
}
115
120
// Center pose
116
- input.DeviceState_SetAxis3DValue (state, 0 , position);
117
- input.DeviceState_SetRotationValue (state, 1 , rotation);
121
+ input.DeviceState_SetAxis3DValue (state, 2 , position);
122
+ input.DeviceState_SetRotationValue (state, 3 , rotation);
123
+ // Device pose
124
+ input.DeviceState_SetAxis3DValue (state, 4 , position);
125
+ input.DeviceState_SetRotationValue (state, 5 , rotation);
126
+
127
+ // Tracking
128
+ input.DeviceState_SetBinaryValue (state, 0 , true );
129
+ input.DeviceState_SetDiscreteStateValue (state, 1 , 3 );
118
130
119
131
return kUnitySubsystemErrorCodeSuccess ;
120
132
}
@@ -217,5 +229,5 @@ UnitySubsystemErrorCode Load_Input(WebXRProviderContext &ctx)
217
229
delete ctx.trackingProvider ;
218
230
};
219
231
220
- return ctx.input ->RegisterLifecycleProvider (" WebXR Export" , " WebXR HMD " , &inputLifecycleHandler);
232
+ return ctx.input ->RegisterLifecycleProvider (" WebXR Export" , " WebXR Tracked Display " , &inputLifecycleHandler);
221
233
}
0 commit comments