protected override void OnEditorExist() { base.OnEditorExist(); if (RenderPipelineInfo.Type != RPType.HDRP || RenderPipelineInfo.ForceUseRenderTextures) { return; } m_cameraUtility = GetComponent <IRenderPipelineCameraUtility>(); m_outlineManager = gameObject.AddComponent <OutlineManagerHDRP>(); m_outlineManager.SelectionMaterial = m_selectionMaterial; IRTE rte = IOC.Resolve <IRTE>(); IRTEAppearance appearance = IOC.Resolve <IRTEAppearance>(); if (appearance != null) { Canvas foregroundCanvas = appearance.UIForegroundScaler.GetComponent <Canvas>(); Camera foregroundCamera = foregroundCanvas.worldCamera; if (foregroundCamera != null) { if (m_cameraUtility != null) { m_cameraUtility.EnablePostProcessing(foregroundCamera, false); m_cameraUtility.SetBackgroundColor(foregroundCamera, new Color(0, 0, 0, 0)); } GameObject foregroundLayer = new GameObject("ForegroundLayer"); foregroundLayer.transform.SetParent(rte.Root, false); foregroundCanvas = foregroundLayer.AddComponent <Canvas>(); foregroundCanvas.renderMode = RenderMode.ScreenSpaceOverlay; foregroundCamera.gameObject.SetActive(false); m_foregroundOutput = new GameObject("Output"); m_foregroundOutput.transform.SetParent(foregroundCanvas.transform, false); m_foregroundOutput.AddComponent <RectTransform>().Stretch(); RenderTextureCamera renderTextureCamera = foregroundCamera.gameObject.AddComponent <RenderTextureCamera>(); renderTextureCamera.OutputRoot = foregroundCanvas.gameObject.GetComponent <RectTransform>(); renderTextureCamera.Output = m_foregroundOutput.AddComponent <RawImage>(); renderTextureCamera.OverlayMaterial = new Material(Shader.Find("Battlehub/HDRP/RTEditor/UIForeground")); foregroundCamera.gameObject.SetActive(true); foregroundCanvas.sortingOrder = -1; } Canvas backgroundCanvas = IOC.Resolve <IRTEAppearance>().UIBackgroundScaler.GetComponent <Canvas>(); if (backgroundCanvas != null) { Camera backgroundCamera = backgroundCanvas.worldCamera; if (m_cameraUtility != null) { m_cameraUtility.EnablePostProcessing(backgroundCamera, false); m_cameraUtility.SetBackgroundColor(backgroundCamera, new Color(0, 0, 0, 0)); } } } }
protected override void OnDestroy() { base.OnDestroy(); if (m_outlineManager != null) { Destroy(m_outlineManager); m_outlineManager = null; } }