Пример #1
0
    public void OnButtonClick()
    {
        SerializedObject s_tree = serializedObject;
        TreeData         tree   = (TreeData)target;

        step_ms.execute(ref tree);
        pl.execute(ref tree);
        step_mg.execute(ref tree);

        s_tree.ApplyModifiedProperties();

        string outputFilename = "Assets/Meshes/" + tree.mesh_file_name + ".asset";

        AssetDatabase.CreateAsset(tree.mesh, outputFilename);

        TreeModelBehavior[] all_tmb = (TreeModelBehavior[])GameObject.FindObjectsOfType(typeof(TreeModelBehavior));
        foreach (TreeModelBehavior tmb in all_tmb)
        {
            GameObject gameObj = tmb.gameObject;
            if (tmb.treeModel == tree)
            {
                MeshFilter   meshFilter   = gameObj.GetComponent <MeshFilter>();
                MeshRenderer meshRenderer = gameObj.GetComponent <MeshRenderer>();

                // reset -------
                if (!meshFilter)
                {
                    meshFilter = gameObj.AddComponent <MeshFilter>();
                }
                else if (meshFilter && meshFilter.sharedMesh)
                {
                    DestroyImmediate(meshFilter.sharedMesh, true);
                }

                if (!meshRenderer)
                {
                    meshRenderer = gameObj.AddComponent <MeshRenderer>();
                }
                // TODO : remove leaves into the scene (child gameobjects)
                // -------------

                meshFilter.sharedMesh = AssetDatabase.LoadAssetAtPath <Mesh>(outputFilename);
            }
        }
    }