public static bool Prefix(Timelapser __instance) { if (__instance == CustomTilapser.timelapser) { return(false); // don't execute the method if this is my timelapser } return(true); }
public static bool Prefix(Timelapser __instance, RenderTexture renderTex) { if (__instance == CustomTilapser.timelapser) { CustomTilapser.CustomWriteToPng(renderTex); return(false); } return(true); }
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); }
/// <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); }
public static void Postfix(Timelapser __instance) { trueTimeLapser = __instance; }
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>(); }