public override void GoToEndState()
        {
            GameSettings instance = GameSettings.Instance;

            if (this.Speed == EventAction_MoveCamera.CameraMoveSpeeds.Immediate)
            {
                EventAction_MoveCamera actionMoveCamera = this;
                actionMoveCamera.TargetPosition = Vector3.op_Addition(actionMoveCamera.TargetPosition, Vector3.op_Multiply(Vector3.get_up(), instance.GameCamera_UnitHeightOffset));
                this.UpdateCameraPosition(1f);
            }
            else
            {
                TargetCamera targetCamera = TargetCamera.Get((Component)Camera.get_main());
                targetCamera.Reset();
                if (this.MoveMode == EventAction_MoveCamera.CameraMoveModes.InterpolateToPoint)
                {
                    this.StartTargetPosition      = targetCamera.TargetPosition;
                    this.StartRotation            = targetCamera.Yaw;
                    this.StartCameraDistanceScale = targetCamera.CameraDistance / instance.GameCamera_DefaultDistance;
                }
                else if (this.MoveMode == EventAction_MoveCamera.CameraMoveModes.SpecificActor)
                {
                    this.StartRotation            = targetCamera.Yaw;
                    this.StartTargetPosition      = targetCamera.TargetPosition;
                    this.StartCameraDistanceScale = targetCamera.CameraDistance / instance.GameCamera_DefaultDistance;
                    GameObject actor = EventAction.FindActor(this.ActorID);
                    if (Object.op_Equality((Object)actor, (Object)null))
                    {
                        return;
                    }
                    this.TargetPosition = actor.get_transform().get_position();
                    if ((double)this.TargetRotation < 0.0)
                    {
                        this.TargetRotation = this.StartRotation;
                    }
                }
                else
                {
                    if (this.SnapToGround)
                    {
                        this.StartTargetPosition = GameUtility.RaycastGround(this.StartTargetPosition);
                    }
                    EventAction_MoveCamera actionMoveCamera = this;
                    actionMoveCamera.StartTargetPosition = Vector3.op_Addition(actionMoveCamera.StartTargetPosition, Vector3.op_Multiply(Vector3.get_up(), instance.GameCamera_UnitHeightOffset));
                }
                if (this.SnapToGround)
                {
                    this.TargetPosition = GameUtility.RaycastGround(this.TargetPosition);
                }
                EventAction_MoveCamera actionMoveCamera1 = this;
                actionMoveCamera1.TargetPosition = Vector3.op_Addition(actionMoveCamera1.TargetPosition, Vector3.op_Multiply(Vector3.get_up(), instance.GameCamera_UnitHeightOffset));
                this.UpdateCameraPosition(2f);
            }
        }
        private void UpdateCameraPosition(float t)
        {
            TargetCamera targetCamera = TargetCamera.Get((Component)Camera.get_main());
            GameSettings instance     = GameSettings.Instance;

            targetCamera.Pitch = -45f;
            if ((double)t >= 1.0)
            {
                targetCamera.SetPositionYaw(this.TargetPosition, this.TargetRotation);
                targetCamera.CameraDistance = instance.GameCamera_DefaultDistance * this.CameraDistanceScale;
            }
            else
            {
                targetCamera.SetPositionYaw(Vector3.Lerp(this.StartTargetPosition, this.TargetPosition, t), Mathf.Lerp(this.StartRotation, this.TargetRotation, t));
                targetCamera.CameraDistance = instance.GameCamera_DefaultDistance * Mathf.Lerp(this.StartCameraDistanceScale, this.CameraDistanceScale, t);
            }
            Camera.get_main().set_fieldOfView(instance.GameCamera_TacticsSceneFOV);
        }
        public override void OnActivate()
        {
            GameSettings instance = GameSettings.Instance;

            if ((double)this.MoveTime <= 0.0 && this.Speed == EventAction_MoveCamera2.CameraMoveSpeeds.Immediate)
            {
                EventAction_MoveCamera2 actionMoveCamera2 = this;
                actionMoveCamera2.TargetPosition = Vector3.op_Addition(actionMoveCamera2.TargetPosition, Vector3.op_Multiply(Vector3.get_up(), instance.GameCamera_UnitHeightOffset));
                this.UpdateCameraPosition(1f);
                this.ActivateNext();
            }
            else
            {
                TargetCamera targetCamera = TargetCamera.Get((Component)Camera.get_main());
                targetCamera.Reset();
                if (this.MoveMode == EventAction_MoveCamera2.CameraMoveModes.InterpolateToPoint)
                {
                    this.StartTargetPosition      = targetCamera.TargetPosition;
                    this.StartRotation            = targetCamera.Yaw;
                    this.StartCameraDistanceScale = targetCamera.CameraDistance / GameSettings.Instance.GameCamera_DefaultDistance;
                }
                else if (this.MoveMode == EventAction_MoveCamera2.CameraMoveModes.SpecificActor)
                {
                    this.StartRotation            = targetCamera.Yaw;
                    this.StartTargetPosition      = targetCamera.TargetPosition;
                    this.StartCameraDistanceScale = targetCamera.CameraDistance / GameSettings.Instance.GameCamera_DefaultDistance;
                    GameObject actor = EventAction.FindActor(this.ActorID);
                    if (Object.op_Equality((Object)actor, (Object)null))
                    {
                        this.ActivateNext();
                        return;
                    }
                    this.TargetPosition = actor.get_transform().get_position();
                    if ((double)this.TargetRotation < 0.0)
                    {
                        this.TargetRotation = this.StartRotation;
                    }
                }
                else
                {
                    if (this.SnapToGround)
                    {
                        this.StartTargetPosition = GameUtility.RaycastGround(this.StartTargetPosition);
                    }
                    EventAction_MoveCamera2 actionMoveCamera2 = this;
                    actionMoveCamera2.StartTargetPosition = Vector3.op_Addition(actionMoveCamera2.StartTargetPosition, Vector3.op_Multiply(Vector3.get_up(), instance.GameCamera_UnitHeightOffset));
                }
                if (this.SnapToGround)
                {
                    this.TargetPosition = GameUtility.RaycastGround(this.TargetPosition);
                }
                EventAction_MoveCamera2 actionMoveCamera2_1 = this;
                actionMoveCamera2_1.TargetPosition = Vector3.op_Addition(actionMoveCamera2_1.TargetPosition, Vector3.op_Multiply(Vector3.get_up(), instance.GameCamera_UnitHeightOffset));
                float num1 = 1f;
                switch (this.Speed)
                {
                case EventAction_MoveCamera2.CameraMoveSpeeds.Normal:
                    num1 = 2f;
                    break;

                case EventAction_MoveCamera2.CameraMoveSpeeds.Fast:
                    num1 = 8f;
                    break;

                case EventAction_MoveCamera2.CameraMoveSpeeds.Slow:
                    num1 = 0.5f;
                    break;
                }
                this.mCurrentTime = 0.0f;
                if ((double)this.MoveTime <= 0.0)
                {
                    Vector3 vector3 = Vector3.op_Subtraction(this.TargetPosition, this.StartTargetPosition);
                    // ISSUE: explicit reference operation
                    float num2 = ((Vector3)@vector3).get_magnitude();
                    if ((double)num2 <= 0.0)
                    {
                        if ((double)this.StartCameraDistanceScale == (double)this.CameraDistanceScale)
                        {
                            this.UpdateCameraPosition(1f);
                            this.ActivateNext();
                            return;
                        }
                        num2 = 1f;
                    }
                    this.mEndTime = num2 / num1;
                }
                else
                {
                    this.mEndTime = this.MoveTime;
                }
                if (!this.Async)
                {
                    return;
                }
                this.ActivateNext(true);
            }
        }