Ejemplo n.º 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;
        }
Ejemplo n.º 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();
        }