Pārlūkot izejas kodu

Adding PEX (2D ParticleSystem) Importer

Josh Engebretson 10 gadi atpakaļ
vecāks
revīzija
f929d41f43

+ 1 - 0
Script/AtomicEditor/ui/frames/inspector/CreateComponentButton.ts

@@ -12,6 +12,7 @@ var _2DCreateSource = new Atomic.UIMenuItemSource();
 _2DCreateSource.addItem(new Atomic.UIMenuItem("PhysicsWorld2D", "PhysicsWorld2D"));
 _2DCreateSource.addItem(new Atomic.UIMenuItem("StaticSprite2D", "StaticSprite2D"));
 _2DCreateSource.addItem(new Atomic.UIMenuItem("AnimatedSprite2D", "AnimatedSprite2D"));
+_2DCreateSource.addItem(new Atomic.UIMenuItem("ParticleEmitter2D", "ParticleEmitter2D"));
 _2DCreateSource.addItem(new Atomic.UIMenuItem("PointLight2D", "PointLight2D"));
 _2DCreateSource.addItem(new Atomic.UIMenuItem("DirectionalLight2D", "DirectionalLight2D"));
 _2DCreateSource.addItem(new Atomic.UIMenuItem("RigidBody2D", "RigidBody2D"));

+ 1 - 1
Script/Packages/ToolCore/ToolCore.json

@@ -5,7 +5,7 @@
 	"classes" : ["ToolEnvironment", "ToolSystem", "Project", "ProjectFile", "Platform", "PlatformMac", "PlatformWeb",
 							 "PlatformWindows", "Command", "PlayCmd", "OpenAssetImporter",
 							 "Asset", "AssetDatabase", "AssetImporter", "AudioImporter", "ModelImporter", "MaterialImporter", "AnimationImportInfo",
-							 "PrefabImporter", "JavascriptImporter", "TextureImporter", "SpriterImporter", "LicenseSystem"],
+							 "PrefabImporter", "JavascriptImporter", "TextureImporter", "SpriterImporter", "PEXImporter", "LicenseSystem"],
 	"typescript_decl" : {
 
 		"AssetDatabase" : [

+ 5 - 0
Source/ToolCore/Assets/Asset.cpp

@@ -17,6 +17,7 @@
 #include "JavascriptImporter.h"
 #include "SpriterImporter.h"
 #include "TMXImporter.h"
+#include "PEXImporter.h"
 
 #include "AssetEvents.h"
 #include "Asset.h"
@@ -275,6 +276,10 @@ bool Asset::CreateImporter()
         {
             importer_ = new TMXImporter(context_, this);
         }
+        else if (ext == ".pex")
+        {
+            importer_ = new PEXImporter(context_, this);
+        }
         else if (textureFormats.Contains(ext))
         {
             importer_ = new TextureImporter(context_, this);

+ 1 - 0
Source/ToolCore/Assets/AssetDatabase.cpp

@@ -492,6 +492,7 @@ String AssetDatabase::GetResourceImporterName(const String& resourceTypeName)
         resourceTypeToImporterType_["Sprite2D"] = "TextureImporter";
         resourceTypeToImporterType_["AnimatedSprite2D"] = "SpriterImporter";
         resourceTypeToImporterType_["JSComponentFile"] = "JavascriptImporter";
+        resourceTypeToImporterType_["ParticleEffect2D"] = "PEXImporter";
     }
 
     if (!resourceTypeToImporterType_.Contains(resourceTypeName))

+ 63 - 0
Source/ToolCore/Assets/PEXImporter.cpp

@@ -0,0 +1,63 @@
+
+#include <Atomic/Resource/ResourceCache.h>
+#include <Atomic/Resource/Image.h>
+#include <Atomic/Atomic2D/ParticleEffect2D.h>
+
+#include "Asset.h"
+#include "AssetDatabase.h"
+#include "PEXImporter.h"
+
+namespace ToolCore
+{
+
+PEXImporter::PEXImporter(Context* context, Asset *asset) : AssetImporter(context, asset)
+{
+
+}
+
+PEXImporter::~PEXImporter()
+{
+
+}
+
+void PEXImporter::SetDefaults()
+{
+    AssetImporter::SetDefaults();
+}
+
+bool PEXImporter::Import()
+{
+    return true;
+}
+
+bool PEXImporter::LoadSettingsInternal()
+{
+    if (!AssetImporter::LoadSettingsInternal())
+        return false;
+
+    JSONValue import = jsonRoot_.GetChild("PEXImporter", JSON_OBJECT);
+
+    return true;
+}
+
+bool PEXImporter::SaveSettingsInternal()
+{
+    if (!AssetImporter::SaveSettingsInternal())
+        return false;
+
+    JSONValue import = jsonRoot_.CreateChild("PEXImporter");
+
+    return true;
+}
+
+Resource* PEXImporter::GetResource(const String& typeName)
+{
+    ResourceCache* cache = GetSubsystem<ResourceCache>();
+
+    ParticleEffect2D* particleEffect = cache->GetResource<ParticleEffect2D>(asset_->GetPath());
+
+    return particleEffect;
+
+}
+
+}

+ 31 - 0
Source/ToolCore/Assets/PEXImporter.h

@@ -0,0 +1,31 @@
+
+#pragma once
+
+#include "AssetImporter.h"
+
+namespace ToolCore
+{
+
+class PEXImporter : public AssetImporter
+{
+    OBJECT(PEXImporter);
+
+public:
+    /// Construct.
+    PEXImporter(Context* context, Asset* asset);
+    virtual ~PEXImporter();
+
+    virtual void SetDefaults();
+
+    Resource* GetResource(const String& typeName);
+
+protected:
+
+    bool Import();
+
+    virtual bool LoadSettingsInternal();
+    virtual bool SaveSettingsInternal();
+
+};
+
+}