Browse Source

Use particle effect in Editor. comment Load/Save particle data.

Aster@中国上海 11 years ago
parent
commit
10c64544e6

+ 1 - 14
Bin/Data/Scripts/Editor/AttributeEditor.as

@@ -892,6 +892,7 @@ void InitResourcePicker()
     resourcePickers.Push(ResourcePicker("LuaFile", luaFileFilters));
     resourcePickers.Push(ResourcePicker("Material", materialFilters, ACTION_PICK | ACTION_OPEN | ACTION_EDIT));
     resourcePickers.Push(ResourcePicker("Model", "*.mdl", ACTION_PICK));
+    resourcePickers.Push(ResourcePicker("ParticleEffect", "*.xml", ACTION_PICK | ACTION_OPEN));
     resourcePickers.Push(ResourcePicker("ScriptFile", scriptFilters));
     resourcePickers.Push(ResourcePicker("Sound", soundFilters));
     resourcePickers.Push(ResourcePicker("Technique", "*.xml"));
@@ -1211,20 +1212,6 @@ void InitVectorStructs()
     };
     vectorStructs.Push(VectorStruct("AnimatedModel", "Animation States", animationStateVariables, 1));
 
-    Array<String> particleColorVariables = {
-        "Color Animation Frames",
-        "   Color",
-        "   Time"
-    };
-    vectorStructs.Push(VectorStruct("ParticleEmitter", "Particle Colors", particleColorVariables, 1));
-
-    Array<String> particleUVAnimVariables = {
-        "UV Animation Frames",
-        "   UV Coords",
-        "   Time"
-    };
-    vectorStructs.Push(VectorStruct("ParticleEmitter", "UV Animation", particleUVAnimVariables, 1));
-
     Array<String> staticModelGroupInstanceVariables = {
         "Instance Count",
         "   NodeID"

+ 5 - 5
Bin/Data/Scripts/Editor/EditorHierarchyWindow.as

@@ -858,16 +858,16 @@ void HandleDragDropFinish(StringHash eventType, VariantMap& eventData)
                 CreateModelWithStaticModel(browserFile.resourceKey, targetNode);
                 return;
             }
-            else if (type == RESOURCE_TYPE_PARTICLEEMITTER)
+            else if (type == RESOURCE_TYPE_PARTICLEEFFECT)
             {
                 if (browserFile.extension == "xml")
                 {
-                    XMLFile@ file = cache.GetResource("XMLFile", browserFile.resourceKey);
-                    if (file is null)
+                    ParticleEffect@ effect = cache.GetResource("ParticleEffect", browserFile.resourceKey);
+                    if (effect is null)
                         return;
 
                     ParticleEmitter@ emitter = targetNode.CreateComponent("ParticleEmitter");
-                    emitter.Load(file);
+                    emitter.effect = effect;
                     createdComponent = emitter;
                 }
             }
@@ -1104,7 +1104,7 @@ bool TestDragDrop(UIElement@ source, UIElement@ target, int& itemType)
             return type == RESOURCE_TYPE_PREFAB || 
                 type == RESOURCE_TYPE_SCRIPTFILE || 
                 type == RESOURCE_TYPE_MODEL || 
-                type == RESOURCE_TYPE_PARTICLEEMITTER ||
+                type == RESOURCE_TYPE_PARTICLEEFFECT ||
                 type == RESOURCE_TYPE_2D_PARTICLE_EFFECT;
         }
 

+ 13 - 11
Bin/Data/Scripts/Editor/EditorResourceBrowser.as

@@ -40,7 +40,7 @@ const int RESOURCE_TYPE_TEXTURE = 8;
 const int RESOURCE_TYPE_FONT = 9;
 const int RESOURCE_TYPE_PREFAB = 10;
 const int RESOURCE_TYPE_TECHNIQUE = 11;
