瀏覽代碼

First C# originated GUI elemented displayed

Marko Pintera 12 年之前
父節點
當前提交
4ba316bb18

+ 2 - 2
BansheeEngine/Source/BsApplication.cpp

@@ -35,7 +35,7 @@ namespace BansheeEngine
 		desc.importers.push_back("CamelotFreeImgImporter");
 		desc.importers.push_back("CamelotFreeImgImporter");
 		desc.importers.push_back("CamelotFBXImporter");
 		desc.importers.push_back("CamelotFBXImporter");
 		desc.importers.push_back("CamelotFontImporter");
 		desc.importers.push_back("CamelotFontImporter");
-
+		
 		CM::gApplication().startUp(desc);
 		CM::gApplication().startUp(desc);
 
 
 		ScriptManager::startUp(cm_new<ScriptManager>());
 		ScriptManager::startUp(cm_new<ScriptManager>());
@@ -56,7 +56,7 @@ namespace BansheeEngine
 
 
 		CM::gApplication().loadPlugin("BansheeMono");
 		CM::gApplication().loadPlugin("BansheeMono");
 		CM::gApplication().loadPlugin("SBansheeEngine"); // Scripting interface
 		CM::gApplication().loadPlugin("SBansheeEngine"); // Scripting interface
-
+		
 		updateCallbackConn = CM::gApplication().mainLoopCallback.connect(boost::bind(&Application::update, this));
 		updateCallbackConn = CM::gApplication().mainLoopCallback.connect(boost::bind(&Application::update, this));
 	}
 	}
 
 

+ 23 - 1
BansheeMono/Include/BsMonoUtil.h

@@ -1,11 +1,13 @@
 #pragma once
 #pragma once
 
 
 #include "BsMonoPrerequisites.h"
 #include "BsMonoPrerequisites.h"
+#include "CmException.h"
+#include "CmDebug.h"
 #include <mono/jit/jit.h>
 #include <mono/jit/jit.h>
 
 
 namespace BansheeEngine
 namespace BansheeEngine
 {
 {
-	class BS_MONO_EXPORT ScriptUtil
+	class BS_MONO_EXPORT MonoUtil
 	{
 	{
 	public:
 	public:
 		static CM::WString monoToWString(MonoString* str)
 		static CM::WString monoToWString(MonoString* str)
@@ -19,5 +21,25 @@ namespace BansheeEngine
 
 
 			return ret;
 			return ret;
 		}
 		}
+
+		static void throwIfException(MonoObject* exception)
+		{
+			if(exception != nullptr)
+			{
+				::MonoClass* exceptionClass = mono_object_get_class(exception);
+				::MonoProperty* exceptionMsgProp = mono_class_get_property_from_name(exceptionClass, "Message");
+				::MonoMethod* exceptionMsgGetter = mono_property_get_get_method(exceptionMsgProp);
+				MonoString* exceptionMsg = (MonoString*)mono_runtime_invoke(exceptionMsgGetter, exception, nullptr, nullptr);
+
+				::MonoProperty* exceptionStackProp = mono_class_get_property_from_name(exceptionClass, "StackTrace");
+				::MonoMethod* exceptionStackGetter = mono_property_get_get_method(exceptionStackProp);
+				MonoString* exceptionStackTrace = (MonoString*)mono_runtime_invoke(exceptionStackGetter, exception, nullptr, nullptr);
+
+				CM::String msg =  "Managed exception: " + toString(monoToWString(exceptionMsg)) + "\n" + toString(monoToWString(exceptionStackTrace));
+
+				LOGERR(msg);
+				CM_EXCEPT(CM::InternalErrorException, msg);
+			}
+		}
 	};
 	};
 }
 }

+ 7 - 1
BansheeMono/Source/BsMonoAssembly.cpp

