public TrueFalseStateBuilder(FeatureStateActiveMode featureStateActiveMode, TransformFeature transformFeature) { _mode = featureStateActiveMode; _transformFeature = transformFeature; _states = TransformFeatureProperties.FeatureDescriptions[_transformFeature].FeatureStates; }
/// <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)); }
private void CreateVectorDebugView(TransformFeature feature, bool trackingHandVector) { var featureDebugVis = Instantiate(_vectorVisualPrefab, this.transform); var debugVisComp = featureDebugVis.GetComponent <TransformFeatureVectorDebugVisual>(); debugVisComp.Initialize(feature, trackingHandVector, this, trackingHandVector ? Color.blue : Color.black); var debugVisTransform = debugVisComp.transform; debugVisTransform.localRotation = Quaternion.identity; debugVisTransform.localPosition = Vector3.zero; }
public bool GetCurrentState(TransformConfig config, TransformFeature transformFeature, out string currentState) { if (!IsHandDataValid()) { currentState = default; return(false); } currentState = GetCurrentFeatureState(config, transformFeature); return(currentState != default); }
public void Initialize(TransformFeature feature, bool trackingHandVector, TransformFeatureVectorDebugParentVisual parent, Color lineColor) { _isInitialized = true; _lineRenderer.enabled = true; _lineRenderer.positionCount = 2; _lineRenderer.startColor = lineColor; _lineRenderer.endColor = lineColor; _feature = feature; _trackingHandVector = trackingHandVector; _parent = parent; }
public bool IsStateActive(TransformConfig config, TransformFeature feature, FeatureStateActiveMode mode, string stateId) { var currentState = GetCurrentFeatureState(config, feature); switch (mode) { case FeatureStateActiveMode.Is: return(currentState == stateId); case FeatureStateActiveMode.IsNot: return(currentState != stateId); default: return(false); } }
public void GetFeatureVectorAndWristPos(TransformConfig config, TransformFeature transformFeature, bool isHandVector, ref Vector3?featureVec, ref Vector3?wristPos) { featureVec = null; wristPos = null; if (!IsHandDataValid()) { return; } featureVec = isHandVector ? TransformFeatureValueProvider.GetHandVectorForFeature(transformFeature, _jointData, in config) : TransformFeatureValueProvider.GetTargetVectorForFeature(transformFeature, _jointData, in config); wristPos = _jointData.WristPose.position; }
protected virtual void Update() { if (!_initialized) { return; } bool isActive = false; TransformFeature feature = _targetConfig.Feature; if (_transformFeatureStateProvider.GetCurrentState( _transformRecognizerActiveState.TransformConfig, feature, out string currentState)) { float?featureVal = _transformFeatureStateProvider.GetFeatureValue( _transformRecognizerActiveState.TransformConfig, feature); isActive = _transformFeatureStateProvider.IsStateActive( _transformRecognizerActiveState.TransformConfig, feature, _targetConfig.Mode, _targetConfig.State); string featureValStr = featureVal.HasValue ? featureVal.Value.ToString("F2") : "--"; _targetText.text = $"{feature}\n" + $"{currentState} ({featureValStr})"; } else { _targetText.text = $"{feature}\n"; } if (isActive != _lastActiveValue) { _material.color = isActive ? _activeColor : _normalColor; _lastActiveValue = isActive; } }
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)); } }
public void GetFeatureVectorAndWristPos(TransformFeature feature, bool isHandVector, ref Vector3?featureVec, ref Vector3?wristPos) { FeatureStateProvider.GetFeatureVectorAndWristPos( TransformConfig, feature, isHandVector, ref featureVec, ref wristPos); }
public static Vector3 GetHandVectorForFeature(TransformFeature transformFeature, in TransformJointData transformJointData,
public void GetTransformFeatureVectorAndWristPos(TransformFeature feature, bool isHandVector, ref Vector3?featureVec, ref Vector3?wristPos) { _transformRecognizerActiveState.GetFeatureVectorAndWristPos(feature, isHandVector, ref featureVec, ref wristPos); }
private string GetCurrentFeatureState(TransformConfig config, TransformFeature feature) { return(_transformFeatureStateCollection.GetStateProvider(config). GetCurrentFeatureState(feature)); }