-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathETVRTrackingModule.cs
More file actions
47 lines (39 loc) · 1.85 KB
/
ETVRTrackingModule.cs
File metadata and controls
47 lines (39 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System.Reflection;
using Microsoft.Extensions.Logging;
using VRCFaceTracking;
using VRCFaceTracking.Core.Library;
namespace ETVRTrackingModule
{
public class ETVRTrackingModule : ExtTrackingModule
{
private OSCManager? _oscManager;
private ExpressionsMapperManager? _expressionMapper;
public override (bool SupportsEye, bool SupportsExpression) Supported => (true, false);
public override (bool eyeSuccess, bool expressionSuccess) Initialize(bool eyeAvailable, bool expressionAvailable)
{
ModuleInformation.Name = "ETVR Eye Tracking module";
var stream = GetType().Assembly.GetManifestResourceStream("ETVRTrackingModule.Assets.ETVRLogo.png");
ModuleInformation.StaticImages = stream != null? new List<Stream> { stream } : ModuleInformation.StaticImages;
var currentPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!;
ETVRConfigManager configManager = new ETVRConfigManager(currentPath, Logger);
configManager.LoadConfig();
_expressionMapper = new ExpressionsMapperManager(Logger, configManager.Config);
_expressionMapper.RegisterSelf(ref configManager);
_oscManager = new OSCManager(Logger, _expressionMapper);
_oscManager.RegisterSelf(ref configManager);
_oscManager.Start();
if (_oscManager.State == OSCState.CONNECTED) return (true, false);
Logger.LogError("ETVR Module could not connect to the specified port.");
return (false, false);
}
public override void Teardown()
{
_oscManager?.TearDown();
}
public override void Update()
{
_expressionMapper!.UpdateVRCFTState();
Thread.Sleep(5);
}
}
}