예제 #1
0
 void ClearObjects()
 {
     if (renderGOs != null)
     {
         foreach (var go in renderGOs)
         {
             DestroyImmediate(go.GetComponent <SkinnedMeshRenderer>().sharedMesh);
             DestroyImmediate(go.GetComponent <MeshCollider>().sharedMesh);
             DestroyImmediate(go);
         }
     }
     if (inactiveGOs != null)
     {
         foreach (var gos in inactiveGOs)
         {
             foreach (var go in gos)
             {
                 DestroyImmediate(go.GetComponent <SkinnedMeshRenderer>().sharedMesh);
                 DestroyImmediate(go.GetComponent <MeshCollider>().sharedMesh);
                 DestroyImmediate(go);
             }
         }
     }
     renderGOs.Clear();
     inactiveGOs.Clear();
     previewRender?.Cleanup();
     previewRender = null;
 }
예제 #2
0
        private void OnDestroy()
        {
            SaveSettings();
            preview.Cleanup();
            preview = null;

            if (didWeBake)
            {
                GameObject.DestroyImmediate(GameObject.Find("TEMPVOX"));
            }
        }
예제 #3
0
 public void Cleanup()
 {
     if (preview != null)
     {
         preview.Cleanup();
         //UnityEngine.Object.DestroyImmediate(this.mPreviewMaterial.shader, false);
         // UnityEngine.Object.DestroyImmediate(this.mPreviewMaterial, false);
         dic.Clear();
     }
     preview = null;
 }
예제 #4
0
        protected override void OnDestroy()
        {
            // Avoid leaking in the editor by cleaning up the preview component
            if (m_PreviewUtility != null)
            {
                m_PreviewUtility.Cleanup();
                m_PreviewUtility = null;
            }

            base.OnDestroy();
        }
예제 #5
0
 void OnDisable()
 {
     if (!UnityObject.ReferenceEquals(m_VisualEffectGO, null))
     {
         UnityObject.DestroyImmediate(m_VisualEffectGO);
     }
     if (m_PreviewUtility != null)
     {
         m_PreviewUtility.Cleanup();
     }
 }
예제 #6
0
        protected override void OnDisable()
        {
            base.OnDisable();

            EditorPrefs.SetString("P3dPainter.Settings", EditorJsonUtility.ToJson(settings));

            previewUtil.Cleanup();
            thumbnailUtil.Cleanup();

            SceneView.onSceneGUIDelegate -= HandleSceneGUI;
        }
예제 #7
0
 private void DestroyPreview()
 {
     if (previewRenderUtility != null)
     {
         previewRenderUtility.Cleanup();
         previewRenderUtility    = null;
         previewGrid             = null;
         previewTilemaps         = null;
         previewTilemapRenderers = null;
     }
 }
예제 #8
0
 public void Dispose()
 {
     if (m_Disposed)
     {
         return;
     }
     renderUtility.Cleanup();
     UnityObject.DestroyImmediate(gameObject);
     m_GameObject = null;
     m_Disposed   = true;
 }
예제 #9
0
    public void RenderIcons()
    {
        var previewRenderer = new PreviewRenderUtility(true);

        foreach (var target in _targets)
        {
            RenderIcon(previewRenderer, target);
        }

        previewRenderer.Cleanup();
    }
예제 #10
0
 virtual public void Dispose()
 {
     Reset();
     if (m_FloorMaterial != null)
     {
         Object.DestroyImmediate(m_FloorMaterial);
     }
     if (m_Preview != null)
     {
         m_Preview.Cleanup();
     }
 }
예제 #11
0
 /// <summary>
 /// 最后的销毁方法
 /// 不能被Unity自动调用,目前只能在点下一个对象时,调用销毁
 /// </summary>
 public void OnDestroy()
 {
     ClearLockedParticle();
     SimulateDisable();
     DestroyPreviewInstances();
     if (m_PreviewUtility != null)
     {
         //Debug.Log("OnDestroy");
         m_PreviewUtility.Cleanup();
         m_PreviewUtility = null;
     }
 }
 private void OnDisable()
 {
     if (!HasPreviewGUI())
     {
         return;
     }
     m_Preview.Cleanup();
     m_Preview                 = null;
     m_PreviewTarget           = null;
     m_PreviewMeshRenderer     = null;
     m_TargetBlock             = null;
     EditorApplication.update -= Update;
 }
예제 #13
0
 void clearPreviewInstance()
 {
     if (previewObject != null)
     {
         DestroyImmediate(previewObject.gameObject, true);
         previewObject = null;
     }
     if (previewRenderUtility != null)
     {
         previewRenderUtility.Cleanup();
         previewRenderUtility = null;
     }
 }
