/// <summary> /// Returns the current value of the feature. If the hand joints are not populated with /// valid data (for instance, due to a disconnected hand), the method will return null; /// </summary> public float?GetFeatureValue(TransformConfig config, TransformFeature transformFeature) { if (!IsHandDataValid()) { return(null); } return(TransformFeatureValueProvider.GetValue(transformFeature, _jointData, config)); }
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); }