@@ -2,6 +2,7 @@
 #include "BsMonoClass.h"
 #include "BsMonoClass.h"
 #include "BsMonoManager.h"
 #include "BsMonoManager.h"
 #include "CmUtil.h"
 #include "CmUtil.h"
+#include "BsMonoUtil.h"
 #include "CmException.h"
 #include "CmException.h"
 
 
 #include <mono/metadata/debug-helpers.h>
 #include <mono/metadata/debug-helpers.h>
@@ -85,7 +86,12 @@ namespace BansheeEngine
 		::MonoMethod* entry = mono_method_desc_search_in_image(methodDesc, mMonoImage);
 		::MonoMethod* entry = mono_method_desc_search_in_image(methodDesc, mMonoImage);
 
 
 		if(entry != nullptr)
 		if(entry != nullptr)
-			mono_runtime_invoke(entry, nullptr, nullptr, nullptr);
+		{
+			MonoObject* exception = nullptr;
+			mono_runtime_invoke(entry, nullptr, nullptr, &exception);
+
+			MonoUtil::throwIfException(exception);
+		}
 	}
 	}
 
 
 	MonoClass& MonoAssembly::getClass(const String& namespaceName, const String& name)
 	MonoClass& MonoAssembly::getClass(const String& namespaceName, const String& name)

+ 1 - 1
BansheeMono/Source/BsMonoManager.cpp

@@ -61,7 +61,7 @@ namespace BansheeEngine
 			assembly = new (cm_alloc<MonoAssembly>()) MonoAssembly();
 			assembly = new (cm_alloc<MonoAssembly>()) MonoAssembly();
 			mAssemblies[name] = assembly;
 			mAssemblies[name] = assembly;
 		}
 		}
-
+		
 		if(!assembly->mIsLoaded)
 		if(!assembly->mIsLoaded)
 		{
 		{
 			assembly->load(path, name);
 			assembly->load(path, name);

+ 1 - 0
MBansheeEditor/EditorGUI.cs

@@ -8,6 +8,7 @@ namespace BansheeEditor
         internal EditorGUI(ModalWindow parentWindow)
         internal EditorGUI(ModalWindow parentWindow)
         {
         {
             Internal_CreateInstance(this, parentWindow);
             Internal_CreateInstance(this, parentWindow);
+            Initialize();
         }
         }
 
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         [MethodImpl(MethodImplOptions.InternalCall)]

+ 1 - 0
MBansheeEditor/MBansheeEditor.csproj

@@ -43,6 +43,7 @@
     <Compile Include="EditorGUI.cs" />
     <Compile Include="EditorGUI.cs" />
     <Compile Include="ModalWindow.cs" />
     <Compile Include="ModalWindow.cs" />
     <Compile Include="Program.cs" />
     <Compile Include="Program.cs" />
+    <Compile Include="ProjectSelectWindow.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>

+ 2 - 2
MBansheeEditor/ModalWindow.cs

@@ -1,5 +1,5 @@
 using System;
 using System;
-using System.Runtime.InteropServices;
+using System.Runtime.CompilerServices;
 using BansheeEngine;
 using BansheeEngine;
 
 
 namespace BansheeEditor
 namespace BansheeEditor
@@ -14,7 +14,7 @@ namespace BansheeEditor
             GUI = new EditorGUI(this);
             GUI = new EditorGUI(this);
         }
         }
 
 
-        [DllImport("__Internal")]
+        [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_CreateInstance(ModalWindow instance, int top, int left, int width, int height);
         private static extern void Internal_CreateInstance(ModalWindow instance, int top, int left, int width, int height);
     }
     }
 }
 }

+ 8 - 2
MBansheeEditor/Program.cs

