private static void UpdatePreView(ref ImageExtensionBehaviour marker) { if (Application.isPlaying) { return; } var mat = GetMarkerMaterial(Application.streamingAssetsPath + "/" + marker.GetPath()); if (mat) { var render = marker.GetComponent <MeshRenderer>(); if (render == null) { render = marker.gameObject.AddComponent <MeshRenderer>(); } render.material = mat; float ratio = (float)mat.mainTexture.height / (float)mat.mainTexture.width; var meshFilter = marker.GetComponent <MeshFilter>(); if (meshFilter == null) { meshFilter = marker.gameObject.AddComponent <MeshFilter>(); } meshFilter.sharedMesh = makeQuadMesh(ratio); } EditorUtility.UnloadUnusedAssetsImmediate(); }
static ImageExtensionEditor() { EditorApplication.playModeStateChanged += (x) => { if (EditorApplication.isPlayingOrWillChangePlaymode == false && EditorApplication.isPlaying == false) { ImageExtensionBehaviour[] markers = GameObject.FindObjectsOfType <ImageExtensionBehaviour>(); foreach (ImageExtensionBehaviour marker in markers) { var render = marker.GetComponent <MeshRenderer>(); if (render != null) { render.enabled = true; } } } }; EditorApplication.hierarchyChanged += () => { ImageExtensionBehaviour[] markers = GameObject.FindObjectsOfType <ImageExtensionBehaviour>(); foreach (ImageExtensionBehaviour marker in markers) { ImageExtensionBehaviour tmp = marker; UpdatePreView(ref tmp); } }; }
public override void OnInspectorGUI() { base.DrawDefaultInspector(); //Debug.Log("OnInspectorGUI"); ImageExtensionBehaviour marker = target as ImageExtensionBehaviour; serializedObject.Update(); EditorGUILayout.PropertyField(widthProp); serializedObject.ApplyModifiedProperties(); if (GUI.changed) { EditorUtility.SetDirty(marker); UpdatePreView(ref marker); } }