public void SaveMesh() { if (!EditorApplication.isPlaying) { MeshSaverEditor.SaveMesh(_renderer.sharedMesh, "Optimized__" + gameObject.name, false, true); } }
public override void OnInspectorGUI() { using (var check = new EditorGUI.ChangeCheckScope()) { DrawDefaultInspector(); if (check.changed) { if (!isSubscribed) { TryFindPathCreator(); Subscribe(); } if (pathTool.autoUpdate) { TriggerUpdate(); } } } if (pathTool is RoadMeshCreator rc) { if (!rc.autoUpdate) { EditorGUILayout.PropertyField(serializedObject.FindProperty("meshHolder")); } if (GUILayout.Button("Save Mesh")) { var mesh = rc.Mesh; MeshSaverEditor.SaveMesh(mesh, mesh.name, true, true); } } if (GUILayout.Button("Manual Update")) { if (TryFindPathCreator()) { TriggerUpdate(); SceneView.RepaintAll(); } } }
private void OnCombine() { GameObject selected = Selection.activeGameObject; if (selected == null) { return; } MeshFilter[] meshFilters = selected.GetComponentsInChildren <MeshFilter>(); CombineInstance[] combine = new CombineInstance[meshFilters.Length]; for (int i = 0; i < meshFilters.Length; i++) { combine[i].mesh = meshFilters[i].sharedMesh; combine[i].transform = meshFilters[i].transform.localToWorldMatrix; meshFilters[i].gameObject.SetActive(false); } MeshFilter resFilter = selected.GetComponent <MeshFilter>(); if (resFilter == null) { resFilter = selected.AddComponent <MeshFilter>(); } Mesh mesh = new Mesh(); mesh.name = selected.name; mesh.CombineMeshes(combine, true); resFilter.sharedMesh = mesh; MeshRenderer resRenderer = selected.GetComponent <MeshRenderer>(); if (resRenderer == null) { resRenderer = selected.AddComponent <MeshRenderer>(); } if (material != null) { resRenderer.sharedMaterial = material; } selected.SetActive(true); MeshSaverEditor.SaveMesh(mesh, mesh.name, true, true); }
public override void OnInspectorGUI() { base.OnInspectorGUI(); MeshGenerator meshGeneratorScript = (MeshGenerator)target; GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); if (GUILayout.Button("Build Mesh")) { meshGeneratorScript.GenerateMesh(); } if (GUILayout.Button("Save Mesh")) { MeshSaverEditor.SaveMeshInPlace(meshGeneratorScript.GetComponent <MeshFilter>()); } GUILayout.EndVertical(); GUILayout.BeginVertical(); if (GUILayout.Button("Build GameObject Mesh")) { meshGeneratorScript.GenerateNewGOMesh(); } if (GUILayout.Button("Save GO Mesh")) { MeshSaverEditor.SaveMeshInPlace(meshGeneratorScript.generatedGO.GetComponent <MeshFilter>()); } GUILayout.EndVertical(); GUILayout.EndHorizontal(); EditorGUILayout.Space(); if (GUILayout.Button("Clear Generator")) { meshGeneratorScript.ClearGenerator(); } }