using VRCFaceTracking.Core.Params; using VRCFaceTracking.Core.Params.Data; using VRCFaceTracking.Core.Params.Expressions; using VRCFaceTracking.Core.Params.Expressions.Legacy.Eye; using VRCFaceTracking.Core.Params.Expressions.Legacy.Lip; using VRCFaceTracking.Core.Types; namespace VRCFaceTracking { /// /// Class that contains all relevant data /// public class UnifiedTracking { /// /// Eye image data sent from the loaded eye module. /// public static Image EyeImageData = new Image(); /// /// Lip / Expression image data sent from the loaded expressions module. /// public static Image LipImageData = new Image(); /// /// Latest Expression Data accessible and sent by all VRCFaceTracking modules. /// public static UnifiedTrackingData Data = new(); /// /// Container of all features and functions that mutates the incoming expression data into output data suitable for driving Unified Expressions. /// /// Mutates data on update. public static UnifiedTrackingMutator Mutator; #pragma warning disable CS0618 /// /// Version 1 (VRCFaceTracking SRanipal) of all accessible output parameters. /// /// These parameters are going to be undocumented in the near future and are directly emulated by Version 2 (Unified Expressions) parameters. public static readonly Parameter[] AllParameters_v1 = LipShapeMerger.AllLipParameters.Union(EyeTrackingParams.ParameterList).ToArray(); /// /// Version 2 (Unified Expressions) of all accessible output parameters. /// public static readonly Parameter[] AllParameters_v2 = UnifiedExpressionsParameters.ExpressionParameters; /// /// Head tracking parameters /// public static readonly Parameter[] HeadParameters = UnifiedHeadParameters.HeadParameters; /// /// The collection of EVERY possible output parameter /// public static readonly Parameter[] AllParameters = AllParameters_v2.Concat(AllParameters_v1).Concat(HeadParameters).ToArray(); #pragma warning restore CS0618 /// /// Central update action for all expression data to subscribe to. /// public static Action OnUnifiedDataUpdated = OnUnifiedDataUpdated + (_ => { }) ?? (_ => {}); /// /// Central update function that updates all output parameter data and pushes the latest expressions from VRCFaceTracking modules into the internal expressions buffer. /// public static async Task UpdateData(CancellationToken ct) => OnUnifiedDataUpdated.Invoke(await Task.Run(() => Mutator.MutateData(Data), ct)); } }