Skip to content

Commit cdf0ba5

Browse files
committed
Further preparation for mapping ETVR data to parameters
1 parent 6f3cb82 commit cdf0ba5

2 files changed

Lines changed: 60 additions & 6 deletions

File tree

ETVRTrackingModule.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ public class ETVRTrackingModule : ExtTrackingModule
99
private OSCManager? _OSCManager;
1010
private ExpressionsMapper? _expressionMapper;
1111

12-
public override (bool SupportsEye, bool SupportsExpression) Supported => (true, false);
12+
public override (bool SupportsEye, bool SupportsExpression) Supported => (true, true);
1313
public override (bool eyeSuccess, bool expressionSuccess) Initialize(bool eyeAvailable, bool expressionAvailable)
1414
{
15-
_expressionMapper = new ExpressionsMapper();
15+
_expressionMapper = new ExpressionsMapper(Logger);
1616
_OSCManager = new OSCManager(Logger, _expressionMapper);
1717

1818
if (_OSCManager.State != OSCState.CONNECTED) {
@@ -24,7 +24,7 @@ public override (bool eyeSuccess, bool expressionSuccess) Initialize(bool eyeAva
2424
var stream = GetType().Assembly.GetManifestResourceStream("ETVRTrackingModule.Assets.ETVRLogo.png");
2525
ModuleInformation.StaticImages = stream != null? new List<Stream> { stream } : ModuleInformation.StaticImages;
2626

27-
return (true, false);
27+
return (true, true);
2828
}
2929

3030
public override void Teardown()
@@ -34,7 +34,7 @@ public override void Teardown()
3434

3535
public override void Update()
3636
{
37-
_expressionMapper?.UpdateVRCFTDict();
37+
_expressionMapper?.UpdateVRCFTEyeData();
3838
Thread.Sleep(10);
3939
}
4040
}

ExpressionsMapper.cs

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,63 @@
11

2+
using Microsoft.Extensions.Logging;
3+
using VRCFaceTracking.Core.Params.Data;
4+
using VRCFaceTracking.Core.Params.Expressions;
5+
26
namespace ETVRTrackingModule
37
{
48
public class ExpressionsMapper
59
{
6-
public void MapMessage(OSCMessage msg) { }
7-
public void UpdateVRCFTDict() { }
10+
private Dictionary<string, float> parameterValues = new()
11+
{
12+
// v1, legacy support
13+
{ "RightEyeLidExpandedSqueeze", 0f },
14+
{ "LeftEyeLidExpandedSqueeze", 0f },
15+
{ "LeftEyeX", 0f },
16+
{ "RightEyeX", 0f },
17+
{ "EyesY", 0f },
18+
// v2
19+
{ "EyeX", 0f },
20+
{ "EyeLeftX", 0f },
21+
{ "EyeRightX", 0f },
22+
{ "EyeLeftY", 0f },
23+
{ "EyeRightY", 0f },
24+
{ "EyeLid", 0f },
25+
{ "EyeLidLeft", 0f },
26+
{ "EyeLidRight", 0f },
27+
};
28+
29+
ILogger _logger;
30+
public ExpressionsMapper(ILogger logger)
31+
{
32+
_logger = logger;
33+
}
34+
public void MapMessage(OSCMessage msg)
35+
{
36+
if (!msg.success)
37+
return;
38+
if (IsV2Param(msg))
39+
{
40+
string paramToMap = GetParamToMap(msg.address);
41+
if (parameterValues.ContainsKey(paramToMap))
42+
{
43+
parameterValues[paramToMap] = msg.value;
44+
}
45+
}
46+
}
47+
48+
private bool IsV2Param(OSCMessage oscMessage)
49+
{
50+
return oscMessage.address.Contains("/v2/");
51+
}
52+
53+
private static string GetParamToMap(string oscAddress)
54+
{
55+
var oscUrlSplit = oscAddress.Split("/");
56+
return oscUrlSplit[^1];
57+
}
58+
59+
public void UpdateVRCFTEyeData()
60+
{
61+
}
862
}
963
}

0 commit comments

Comments
 (0)