//using System.Collections; //using System.Collections.Generic; //using UnityEngine; //using SiegeSong; //namespace SiegeSong //{ // public class CameraManager : MonoBehaviour // { // public RuntimeManager RuntimeManager; // public Motor Motor; // public GameObject ActiveCamera; // public bool FirstPersonActive; // public Transform CameraTarget; // public Transform MenuMount; // public Transform ActiveMount; // public Transform FirstPersonMount; // public Transform LeftMount; // public Transform RightMount; // public Transform CenterMount; // public List AutoMounts; // public List StationMounts; // public GameObject[] NonPlayerCameras; // public float CameraX; // public float CameraY; // private int activeCameraIndex; // public float speedX = 200.0f; // public float speedY = 100.0f; // public float minX = -90.0f; // public float maxX = 90.0f; // public float minY = -80.0f; // public float maxY = 90.0f; // private float zoomStep = 0.1f; // public float firstPersonMinY = -80.0f; // public float firstPersonMaxY = 90.0f; // private float zoomSpeed = 0.1f; // private float zoom = 2.0f; // private float requestedZoom = 2.0f; // private float minZoom = -0.2f; // private float maxZoom = 0.5f; // private bool canZoomToRequested = true; // private bool zooming; // private bool zoomCollision; // public bool lerping; // public Vector3 lerpStartPosition; // public Vector3 lerpTargetPosition; // public float lerpStartTime; // public float lerpDistance; // public float lerpSpeed = 3.5f; // public float lerpStopDistanceThreshold = 0.01f; // private float rotationSpeedBrakeSpeed = 2.0f; // private float rotationSpeedStopThreshold = 0.1f; // //public CameraMode ActiveMode; // void Start() // { // ActiveMount = MenuMount; // } // void Update() // { // //ActiveCamera.transform.position = ActiveMount.position; // if (Motor != null && Motor.UsingStation) // { // CameraX = Motor.TargetStation.CameraX; // CameraY = Motor.TargetStation.CameraY; // } // if (lerping) // { // ActiveCamera.transform.position = Vector3.Lerp(lerpStartPosition, lerpTargetPosition, ((Time.time - lerpStartTime) * lerpSpeed) / lerpDistance); // if (Vector3.Distance(ActiveCamera.transform.position, lerpTargetPosition) < lerpStopDistanceThreshold) // lerping = false; // } // //else if (lerpTargetPosition != null) // //{ // // ActiveCamera.transform.position = lerpTargetPosition; // //} // //if (!zoomCollision) // //{ // // for (var i = 0; i < ActiveCamera.transform.childCount; i++) // // { // // var child = ActiveCamera.transform.GetChild(i); // // if (child.gameObject.CompareTag("MainCamera") && !FirstPersonActive) // // { // // child.position = new Vector3(child.position.x, child.position.y, child.position.z + zoom); // // zoom = 0; // // } // // } // //} // } // public void SwitchActiveCamera(Camera targetCamera) // { // } // public void ZoomIn() // { // if (!FirstPersonActive) // { // if (zoom - zoomStep > minZoom) // { // zoom -= zoomStep; // } // else // { // zoom = minZoom; // } // } // } // public void ZoomOut(bool request = true) // { // if (!FirstPersonActive) // { // zoom += zoomStep; // } // if (!FirstPersonActive) // { // if (zoom + zoomStep < maxZoom) // { // zoom += zoomStep; // } // else // { // zoom = maxZoom; // } // } // } // public void ResetCameraPosition() // { // //ActiveCamera.transform.position = ActiveMount.transform.position; // } // public void RealignCamera(bool rotateBody = false) // { // if (!rotateBody) // { // if (CameraX < rotationSpeedStopThreshold && CameraX > -rotationSpeedStopThreshold) // CameraX = 0; // else // CameraX = CameraX / rotationSpeedBrakeSpeed; // } // else // { // Motor.RotateToDirection(ActiveMount.eulerAngles); // //Motor.RotateToDirection(ActiveCamera.transform.eulerAngles); // ActiveMount.RotateAround(CameraTarget.position, Vector3.up, -CameraX); // ActiveCamera.transform.rotation.SetLookRotation(CameraTarget.position); // ActiveCamera.transform.rotation = Quaternion.Euler(-ActiveCamera.transform.rotation.x, ActiveCamera.transform.rotation.y, ActiveCamera.transform.rotation.z); // //ActiveCamera.transform.RotateAround(CameraTarget.position, Vector3.up, -CameraX); // CameraX = 0; // } // } // public void RotateHorizontal(float amount) // { // var degreesToRotate = amount * speedX * Time.deltaTime; // if (degreesToRotate > 0 && !(CameraX + degreesToRotate > maxX) // || (degreesToRotate < 0 && !(CameraX + degreesToRotate < minX))) // { // if (!FirstPersonActive) // ActiveCamera.transform.RotateAround(CameraTarget.position, ActiveCamera.transform.TransformDirection(Vector3.up), amount * speedX * Time.deltaTime); // //else // //{ // // ActiveCamera.transform.Rotate(ActiveCamera.transform.TransformDirection(Vector3.up), amount * speedX * Time.deltaTime); // //} // //var currentActiveCameraRotation = ActiveCamera.transform.rotation; // var directionToTarget = ActiveCamera.transform.eulerAngles.DirectionTo(CameraTarget.position); // ActiveCamera.transform.eulerAngles = directionToTarget; // //ActiveCamera.transform.eulerAngles = new Vector3(currentActiveCameraRotation.x, currentActiveCameraRotation.y, 0); // CameraX += degreesToRotate; // } // else // { // if (FirstPersonActive) // { // //Motor.RotateToDirection(ActiveCamera.transform.rotation.eulerAngles); // //RealignCamera(); // } // } // } // public void RotateVertical(float amount) // { // var degreesToRotate = amount * speedY * Time.deltaTime; // if (degreesToRotate > 0 && !(CameraY + degreesToRotate > (FirstPersonActive ? firstPersonMaxY : maxY)) // || (degreesToRotate < 0 && !(CameraY + degreesToRotate < (FirstPersonActive ? firstPersonMinY : minY)))) // { // if (!FirstPersonActive) // { // ActiveCamera.transform.RotateAround(CameraTarget.position, ActiveCamera.transform.TransformDirection(Vector3.right), amount * speedY * Time.deltaTime); // //var currentActiveCameraRotation = ActiveCamera.transform.rotation; // var directionToTarget = ActiveCamera.transform.eulerAngles.DirectionTo(CameraTarget.position); // ActiveCamera.transform.eulerAngles = directionToTarget; // //ActiveCamera.transform.eulerAngles = new Vector3(currentActiveCameraRotation.x, currentActiveCameraRotation.y, 0); // } // //else // // ActiveCamera.transform.Rotate(Vector3.right, amount * speedY * Time.deltaTime); // CameraY += degreesToRotate; // } // } // public void SwitchCamera() // { // CameraX = 0; // CameraY = 0; // if (FirstPersonActive) // { // ActiveCamera.transform.Rotate(-Vector3.right, -CameraY); // FirstPersonActive = false; // } // else // ActiveCamera.transform.RotateAround(CameraTarget.position, ActiveCamera.transform.TransformDirection(-Vector3.right), -CameraY); // if (activeCameraIndex - 3 == AutoMounts.Count + StationMounts.Count) // activeCameraIndex = 0; // else // activeCameraIndex++; // lerping = true; // lerpStartTime = Time.time; // lerpStartPosition = ActiveCamera.transform.position; // switch (activeCameraIndex) // { // case 0: // FirstPersonActive = true; // lerpTargetPosition = FirstPersonMount.position; // ActiveMount = FirstPersonMount; // break; // case 1: // lerpTargetPosition = RightMount.position; // ActiveMount = RightMount; // break; // case 2: // lerpTargetPosition = CenterMount.position; // ActiveMount = CenterMount; // break; // case 3: // lerpTargetPosition = LeftMount.position; // ActiveMount = LeftMount; // break; // default: // case 4: // if (activeCameraIndex - 3 > AutoMounts.Count) // { // lerpTargetPosition = StationMounts[activeCameraIndex - 3 - AutoMounts.Count].position; // ActiveMount = StationMounts[activeCameraIndex - 3 - AutoMounts.Count]; // } // else // { // lerpTargetPosition = StationMounts[activeCameraIndex - 3].position; // ActiveMount = StationMounts[activeCameraIndex - 3]; // } // break; // } // lerpDistance = Vector3.Distance(ActiveCamera.transform.position, lerpTargetPosition); // ActiveCamera.transform.SetParent(ActiveMount); // } // } //}