SpriteTextureInspector.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. using System.Collections.Generic;
  4. using BansheeEngine;
  5. namespace BansheeEditor
  6. {
  7. /// <summary>
  8. /// Renders an inspector for the <see cref="SpriteTexture"/> resource.
  9. /// </summary>
  10. [CustomInspector(typeof(SpriteTexture))]
  11. internal class SpriteTextureInspector : Inspector
  12. {
  13. private GUITextureField textureField = new GUITextureField(new LocEdString("Atlas"));
  14. private GUIVector2Field offsetField = new GUIVector2Field(new LocEdString("Offset"));
  15. private GUIVector2Field scaleField = new GUIVector2Field(new LocEdString("Scale"));
  16. /// <inheritdoc/>
  17. protected internal override void Initialize()
  18. {
  19. SpriteTexture spriteTexture = InspectedObject as SpriteTexture;
  20. if (spriteTexture == null)
  21. return;
  22. textureField.OnChanged += (x) =>
  23. {
  24. Texture2D texture = Resources.Load<Texture2D>(x);
  25. spriteTexture.Texture = texture;
  26. EditorApplication.SetDirty(spriteTexture);
  27. };
  28. offsetField.OnChanged += (x) =>
  29. {
  30. spriteTexture.Offset = x;
  31. EditorApplication.SetDirty(spriteTexture);
  32. };
  33. scaleField.OnChanged += (x) =>
  34. {
  35. spriteTexture.Scale = x;
  36. EditorApplication.SetDirty(spriteTexture);
  37. };
  38. Layout.AddElement(textureField);
  39. Layout.AddElement(offsetField);
  40. Layout.AddElement(scaleField);
  41. }
  42. /// <inheritdoc/>
  43. protected internal override InspectableState Refresh()
  44. {
  45. SpriteTexture spriteTexture = InspectedObject as SpriteTexture;
  46. if (spriteTexture == null)
  47. return InspectableState.NotModified;
  48. textureField.Value = spriteTexture.Texture;
  49. offsetField.Value = spriteTexture.Offset;
  50. scaleField.Value = spriteTexture.Scale;
  51. return InspectableState.NotModified;
  52. }
  53. }
  54. }