using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; using UnityEngine.InputSystem; public class MovingState : SceneMode { MoveObject _objectToMove; Vector3 _deltaMovementWorld; Vector3 _initialPosition; Quaternion _initialRotation; Vector3 _finalPosition; Quaternion _finalRotation; Vector3 _initialOffsetInScreenPosition; public MovingState(SceneModeManager manager) : base(manager) { } public override void OnStateEnter() { MoveHandles.Instance.SetHandleGroupActive(true); _G.LockInState = true; GameObject obj = SceneModeManager.Selected; if(obj == null) { Debug.Log("No Selected Object"); SceneModeManager.Instance.SetSceneMode(SceneModes.Navigate); return; } _objectToMove = SceneModeManager.Selected.GetComponent(); _initialPosition = _objectToMove.transform.position; _initialRotation = _objectToMove.transform.rotation; _objectToMove.HandleSetReadyMoveForBeforeMouseDrag(); MoveHandles.Instance.OnMoveEnter(); //if (_G.MesureONOFF) Mesure.Show(); } public override void OnStateExit() { _G.LockInState = false; if (_objectToMove != null && DOIT.exist(Get.GetObjectIndex(_objectToMove.name))) { //Debug.Log("Before Object Position On Exit" + _objectToMove.transform.position); _objectToMove.OnMouseUpEvent(); _objectToMove.RepositionIntoRoom(); _finalPosition = _objectToMove.transform.position; _finalRotation = _objectToMove.transform.rotation; if (Vector3.Distance(_finalPosition, _initialPosition) > 0) { GameObject obj = _objectToMove.gameObject; string attachedToName = _objectToMove.AttachedTo.name; MoveCommand command = new MoveCommand(obj, _initialPosition,_initialRotation, CommandHandler.Instance.BeforeDataTemp[22],_finalPosition,_finalRotation, attachedToName); CommandHandler.Instance.AddToHistory(command); } //Debug.Log("After Object Position On Exit" + _objectToMove.transform.position); } MoveHandles.Instance.SetToDefaultValue(); Mesure.Hide(); } public override void OnStateUpdate() { if (_objectToMove == null) { SceneModeManager.Instance.SetSceneMode(SceneModes.ReadyMove); } if (Input.GetMouseButton(0) || Input.touches.Length > 0) { //Debug.Log("Before Object Position " + _objectToMove.transform.position); _objectToMove.OnMouseDragEvent(); //_objectToMove.RepositionIntoRoom(); //Debug.Log("After Object Position " + _objectToMove.transform.position); Mesure.OnUpdate(); MoveHandles.Instance.UpdateHandlesVisual(_objectToMove.transform); } else { SceneModeManager.Instance.SetSceneMode(SceneModes.ReadyMove); } } }