Beispiel #1
0
        private void OnUpdateCameraMatrix(On.tk2dCamera.orig_UpdateCameraMatrix orig, tk2dCamera self)
        {
            orig(self);

            // Can't use ?. on a Unity type because they override == to null.
            if (GameCameras.instance == null || GameCameras.instance.tk2dCam == null)
            {
                return;
            }

            UCamera cam = GameCameras.instance.tk2dCam.GetAttr <tk2dCamera, UCamera>("_unityCamera");

            if (cam == null)
            {
                return;
            }

            Matrix4x4 p = cam.projectionMatrix;

            if (_activeEffects.HasValue(CameraEffects.Nausea))
            {
                p.m01 += Mathf.Sin(Time.time * 1.2f) * 1f;
                p.m10 += Mathf.Sin(Time.time * 1.5f) * 1f;
            }

            if (_activeEffects.HasValue(CameraEffects.Flip))
            {
                _reflectMatrix[1, 1] = -1;
                p *= _reflectMatrix;
            }

            if (_activeEffects.HasValue(CameraEffects.Mirror))
            {
                _reflectMatrix[0, 0] = -1;
                p *= _reflectMatrix;
            }

            if (_activeEffects.HasValue(CameraEffects.Zoom))
            {
                // ReSharper disable once SuggestVarOrType_DeconstructionDeclarations
                var(x, y, _) = HeroController.instance.gameObject.transform.position;

                GameManager.instance.cameraCtrl.SnapTo(x, y);
            }

            cam.projectionMatrix = p;
        }