-const int RESOURCE_TYPE_PARTICLEEMITTER = 12;
+const int RESOURCE_TYPE_PARTICLEEFFECT = 12;
 const int RESOURCE_TYPE_UIELEMENT = 13;
 const int RESOURCE_TYPE_UIELEMENTS = 14;
 const int RESOURCE_TYPE_ANIMATION_SETTINGS = 15;
@@ -54,7 +54,7 @@ const ShortStringHash XML_TYPE_SCENE("scene");
 const ShortStringHash XML_TYPE_NODE("node");
 const ShortStringHash XML_TYPE_MATERIAL("material");
 const ShortStringHash XML_TYPE_TECHNIQUE("technique");
-const ShortStringHash XML_TYPE_PARTICLEEMITTER("particleemitter");
+const ShortStringHash XML_TYPE_PARTICLEEFFECT("particleeffect");
 const ShortStringHash XML_TYPE_TEXTURE("texture");
 const ShortStringHash XML_TYPE_ELEMENT("element");
 const ShortStringHash XML_TYPE_ELEMENTS("elements");
@@ -247,7 +247,8 @@ void CreateResourceFilterUI()
         checkbox.SetStyleAuto();
         checkbox.vars[TEXT_VAR_RESOURCE_TYPE] = i;
         checkbox.checked = true;
-        SubscribeToEvent(checkbox, "Toggled", "HandleResourceTypeFilterToggled");

+        SubscribeToEvent(checkbox, "Toggled", "HandleResourceTypeFilterToggled");
+
 
         resourceTypeHolder.AddChild(checkbox);
         resourceTypeHolder.AddChild(label);
