Bladeren bron

Sprite texture inspector

BearishSun 10 jaren geleden
bovenliggende
commit
c25c9d3832
3 gewijzigde bestanden met toevoegingen van 76 en 1 verwijderingen
  1. 74 0
      MBansheeEditor/Inspectors/SpriteTextureInspector.cs
  2. 1 0
      MBansheeEditor/MBansheeEditor.csproj
  3. 1 1
      TODO.txt

+ 74 - 0
MBansheeEditor/Inspectors/SpriteTextureInspector.cs

@@ -0,0 +1,74 @@
+using System.Collections.Generic;
+using BansheeEngine;
+
+namespace BansheeEditor
+{
+    /// <summary>
+    /// Renders an inspector for the <see cref="SpriteTexture"/> resource.
+    /// </summary>
+    [CustomInspector(typeof(SpriteTexture))]
+    internal class SpriteTextureInspector : Inspector
+    {
+        private GUITextureField textureField = new GUITextureField(new LocEdString("Texture"));
+        private GUIVector2Field offsetField = new GUIVector2Field(new LocEdString("Offset"));
+        private GUIVector2Field scaleField = new GUIVector2Field(new LocEdString("Scale"));
+        private bool isInitialized;
+
+        /// <inheritdoc/>
+        internal override bool Refresh()
+        {
+            SpriteTexture spriteTexture = referencedObject as SpriteTexture;
+            if (spriteTexture == null)
+                return false;
+
+            if (!isInitialized)
+            {
+                textureField.OnChanged += (x) =>
+                {
+                    spriteTexture.Texture = x as Texture2D;
+                    EditorApplication.SetDirty(spriteTexture);
+                };
+
+                offsetField.OnChanged += (x) =>
+                {
+                    spriteTexture.Offset = x;
+                    EditorApplication.SetDirty(spriteTexture);
+                };
+
+                scaleField.OnChanged += (x) =>
+                {
+                    spriteTexture.Scale = x;
+                    EditorApplication.SetDirty(spriteTexture);
+                };
+
+                layout.AddElement(textureField);
+                layout.AddElement(offsetField);
+                layout.AddElement(scaleField);
+
+                isInitialized = true;
+            }
+
+            bool anythingModified = false;
+
+            if (textureField.Value != spriteTexture.Texture)
+            {
+                textureField.Value = spriteTexture.Texture;
+                anythingModified = true;
+            }
+
+            if (offsetField.Value != spriteTexture.Offset)
+            {
+                offsetField.Value = spriteTexture.Offset;
+                anythingModified = true;
+            }
+
+            if (scaleField.Value != spriteTexture.Scale)
+            {
+                scaleField.Value = spriteTexture.Scale;
+                anythingModified = true;
+            }
+
+            return anythingModified;
+        }
+    }
+}

+ 1 - 0
MBansheeEditor/MBansheeEditor.csproj

@@ -63,6 +63,7 @@
     <Compile Include="Inspectors\PlainTextInspector.cs" />
     <Compile Include="Inspectors\PrefabInspector.cs" />
     <Compile Include="Inspectors\ScriptCodeInspector.cs" />
+    <Compile Include="Inspectors\SpriteTextureInspector.cs" />
     <Compile Include="Inspectors\Texture2DInspector.cs" />
     <Compile Include="Inspector\InspectorUtility.cs" />
     <Compile Include="Library\LibraryGUIContent.cs" />

+ 1 - 1
TODO.txt

@@ -57,7 +57,7 @@ Ribek use:
  - When hiding a component in inspector, it doesn't immediately reposition the components below it
  - Having en empty component in inspector shows a small empty background, it shouldn't show anything
  - Component inspector for Renderable
- - Resource inspectors for: Font, Shader, Script Code, Plain Text, Sprite Texture, GUISkin, StringTable, Prefab (just something basic for now)
+ - Resource inspectors for: Shader, Sprite Texture, GUISkin, StringTable
  - Test release mode
  - I'm missing array & object management icons (Create, Clone, Delete, Resize, Move up, Move down)