Kaynağa Gözat

C#: Added GUIFixedSpace/GUIFlexibleSpace

Marko Pintera 12 yıl önce
ebeveyn
işleme
051404d8a8

+ 0 - 2
CSharpWrap.txt

@@ -92,8 +92,6 @@ Eventually make all math classes templates that work on both doubles and floats.
 ----------------------------
 
 Implement:
- - GUIContent
-
  - Button
  - Texture
  - RenderTexture

+ 26 - 0
MBansheeEngine/GUISpace.cs

@@ -0,0 +1,26 @@
+using System.Runtime.CompilerServices;
+
+namespace BansheeEngine
+{
+    public sealed class GUIFixedSpace : ScriptObject
+    {
+        internal GUIFixedSpace(GUILayout parentLayout, int size)
+        {
+            Internal_CreateInstance(this, parentLayout, size);
+        }
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_CreateInstance(GUIFixedSpace instance, GUILayout parentLayout, int size);
+    }
+
+    public sealed class GUIFlexibleSpace : ScriptObject
+    {
+        internal GUIFlexibleSpace(GUILayout parentLayout)
+        {
+            Internal_CreateInstance(this, parentLayout);
+        }
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_CreateInstance(GUIFlexibleSpace instance, GUILayout parentLayout);
+    }
+}

+ 1 - 0
MBansheeEngine/MBansheeEngine.csproj

@@ -57,6 +57,7 @@
     <Compile Include="GUILayoutY.cs" />
     <Compile Include="GUIOption.cs" />
     <Compile Include="GUISkin.cs" />
+    <Compile Include="GUISpace.cs" />
     <Compile Include="GUIWidget.cs" />
     <Compile Include="HString.cs" />
     <Compile Include="MathEx.cs" />

+ 23 - 0
SBansheeEngine/Include/BsScriptGUIFixedSpace.h

@@ -0,0 +1,23 @@
+#pragma once
+
+#include "BsScriptEnginePrerequisites.h"
+#include "BsScriptObject.h"
+
+namespace BansheeEngine
+{
+	class BS_SCR_BE_EXPORT ScriptGUIFixedSpace : public ScriptObject<ScriptGUIFixedSpace>
+	{
+	public:
+		static void initMetaData();
+
+	private:
+		static void internal_createInstance(MonoObject* instance, MonoObject* parentLayout, CM::UINT32 size);
+		static void internal_destroyInstance(ScriptGUIFixedSpace* nativeInstance);
+
+		static void initRuntimeData();
+
+		ScriptGUIFixedSpace(GUIFixedSpace& fixedSpace);
+
+		GUIFixedSpace& mFixedSpace;
+	};
+}

+ 23 - 0
SBansheeEngine/Include/BsScriptGUIFlexibleSpace.h

@@ -0,0 +1,23 @@
+#pragma once
+
+#include "BsScriptEnginePrerequisites.h"
+#include "BsScriptObject.h"
+
+namespace BansheeEngine
+{
+	class BS_SCR_BE_EXPORT ScriptGUIFlexibleSpace : public ScriptObject<ScriptGUIFlexibleSpace>
+	{
+	public:
+		static void initMetaData();
+
+	private:
+		static void internal_createInstance(MonoObject* instance, MonoObject* parentLayout);
+		static void internal_destroyInstance(ScriptGUIFlexibleSpace* nativeInstance);
+
+		static void initRuntimeData();
+
+		ScriptGUIFlexibleSpace(GUIFlexibleSpace& flexibleSpace);
+
+		GUIFlexibleSpace& mFlexibleSpace;
+	};
+}

+ 4 - 0
SBansheeEngine/SBansheeEngine.vcxproj

@@ -227,6 +227,8 @@
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClInclude Include="Include\BsScriptEnginePrerequisites.h" />
+    <ClInclude Include="Include\BsScriptGUIFixedSpace.h" />
+    <ClInclude Include="Include\BsScriptGUIFlexibleSpace.h" />
     <ClInclude Include="Include\BsScriptFont.h" />
     <ClInclude Include="Include\BsScriptGUIArea.h" />
     <ClInclude Include="Include\BsScriptGUIBase.h" />
@@ -244,6 +246,8 @@
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="Source\BsScriptEnginePlugin.cpp" />
+    <ClCompile Include="Source\BsScriptGUIFixedSpace.cpp" />
+    <ClCompile Include="Source\BsScriptGUIFlexibleSpace.cpp" />
     <ClCompile Include="Source\BsScriptFont.cpp" />
     <ClCompile Include="Source\BsScriptGUIArea.cpp" />
     <ClCompile Include="Source\BsScriptGUIBase.cpp" />

+ 12 - 0
SBansheeEngine/SBansheeEngine.vcxproj.filters

@@ -60,6 +60,12 @@
     <ClInclude Include="Include\BsScriptGUIContent.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="Include\BsScriptGUIFixedSpace.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="Include\BsScriptGUIFlexibleSpace.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="Source\BsScriptTexture2D.cpp">
@@ -101,5 +107,11 @@
     <ClCompile Include="Source\BsScriptGUIContent.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="Source\BsScriptGUIFixedSpace.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="Source\BsScriptGUIFlexibleSpace.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
 </Project>

+ 52 - 0
SBansheeEngine/Source/BsScriptGUIFixedSpace.cpp

