void Awake()
    {
        _AudioSource = GetComponent <AudioSource> ();
        _MainCamera  = Camera.main;

        _CurrentEntry = _DefaultEntries[0];
        // Reset position on runtime so we don't get a janky start to the game
        transform.position = GetWantedCameraPosition();
    }
 void ChangeCameraZoom()
 {
     // Increment and wrap the entry index
     _EntryIndex = (_EntryIndex + 1 >= _DefaultEntries.Length) ? 0 : _EntryIndex + 1;
     // Select the Current Entry based on the entry index
     _CurrentEntry = _TopView ? _TopViewEntries[_EntryIndex] : _DefaultEntries[_EntryIndex];
     // Play the zoom sound
     _AudioSource.PlayOneShot(_ZoomSound);
 }
    public void AdjustCameraPriority(Camera camera, int priority)
    {
        int         index       = GetCameraEntryIndexFromCamera(camera);
        CameraEntry cameraEntry = index != -1 ? cameras[index] : null;

        if (cameraEntry != null)
        {
            // we must remove it and re-add it to the list if we want the priority to apply
            cameras.RemoveAt(index);
            cameraEntry.Priority = priority;
            cameras.Add(cameraEntry);
            ReevaluateActiveCamera();
        }
        else
        {
            Log.Error("Failed to adjust camera priority. It appears it was not added to the camera service (" + camera.gameObject.name + ")");
        }
    }
    void Update()
    {
        if (GameManager._IsPaused)
        {
            return;
        }

        if (Input.GetButtonDown("Right Bumper"))
        {
            ChangeCameraZoom();
        }
        else if (Input.GetButtonDown("Left Bumper"))
        {
            _TopView      = !_TopView;
            _CurrentEntry = _TopView ? _TopViewEntries[_EntryIndex] : _DefaultEntries[_EntryIndex];
        }

        if (Input.GetButton("Left Trigger"))
        {
            _WantedRotationAngle += _RotationStepSpeed * Time.deltaTime;
        }
        else if (Input.GetButton("Right Trigger"))
        {
            _WantedRotationAngle -= _RotationStepSpeed * Time.deltaTime;
        }

        if (Input.GetButton("Right Stick Click"))
        {
            _WantedRotationAngle = -_Target.eulerAngles.y;
        }

        // Smoothly change values towards their intended target

        _RotationAngle          = Mathf.Lerp(_RotationAngle, _WantedRotationAngle, _RotationSpeed * Time.deltaTime);
        _MainCamera.fieldOfView = Mathf.SmoothStep(_MainCamera.fieldOfView, _CurrentEntry._FOV, _FOVChangeSpeed * Time.deltaTime);

        transform.position = Vector3.Lerp(transform.position, GetWantedCameraPosition(), _MoveSpeed * Time.deltaTime);

        Vector3 delta = (_Target.position - transform.position).normalized;

        transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(delta), _RotationDampening * Time.deltaTime);
    }
        public int CompareTo(object obj)
        {
            CameraEntry other = (CameraEntry)obj;

            return(Priority.CompareTo(other.Priority));
        }
        public void LoadCAMfile()
        {
            CameraStream.Clear();
            ListBoxCameras.Items.Clear();

            BinaryReader CameraReader = new BinaryReader(new FileStream(CameraFile, FileMode.Open));

            CameraReader.BaseStream.Position = 0;

            while (CameraReader.BaseStream.Position != CameraReader.BaseStream.Length)
            {
                CameraEntry TempCam = new CameraEntry();
                TempCam.Integer1  = SwitchEnd(CameraReader.ReadInt32());
                TempCam.Integer2  = SwitchEnd(CameraReader.ReadInt32());
                TempCam.Integer3  = SwitchEnd(CameraReader.ReadInt32());
                TempCam.Integer4  = SwitchEnd(CameraReader.ReadInt32());
                TempCam.Integer5  = SwitchEnd(CameraReader.ReadInt32());
                TempCam.FloatX6   = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatY7   = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatZ8   = SwitchEnd(CameraReader.ReadSingle());
                TempCam.Integer9  = SwitchEnd(CameraReader.ReadInt32());
                TempCam.Integer10 = SwitchEnd(CameraReader.ReadInt32());
                TempCam.Integer11 = SwitchEnd(CameraReader.ReadInt32());
                TempCam.FloatX12  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatY13  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatZ14  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatX15  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatY16  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatZ17  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.Integer18 = SwitchEnd(CameraReader.ReadInt32());
                TempCam.Integer19 = SwitchEnd(CameraReader.ReadInt32());
                TempCam.Integer20 = SwitchEnd(CameraReader.ReadInt32());
                TempCam.FloatX21  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatY22  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatZ23  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatX24  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatY25  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatZ26  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatX27  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatY28  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatZ29  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.Integer30 = SwitchEnd(CameraReader.ReadInt32());
                TempCam.Integer31 = SwitchEnd(CameraReader.ReadInt32());
                TempCam.FloatX32  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatY33  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatZ34  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.FloatW35  = SwitchEnd(CameraReader.ReadSingle());
                TempCam.Integer36 = SwitchEnd(CameraReader.ReadInt32());
                TempCam.Integer37 = SwitchEnd(CameraReader.ReadInt32());
                TempCam.Integer38 = SwitchEnd(CameraReader.ReadInt32());
                TempCam.Integer39 = SwitchEnd(CameraReader.ReadInt32());

                if (TempCam.Integer1 == 0 & TempCam.Integer2 == 0 & TempCam.Integer3 == 0 & TempCam.Integer4 == 0 & TempCam.Integer5 == 0)
                {
                    continue;
                }

                CameraStream.Add(TempCam);
            }

            CameraReader.Close();

            LabelCameraCount.Text = CameraStream.Count().ToString() + " cameras";
            PopulateListBox();

            ListBoxCameras.SelectedIndex = -1;
        }