public void RegisterConfig(TransformConfig transformConfig, TransformJointData jointData, Func <float> timeProvider) { bool containsKeyAlready = _idToTransformStateInfo.ContainsKey(transformConfig.InstanceId); Assert.IsFalse(containsKeyAlready, "Trying to register multiple configs with the same id into " + "TransformFeatureStateCollection."); var featureStateProvider = new FeatureStateProvider <TransformFeature, string> // note that jointData and transformConfig are reference types (classes), because they can change // during run time ((feature) => TransformFeatureValueProvider.GetValue(feature, jointData, transformConfig), feature => (int)feature, timeProvider); TransformStateInfo newTransfState = new TransformStateInfo(transformConfig, featureStateProvider); featureStateProvider.InitializeThresholds(transformConfig.FeatureThresholds); _idToTransformStateInfo.Add(transformConfig.InstanceId, newTransfState); }
public static float GetValue(TransformFeature transformFeature, TransformJointData transformJointData, TransformConfig transformConfig) { TransformProperties transformProps = new TransformProperties(transformJointData.CenterEyePose, transformJointData.WristPose, transformJointData.Handedness, transformJointData.TrackingSystemUp, transformJointData.TrackingSystemForward); switch (transformFeature) { case TransformFeature.WristDown: return(GetWristDownValue(in transformProps, in transformConfig)); case TransformFeature.WristUp: return(GetWristUpValue(in transformProps, in transformConfig)); case TransformFeature.PalmDown: return(GetPalmDownValue(in transformProps, in transformConfig)); case TransformFeature.PalmUp: return(GetPalmUpValue(in transformProps, in transformConfig)); case TransformFeature.PalmTowardsFace: return(GetPalmTowardsFaceValue(in transformProps, in transformConfig)); case TransformFeature.PalmAwayFromFace: return(GetPalmAwayFromFaceValue(in transformProps, in transformConfig)); case TransformFeature.FingersUp: return(GetFingersUpValue(in transformProps, in transformConfig)); case TransformFeature.FingersDown: return(GetFingersDownValue(in transformProps, in transformConfig)); case TransformFeature.PinchClear: default: return(GetPinchClearValue(in transformProps, in transformConfig)); } }