@@ -1,9 +1,10 @@
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
+using BansheeEngine;
 
 
 namespace BansheeEditor
 namespace BansheeEditor
 {
 {
-    class Program
+    class ProgramEd
     {
     {
         static void Main()
         static void Main()
         {
         {
@@ -13,7 +14,12 @@ namespace BansheeEditor
 
 
             // TODO - A class to manipulate menu items
             // TODO - A class to manipulate menu items
 
 
-           // ModalWindow mw = new ModalWindow(0, 0, 0, 0);
+            ProjectSelectWindow window = new ProjectSelectWindow();
+
+            //GUIElementStateStyle dbgStyle = new GUIElementStateStyle();
+            //Color newColor = Color.red;
+
+            //dbgStyle.textColor = newColor;
         }
         }
     }
     }
 
 

+ 17 - 0
MBansheeEditor/ProjectSelectWindow.cs

@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BansheeEditor
+{
+    internal sealed class ProjectSelectWindow : ModalWindow
+    {
+        public ProjectSelectWindow()
+            :base(0, 0, 200, 200)
+        {
+            GUI.main.AddLabel("Test test");
+        }
+    }
+}

+ 4 - 6
MBansheeEngine/GUIBase.cs

@@ -4,7 +4,7 @@ using System.Runtime.CompilerServices;
 namespace BansheeEngine
 namespace BansheeEngine
 {
 {
 
 
-    public class GUIBase : ScriptObject
+    public abstract class GUIBase : ScriptObject
     {
     {
         private GUIArea mainArea;
         private GUIArea mainArea;
         private GUILayout _mainLayout;
         private GUILayout _mainLayout;
@@ -17,9 +17,10 @@ namespace BansheeEngine
         public GUISkin skin; // TODO
         public GUISkin skin; // TODO
 
 
         internal GUIBase()
         internal GUIBase()
-        {
-            Internal_CreateInstance(this);
+        { }
 
 
+        internal void Initialize()
+        {
             mainArea = AddResizableAreaXY(0, 0, 0, 0);
             mainArea = AddResizableAreaXY(0, 0, 0, 0);
             _mainLayout = mainArea.layout;
             _mainLayout = mainArea.layout;
         }
         }
@@ -43,8 +44,5 @@ namespace BansheeEngine
         {
         {
             return GUIArea.CreateResizableXY(this, offsetLeft, offsetRight, offsetTop, offsetBottom, depth);
             return GUIArea.CreateResizableXY(this, offsetLeft, offsetRight, offsetTop, offsetBottom, depth);
         }
         }
-
-        [MethodImpl(MethodImplOptions.InternalCall)]
-        private static extern void Internal_CreateInstance(GUIBase instance);
     }
     }
 }
 }

+ 2 - 2
MBansheeEngine/Program.cs

@@ -11,9 +11,9 @@ namespace BansheeEngine
         static void Main()
         static void Main()
         {
         {
             GUIElementStateStyle dbgStyle = new GUIElementStateStyle();
             GUIElementStateStyle dbgStyle = new GUIElementStateStyle();
-            Color newColor = Color.red;
+            //Color newColor = Color.red;
 
 
-            dbgStyle.textColor = newColor;
+            //dbgStyle.textColor = newColor;
             //Color myColor = dbgStyle.textColor;
             //Color myColor = dbgStyle.textColor;
             //dbgStyle.textColor = myColor;
             //dbgStyle.textColor = myColor;
         }
         }

+ 1 - 0
MBansheeEngine/ScriptObject.cs

@@ -1,5 +1,6 @@
 using System;
 using System;
 using System.Runtime.CompilerServices;
 using System.Runtime.CompilerServices;
+
 namespace BansheeEngine
 namespace BansheeEngine
 {
 {
     public class ScriptObject
     public class ScriptObject

+ 1 - 0
Notes.txt

@@ -64,6 +64,7 @@ Reminders:
 	  SBansheeEngine. User could then fairly easily port the system to another scripting language just by implementing another ScriptSystem. 
 	  SBansheeEngine. User could then fairly easily port the system to another scripting language just by implementing another ScriptSystem. 
     - This would probably come with an overhead of at least one extra function call for each script call, which is currently unacceptable 
     - This would probably come with an overhead of at least one extra function call for each script call, which is currently unacceptable 
 	  considering that most people will definitely won't be writing new script systems.
 	  considering that most people will definitely won't be writing new script systems.
+  - Perhaps add code generation functionality to the engine through Mono? I know Mono has support for it though its Embed interface
 
 
 
 
 Potential optimizations:
 Potential optimizations:

+ 22 - 0
SBansheeEditor/Include/BsScriptEditorGUI.h

@@ -0,0 +1,22 @@
+#pragma once
+
+#include "BsScriptEditorPrerequisites.h"
+#include "BsScriptObject.h"
+#include "BsScriptGUIBase.h"
+
+namespace BansheeEditor
+{
+	class BS_SCR_BED_EXPORT ScriptEditorGUI: public BS::ScriptGUIBase, public BS::ScriptObject<ScriptEditorGUI>
+	{
+	public:
+		static void initMetaData();
+
+	private:
+		ScriptEditorGUI(BS::GUIWidget& widget, ScriptModalWindow* parentWindow);
+
+		static void internal_createInstance(MonoObject* instance, MonoObject* parentModalWindow);
+		static void internal_destroyInstance(ScriptEditorGUI* nativeInstance);
+
+		static void initRuntimeData();
+	};
+}

+ 1 - 1
SBansheeEditor/Include/BsScriptEditorPrerequisites.h

@@ -20,5 +20,5 @@
 
 
 namespace BansheeEditor
 namespace BansheeEditor
 {
 {
-
+	class ScriptModalWindow;
 }
 }

+ 3 - 1
SBansheeEditor/Include/BsScriptModalWindow.h

@@ -10,6 +10,9 @@ namespace BansheeEditor
 	public:
 	public:
 		static void initMetaData();
 		static void initMetaData();
 
 
+		const BS::HCamera& getCamera() const { return mCamera; }
+		const CM::HSceneObject& getSceneObject() const { return mSceneObject; }
+
 	private:
 	private:
 		ScriptModalWindow(CM::INT32 left, CM::INT32 top, CM::UINT32 width, CM::UINT32 height);
 		ScriptModalWindow(CM::INT32 left, CM::INT32 top, CM::UINT32 width, CM::UINT32 height);
 
 
@@ -20,7 +23,6 @@ namespace BansheeEditor
 
 
 		CM::RenderWindowPtr mRenderWindow;
 		CM::RenderWindowPtr mRenderWindow;
 		CM::HSceneObject mSceneObject;
 		CM::HSceneObject mSceneObject;
-		BS::HGUIWidget mGUI;
 		BS::HCamera mCamera;
 		BS::HCamera mCamera;
 	};
 	};
 }
 }

