Exemple #1
0
        private void Update()
        {
            Transform targetToFollow = _grabButtonTrigger.TrackedDeviceProvider.GetOutput().transform;

            _followObjectPositionAction.TargetToFollow = targetToFollow;
            _followObjectRotationAction.TargetToFollow = targetToFollow;

            if (_highlightGrabTarget && !_grabbing)
            {
                if (_collisionTrigger.IsValid())
                {
                    if (_collisionTrigger.CollidedTransform.GetComponent <CollisionInteractable>().ContainsTag(_highlightTag))
                    {
                        _highlightAction.ObjectToHighlight = _collisionTrigger.CollidedTransform;
                        _highlightAction.SetCurrentHighlightOutline(_baseHighlightSize);
                    }
                }
                _highlightAction.Update(_collisionTrigger.IsValid());
            }


            if (_grabButtonTrigger.IsValid())
            {
                if (_collisionTrigger.IsValid() && !_grabbing && !(!_allowBufferedGrabbing && _buttonDown))
                {
                    _followObjectPositionAction.Follower = _collisionTrigger.CollidedTransform;
                    _followObjectRotationAction.Follower = _collisionTrigger.CollidedTransform;
                    _grabbing = true;

                    if (_highlightGrabTarget && _collisionTrigger.CollidedTransform.GetComponent <CollisionInteractable>().ContainsTag(EInteractable.Highlight))
                    {
                        _highlightAction.SetCurrentHighlightOutline(_grabHighlightSize);
                    }
                }

                _buttonDown = true;
            }
            else if (_buttonDown)
            {
                _buttonDown = false;
                _grabbing   = false;
                if (_highlightGrabTarget)
                {
                    _highlightAction.SetCurrentHighlightOutline(_baseHighlightSize);
                }
            }

            if (_2ControllerScale)
            {
                if (!_scaling && _grabbing && _scaleButtonTrigger.IsValid())
                {
                    _scaling = true;
                    _scaleAction.ObjectToScale = _collisionTrigger.CollidedTransform;
                }
                else if ((!_scaleButtonTrigger.IsValid() || !_grabbing) && _scaling)
                {
                    _scaling = false;
                }

                if (_scaling)
                {
                    _scaleAction.ScaleValueX = _distanceProvider.GetOutput();
                    _scaleAction.ScaleValueY = _distanceProvider.GetOutput();
                    _scaleAction.ScaleValueZ = _distanceProvider.GetOutput();
                }

                _scaleAction.Update(_scaling);
            }

            _followObjectPositionAction.Update(_grabbing);
            _followObjectRotationAction.Update(_grabbing);
        }