Bläddra i källkod

Adding simple NETAssembly resource inspector, fix TypeScript reference to enum outside of current package when generating definition file

Josh Engebretson 10 år sedan
förälder
incheckning
a312555249

+ 1 - 1
Resources/EditorData/AtomicEditor/editor/ui/inspectorframe.tb.txt

@@ -1,4 +1,4 @@
 TBContainer: skin: AEContainer, gravity: all, id: mainframecontainer
-	lp: min-width: 310
+	lp: min-width: 318
 	TBScrollContainer: scroll-mode: y, id: inspectorcontainerscroll, gravity: all
 		TBLayout: distribution: gravity, id: inspectorcontainer, gravity: all

+ 1 - 0
Script/AtomicEditor/main.ts

@@ -6,6 +6,7 @@
 //
 
 /// <reference path="../TypeScript/Atomic.d.ts" />
+/// <reference path="../TypeScript/AtomicNET.d.ts" />
 /// <reference path="../TypeScript/ToolCore.d.ts" />
 /// <reference path="../TypeScript/Editor.d.ts" />
 /// <reference path="../TypeScript/AtomicWork.d.ts" />

+ 68 - 0
Script/AtomicEditor/ui/frames/inspector/AssemblyInspector.ts

@@ -0,0 +1,68 @@
+//
+// Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
+// LICENSE: Atomic Game Engine Editor and Tools EULA
+// Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
+// license information: https://github.com/AtomicGameEngine/AtomicGameEngine
+//
+
+import InspectorWidget = require("./InspectorWidget");
+import ArrayEditWidget = require("./ArrayEditWidget");
+import InspectorUtils = require("./InspectorUtils");
+
+class AssemblyInspector extends InspectorWidget {
+
+    constructor() {
+
+        super();
+
+        this.subscribeToEvent(this, "WidgetEvent", (data) => this.handleWidgetEvent(data));
+
+    }
+
+    handleWidgetEvent(ev: Atomic.UIWidgetEvent) {
+
+    }
+
+    inspect(asset: ToolCore.Asset) {
+
+        this.asset = asset;
+        this.importer = <ToolCore.NETAssemblyImporter> asset.importer;
+
+        // node attr layout
+        var rootLayout = this.rootLayout;
+
+        // Assembly Section
+        var assemblyLayout = this.createSection(rootLayout, "NETAssembly", 1);
+
+        var assemblyFile = <AtomicNET.NETAssemblyFile> asset.importer.getResource();
+
+        var container = InspectorUtils.createContainer();
+        container.gravity = Atomic.UI_GRAVITY_ALL;
+        assemblyLayout.addChild(container);
+
+        var panel = new Atomic.UILayout();
+        panel.axis = Atomic.UI_AXIS_Y;
+        panel.layoutSize = Atomic.UI_LAYOUT_SIZE_PREFERRED;
+        panel.layoutPosition = Atomic.UI_LAYOUT_POSITION_LEFT_TOP;
+        container.addChild(panel);
+
+        var label = InspectorUtils.createAttrName("CSComponents:");
+        panel.addChild(label);
+
+        for (var index in assemblyFile.classNames)
+        {
+            var classname = assemblyFile.classNames[index];
+
+            label = InspectorUtils.createAttrName(classname);
+            panel.addChild(label);
+        }
+
+    }
+
+
+    asset: ToolCore.Asset;
+    importer:ToolCore.NETAssemblyImporter;
+
+}
+
+export = AssemblyInspector;

+ 10 - 1
Script/AtomicEditor/ui/frames/inspector/InspectorFrame.ts

@@ -14,6 +14,7 @@ import DataBinding = require("./DataBinding");
 import MaterialInspector = require("./MaterialInspector");
 import ModelInspector = require("./ModelInspector");
 import NodeInspector = require("./NodeInspector");