+ 2 - 0
SBansheeEditor/SBansheeEditor.vcxproj

@@ -226,10 +226,12 @@
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>
   <ItemGroup>
   <ItemGroup>
+    <ClInclude Include="Include\BsScriptEditorGUI.h" />
     <ClInclude Include="Include\BsScriptEditorPrerequisites.h" />
     <ClInclude Include="Include\BsScriptEditorPrerequisites.h" />
     <ClInclude Include="Include\BsScriptModalWindow.h" />
     <ClInclude Include="Include\BsScriptModalWindow.h" />
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
+    <ClCompile Include="Source\BsScriptEditorGUI.cpp" />
     <ClCompile Include="Source\BsScriptEditorPlugin.cpp" />
     <ClCompile Include="Source\BsScriptEditorPlugin.cpp" />
     <ClCompile Include="Source\BsScriptModalWindow.cpp" />
     <ClCompile Include="Source\BsScriptModalWindow.cpp" />
   </ItemGroup>
   </ItemGroup>

+ 6 - 0
SBansheeEditor/SBansheeEditor.vcxproj.filters

@@ -21,6 +21,9 @@
     <ClInclude Include="Include\BsScriptModalWindow.h">
     <ClInclude Include="Include\BsScriptModalWindow.h">
       <Filter>Header Files</Filter>
       <Filter>Header Files</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="Include\BsScriptEditorGUI.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <ClCompile Include="Source\BsScriptModalWindow.cpp">
     <ClCompile Include="Source\BsScriptModalWindow.cpp">
