// UIのPresentetor層からコールされるモデルのロジック
        public void SetCurrentAdjuster(ControllerButtonType type)
        {
            switch (type)
            {
            case ControllerButtonType.Move:
                CurrentAdjuster = _positionAdjuster;
                break;

            case ControllerButtonType.Rotate:
                CurrentAdjuster = _rotateAdjuster;
                break;

            case ControllerButtonType.Scale:
                CurrentAdjuster = _scaleAdjuster;
                break;

            case ControllerButtonType.Done:
                CurrentAdjuster = null;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }

            _currentState.Value = type;
        }
        private void Start()
        {
            this.UpdateAsObservable()
            .Where(_ => _manipulationProvider.IsManipulating.Value)
            .Subscribe(_ =>
            {
                var velocity = _manipulationProvider.SmoothVelocity;
                _currentAdjuster?.AdjustTransform(_target.Value, velocity);
            });

            AdjusterManager.Instance.CurrentState
            .Subscribe(_ => _currentAdjuster = AdjusterManager.Instance.CurrentAdjuster)
            .AddTo(gameObject);

            AdjusterManager.Instance.CurrentState
            .Where(state => state == ControllerButtonType.Done)
            .Subscribe(_ => _bbEdges.transform.localScale = Vector3.zero)
            .AddTo(gameObject);
        }
 private void Start()
 {
     CurrentAdjuster = _positionAdjuster;
 }