+import AssemblyInspector = require("./AssemblyInspector");
 
 class InspectorFrame extends ScriptWidget {
 
@@ -96,7 +97,6 @@ class InspectorFrame extends ScriptWidget {
 
             inspector.inspect(asset);
 
-
         }
 
         if (asset.importerTypeName == "MaterialImporter") {
@@ -113,9 +113,18 @@ class InspectorFrame extends ScriptWidget {
             container.addChild(materialInspector);
 
             materialInspector.inspect(asset, material);
+        }
+
+        if (asset.importerTypeName == "NETAssemblyImporter") {
+
+            var assemblyInspector = new AssemblyInspector();
+            container.addChild(assemblyInspector);
+
+            assemblyInspector.inspect(asset);
 
         }
 
+
     }
 
     handleNodeRemoved(ev: Atomic.NodeRemovedEvent) {

+ 3 - 0
Source/AtomicNET/NETCore/NETAssemblyFile.cpp

@@ -81,6 +81,8 @@ bool NETAssemblyFile::ParseComponentClassJSON(const JSONValue& json)
 
     String className = json.Get("name").GetString();
 
+    classNames_.Push(className);
+
     const JSONValue& jfields = json.Get("fields");
 
     PODVector<StringHash> enumsAdded;
@@ -187,6 +189,7 @@ bool NETAssemblyFile::ParseAssemblyJSON(const JSONValue& json)
 {
     Clear();
     assemblyEnums_.Clear();
+    classNames_.Clear();
 
     const JSONArray& enums = json.Get("enums").GetArray();
 

+ 6 - 0
Source/AtomicNET/NETCore/NETAssemblyFile.h

@@ -61,12 +61,18 @@ public:
     /// Register object factory.
     static void RegisterObject(Context* context);
 
+    /// Only valid in editor, as we don't inspect assembly at runtime
+    const Vector<String>& GetClassNames() { return classNames_; }
+
 private:
 
     static void InitTypeMap();
 
     bool ParseComponentClassJSON(const JSONValue& json);
 
+    // only valid in editor
+    Vector<String> classNames_;
+
     HashMap<String, Vector<EnumInfo>> assemblyEnums_;
     static HashMap<StringHash, VariantType> typeMap_;
 

+ 0 - 19
Source/ToolCore/Assets/NETAssemblyImporter.cpp

@@ -56,25 +56,6 @@ bool NETAssemblyImporter::Import()
                 assemblyFile->ParseAssemblyJSON(assemblyJSON_);
         }
 
-
-        //if (assemblyJSON.IsObject())
-        //{
-            /*
-            const JSONValue& enums = assemblyJSON.Get("enums");
-
-            const JSONArray& components = assemblyJSON.Get("components").GetArray();
-
-            for (unsigned i = 0; i < components.Size(); i++)
-            {
-                const JSONValue& c = components.At(i);
-
-                String componentName = c.Get("name").GetString();
-
-                LOGINFOF("Found NET Component %s", componentName.CString());
-            }
-            */
-
-         //}
     }
 
     return true;

+ 5 - 0
Source/ToolCore/JSBind/JSBEnum.cpp

@@ -27,6 +27,11 @@ JSBEnum::~JSBEnum()
 
 }
 
+JSBPackage* JSBEnum::GetPackage()
+{
+    return module_->GetPackage();
+}
+
 void JSBEnum::Preprocess()
 {
     // TextureUnit is a special case as uses preprocessor for values depending on

+ 4 - 0
Source/ToolCore/JSBind/JSBEnum.h

@@ -14,9 +14,11 @@ using namespace Atomic;
 namespace ToolCore
 {
 
+class JSBPackage;
 class JSBModule;
 class JSBHeader;
 
+
 class JSBEnum : public Object
 {
 
@@ -30,6 +32,8 @@ public:
     const String& GetName() { return name_; }
     JSBHeader* GetHeader() { return header_; }
 
+    JSBPackage* GetPackage();
+
     HashMap<String, String>& GetValues() { return values_; }
 
     void SetHeader(JSBHeader* header) { header_ = header; }

+ 13 - 1
Source/ToolCore/JSBind/JSBTypeScript.cpp

@@ -35,7 +35,19 @@ String JSBTypeScript::GetScriptType(JSBFunctionType* ftype)
         scriptType = "string";
 
     if (ftype->type_->asEnumType())
-        scriptType = ftype->type_->asEnumType()->enum_->GetName();
+    {
+        JSBEnum* jenum = ftype->type_->asEnumType()->enum_;
+
+        scriptType = jenum->GetName();
+
+        if (jenum->GetPackage()->GetName() != package_->GetName())
+        {
+
+            scriptType =jenum->GetPackage()->GetName() + "." + scriptType;
+
+        }
+
+    }
 
     if (ftype->type_->asClassType())
     {