@@ -307,7 +308,7 @@ void InitializeBrowserFileListRow(Text@ fileText, BrowserFile@ file)
 
     if (file.resourceType == RESOURCE_TYPE_MATERIAL || 
             file.resourceType == RESOURCE_TYPE_MODEL ||
-            file.resourceType == RESOURCE_TYPE_PARTICLEEMITTER ||
+            file.resourceType == RESOURCE_TYPE_PARTICLEEFFECT ||
             file.resourceType == RESOURCE_TYPE_PREFAB
         )
     {
@@ -542,7 +543,8 @@ void PopulateResourceDirFilters()
         checkbox.SetStyleAuto();
         checkbox.vars[TEXT_VAR_RESOURCE_DIR_ID] = i;
         checkbox.checked = true;
-        SubscribeToEvent(checkbox, "Toggled", "HandleResourceDirFilterToggled");

+        SubscribeToEvent(checkbox, "Toggled", "HandleResourceDirFilterToggled");
+
 
         resourceDirHolder.AddChild(checkbox);
         resourceDirHolder.AddChild(label);
@@ -1020,8 +1022,8 @@ int GetResourceType(ShortStringHash fileType)
         return RESOURCE_TYPE_MATERIAL;
     else if(fileType == XML_TYPE_TECHNIQUE)
         return RESOURCE_TYPE_TECHNIQUE;
-    else if(fileType == XML_TYPE_PARTICLEEMITTER)
-        return RESOURCE_TYPE_PARTICLEEMITTER;
+    else if(fileType == XML_TYPE_PARTICLEEFFECT)
+        return RESOURCE_TYPE_PARTICLEEFFECT;
     else if(fileType == XML_TYPE_TEXTURE)
         return RESOURCE_TYPE_TEXTURE;
     else if(fileType == XML_TYPE_ELEMENT)
@@ -1217,8 +1219,8 @@ bool GetXmlType(String path, ShortStringHash &out fileType, bool useCache = fals
             fileType = XML_TYPE_MATERIAL;
         else if(type == XML_TYPE_TECHNIQUE)
             fileType = XML_TYPE_TECHNIQUE;
-        else if(type == XML_TYPE_PARTICLEEMITTER)
-            fileType = XML_TYPE_PARTICLEEMITTER;
+        else if(type == XML_TYPE_PARTICLEEFFECT)
+            fileType = XML_TYPE_PARTICLEEFFECT;
         else if(type == XML_TYPE_TEXTURE)
             fileType = XML_TYPE_TEXTURE;
         else if(type == XML_TYPE_ELEMENT)
@@ -1273,8 +1275,8 @@ String ResourceTypeName(int resourceType)
         return "Prefab";
     else if (resourceType == RESOURCE_TYPE_TECHNIQUE)
         return "Render Technique";
-    else if (resourceType == RESOURCE_TYPE_PARTICLEEMITTER)
-        return "Particle Emitter";
+    else if (resourceType == RESOURCE_TYPE_PARTICLEEFFECT)
+        return "Particle Effect";
     else if (resourceType == RESOURCE_TYPE_UIELEMENT)
         return "UI Element";
     else if (resourceType == RESOURCE_TYPE_UIELEMENTS)

+ 5 - 3
Bin/Data/Scripts/Editor/EditorScene.as

@@ -945,13 +945,14 @@ bool SceneRebuildNavigation()
     return success;
 }
 
+/*
 bool LoadParticleData(const String&in fileName)
 {
     if (fileName.empty)
         return false;
 
-    XMLFile xmlFile;
-    if (!xmlFile.Load(File(fileName, FILE_READ)))
+    ParticleEffect@ effect = cache.GetResource("ParticleEffect", fileName);
+    if (effect is null)
         return false;
 
     bool needRefresh = false;
@@ -961,7 +962,7 @@ bool LoadParticleData(const String&in fileName)
         ParticleEmitter@ emitter = cast<ParticleEmitter>(editComponents[i]);
         if (emitter !is null)
         {
-            emitter.Load(xmlFile);
+            emitter.effect = effect;
             needRefresh = true;
         }
     }
@@ -987,6 +988,7 @@ bool SaveParticleData(const String&in fileName)
 
     return false;
 }
+*/
 
 void AssignMaterial(StaticModel@ model, String materialPath)
 {

+ 6 - 2
Bin/Data/Scripts/Editor/EditorUI.as

@@ -334,8 +334,8 @@ void CreateMenuBar()
         popup.AddChild(CreateMenuItem("Stop test animation", @StopTestAnimation));
         CreateChildDivider(popup);
         popup.AddChild(CreateMenuItem("Rebuild navigation data", @SceneRebuildNavigation));
-        popup.AddChild(CreateMenuItem("Load particle data", @PickFile));
-        popup.AddChild(CreateMenuItem("Save particle data", @PickFile));
+        // popup.AddChild(CreateMenuItem("Load particle data", @PickFile));
+        // popup.AddChild(CreateMenuItem("Save particle data", @PickFile));
         FinalizedPopupMenu(popup);
         uiMenuBar.AddChild(menu);
     }
@@ -547,6 +547,7 @@ bool PickFile()
         uiFileSelector.directoryMode = true;
         SubscribeToEvent(uiFileSelector, "FileSelected", "HandleResourcePath");
     }
+    /*
     else if (action == "Load particle data")
     {
         bool hasParticleEmitter = false;
@@ -576,6 +577,7 @@ bool PickFile()
         else
             MessageBox("Need to have a selected ParticleEmitter component to save particle data.");
     }
+    */
     // UI-element
     else if (action == "Open UI-layout...")
     {
@@ -1046,6 +1048,7 @@ void HandleImportScene(StringHash eventType, VariantMap& eventData)
     ImportScene(ExtractFileName(eventData));
 }
 
+/*
 void HandleLoadParticleData(StringHash eventType, VariantMap& eventData)
 {
     CloseFileSelector(uiParticleFilter, uiParticlePath);
@@ -1057,6 +1060,7 @@ void HandleSaveParticleData(StringHash eventType, VariantMap& eventData)
     CloseFileSelector(uiParticleFilter, uiParticlePath);
     SaveParticleData(ExtractFileName(eventData, true));
 }
+*/
 
 void ExecuteScript(const String&in fileName)
 {