public void Move(Vector3 v3Direction) { if (bEnableMovement) { if (bRotateBeforeMove && v3LookDirection != v3Direction) { v3LookDirection = v3Direction; if (v3LookDirection == Vector3.right) { this.transform.rotation = Quaternion.Euler(Vector3.up * 180); } else if (v3LookDirection == Vector3.left) { this.transform.rotation = Quaternion.Euler(Vector3.zero); } else if (v3LookDirection == Vector3.forward) { this.transform.rotation = Quaternion.Euler(Vector3.up * 90); } else if (v3LookDirection == Vector3.back) { this.transform.rotation = Quaternion.Euler(Vector3.up * 270); } qCurrentRotation = this.transform.rotation; } else { if (ValidateMove(v3Direction)) { v3TargetPosition += v3Direction; bfinishedMoving = false; RefreshLevelReference(v3Direction); } else if (ValidatePush(v3Direction)) { int index = MMUtils.MatrixIndexesToListIndex(v3CurrentPosition + v3Direction, gameController.GetCurrentLevel().MaxSize); MovementObject mvObjectToMove = gameController.scenarioObjects[index].GetComponent <MovementObject>(); if (mvObjectToMove.bEnableMovement) { StartCoroutine(mvObjectToMove.Movequeue(v3Direction)); } } } } }