using System.Collections; using System.Collections.Generic; using UnityEngine; public class SlidingState : SceneMode { MoveObject _moveObject; Vector3 _initialPosition; Quaternion _initialRotation; Vector3 _finalPosition; Quaternion _finalRotation; public SlidingState(SceneModeManager manager) : base(manager) { } public override void OnStateEnter() { _G.LockInState = true; MoveHandles.Instance.SetHandleGroupActive(true); Mesure.OnUpdate(); MoveHandles.Instance.OnElevateEnter(); GameObject obj = SceneModeManager.Selected; if (obj != null) { _moveObject = obj.GetComponent(); _initialPosition = _moveObject.transform.position; _initialRotation = _moveObject.transform.rotation; _moveObject.HandleSetReadyMoveForBeforeMouseDrag(); _moveObject.SetInitialVerticalOffset(); } } public override void OnStateExit() { //MoveHandles.Instance._lastClicked = null; _G.LockInState = false; if (_moveObject != null) { //Debug.Log("Before Object Position On Exit" + _moveObject.transform.position); _moveObject.OnMouseUpEvent(); _moveObject.RepositionIntoRoom(); _finalPosition = _moveObject.transform.position; _finalRotation = _moveObject.transform.rotation; if (Vector3.Distance(_finalPosition, _initialPosition) > 0) { MoveCommand command = new MoveCommand(_moveObject.gameObject, _initialPosition, _initialRotation, CommandHandler.Instance.BeforeDataTemp[22],_finalPosition, _finalRotation, _moveObject.AttachedTo.name); CommandHandler.Instance.AddToHistory(command); } //Debug.Log("After Object Position On Exit" + _moveObject.transform.position); } MoveHandles.Instance.SetToDefaultValue(); Mesure.Hide(); _moveObject = null; } public override void OnStateUpdate() { if(_moveObject == null) { _manager.SetSceneMode(SceneModes.ReadyMove); } if (Input.GetMouseButton(0) || Input.touches.Length > 0) { _moveObject.OnMouseDragEvent(); //_moveObject.RepositionIntoRoom(); Mesure.OnUpdate(); MoveHandles.Instance.UpdateHandlesVisual(_moveObject.transform); } else { _manager.SetSceneMode(SceneModes.ReadyMove); } } }