Exemplo n.º 1
0
 public static bool Prefix(Timelapser __instance)
 {
     if (__instance == CustomTilapser.timelapser)
     {
         return(false); // don't execute the method if this is my timelapser
     }
     return(true);
 }
Exemplo n.º 2
0
 public static bool Prefix(Timelapser __instance, RenderTexture renderTex)
 {
     if (__instance == CustomTilapser.timelapser)
     {
         CustomTilapser.CustomWriteToPng(renderTex);
         return(false);
     }
     return(true);
 }
Exemplo n.º 3
0
        public static Timelapser timelapser; // copy of in game Timelapser
        public static void CreateScreen(PauseScreen pauseScreen)
        {
            if (timelapser == null)
            {
                timelapser = Object.Instantiate(GetTimeLapser.trueTimeLapser);
            }
            Traverse.Create(timelapser).Field <RenderTexture>("bufferRenderTexture").Value = new RenderTexture(2048, 2304, 32, RenderTextureFormat.ARGB32);
            //Traverse.Create(timelapser).Field("screenshotPending").SetValue(true);
            //Traverse.Create(timelapser).Method("Render").GetValue();

            pauseScreen.StartCoroutine(Render());

            IEnumerator coroutine = WaitAndDialog(pauseScreen);

            pauseScreen.StartCoroutine(coroutine);
        }
Exemplo n.º 4
0
 /// <summary>
 /// Writes the image to a PNG in the background.
 /// </summary>
 /// <param name="instance">The time lapser that is recording the image.</param>
 /// <param name="texture">The texture to write.</param>
 internal static void BackgroundWritePng(Timelapser instance, RenderTexture texture)
 {
     instance.WriteToPng(texture);
 }
Exemplo n.º 5
0
 public static void Postfix(Timelapser __instance)
 {
     trueTimeLapser = __instance;
 }
