public void CameraMovementLive(HERO hero)
    {
        var magnitude = hero.rigidbody.velocity.magnitude;

        if (magnitude > 10f)
        {
            Camera.main.fieldOfView = Mathf.Lerp(Camera.main.fieldOfView, Mathf.Min(100f, magnitude + 40f), 0.1f);
        }
        else
        {
            Camera.main.fieldOfView = Mathf.Lerp(Camera.main.fieldOfView, 50f, 0.1f);
        }

        var num2 = hero.CameraMultiplier * (200f - Camera.main.fieldOfView) / 150f;

        this.transform.position = head.transform.position + Vector3.up * heightMulti - Vector3.up * (0.6f - cameraDistance) * 2f;
        var transform = this.transform;

        transform.position -= this.transform.forward * distance * distanceMulti * num2;
        if (hero.CameraMultiplier < 0.65f)
        {
            var transform2 = this.transform;
            transform2.position += this.transform.right * Mathf.Max((0.6f - hero.CameraMultiplier) * 2f, 0.65f);
        }

        this.transform.rotation = Quaternion.Lerp(Camera.main.transform.rotation, hero.GetComponent <SmoothSyncMovement>().correctCameraRot, Time.deltaTime * 5f);
    }
    public void CameraMovementLive(HERO hero)
    {
        float magnitude = hero.rigidbody.velocity.magnitude;

        if (magnitude > 10f)
        {
            Camera.main.fieldOfView = Mathf.Lerp(Camera.main.fieldOfView, Mathf.Min((float)100f, (float)(magnitude + 40f)), 0.1f);
        }
        else
        {
            Camera.main.fieldOfView = Mathf.Lerp(Camera.main.fieldOfView, 50f, 0.1f);
        }
        float num2 = (hero.CameraMultiplier * (200f - Camera.main.fieldOfView)) / 150f;

        base.transform.position = (Vector3)((this.head.transform.position + (Vector3.up * this.heightMulti)) - ((Vector3.up * (0.6f - cameraDistance)) * 2f));
        Transform transform = base.transform;

        transform.position -= (Vector3)(((base.transform.forward * this.distance) * this.distanceMulti) * num2);
        if (hero.CameraMultiplier < 0.65f)
        {
            Transform transform2 = base.transform;
            transform2.position += (Vector3)(base.transform.right * Mathf.Max((float)((0.6f - hero.CameraMultiplier) * 2f), (float)0.65f));
        }
        base.transform.rotation = Quaternion.Lerp(Camera.main.transform.rotation, hero.GetComponent <SmoothSyncMovement>().correctCameraRot, Time.deltaTime * 5f);
    }
    public void update2()
    {
        if (flashDuration > 0f)
        {
            flashDuration -= UnityEngine.Time.deltaTime;
            if (flashDuration <= 0f)
            {
                flashDuration = 0f;
            }
            GameObject.Find("flash").GetComponent <UISprite>().alpha = flashDuration * 0.5f;
        }
        if (Gametype == GameType.Stop)
        {
            Screen.showCursor = true;
            Screen.lockCursor = false;
            return;
        }
        if (Gametype != GameType.Singleplayer && gameOver)
        {
            if (inputManager.isInputDown[InputCode.Attack1])
            {
                if (spectatorMode)
                {
                    SetSpectorMode(val: false);
                }
                else
                {
                    SetSpectorMode(val: true);
                }
            }
            if (inputManager.isInputDown[InputCode.Flare1])
            {
                GameObject[] players = GameObject.FindGameObjectsWithTag("Player");
                currentPeekPlayerIndex = (currentPeekPlayerIndex + 1) % players.Length;
                if (players.Length > 0)
                {
                    SetMainObject(players[currentPeekPlayerIndex]);
                    SetSpectorMode(val: false);
                    lockAngle = false;
                }
            }
            if (inputManager.isInputDown[InputCode.Flare2])
            {
                currentPeekPlayerIndex--;
                GameObject[] players = GameObject.FindGameObjectsWithTag("Player");
                int          num2    = players.Length;
                if (currentPeekPlayerIndex >= num2)
                {
                    currentPeekPlayerIndex = 0;
                }
                if (currentPeekPlayerIndex < 0)
                {
                    currentPeekPlayerIndex = num2 - 1;
                }
                if (num2 > 0)
                {
                    SetMainObject(players[currentPeekPlayerIndex]);
                    SetSpectorMode(val: false);
                    lockAngle = false;
                }
            }
            if (spectatorMode)
            {
                return;
            }
        }
        if (inputManager.isInputDown[InputCode.Pause])
        {
            if (IsPausing)
            {
                if (main_object != null)
                {
                    Vector3 position = base.transform.position;
                    position  = ((head == null) ? main_object.transform.position : head.transform.position);
                    position += Vector3.up * heightMulti;
                    base.transform.position = Vector3.Lerp(base.transform.position, position - base.transform.forward * 5f, 0.2f);
                }
                return;
            }
            IsPausing = !IsPausing;
            if (IsPausing)
            {
                if (Gametype == GameType.Singleplayer)
                {
                    UnityEngine.Time.timeScale = 0f;
                }
                GameObject.Find("InputManagerController").GetComponent <FengCustomInputs>().menuOn = true;
                Screen.showCursor = true;
                Screen.lockCursor = false;
            }
        }
        if (needSetHUD)
        {
            needSetHUD = false;
            SetHUDPosition();
            Screen.lockCursor = !Screen.lockCursor;
            Screen.lockCursor = !Screen.lockCursor;
        }
        if (inputManager.isInputDown[InputCode.Fullscreen])
        {
            Screen.fullScreen = !Screen.fullScreen;
            if (Screen.fullScreen)
            {
                Screen.SetResolution(960, 600, fullscreen: false);
            }
            else
            {
                Screen.SetResolution(Screen.currentResolution.width, Screen.currentResolution.height, fullscreen: true);
            }
            needSetHUD = true;
            Minimap.OnScreenResolutionChanged();
        }
        if (inputManager.isInputDown[InputCode.Restart])
        {
            Reset();
        }
        if (main_object == null)
        {
            return;
        }
        if (inputManager.isInputDown[InputCode.ChangeCamera])
        {
            switch (CameraMode)
            {
            case CAMERA_TYPE.TPS:
                CameraMode        = CAMERA_TYPE.ORIGINAL;
                Screen.lockCursor = false;
                break;

            case CAMERA_TYPE.ORIGINAL:
                CameraMode        = CAMERA_TYPE.WOW;
                Screen.lockCursor = false;
                break;

            case CAMERA_TYPE.WOW:
                CameraMode        = CAMERA_TYPE.TPS;
                Screen.lockCursor = true;
                break;
            }
            if ((int)FengGameManagerMKII.Settings[245] == 1 || main_object.GetComponent <HERO>() == null)
            {
                Screen.showCursor = false;
            }
        }
        if (inputManager.isInputDown[InputCode.ToggleCursor])
        {
            Screen.showCursor = !Screen.showCursor;
        }
        if (inputManager.isInputDown[InputCode.Focus])
        {
            TriggerAutoLock = !TriggerAutoLock;
            if (TriggerAutoLock)
            {
                lockTarget = FindNearestTitan();
                if (closestDistance >= 150f)
                {
                    lockTarget      = null;
                    TriggerAutoLock = false;
                }
            }
        }
        if (gameOver)
        {
            if (FengGameManagerMKII.InputRC.isInputHumanDown(InputCodeRC.LiveCamera))
            {
                if ((int)FengGameManagerMKII.Settings[263] == 0)
                {
                    FengGameManagerMKII.Settings[263] = 1;
                }
                else
                {
                    FengGameManagerMKII.Settings[263] = 0;
                }
            }
            HERO component = main_object.GetComponent <HERO>();
            if (component != null && (int)FengGameManagerMKII.Settings[263] == 1 && component.GetComponent <SmoothSyncMovement>().enabled&& component.isPhotonCamera)
            {
                CameraMovementLive(component);
            }
            else if (lockAngle)
            {
                base.transform.rotation = Quaternion.Lerp(base.transform.rotation, main_object.transform.rotation, 0.2f);
                base.transform.position = Vector3.Lerp(base.transform.position, main_object.transform.position - main_object.transform.forward * 5f, 0.2f);
            }
            else
            {
                MoveCamera();
            }
        }
        else
        {
            MoveCamera();
        }
        if (TriggerAutoLock && lockTarget != null)
        {
            float     z         = base.transform.eulerAngles.z;
            Transform transform = lockTarget.transform.Find("Amarture/Core/Controller_Body/hip/spine/chest/neck");
            Vector3   a         = transform.position - ((head == null) ? main_object.transform.position : head.transform.position);
            a.Normalize();
            lockCameraPosition      = ((head == null) ? main_object.transform.position : head.transform.position);
            lockCameraPosition     -= a * distance * distanceMulti * distanceOffsetMulti;
            lockCameraPosition     += Vector3.up * 3f * heightMulti * distanceOffsetMulti;
            base.transform.position = Vector3.Lerp(base.transform.position, lockCameraPosition, UnityEngine.Time.deltaTime * 4f);
            if (head != null)
            {
                base.transform.LookAt(head.transform.position * 0.8f + transform.position * 0.2f);
            }
            else
            {
                base.transform.LookAt(main_object.transform.position * 0.8f + transform.position * 0.2f);
            }
            base.transform.localEulerAngles = new Vector3(base.transform.eulerAngles.x, base.transform.eulerAngles.y, z);
            Vector2 vector = base.camera.WorldToScreenPoint(transform.position - transform.forward * lockTarget.transform.localScale.x);
            locker.transform.localPosition = new Vector3(vector.x - (float)Screen.width * 0.5f, vector.y - (float)Screen.height * 0.5f, 0f);
            if (lockTarget.GetComponent <TITAN>() != null && lockTarget.GetComponent <TITAN>().hasDie)
            {
                lockTarget = null;
            }
        }
        else
        {
            locker.transform.localPosition = new Vector3(0f, (float)(-Screen.height) * 0.5f - 50f, 0f);
        }
        Vector3 end        = (head == null) ? main_object.transform.position : head.transform.position;
        Vector3 normalized = (((head == null) ? main_object.transform.position : head.transform.position) - base.transform.position).normalized;

        end -= distance * normalized * distanceMulti;
        LayerMask  mask  = 1 << LayerMask.NameToLayer("Ground");
        LayerMask  mask2 = 1 << LayerMask.NameToLayer("EnemyBox");
        LayerMask  mask3 = (int)mask | (int)mask2;
        RaycastHit hitInfo;

        if (head != null)
        {
            if (Physics.Linecast(head.transform.position, end, out hitInfo, mask))
            {
                base.transform.position = hitInfo.point;
            }
            else if (Physics.Linecast(head.transform.position - normalized * distanceMulti * 3f, end, out hitInfo, mask2))
            {
                base.transform.position = hitInfo.point;
            }
            Debug.DrawLine(head.transform.position - normalized * distanceMulti * 3f, end, Color.red);
        }
        else if (Physics.Linecast(main_object.transform.position + Vector3.up, end, out hitInfo, mask3))
        {
            base.transform.position = hitInfo.point;
        }
        UpdateShake();
    }
 public void update()
 {
     if (this.flashDuration > 0f)
     {
         this.flashDuration -= Time.deltaTime;
         if (this.flashDuration <= 0f)
         {
             this.flashDuration = 0f;
         }
         GameObject.Find("flash").GetComponent <UISprite>().alpha = this.flashDuration * 0.5f;
     }
     if (gametype == GAMETYPE.STOP)
     {
         Screen.showCursor = true;
         Screen.lockCursor = false;
     }
     else
     {
         if ((gametype != GAMETYPE.SINGLE) && this.gameOver)
         {
             if (this.inputManager.isInputDown[InputCode.attack1])
             {
                 if (this.spectatorMode)
                 {
                     this.setSpectorMode(false);
                 }
                 else
                 {
                     this.setSpectorMode(true);
                 }
             }
             if (this.inputManager.isInputDown[InputCode.flare1])
             {
                 this.currentPeekPlayerIndex++;
                 int length = GameObject.FindGameObjectsWithTag("Player").Length;
                 if (this.currentPeekPlayerIndex >= length)
                 {
                     this.currentPeekPlayerIndex = 0;
                 }
                 if (length > 0)
                 {
                     this.setMainObject(GameObject.FindGameObjectsWithTag("Player")[this.currentPeekPlayerIndex], true, false);
                     this.setSpectorMode(false);
                     this.lockAngle = false;
                 }
             }
             if (this.inputManager.isInputDown[InputCode.flare2])
             {
                 this.currentPeekPlayerIndex--;
                 int num2 = GameObject.FindGameObjectsWithTag("Player").Length;
                 if (this.currentPeekPlayerIndex >= num2)
                 {
                     this.currentPeekPlayerIndex = 0;
                 }
                 if (this.currentPeekPlayerIndex < 0)
                 {
                     this.currentPeekPlayerIndex = num2;
                 }
                 if (num2 > 0)
                 {
                     this.setMainObject(GameObject.FindGameObjectsWithTag("Player")[this.currentPeekPlayerIndex], true, false);
                     this.setSpectorMode(false);
                     this.lockAngle = false;
                 }
             }
             if (this.spectatorMode)
             {
                 return;
             }
         }
         if (this.inputManager.isInputDown[InputCode.pause])
         {
             if (isPausing)
             {
                 if (this.main_object != null)
                 {
                     Vector3 position = base.transform.position;
                     position  = (this.head == null) ? this.main_object.transform.position : this.head.transform.position;
                     position += (Vector3)(Vector3.up * this.heightMulti);
                     base.transform.position = Vector3.Lerp(base.transform.position, position - ((Vector3)(base.transform.forward * 5f)), 0.2f);
                 }
                 return;
             }
             isPausing = !isPausing;
             if (isPausing)
             {
                 if (gametype == GAMETYPE.SINGLE)
                 {
                     Time.timeScale = 0f;
                 }
                 GameObject.Find("InputManagerController").GetComponent <FengCustomInputs>().menuOn = true;
                 Screen.showCursor = true;
                 Screen.lockCursor = false;
             }
         }
         if (this.needSetHUD)
         {
             this.needSetHUD = false;
             this.setHUDposition();
             Screen.lockCursor = !Screen.lockCursor;
             Screen.lockCursor = !Screen.lockCursor;
         }
         if (this.inputManager.isInputDown[InputCode.fullscreen])
         {
             Screen.fullScreen = !Screen.fullScreen;
             if (Screen.fullScreen)
             {
                 Screen.SetResolution(960, 600, false);
             }
             else
             {
                 Screen.SetResolution(Screen.currentResolution.width, Screen.currentResolution.height, true);
             }
             this.needSetHUD = true;
             Minimap.OnScreenResolutionChanged();
         }
         if (this.inputManager.isInputDown[InputCode.restart])
         {
             this.reset();
         }
         if (this.main_object != null)
         {
             RaycastHit hit;
             if (this.inputManager.isInputDown[InputCode.camera])
             {
                 if (cameraMode == CAMERA_TYPE.ORIGINAL)
                 {
                     cameraMode        = CAMERA_TYPE.WOW;
                     Screen.lockCursor = false;
                 }
                 else if (cameraMode == CAMERA_TYPE.WOW)
                 {
                     cameraMode        = CAMERA_TYPE.TPS;
                     Screen.lockCursor = true;
                 }
                 else if (cameraMode == CAMERA_TYPE.TPS)
                 {
                     cameraMode        = CAMERA_TYPE.ORIGINAL;
                     Screen.lockCursor = false;
                 }
                 if ((((int)FengGameManagerMKII.settings[0xf5]) == 1) || (this.main_object.GetComponent <HERO>() == null))
                 {
                     Screen.showCursor = false;
                 }
             }
             if (this.inputManager.isInputDown[InputCode.hideCursor])
             {
                 Screen.showCursor = !Screen.showCursor;
             }
             if (this.inputManager.isInputDown[InputCode.focus])
             {
                 triggerAutoLock = !triggerAutoLock;
                 if (triggerAutoLock)
                 {
                     this.lockTarget = this.findNearestTitan();
                     if (this.closestDistance >= 150f)
                     {
                         this.lockTarget = null;
                         triggerAutoLock = false;
                     }
                 }
             }
             if (this.gameOver && (this.main_object != null))
             {
                 if (FengGameManagerMKII.inputRC.isInputHumanDown(InputCodeRC.liveCam))
                 {
                     if (((int)FengGameManagerMKII.settings[0x107]) == 0)
                     {
                         FengGameManagerMKII.settings[0x107] = 1;
                     }
                     else
                     {
                         FengGameManagerMKII.settings[0x107] = 0;
                     }
                 }
                 HERO component = this.main_object.GetComponent <HERO>();
                 if ((((component != null) && (((int)FengGameManagerMKII.settings[0x107]) == 1)) && component.GetComponent <SmoothSyncMovement>().enabled) && component.isPhotonCamera)
                 {
                     this.CameraMovementLive(component);
                 }
                 else if (this.lockAngle)
                 {
                     base.transform.rotation = Quaternion.Lerp(base.transform.rotation, this.main_object.transform.rotation, 0.2f);
                     base.transform.position = Vector3.Lerp(base.transform.position, this.main_object.transform.position - ((Vector3)(this.main_object.transform.forward * 5f)), 0.2f);
                 }
                 else
                 {
                     this.camareMovement();
                 }
             }
             else
             {
                 this.camareMovement();
             }
             if (triggerAutoLock && (this.lockTarget != null))
             {
                 float     z         = base.transform.eulerAngles.z;
                 Transform transform = this.lockTarget.transform.Find("Amarture/Core/Controller_Body/hip/spine/chest/neck");
                 Vector3   vector2   = transform.position - ((this.head == null) ? this.main_object.transform.position : this.head.transform.position);
                 vector2.Normalize();
                 this.lockCameraPosition  = (this.head == null) ? this.main_object.transform.position : this.head.transform.position;
                 this.lockCameraPosition -= (Vector3)(((vector2 * this.distance) * this.distanceMulti) * this.distanceOffsetMulti);
                 this.lockCameraPosition += (Vector3)(((Vector3.up * 3f) * this.heightMulti) * this.distanceOffsetMulti);
                 base.transform.position  = Vector3.Lerp(base.transform.position, this.lockCameraPosition, Time.deltaTime * 4f);
                 if (this.head != null)
                 {
                     base.transform.LookAt((Vector3)((this.head.transform.position * 0.8f) + (transform.position * 0.2f)));
                 }
                 else
                 {
                     base.transform.LookAt((Vector3)((this.main_object.transform.position * 0.8f) + (transform.position * 0.2f)));
                 }
                 base.transform.localEulerAngles = new Vector3(base.transform.eulerAngles.x, base.transform.eulerAngles.y, z);
                 Vector2 vector3 = base.camera.WorldToScreenPoint(transform.position - ((Vector3)(transform.forward * this.lockTarget.transform.localScale.x)));
                 this.locker.transform.localPosition = new Vector3(vector3.x - (Screen.width * 0.5f), vector3.y - (Screen.height * 0.5f), 0f);
                 if ((this.lockTarget.GetComponent <TITAN>() != null) && this.lockTarget.GetComponent <TITAN>().hasDie)
                 {
                     this.lockTarget = null;
                 }
             }
             else
             {
                 this.locker.transform.localPosition = new Vector3(0f, (-Screen.height * 0.5f) - 50f, 0f);
             }
             Vector3 end        = (this.head == null) ? this.main_object.transform.position : this.head.transform.position;
             Vector3 vector5    = ((this.head == null) ? this.main_object.transform.position : this.head.transform.position) - base.transform.position;
             Vector3 normalized = vector5.normalized;
             end -= (Vector3)((this.distance * normalized) * this.distanceMulti);
             LayerMask mask  = ((int)1) << LayerMask.NameToLayer("Ground");
             LayerMask mask2 = ((int)1) << LayerMask.NameToLayer("EnemyBox");
             LayerMask mask3 = mask | mask2;
             if (this.head != null)
             {
                 if (Physics.Linecast(this.head.transform.position, end, out hit, (int)mask))
                 {
                     base.transform.position = hit.point;
                 }
                 else if (Physics.Linecast(this.head.transform.position - ((Vector3)((normalized * this.distanceMulti) * 3f)), end, out hit, (int)mask2))
                 {
                     base.transform.position = hit.point;
                 }
                 Debug.DrawLine(this.head.transform.position - ((Vector3)((normalized * this.distanceMulti) * 3f)), end, Color.red);
             }
             else if (Physics.Linecast(this.main_object.transform.position + Vector3.up, end, out hit, (int)mask3))
             {
                 base.transform.position = hit.point;
             }
             this.shakeUpdate();
         }
     }
 }