Skip to content

Commit 6bbdd82

Browse files
committed
Implement PoC mapping for v2 params
todo: think about simplifying mappers even further
1 parent 1d77a90 commit 6bbdd82

1 file changed

Lines changed: 33 additions & 3 deletions

File tree

ExpressionStrategies/V2Mapper.cs

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,29 @@
11
using Microsoft.Extensions.Logging;
2+
using VRCFaceTracking;
23
using VRCFaceTracking.Core.Params.Data;
4+
using VRCFaceTracking.Core.Types;
35

46
namespace ETVRTrackingModule.ExpressionStrategies;
57

68
public class V2Mapper : ImappingStategy
79
{
10+
private string[] singleEyeParamNames =
11+
{
12+
"EyeX",
13+
"EyeY",
14+
"EyeLid"
15+
};
16+
817
private Dictionary<string, float> parameterValues = new()
918
{
1019
{ "EyeX", 0f },
20+
{ "EyeY", 0f },
21+
{ "EyeLid", 0f },
22+
1123
{ "EyeLeftX", 0f },
12-
{ "EyeRightX", 0f },
1324
{ "EyeLeftY", 0f },
25+
{ "EyeRightX", 0f },
1426
{ "EyeRightY", 0f },
15-
{ "EyeLid", 0f },
1627
{ "EyeLidLeft", 0f },
1728
{ "EyeLidRight", 0f },
1829
};
@@ -29,10 +40,29 @@ public void handleOSCMessage(OSCMessage message)
2940
if (parameterValues.ContainsKey(paramToMap))
3041
{
3142
parameterValues[paramToMap] = message.value;
43+
44+
var singleEyeMode = singleEyeParamNames.Contains(paramToMap);
45+
UpdateVRCFTEyeData(ref UnifiedTracking.Data.Eye, ref UnifiedTracking.Data.Shapes, singleEyeMode);
3246
}
3347
}
3448

35-
public void UpdateVRCFTEyeData(ref UnifiedEyeData eyeData, ref UnifiedExpressionShape[] eyeShapes)
49+
public void UpdateVRCFTEyeData(ref UnifiedEyeData eyeData, ref UnifiedExpressionShape[] eyeShapes, bool singleEyeMode = false)
50+
{
51+
handleEyeGaze(ref eyeData, singleEyeMode);
52+
}
53+
54+
private void handleEyeGaze(ref UnifiedEyeData eyeData, bool singleEyeMode)
3655
{
56+
// todo, we can probably drop support but EyeX/EyeY but I'll leave it be for now
57+
if (singleEyeMode)
58+
{
59+
var combinedGaze = new Vector2(parameterValues["EyeX"], parameterValues["EyeY"]);
60+
eyeData.Left.Gaze = combinedGaze;
61+
eyeData.Right.Gaze = combinedGaze;
62+
return;
63+
}
64+
65+
eyeData.Left.Gaze = new Vector2(parameterValues["EyeLeftX"], parameterValues["EyeLeftY"]);
66+
eyeData.Right.Gaze = new Vector2(parameterValues["EyeRightX"], parameterValues["EyeRightY"]);
3767
}
3868
}

0 commit comments

Comments
 (0)