Marko Pintera 11 лет назад
Родитель
Сommit
4d142204ef

+ 5 - 2
BansheeEditor/Source/BsGUIFoldout.cpp

@@ -96,10 +96,13 @@ namespace BansheeEngine
 		}
 
 		{
-			Vector2I offset(x, y);
+			Vector2I optimalSize = mToggle->_getOptimalSize();
+			INT32 yOffset = Math::roundToInt((height - optimalSize.y) * 0.5f);
+
+			Vector2I offset(x, y + yOffset);
 			mBackground->_setOffset(offset);
 			mBackground->_setWidth(mWidth);
-			mBackground->_setHeight(mHeight);
+			mBackground->_setHeight(optimalSize.y);
 			mBackground->_setAreaDepth(areaDepth + 1);
 			mBackground->_setWidgetDepth(widgetDepth);
 

+ 1 - 0
BansheeEngine/Include/BsPrerequisites.h

@@ -30,6 +30,7 @@ namespace BansheeEngine
 	// GUI
 	class GUIManager;
 	class GUIWidget;
+	class GUIElementBase;
 	class GUIElement;
 	class GUILabel;
 	class GUIButton;

+ 10 - 1
MBansheeEditor/Inspector/InspectorWindow.cs

@@ -13,6 +13,7 @@ namespace BansheeEditor
         }
 
         private List<InspectorData> inspectorData = new List<InspectorData>();
+        private GUILayout inspectorLayout;
 
         internal void SetObjectToInspect(SceneObject so)
         {
@@ -20,13 +21,15 @@ namespace BansheeEditor
 
             // TODO - Create SceneObject gui elements (name + transform)
 
+            inspectorLayout = GUI.layout.AddLayoutY();
+
             Component[] allComponents = so.GetComponents();
             for (int i = 0; i < allComponents.Length; i++)
             {
                 InspectorData data = new InspectorData();
 
                 data.foldout = new GUIFoldout(allComponents[i].GetType().Name);
-                GUI.layout.AddElement(data.foldout);
+                inspectorLayout.AddElement(data.foldout);
 
                 data.inspector = GetInspector(allComponents[i].GetType());
                 data.inspector.Initialize(CreatePanel(0, 0, 0, 0), allComponents[i]);
@@ -66,6 +69,12 @@ namespace BansheeEditor
             }
 
             inspectorData.Clear();
+
+            if (inspectorLayout != null)
+            {
+                inspectorLayout.Destroy();
+                inspectorLayout = null;
+            }
         }
 
         protected override void WindowResized(int width, int height)

+ 1 - 1
MBansheeEngine/GUI/GUIElement.cs

@@ -9,7 +9,7 @@ namespace BansheeEngine
         protected GUILayout parent;
         private bool isDestroyed;
 
-        internal void SetParent(GUILayout layout)
+        internal virtual void SetParent(GUILayout layout)
         {
             if (parent != null)
                 parent.Remove(this);

+ 11 - 0
MBansheeEngine/GUI/GUILayout.cs

@@ -25,6 +25,17 @@ namespace BansheeEngine
                 element.SetParent(this);
         }
 
+        internal override void SetParent(GUILayout layout)
+        {
+            if (parent != null)
+                parent.Remove(this);
+
+            parent = layout;
+
+            if (parent != null)
+                parent.children.Add(this);
+        }
+
         public void AddElement(GUIElement element)
         {
             if (element.IsStatic())

+ 1 - 1
SBansheeEngine/Include/BsScriptGUIElement.h

@@ -11,7 +11,7 @@ namespace BansheeEngine
 		ScriptGUIElementBase(GUIElement* element);
 		virtual ~ScriptGUIElementBase() {}
 
-		GUIElement* getGUIElement() const { return mElement; }
+		GUIElement* getGUIElement() const { return (GUIElement*)mElement; }
 
 		virtual void destroy();