@@ -29,5 +32,8 @@
     <ClCompile Include="Source\BsScriptEditorPlugin.cpp">
     <ClCompile Include="Source\BsScriptEditorPlugin.cpp">
       <Filter>Source Files</Filter>
       <Filter>Source Files</Filter>
     </ClCompile>
     </ClCompile>
+    <ClCompile Include="Source\BsScriptEditorGUI.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   </ItemGroup>
 </Project>
 </Project>

+ 54 - 0
SBansheeEditor/Source/BsScriptEditorGUI.cpp

@@ -0,0 +1,54 @@
+#include "BsScriptEditorGUI.h"
+#include "BsMonoManager.h"
+#include "BsScriptMeta.h"
+#include "BsMonoClass.h"
+#include "BsScriptModalWindow.h"
+#include "BsGUIWidget.h"
+#include "BsCamera.h"
+#include "CmSceneObject.h"
+#include "BsEngineGUI.h"
+
+using namespace CamelotFramework;
+using namespace BansheeEngine;
+
+namespace BansheeEditor
+{
+	ScriptEditorGUI::ScriptEditorGUI(GUIWidget& widget, ScriptModalWindow* parentWindow)
+		:ScriptGUIBase(widget)
+	{
+
+	}
+
+	void ScriptEditorGUI::initMetaData()
+	{
+		metaData = ScriptMeta("MBansheeEditor", "BansheeEditor", "EditorGUI", &ScriptEditorGUI::initRuntimeData);
+
+		MonoManager::registerScriptType(&metaData);
+	}
+
+	void ScriptEditorGUI::initRuntimeData()
+	{
+		metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptEditorGUI::internal_createInstance);
+		metaData.scriptClass->addInternalCall("Internal_DestroyInstance", &ScriptEditorGUI::internal_destroyInstance);
+	}
+
+	void ScriptEditorGUI::internal_createInstance(MonoObject* instance, MonoObject* parentModalWindow)
+	{
+		ScriptModalWindow* nativeParentWindow = ScriptModalWindow::toNative(parentModalWindow);
+
+		HSceneObject sceneObj = nativeParentWindow->getSceneObject();
+		HGUIWidget widget = sceneObj->addComponent<GUIWidget>(nativeParentWindow->getCamera()->getViewport().get());
+		widget->setSkin(EngineGUI::instance().getSkin());
+
+		ScriptEditorGUI* nativeInstance = new (cm_alloc<ScriptEditorGUI>()) ScriptEditorGUI(*widget.get(), nativeParentWindow);
+		nativeInstance->createInstance(instance);
+
+		metaData.thisPtrField->setValue(instance, (ScriptGUIBase*)nativeInstance);
+	}
+
+	void ScriptEditorGUI::internal_destroyInstance(ScriptEditorGUI* nativeInstance)
+	{
+		nativeInstance->destroyInstance();
+		cm_delete(nativeInstance);
+	}
+}

+ 1 - 1
SBansheeEditor/Source/BsScriptEditorPlugin.cpp

