private void OnDisable() { if (!HasPreviewGUI()) { return; } m_Preview.Cleanup(); m_Preview = null; m_PreviewTarget = null; m_PreviewMeshRenderer = null; m_TargetBlock = null; EditorApplication.update -= Update; }
private void OnEnable() { if (!HasPreviewGUI()) { return; } m_CameraDirection = Vector3.Normalize(new Vector3(0f, 3f, 15f)); m_Preview = new PreviewRenderUtility(); m_Preview.camera.fieldOfView = 30.0f; m_Preview.camera.nearClipPlane = 0.3f; m_Preview.camera.farClipPlane = 1000; m_Preview.camera.transform.position = m_CameraDirection * m_CameraDistance; m_PreviewTarget = GameObject.Instantiate(((Component)target).gameObject).GetComponent <GPUAnimationController>(); m_Preview.AddSingleGO(m_PreviewTarget.gameObject); m_PreviewMeshRenderer = m_PreviewTarget.GetComponent <MeshRenderer>(); m_TargetBlock = new MaterialPropertyBlock(); m_PreviewTarget.transform.position = Vector3.zero; m_PreviewTarget.Init(); m_PreviewTarget.SetAnimation(0); Material transparentMaterial = new Material(Shader.Find("Unlit/Transparent")); transparentMaterial.SetColor("_Color", new Color(1, 1, 1, .3f)); m_BoundsViewer = GameObject.CreatePrimitive(PrimitiveType.Cube); m_BoundsViewer.GetComponent <MeshRenderer>().material = transparentMaterial; m_Preview.AddSingleGO(m_BoundsViewer.gameObject); m_BoundsViewer.transform.SetParent(m_PreviewTarget.transform); m_BoundsViewer.transform.localRotation = Quaternion.identity; m_BoundsViewer.transform.localScale = m_PreviewTarget.m_MeshFilter.sharedMesh.bounds.size; m_BoundsViewer.transform.localPosition = m_PreviewTarget.m_MeshFilter.sharedMesh.bounds.center; m_BoundsViewer.SetActive(false); EditorApplication.update += Update; }