@@ -0,0 +1,52 @@
+#include "BsScriptGUIFixedSpace.h"
+#include "BsScriptMeta.h"
+#include "BsMonoField.h"
+#include "BsMonoClass.h"
+#include "BsMonoManager.h"
+#include "BsSpriteTexture.h"
+#include "BsMonoUtil.h"
+#include "BsGUILayout.h"
+#include "BsGUISpace.h"
+#include "BsScriptGUILayout.h"
+
+using namespace CamelotFramework;
+
+namespace BansheeEngine
+{
+	ScriptGUIFixedSpace::ScriptGUIFixedSpace(GUIFixedSpace& fixedSpace)
+		:mFixedSpace(fixedSpace)
+	{
+
+	}
+
+	void ScriptGUIFixedSpace::initMetaData()
+	{
+		metaData = ScriptMeta("MBansheeEngine", "BansheeEngine", "GUIFixedSpace", &ScriptGUIFixedSpace::initRuntimeData);
+
+		MonoManager::registerScriptType(&metaData);
+	}
+
+	void ScriptGUIFixedSpace::initRuntimeData()
+	{
+		metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUIFixedSpace::internal_createInstance);
+		metaData.scriptClass->addInternalCall("Internal_DestroyInstance", &ScriptGUIFixedSpace::internal_destroyInstance);
+	}
+
+	void ScriptGUIFixedSpace::internal_createInstance(MonoObject* instance, MonoObject* parentLayout, UINT32 size)
+	{
+		ScriptGUILayout* scriptLayout = ScriptGUILayout::toNative(parentLayout);
+		GUILayout* nativeLayout = scriptLayout->getInternalValue();
+		GUIFixedSpace& space = nativeLayout->addSpace(size);
+
+		ScriptGUIFixedSpace* nativeInstance = new (cm_alloc<ScriptGUIFixedSpace>()) ScriptGUIFixedSpace(space);
+		nativeInstance->createInstance(instance);
+
+		metaData.thisPtrField->setValue(instance, nativeInstance);
+	}
+
+	void ScriptGUIFixedSpace::internal_destroyInstance(ScriptGUIFixedSpace* nativeInstance)
+	{
+		nativeInstance->destroyInstance();
+		cm_delete(nativeInstance);
+	}
+}

+ 52 - 0
SBansheeEngine/Source/BsScriptGUIFlexibleSpace.cpp

@@ -0,0 +1,52 @@
+#include "BsScriptGUIFlexibleSpace.h"
+#include "BsScriptMeta.h"
+#include "BsMonoField.h"
+#include "BsMonoClass.h"
+#include "BsMonoManager.h"
+#include "BsSpriteTexture.h"
+#include "BsMonoUtil.h"
+#include "BsGUILayout.h"
+#include "BsGUISpace.h"
+#include "BsScriptGUILayout.h"
+
+using namespace CamelotFramework;
+
+namespace BansheeEngine
+{
+	ScriptGUIFlexibleSpace::ScriptGUIFlexibleSpace(GUIFlexibleSpace& flexibleSpace)
+		:mFlexibleSpace(flexibleSpace)
+	{
+
+	}
+
+	void ScriptGUIFlexibleSpace::initMetaData()
+	{
+		metaData = ScriptMeta("MBansheeEngine", "BansheeEngine", "GUIFlexibleSpace", &ScriptGUIFlexibleSpace::initRuntimeData);
+
+		MonoManager::registerScriptType(&metaData);
+	}
+
+	void ScriptGUIFlexibleSpace::initRuntimeData()
+	{
+		metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUIFlexibleSpace::internal_createInstance);
+		metaData.scriptClass->addInternalCall("Internal_DestroyInstance", &ScriptGUIFlexibleSpace::internal_destroyInstance);
+	}
+
+	void ScriptGUIFlexibleSpace::internal_createInstance(MonoObject* instance, MonoObject* parentLayout)
+	{
+		ScriptGUILayout* scriptLayout = ScriptGUILayout::toNative(parentLayout);
+		GUILayout* nativeLayout = scriptLayout->getInternalValue();
+		GUIFlexibleSpace& space = nativeLayout->addFlexibleSpace();
+
+		ScriptGUIFlexibleSpace* nativeInstance = new (cm_alloc<ScriptGUIFlexibleSpace>()) ScriptGUIFlexibleSpace(space);
+		nativeInstance->createInstance(instance);
+
+		metaData.thisPtrField->setValue(instance, nativeInstance);
+	}
+
+	void ScriptGUIFlexibleSpace::internal_destroyInstance(ScriptGUIFlexibleSpace* nativeInstance)
+	{
+		nativeInstance->destroyInstance();
+		cm_delete(nativeInstance);
+	}
+}

+ 1 - 1
SBansheeEngine/Source/BsScriptGUILabel.cpp

@@ -52,7 +52,7 @@ namespace BansheeEngine
 			elemStyle = ScriptGUIElementStyle::toNative(style)->getInternalValue();
 
 		GUIContent nativeContent(ScriptGUIContent::getText(content), ScriptGUIContent::getImage(content), ScriptGUIContent::getTooltip(content));
-		GUILabel* guiLabel = GUILabel::create(scriptLayout->getParentArea()->getParentWidget(), nativeContent, options, elemStyle); // TODO - Use proper HString
+		GUILabel* guiLabel = GUILabel::create(scriptLayout->getParentArea()->getParentWidget(), nativeContent, options, elemStyle);
 		GUILayout* nativeLayout = scriptLayout->getInternalValue();
 		nativeLayout->addElement(guiLabel);