@@ -17,7 +17,7 @@ namespace BansheeEditor
 	{
 	{
 		const CM::String ENGINE_ASSEMBLY_PATH = "..\\..\\Assemblies\\MBansheeEditor.dll";
 		const CM::String ENGINE_ASSEMBLY_PATH = "..\\..\\Assemblies\\MBansheeEditor.dll";
 		const CM::String ENGINE_ASSEMBLY_NAME = "MBansheeEditor";
 		const CM::String ENGINE_ASSEMBLY_NAME = "MBansheeEditor";
-		const CM::String ASSEMBLY_ENTRY_POINT = "Program::Main";
+		const CM::String ASSEMBLY_ENTRY_POINT = "ProgramEd::Main";
 
 
 		MonoManager::instance().loadAssembly(ENGINE_ASSEMBLY_PATH, ENGINE_ASSEMBLY_NAME, ASSEMBLY_ENTRY_POINT);
 		MonoManager::instance().loadAssembly(ENGINE_ASSEMBLY_PATH, ENGINE_ASSEMBLY_NAME, ASSEMBLY_ENTRY_POINT);
 
 

+ 0 - 3
SBansheeEditor/Source/BsScriptModalWindow.cpp

@@ -35,9 +35,6 @@ namespace BansheeEditor
 		mCamera->setNearClipDistance(5);
 		mCamera->setNearClipDistance(5);
 		mCamera->setAspectRatio(1.0f);
 		mCamera->setAspectRatio(1.0f);
 		mCamera->setIgnoreSceneRenderables(true);
 		mCamera->setIgnoreSceneRenderables(true);
-
-		mGUI = mSceneObject->addComponent<GUIWidget>(mCamera->getViewport().get());
-		mGUI->setDepth(128);
 	}
 	}
 
 
 	void ScriptModalWindow::initMetaData()
 	void ScriptModalWindow::initMetaData()

+ 13 - 5
SBansheeEngine/Include/BsScriptGUIBase.h

