public void OnEnable() { if (!MainCamera) { MainCamera = Camera.main; } DepthProjectorCamera.triedToFindDepthCamera = false; PainterClass.applicationIsQuitting = false; Inst = this; if (!Data) { dataHolder = Resources.Load("Painter_Data") as PainterDataAndConfig; } MeshManager.OnEnable(); if (!painterCamera) { painterCamera = GetComponent <Camera>(); } if (!PainterDataAndConfig.toolEnabled && !Application.isEditor) { PainterDataAndConfig.toolEnabled = true; } #if UNITY_EDITOR EditorSceneManager.sceneSaving -= BeforeSceneSaved; EditorSceneManager.sceneSaving += BeforeSceneSaved; IsLinearColorSpace = PlayerSettings.colorSpace == ColorSpace.Linear; EditorApplication.update -= CombinedUpdate; if (!QcUnity.ApplicationIsAboutToEnterPlayMode()) { SubscribeToEditorUpdates(); } if (!brushPrefab) { var go = Resources.Load(PainterDataAndConfig.PREFABS_RESOURCE_FOLDER + "/RenderCameraBrush") as GameObject; if (go) { brushPrefab = go.GetComponent <RenderBrush>(); if (!brushPrefab) { Debug.Log("Couldn't find brush prefab."); } } else { Debug.LogError("Couldn't load brush Prefab"); } } #endif if (!brushRenderer) { brushRenderer = GetComponentInChildren <RenderBrush>(); if (!brushRenderer) { brushRenderer = Instantiate(brushPrefab.gameObject, transform).GetComponent <RenderBrush>(); } } transform.position = Vector3.up * 3000; transform.localScale = Vector3.one; transform.rotation = Quaternion.identity; if (!painterCamera) { painterCamera = GetComponent <Camera>(); if (!painterCamera) { painterCamera = gameObject.AddComponent <Camera>(); } } painterCamera.orthographic = true; painterCamera.orthographicSize = OrthographicSize; painterCamera.clearFlags = CameraClearFlags.Nothing; painterCamera.enabled = false; //Application.isPlaying; painterCamera.allowHDR = false; painterCamera.allowMSAA = false; painterCamera.allowDynamicResolution = false; painterCamera.depth = 0; painterCamera.renderingPath = RenderingPath.Forward; painterCamera.nearClipPlane = 0.1f; painterCamera.farClipPlane = 1000f; painterCamera.rect = Rect.MinMaxRect(0, 0, 1, 1); #if UNITY_EDITOR EditorApplication.update -= CombinedUpdate; if (EditorApplication.isPlayingOrWillChangePlaymode == false) { EditorApplication.update += CombinedUpdate; } #endif autodisabledBufferTarget = null; CameraModuleBase.RefreshModules(); foreach (var p in CameraModuleBase.modules) { p?.Enable(); } if (Data) { Data.ManagedOnEnable(); } UpdateCullingMask(); PainterShaderVariables.BrushColorProperty.ConvertToLinear = IsLinearColorSpace; }
private void OnEnable() { if (!MainCamera) { MainCamera = Camera.main; } DepthProjectorCamera.triedToFindDepthCamera = false; PainterSystem.applicationIsQuitting = false; Inst = this; if (!Data) { dataHolder = Resources.Load("Painter_Data") as PainterDataAndConfig; } MeshManager.OnEnable(); if (!painterCamera) { painterCamera = GetComponent <Camera>(); } if (!PainterDataAndConfig.toolEnabled && !Application.isEditor) { PainterDataAndConfig.toolEnabled = true; } #if UNITY_EDITOR EditorSceneManager.sceneSaving -= BeforeSceneSaved; EditorSceneManager.sceneSaving += BeforeSceneSaved; EditorSceneManager.sceneOpening -= OnSceneOpening; EditorSceneManager.sceneOpening += OnSceneOpening; if (!defaultMaterial) { defaultMaterial = AssetDatabase.GetBuiltinExtraResource <Material>("Default-Material.mat"); } if (!defaultMaterial) { Debug.Log("Default Material not found."); } isLinearColorSpace = PlayerSettings.colorSpace == ColorSpace.Linear; EditorApplication.update -= CombinedUpdate; if (!UnityUtils.ApplicationIsAboutToEnterPlayMode()) { EditorApplication.update += CombinedUpdate; } if (!brushPrefab) { var go = Resources.Load("prefabs/RenderCameraBrush") as GameObject; if (go) { brushPrefab = go.GetComponent <RenderBrush>(); if (!brushPrefab) { Debug.Log("Couldn't find brush prefab."); } } else { Debug.LogError("Couldn't load brush Prefab"); } } #endif if (!brushRenderer) { brushRenderer = GetComponentInChildren <RenderBrush>(); if (!brushRenderer) { brushRenderer = Instantiate(brushPrefab.gameObject).GetComponent <RenderBrush>(); brushRenderer.transform.parent = transform; } } transform.position = Vector3.up * 3000; transform.localScale = Vector3.one; transform.rotation = Quaternion.identity; if (!painterCamera) { painterCamera = GetComponent <Camera>(); if (!painterCamera) { painterCamera = gameObject.AddComponent <Camera>(); } } painterCamera.orthographic = true; painterCamera.orthographicSize = OrthographicSize; painterCamera.clearFlags = CameraClearFlags.Nothing; painterCamera.enabled = Application.isPlaying; painterCamera.allowHDR = false; painterCamera.allowMSAA = false; painterCamera.allowDynamicResolution = false; painterCamera.depth = 0; painterCamera.renderingPath = RenderingPath.Forward; painterCamera.nearClipPlane = 0.1f; painterCamera.farClipPlane = 1000f; painterCamera.rect = Rect.MinMaxRect(0, 0, 1, 1); #if UNITY_EDITOR EditorApplication.update -= CombinedUpdate; if (EditorApplication.isPlayingOrWillChangePlaymode == false) { EditorApplication.update += CombinedUpdate; } #endif RecreateBuffersIfDestroyed(); autodisabledBufferTarget = null; PainterSystemManagerModuleBase.RefreshPlugins(); foreach (var p in PainterSystemManagerModuleBase.modules) { p?.Enable(); } if (Data) { Data.ManagedOnEnable(); } UpdateCullingMask(); }
public bool DependenciesInspect(bool showAll = false) { var changed = false; if (showAll) { pegi.nl(); if ("Buffers".enter(ref _inspectedDependecy, 1).nl()) { RenderTextureBuffersManager.Inspect().nl(ref changed); #if UNITY_EDITOR "Disable Second Buffer Update (Debug Mode)".toggleIcon(ref disableSecondBufferUpdateDebug).nl(); #endif return(changed); } pegi.nl(); "Download Manager".enter_Inspect(DownloadManager, ref _inspectedDependecy, 0).nl(ref changed); if (_inspectedDependecy == -1) { pegi.FullWindow.DocumentationClickOpen("You can enable URL field in the Optional UI elements to get texture directly from web"); } if (_inspectedDependecy == -1) { (IsLinearColorSpace ? "Linear" : "Gamma").nl(); "Main Directional Light".edit(ref mainDirectionalLight).nl(ref changed); #if UNITY_EDITOR if ("Refresh Brush Shaders".Click().nl()) { Data.CheckShaders(true); pegi.GameView.ShowNotification("Shaders Refreshed"); } #endif "Using layer:".editLayerMask(ref Data.playtimePainterLayer).nl(ref changed); } } bool showOthers = showAll && _inspectedDependecy == -1; #if UNITY_EDITOR if (!Data) { pegi.nl(); "No data Holder".edit(60, ref dataHolder).nl(ref changed); if (icon.Refresh.Click("Try to find it")) { PainterClass.applicationIsQuitting = false; triedToFindPainterData = false; } if ("Create".Click().nl()) { PainterClass.applicationIsQuitting = false; triedToFindPainterData = false; if (!Data) { dataHolder = ScriptableObject.CreateInstance <PainterDataAndConfig>(); AssetDatabase.CreateAsset(dataHolder, "Assets/Playtime-Painter/Resources/Painter_Data.asset"); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } } } #endif if (!painterCamera) { pegi.nl(); "no painter camera".writeWarning(); pegi.nl(); } else { if (painterCamera.clearFlags != CameraClearFlags.Nothing) { pegi.nl(); "Painter camera is not set to DontClear".writeWarning(); if ("Set to DontClear".Click().nl()) { painterCamera.clearFlags = CameraClearFlags.Nothing; painterCamera.SetToDirty(); } } } Camera depthCamera = depthProjectorCamera ? depthProjectorCamera._projectorCamera : null; bool depthAsMain = depthCamera && (depthCamera == MainCamera); if (showOthers || !MainCamera || depthAsMain) { pegi.nl(); var cam = MainCamera; var cams = new List <Camera>(FindObjectsOfType <Camera>()); if (painterCamera && cams.Contains(painterCamera)) { cams.Remove(painterCamera); } if (depthCamera && cams.Contains(depthCamera)) { cams.Remove(depthCamera); } if ("Main Camera".select(90, ref cam, cams).changes(ref changed)) { MainCamera = cam; } if (icon.Refresh.Click("Try to find camera tagged as Main Camera", ref changed)) { MainCamera = Camera.main; if (!MainCamera) { pegi.GameView.ShowNotification("No camera is tagged as main"); } } pegi.nl(); if (depthAsMain) { "Depth projector camera is set as Main Camera - this is likely a mistake".writeWarning(); pegi.nl(); } if (!cam) { "No Main Camera found. Playtime Painting will not be possible".writeWarning(); } pegi.nl(); } return(changed); }
public bool DependenciesInspect(bool showAll = false) { var changed = false; if (showAll) { "Download Manager".enter_Inspect(DownloadManager, ref _inspectedDependecy, 0).changes(ref changed); if (_inspectedDependecy == -1) { "You can enable URL field in the Optional UI elements to get texture directly from web" .fullWindowDocumentationClickOpen(); } pegi.nl(); if (_inspectedDependecy == -1) { "Main Directional Light".edit(ref mainDirectionalLight).nl(ref changed); #if UNITY_EDITOR if ("Refresh Brush Shaders".Click(14).nl()) { Data.CheckShaders(true); "Shaders Refreshed".showNotificationIn3D_Views(); } #endif "Using layer:".editLayerMask(ref Data.playtimePainterLayer).nl(ref changed); } if ("Buffers".enter(ref _inspectedDependecy, 1).nl()) { RenderTextureBuffersManager.Inspect().nl(ref changed); #if UNITY_EDITOR "Disable Second Buffer Update (Debug Mode)".toggleIcon(ref disableSecondBufferUpdateDebug).nl(); #endif return(changed); } } #if UNITY_EDITOR if (!Data) { pegi.nl(); "No data Holder".edit(60, ref dataHolder).nl(ref changed); if (icon.Refresh.Click("Try to find it")) { PainterSystem.applicationIsQuitting = false; triedToFindPainterData = false; } if ("Create".Click().nl()) { PainterSystem.applicationIsQuitting = false; triedToFindPainterData = false; if (!Data) { dataHolder = ScriptableObject.CreateInstance <PainterDataAndConfig>(); AssetDatabase.CreateAsset(dataHolder, "Assets/Tools/Playtime Painter/Resources/Painter_Data.asset"); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } } } #endif if (showAll || !RenderTextureBuffersManager.GotPaintingBuffers) { (RenderTextureBuffersManager.GotPaintingBuffers ? "No buffers" : "Using HDR buffers " + ((!FrontBuffer) ? "uninitialized" : "initialized")).nl(); } if (!painterCamera) { pegi.nl(); "no painter camera".writeWarning(); pegi.nl(); } if (showAll || !MainCamera) { pegi.nl(); var cam = MainCamera; if (!cam) { icon.Warning.write("No Main Camera found. Playtime Painting will not be possible"); } var cams = new List <Camera>(FindObjectsOfType <Camera>()); if (painterCamera && cams.Contains(painterCamera)) { cams.Remove(painterCamera); } if ("Main Camera".select(60, ref cam, cams).changes(ref changed)) { MainCamera = cam; } if (icon.Refresh.Click("Try to find camera tagged as Main Camera", ref changed)) { MainCamera = Camera.main; if (!MainCamera) { "No camera is tagged as main".showNotificationIn3D_Views(); } } pegi.nl(); } return(changed); }