예제 #14
0
    void OnDestroy()
    {
        if (m_context != null)
        {
            m_context.Invalidate();
            m_context = null;
        }

        if (m_renderer != null)
        {
            m_renderer.Cleanup();
        }
    }
 private void OnDestroy()
 {
     if (meshPreviewUtility != null)
     {
         meshPreviewUtility.Cleanup();
         meshPreviewUtility = null;
     }
     if (uvPreviewUtility != null)
     {
         uvPreviewUtility.Cleanup();
         uvPreviewUtility = null;
     }
     isInitialised = false;
 }
예제 #16
0
 void clearPreviewInstance()
 {
     if (previewObject != null)
     {
         DestroyImmediate(previewObject.gameObject, true);
         previewObject = null;
         // callbacks.ForEach(r => EditorApplication.playmodeStateChanged -= r);
         // callbacks.Clear();
     }
     if (previewRenderUtility != null)
     {
         previewRenderUtility.Cleanup();
         previewRenderUtility = null;
     }
 }
예제 #17
0
        Texture2D GetPreviewTexture(GameObject go, int width, int height)
        {
            if (renderUtility == null)
            {
                InitializePreviewRenderUtility();
            }

            var rect = new Rect(0, 0, width, height);

            renderUtility.BeginStaticPreview(rect);

            MeshFilter[]   meshFilters   = go.GetComponentsInChildren <MeshFilter>();
            MeshRenderer[] meshRenderers = go.GetComponentsInChildren <MeshRenderer>();

            for (int i = 0; i < meshRenderers.Length; i++)
            {
                bound.Encapsulate(meshRenderers[i].bounds);
                renderUtility.DrawMesh(meshFilters[i].sharedMesh, Matrix4x4.identity, meshRenderers[i].sharedMaterials[0], 0);
            }

            float magnitude  = bound.extents.magnitude;
            float num        = magnitude * rangeFactor;
            var   quaternion = Quaternion.Euler(-rotation.y, -rotation.x, 0f);
            var   position   = bound.center - quaternion * (Vector3.forward * num);

            renderUtility.camera.transform.position = position;
            renderUtility.camera.transform.rotation = quaternion;
            renderUtility.camera.nearClipPlane      = num - magnitude * 1.1f;
            renderUtility.camera.farClipPlane       = num + magnitude * 1.1f;

            //renderUtility.lights[0].transform.rotation = Quaternion.Euler(40f, 40f, 0f);
            renderUtility.lights[0].transform.rotation = renderUtility.camera.transform.rotation;

            //renderUtility.lights[1].intensity = 2.0f;

            renderUtility.Render(true);

            Texture2D result = renderUtility.EndStaticPreview();

            renderUtility.Cleanup();

            return(result);
        }
예제 #18
0
        public void OnDestroy()
        {
            if (m_PreviewUtility != null)
            {
                m_PreviewUtility.Cleanup();
                m_PreviewUtility = null;
            }

            Object.DestroyImmediate(m_PreviewInstance);
            Object.DestroyImmediate(m_ReferenceInstance);
            Object.DestroyImmediate(m_DirectionInstance);
            Object.DestroyImmediate(m_PivotInstance);
            Object.DestroyImmediate(m_RootInstance);

            if (timeControl != null)
            {
                timeControl.OnDisable();
            }
        }
        protected virtual void OnDisable()
        {
            if (prototypeContents != null)
            {
                for (int i = 0; i < prototypeContents.Length; i++)
                {
                    if (prototypeContents[i] != null && prototypeContents[i].image != null)
                    {
                        DestroyImmediate(prototypeContents[i].image);
                    }
                }
            }
            prototypeContents = null;

            if (_previewRenderUtility != null)
            {
                _previewRenderUtility.Cleanup();
            }
        }
예제 #20
0
    void Cleanup()
    {
        PreviewRenderUtility render = new PreviewRenderUtility();

        render.Cleanup();

        var hidden = FindObjectsOfType <GameObject>();

        if (hidden.Length == 0)
        {
            return;
        }
        foreach (GameObject go in hidden)
        {
            if ((go.hideFlags & HideFlags.HideInHierarchy) != 0)
            {
                DestroyImmediate(go);
            }
        }
    }
