コード例 #1
0
ファイル: OptimizeMesh.cs プロジェクト: devhims/AR-Garden
 public void SaveMesh()
 {
     if (!EditorApplication.isPlaying)
     {
         MeshSaverEditor.SaveMesh(_renderer.sharedMesh, "Optimized__" + gameObject.name, false, true);
     }
 }
コード例 #2
0
        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();
                }
            }
        }
コード例 #3
0
    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);
    }
コード例 #4
0
    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();
        }
    }