2
0
Эх сурвалжийг харах

Managed GUILabel::setContent

Marko Pintera 12 жил өмнө
parent
commit
8f8a036520

+ 2 - 1
MBansheeEditor/ProjectSelectWindow.cs

@@ -12,7 +12,8 @@ namespace BansheeEditor
         public ProjectSelectWindow()
             :base(0, 0, 200, 200)
         {
-            GUI.main.AddLabel("Test test");
+            GUILabel label = GUI.main.AddLabel("Test test");
+            label.SetContent("Test2");
         }
     }
 }

+ 10 - 1
MBansheeEngine/GUILabel.cs

@@ -1,4 +1,5 @@
-using System.Runtime.CompilerServices;
+using System;
+using System.Runtime.CompilerServices;
 
 namespace BansheeEngine
 {
@@ -9,7 +10,15 @@ namespace BansheeEngine
             Internal_CreateInstance(this, parentLayout, content, style, options);
         }
 
+        public void SetContent(GUIContent content)
+        {
+            Internal_SetContent(mCachedPtr, content);
+        }
+
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern void Internal_CreateInstance(GUILabel instance, GUILayout layout, GUIContent content, GUIElementStyle style, GUIOption[] options);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern void Internal_SetContent(IntPtr nativeInstance, GUIContent content);
     }
 }

+ 1 - 0
SBansheeEngine/Include/BsScriptGUILabel.h

@@ -16,6 +16,7 @@ namespace BansheeEngine
 	private:
 		static void internal_createInstance(MonoObject* instance, MonoObject* parentLayout, MonoObject* content, MonoObject* style, MonoArray* guiOptions);
 		static void internal_destroyInstance(ScriptGUILabel* nativeInstance);
+		static void internal_setContent(ScriptGUILabel* nativeInstance, MonoObject* content);
 
 		static void initRuntimeData();
 

+ 7 - 0
SBansheeEngine/Source/BsScriptGUILabel.cpp

@@ -34,6 +34,7 @@ namespace BansheeEngine
 	{
 		metaData.scriptClass->addInternalCall("Internal_CreateInstance", &ScriptGUILabel::internal_createInstance);
 		metaData.scriptClass->addInternalCall("Internal_DestroyInstance", &ScriptGUILabel::internal_destroyInstance);
+		metaData.scriptClass->addInternalCall("Internal_SetContent", &ScriptGUILabel::internal_setContent);
 	}
 
 	void ScriptGUILabel::internal_createInstance(MonoObject* instance, MonoObject* parentLayout, MonoObject* content, MonoObject* style, MonoArray* guiOptions)
@@ -66,4 +67,10 @@ namespace BansheeEngine
 		nativeInstance->destroyInstance();
 		cm_delete(nativeInstance);
 	}
+
+	void ScriptGUILabel::internal_setContent(ScriptGUILabel* nativeInstance, MonoObject* content)
+	{
+		GUIContent nativeContent(ScriptGUIContent::getText(content), ScriptGUIContent::getImage(content), ScriptGUIContent::getTooltip(content));
+		nativeInstance->getInternalValue()->setContent(nativeContent);
+	}
 }