public void SetCamera(GameConstants.CameraMode new_camera_mode, CameraModeChangeData new_data)
    {
        this.camera_mode = new_camera_mode;

        if (camera_mode == GameConstants.CameraMode.camera_default)
        {
            // reset the transition.

            fixed_start_position = this.transform.position;
            fixed_start_rotation = this.transform.rotation;
            fixed_transition     = 0.0f;
        }
        else if (camera_mode == GameConstants.CameraMode.camera_fixed)
        {
            // set the transition.

            fixed_start_position = this.transform.position;
            fixed_start_rotation = this.transform.rotation;
            fixed_transition     = 0.0f;

            this.fixed_transform = new_data.fixed_transform;
        }
        else if (camera_mode == GameConstants.CameraMode.camera_fixed_tracking)
        {
            // set the transition.

            fixed_start_position = this.transform.position;
            fixed_start_rotation = this.transform.rotation;
            fixed_transition     = 0.0f;

            this.fixed_transform = new_data.fixed_transform;
        }
    }
    public void UnsetCamera()
    {
        camera_mode = GameConstants.CameraMode.camera_default;

        // Reset the transition.

        fixed_start_position = this.transform.position;
        fixed_start_rotation = this.transform.rotation;
        fixed_transition     = 0.0f;
    }
    void Start()
    {
        master = GameObject.FindObjectOfType <GameMasterController>();

        camera_mode = GameConstants.CameraMode.camera_default;

        fixed_start_position = this.transform.position;
        fixed_start_rotation = this.transform.rotation;

        fixed_transform  = this.transform;
        fixed_transition = 1.0f;

        // set to default target (player).

        target = GameObject.FindGameObjectWithTag(GameConstants.TAG_PLAYER_CAMERA_TARGET).transform;

        Debug.Log("Camera Starting");
    }