예제 #21
0
 public override void Disable()
 {
     _vertexmode = VertexMode.None;
     _previewutility.Cleanup();
     _previewutility = null;
     _previewblock.Clear();
     _meshvertex.Clear();
     _meshnormals.Clear();
     _meshuvs.Clear();
     _meshtriangles.Clear();
     _mesh.Clear();
     _mesh.UploadMeshData(false);
     _primarylist.Clear();
     _secondarylist.Clear();
     _primarytset.Clear();
     _secondarytset.Clear();
     _display.Disable();
     _update_mesh  = false;
     _render_mesh  = false;
     _repaint_menu = false;
 }
    protected void DestroyPreview()
    {
        if (mPreviewRenderUtility != null)
        {
            try {
                mPreviewRenderUtility.Cleanup();
            } catch (Exception e) {
                Debug.LogException(e);
            }
            mPreviewRenderUtility = null;
        }

        if (mPreviewGameObject != null)
        {
            try {
                DestroyImmediate(mPreviewGameObject);
            } catch (Exception e) {
                Debug.LogException(e);
            }
            mPreviewGameObject = null;
        }
    }
예제 #23
0
        /// <summary>
        /// RenderStaticPreview is poorly documented. Nonetheless this produces a nice
        /// square thumbnail preview of the decal.
        /// </summary>
        public override Texture2D RenderStaticPreview(string assetPath, UnityEngine.Object[] subAssets,
                                                      int width, int height)
        {
            DecalAsset decalAsset = (DecalAsset)target;

            if (decalAsset == null || !decalAsset.HasDiffuseAlphaTexture)
            {
                return(null);
            }

            PreviewRenderUtility utility = new PreviewRenderUtility();

            utility.BeginStaticPreview(new Rect(0, 0, width, height));

            // Normally would set up a little scene within PreviewRenderUtility, then render that manually
            // useful links:
            // https://github.com/raphael-ernaelsten/Texture3DPreview-for-Unity/blob/master/Assets/Texture3DPreview/Editor/Extensions/Texture3DExtensions.cs
            // http://answers.unity.com/answers/1650714/view.html
            // for example:
            // utility.camera.transform.position = Vector2.zero;
            // utility.camera.transform.position = utility.camera.transform.forward * -distance;
            // utility.camera.backgroundColor = Color.red;
            // utility.DrawMesh(someMesh, Matrix4x4.identity, someMaterial, 0);
            // utility.camera.Render();

            // But in this case we just blit to camera's target
            thumbnailMaterial.SetVector(boundsID, decalAsset.BoundsAsVector4);
            thumbnailMaterial.SetColor(colourForAlphaID, previewBackColour);
            Graphics.Blit(decalAsset.diffuseAlpha, utility.camera.targetTexture, thumbnailMaterial, 0);

            // EndStaticPreview() gives us the texture generated by utility.camera
            // (for some reason returning a texture made this way works, returning a texture I make doesn't)
            var result = utility.EndStaticPreview();

            utility.Cleanup();

            return(result);
        }
        private void InitPreview()
        {
            if (m_PreviewUtility == null)
            {
                m_PreviewUtility = new PreviewRenderUtility(false, true);
                m_PreviewUtility.cameraFieldOfView    = 60.0f;
                m_PreviewUtility.camera.nearClipPlane = 0.1f;
                m_PreviewUtility.camera.farClipPlane  = 220.0f;
                //m_PreviewUtility.camera.transform.position = new Vector3(80, 30, 80);
                m_PreviewUtility.camera.transform.position = new Vector3(50, 40, 50);
                m_PreviewUtility.camera.transform.rotation = Quaternion.identity;

                m_PreviewUtility.camera.transform.LookAt(new Vector3(0, 0, 0));

                m_PreviewUtility.lights[0].intensity          = 1.4f;
                m_PreviewUtility.lights[0].transform.rotation = Quaternion.Euler(40f, 30f, 0f);
                m_PreviewUtility.lights[1].intensity          = 1.4f;
            }
            else
            {
                m_PreviewUtility.Cleanup();
                return;
            }
        }
예제 #25
0
 public void Cleanup()
 {
     previewRenderUtility.Cleanup();
 }
예제 #26
0
 private void OnDisable()
 {
     m_previewRenderUtility.Cleanup();
     m_previewRenderUtility = null;
 }
예제 #27
0
 protected virtual void OnDisable()
 {
     m_previewRender.Cleanup();
     m_previewRender = null;
 }
예제 #28
0
 private void OnDisable()
 {
     preview.Cleanup();
     preview = null;
 }
 void OnDestroy()
 {
     _previewRenderUtility.Cleanup();
 }
예제 #30
0
 public void Cleanup()
 {
     renderUtil.Cleanup();
 }