Beispiel #1
0
        private void UpdateInstance(Transform transform, bool root)
        {
            if (EditorUtil.IsPrefabOnProject(transform.gameObject))
            {
                return;
            }

            UModeler modeler = transform.gameObject.GetComponent <UModeler>();

            if (!root || modeler == null)
            {
                for (int i = 0; i < transform.childCount; ++i)
                {
                    Transform childTM      = transform.GetChild(i);
                    UModeler  childModeler = childTM.GetComponent <UModeler>();
                    if (childModeler != null)
                    {
                        if (childModeler.CheckMesh())
                        {
                            EditorUtil.RefreshModeler(childTM);
                            childModeler.UpdateMeshContainer();
                        }
                    }
                    UpdateInstance(childTM, /*root*/ false);
                }
            }
        }
Beispiel #2
0
 private static void OnMeshBuilding(UModeler modeler, int shelf)
 {
     if (shelf == 0)
     {
         UModelerEditor.DisconnectPrefabMeshLink(modeler);
     }
 }
Beispiel #3
0
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            MeshFilter mf = (MeshFilter)target;

            UModeler modeler = mf.GetComponent <UModeler>();

            if (modeler != null && !EditorUtil.IsPrefabOnProject(modeler.gameObject))
            {
                foldedOut = EditorUtil.Foldout(foldedOut, "UModeler .asset");
                Mesh mesh = modeler.renderableMeshFilter != null ? modeler.renderableMeshFilter.sharedMesh : null;
                if (foldedOut && mesh != null)
                {
                    if (modeler.IsAssetPathValid())
                    {
                        GUILayout.Label("File name : " + modeler.AssetFileName);
                    }
                    else
                    {
                        GUILayout.Label(".Asset file of this mesh doesn't exist yet.");
                    }

                    GUI.changed = false;

                    GUILayout.BeginHorizontal();
                    if (GUILayout.Button("Save"))
                    {
                        string path = modeler.IsAssetPathValid() ? modeler.assetPath : SystemUtil.MeshAssetFolder + "/" + mesh.name + ".asset";
                        if (SystemUtil.SaveMeshAsset(modeler, path))
                        {
                            EditorUtility.SetDirty(mf);
                        }
                    }
                    else if (GUILayout.Button("Save As"))
                    {
                        if (SystemUtil.SaveMeshAsset(modeler))
                        {
                            EditorUtility.SetDirty(mf);
                        }
                    }
                    else
                    {
                        GUILayout.EndHorizontal();
                    }

                    if (GUI.changed)
                    {
                        if (modeler.IsAssetPathValid())
                        {
                            modeler.renderableMeshFilter.sharedMesh.name = modeler.MeshName;
                            EditorMode.commentaryViewer.AddTitle("The mesh has been saved as " + modeler.AssetFileName);
                        }
                    }
                }
            }
        }
Beispiel #4
0
        static void OnMeshBuilt(UModeler modeler, int shelf)
        {
            UModelerEditor.OnChanged();

            if (shelf == 0)
            {
                if (EditorUtil.HasStaticLightmap(modeler))
                {
                    EditorUtil.SetLightmap(modeler, false);
                    EditorUtil.SetLightmap(modeler, true);
                }
            }
        }
        static private void UpdateInstance(GameObject instance)
        {
            UModeler modeler = instance.GetComponent <UModeler>();

            if (modeler != null)
            {
                using (new ActiveModelerHolder(modeler))
                {
                    modeler.Build(0, true /*updateToGraphicsAPIImmediately*/);
                }
            }

            for (int i = 0; i < instance.transform.childCount; ++i)
            {
                UpdateInstance(instance.transform.GetChild(i).gameObject);
            }
        }
        static void OnMeshBuilt(UModeler modeler, int shelf)
        {
            UModelerEditor.OnChanged();

            if (shelf == 0)
            {
                modeler.editableMesh.IsBuilt = true;

                if (EditorUtil.HasStaticLightmap(modeler))
                {
                    EditorUtil.GenerateUV2(modeler);

                    EditorUtil.SetLightmap(modeler, false);
                    EditorUtil.SetLightmap(modeler, true);
                }
            }
        }
        private static void OnMeshBuilding(UModeler modeler, int shelf)
        {
            if (shelf == 0)
            {
                UModelerEditor.DisconnectPrefabMeshLink(modeler);
            }
            else if (shelf == 1)
            {
                using (new ShelfHolder(modeler.editableMesh))
                {
                    modeler.editableMesh.shelf = 1;
                    var polygonList = modeler.editableMesh.GetAllPolygons();

                    if (UMContext.activeModeler.autoHotspotLayout)
                    {
                        HotspotLayoutTool.HotspotTexturing(polygonList, true, false);
                        modeler.editableMesh.uvIslandManager.RemoveAllEmpty();
                    }
                }
            }
        }
        private void UpdateInstance(Transform transform, bool root)
        {
            UModeler modeler = transform.gameObject.GetComponent <UModeler>();

            if (!root || modeler == null)
            {
                for (int i = 0; i < transform.childCount; ++i)
                {
                    Transform childTM      = transform.GetChild(i);
                    UModeler  childModeler = childTM.GetComponent <UModeler>();
                    if (childModeler != null)
                    {
                        if (childModeler.instanceID != childModeler.GetInstanceID())
                        {
                            EditorUtil.RefreshModeler(childTM);
                            childModeler.instanceID = childModeler.GetInstanceID();
                        }
                    }
                    UpdateInstance(childTM, false /*root*/);
                }
            }
        }
Beispiel #9
0
 private static void OnSceneLoading(string path, OpenSceneMode mode)
 {
     UModeler.ResetMeshContainer();
 }
 static void OnMeshBuilt(UModeler modeler, int shelf)
 {
     UModelerEditor.OnChanged();
     EditorUtil.EnableHighlight(false, modeler);
 }