@@ -5,19 +5,27 @@
 
 
 namespace BansheeEngine
 namespace BansheeEngine
 {
 {
-	class BS_SCR_BE_EXPORT ScriptGUIBase : public ScriptObject<ScriptGUIBase>
+	class BS_SCR_BE_EXPORT ScriptGUIBaseMeta : public ScriptObject<ScriptGUIBaseMeta>
 	{
 	{
 	public:
 	public:
+		friend class ScriptGUIBase;
+
 		static void initMetaData();
 		static void initMetaData();
+	};
 
 
+	class BS_SCR_BE_EXPORT ScriptGUIBase
+	{
+	public:
 		GUIWidget& getWidget() const { return mWidget; }
 		GUIWidget& getWidget() const { return mWidget; }
 
 
-	private:
-		static void internal_createInstance(MonoObject* instance);
-		static void internal_destroyInstance(ScriptGUIBase* nativeInstance);
+		static void initRuntimeData() { }
 
 
-		static void initRuntimeData();
+		static ScriptGUIBase* toNative(MonoObject* managedInstance)
+		{
+			return reinterpret_cast<ScriptGUIBase*>(ScriptGUIBaseMeta::metaData.thisPtrField->getValue(managedInstance));
+		}
 
 
+	protected:
 		ScriptGUIBase(GUIWidget& widget);
 		ScriptGUIBase(GUIWidget& widget);
 
 
 		GUIWidget& mWidget;
 		GUIWidget& mWidget;

+ 1 - 1
SBansheeEngine/Source/BsScriptEnginePlugin.cpp

@@ -17,7 +17,7 @@ namespace BansheeEngine
 		const CM::String ENGINE_ASSEMBLY_PATH = "..\\..\\Assemblies\\MBansheeEngine.dll";
 		const CM::String ENGINE_ASSEMBLY_PATH = "..\\..\\Assemblies\\MBansheeEngine.dll";
 		const CM::String ENGINE_ASSEMBLY_NAME = "MBansheeEngine";
 		const CM::String ENGINE_ASSEMBLY_NAME = "MBansheeEngine";
 		const CM::String ASSEMBLY_ENTRY_POINT = "Program::Main";
 		const CM::String ASSEMBLY_ENTRY_POINT = "Program::Main";
-
+		
 		MonoManager::instance().loadAssembly(ENGINE_ASSEMBLY_PATH, ENGINE_ASSEMBLY_NAME, ASSEMBLY_ENTRY_POINT);
 		MonoManager::instance().loadAssembly(ENGINE_ASSEMBLY_PATH, ENGINE_ASSEMBLY_NAME, ASSEMBLY_ENTRY_POINT);
 
 
 		return nullptr;
 		return nullptr;

+ 1 - 1
SBansheeEngine/Source/BsScriptGUIArea.cpp

@@ -20,7 +20,7 @@ namespace BansheeEngine
 
 
 	void ScriptGUIArea::initMetaData()
 	void ScriptGUIArea::initMetaData()
 	{
 	{
-		metaData = ScriptMeta("MBansheeEngine", "BansheeEngine", "GUIBase", &ScriptGUIArea::initRuntimeData);
+		metaData = ScriptMeta("MBansheeEngine", "BansheeEngine", "GUIArea", &ScriptGUIArea::initRuntimeData);
 
 
 		MonoManager::registerScriptType(&metaData);
 		MonoManager::registerScriptType(&metaData);
 	}
 	}

+ 1 - 23
SBansheeEngine/Source/BsScriptGUIBase.cpp

@@ -17,32 +17,10 @@ namespace BansheeEngine
 
 
 	}
 	}
 
 
-	void ScriptGUIBase::initMetaData()
+	void ScriptGUIBaseMeta::initMetaData()
 	{
 	{
 		metaData = ScriptMeta("MBansheeEngine", "BansheeEngine", "GUIBase", &ScriptGUIBase::initRuntimeData);
 		metaData = ScriptMeta("MBansheeEngine", "BansheeEngine", "GUIBase", &ScriptGUIBase::initRuntimeData);
 
 
 		MonoManager::registerScriptType(&metaData);
 		MonoManager::registerScriptType(&metaData);
 	}
 	}
-	void ScriptGUIBase::initRuntimeData()
-	{
-		metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUIBase::internal_createInstance);
-		metaData.scriptClass->addInternalCall("Internal_DestroyInstance", &ScriptGUIBase::internal_destroyInstance);
-	}
-
-	void ScriptGUIBase::internal_createInstance(MonoObject* instance)
-	{
-		//ScriptGUIArea* scriptArea = ScriptGUIArea::toNative(parentArea);
-		//GUIArea* nativeArea = scriptArea->getInternalValue();
-
-		//ScriptGUILayout* nativeInstance = new (cm_alloc<ScriptGUILayout>()) ScriptGUILayout(nativeArea->getLayout(), scriptArea);
-		//nativeInstance->createInstance(instance);
-
-		//metaData.thisPtrField->setValue(instance, nativeInstance);
-	}
-
-	void ScriptGUIBase::internal_destroyInstance(ScriptGUIBase* nativeInstance)
-	{
-		nativeInstance->destroyInstance();
-		cm_delete(nativeInstance);
-	}
 }
 }

+ 1 - 1
SBansheeEngine/Source/BsScriptGUILabel.cpp

@@ -37,7 +37,7 @@ namespace BansheeEngine
 	void ScriptGUILabel::internal_createInstance(MonoObject* instance, MonoObject* parentLayout, MonoString* label, MonoObject* style, MonoArray* guiOptions)
 	void ScriptGUILabel::internal_createInstance(MonoObject* instance, MonoObject* parentLayout, MonoString* label, MonoObject* style, MonoArray* guiOptions)
 	{
 	{
 		ScriptGUILayout* scriptLayout = ScriptGUILayout::toNative(parentLayout);
 		ScriptGUILayout* scriptLayout = ScriptGUILayout::toNative(parentLayout);
-		HString nativeLabel(ScriptUtil::monoToWString(label));
+		HString nativeLabel(MonoUtil::monoToWString(label));
 		GUIOptions options;
 		GUIOptions options;
 
 
 		UINT32 arrayLen = (UINT32)mono_array_length(guiOptions);
 		UINT32 arrayLen = (UINT32)mono_array_length(guiOptions);