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(); }