示例#1
0
        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;
        }
示例#2
0
        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();
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }