123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #if UNITY_EDITOR
- using UnityEngine;
- namespace O3DWB
- {
- public class ObjectMouseMoveAlongDirectionSession
- {
- #region Private Variables
- private GameObject _gameObject;
- private Transform _gameObjectTransform;
- private Vector3 _objectPositionAtSessionBegin;
- private Vector2 _cursorPosAtSessionStart;
- private Vector3 _normalizedMoveDirection;
- private bool _isActive = false;
- private ObjectMouseMoveAlongDirectionSettings _settings;
- #endregion
- #region Public Properties
- public bool IsActive { get { return _isActive; } }
- #endregion
- #region Public Methods
- public void Begin(GameObject gameObject, Vector3 moveDirection, ObjectMouseMoveAlongDirectionSettings settings)
- {
- if (_isActive || moveDirection.magnitude == 0 || gameObject == null) return;
-
- _gameObject = gameObject;
- _gameObjectTransform = gameObject.transform;
- _objectPositionAtSessionBegin = _gameObjectTransform.position;
- _settings = settings;
- _cursorPosAtSessionStart = MouseCursor.Instance.Position;
- _normalizedMoveDirection = moveDirection;
- _normalizedMoveDirection.Normalize();
- _isActive = true;
- }
- public void End()
- {
- _isActive = false;
- }
- public void UpdateForMouseMovement(Event e)
- {
- if(_isActive && _gameObject != null)
- {
- Vector2 currentCursorPos = MouseCursor.Instance.Position;
- Vector2 fromPosAtSessionStartToCurrentPos = currentCursorPos - _cursorPosAtSessionStart;
- UndoEx.RecordForToolAction(_gameObjectTransform);
- _gameObjectTransform.position = _objectPositionAtSessionBegin + _normalizedMoveDirection * (_settings.MouseSensitivity * fromPosAtSessionStartToCurrentPos.x);
- }
- }
- #endregion
- }
- }
- #endif
|