Exemplo n.º 6
0
    protected override void OnPrefabInit()
    {
        Util.Reset(base.transform);
        base.transform.SetLocalPosition(new Vector3(Grid.WidthInMeters / 2f, Grid.HeightInMeters / 2f, -100f));
        targetOrthographicSize = maxOrthographicSize;
        Instance = this;
        DisableUserCameraControl = false;
        baseCamera           = CopyCamera(Camera.main, "baseCamera");
        mrt                  = baseCamera.gameObject.AddComponent <MultipleRenderTarget>();
        mrt.onSetupComplete += OnMRTSetupComplete;
        baseCamera.gameObject.AddComponent <LightBufferCompositor>();
        baseCamera.transparencySortMode = TransparencySortMode.Orthographic;
        baseCamera.transform.parent     = base.transform;
        Util.Reset(baseCamera.transform);
        int mask  = LayerMask.GetMask("PlaceWithDepth", "Overlay");
        int mask2 = LayerMask.GetMask("Construction");

        cameras.Add(baseCamera);
        baseCamera.cullingMask &= ~mask;
        baseCamera.cullingMask |= mask2;
        baseCamera.tag          = "Untagged";
        baseCamera.gameObject.AddComponent <CameraRenderTexture>().TextureName = "_LitTex";
        infraredCamera                  = CopyCamera(baseCamera, "Infrared");
        infraredCamera.cullingMask      = 0;
        infraredCamera.clearFlags       = CameraClearFlags.Color;
        infraredCamera.depth            = baseCamera.depth - 1f;
        infraredCamera.transform.parent = base.transform;
        infraredCamera.gameObject.AddComponent <Infrared>();
        simOverlayCamera                  = CopyCamera(baseCamera, "SimOverlayCamera");
        simOverlayCamera.cullingMask      = LayerMask.GetMask("SimDebugView");
        simOverlayCamera.clearFlags       = CameraClearFlags.Color;
        simOverlayCamera.depth            = baseCamera.depth + 1f;
        simOverlayCamera.transform.parent = base.transform;
        simOverlayCamera.gameObject.AddComponent <CameraRenderTexture>().TextureName = "_SimDebugViewTex";
        overlayCamera                  = Camera.main;
        overlayCamera.name             = "Overlay";
        overlayCamera.cullingMask      = (mask | mask2);
        overlayCamera.clearFlags       = CameraClearFlags.Nothing;
        overlayCamera.transform.parent = base.transform;
        overlayCamera.depth            = baseCamera.depth + 3f;
        overlayCamera.transform.SetLocalPosition(Vector3.zero);
        overlayCamera.transform.localRotation = Quaternion.identity;
        overlayCamera.renderingPath           = RenderingPath.Forward;
        overlayCamera.allowHDR = false;
        overlayCamera.tag      = "Untagged";
        CameraReferenceTexture cameraReferenceTexture = overlayCamera.gameObject.AddComponent <CameraReferenceTexture>();

        cameraReferenceTexture.referenceCamera = baseCamera;
        ColorCorrectionLookup component = overlayCamera.GetComponent <ColorCorrectionLookup>();

        component.Convert(dayColourCube, string.Empty);
        component.Convert2(nightColourCube, string.Empty);
        cameras.Add(overlayCamera);
        lightBufferCamera                  = CopyCamera(overlayCamera, "Light Buffer");
        lightBufferCamera.clearFlags       = CameraClearFlags.Color;
        lightBufferCamera.cullingMask      = LayerMask.GetMask("Lights");
        lightBufferCamera.depth            = baseCamera.depth - 1f;
        lightBufferCamera.transform.parent = base.transform;
        lightBufferCamera.transform.SetLocalPosition(Vector3.zero);
        lightBufferCamera.rect = new Rect(0f, 0f, 1f, 1f);
        LightBuffer lightBuffer = lightBufferCamera.gameObject.AddComponent <LightBuffer>();

        lightBuffer.Material       = LightBufferMaterial;
        lightBuffer.CircleMaterial = LightCircleOverlay;
        lightBuffer.ConeMaterial   = LightConeOverlay;
        overlayNoDepthCamera       = CopyCamera(overlayCamera, "overlayNoDepth");
        int mask3 = LayerMask.GetMask("Overlay", "Place");

        baseCamera.cullingMask               &= ~mask3;
        overlayNoDepthCamera.clearFlags       = CameraClearFlags.Depth;
        overlayNoDepthCamera.cullingMask      = mask3;
        overlayNoDepthCamera.transform.parent = base.transform;
        overlayNoDepthCamera.transform.SetLocalPosition(Vector3.zero);
        overlayNoDepthCamera.depth = baseCamera.depth + 4f;
        overlayNoDepthCamera.tag   = "MainCamera";
        overlayNoDepthCamera.gameObject.AddComponent <NavPathDrawer>();
        uiCamera                  = CopyCamera(overlayCamera, "uiCamera");
        uiCamera.clearFlags       = CameraClearFlags.Depth;
        uiCamera.cullingMask      = LayerMask.GetMask("UI");
        uiCamera.transform.parent = base.transform;
        uiCamera.transform.SetLocalPosition(Vector3.zero);
        uiCamera.depth              = baseCamera.depth + 5f;
        timelapseFreezeCamera       = CopyCamera(uiCamera, "timelapseFreezeCamera");
        timelapseFreezeCamera.depth = uiCamera.depth + 3f;
        timelapseFreezeCamera.gameObject.AddComponent <FillRenderTargetEffect>();
        timelapseFreezeCamera.enabled = false;
        Camera     camera     = CloneCamera(overlayCamera, "timelapseCamera");
        Timelapser timelapser = camera.gameObject.AddComponent <Timelapser>();

        camera.transparencySortMode = TransparencySortMode.Orthographic;
        Game.Instance.timelapser    = timelapser;
        GameScreenManager.Instance.SetCamera(GameScreenManager.UIRenderTarget.ScreenSpaceCamera, uiCamera);
        GameScreenManager.Instance.SetCamera(GameScreenManager.UIRenderTarget.WorldSpace, uiCamera);
        GameScreenManager.Instance.SetCamera(GameScreenManager.UIRenderTarget.ScreenshotModeCamera, uiCamera);
        infoText = GameScreenManager.Instance.screenshotModeCanvas.GetComponentInChildren <LocText>();
    }