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);
        }
示例#5
0
 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;
        }
示例#8
0
        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));
 }