SpriteTextureInspector.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. /** @addtogroup Inspectors
  8. * @{
  9. */
  10. /// <summary>
  11. /// Renders an inspector for the <see cref="SpriteTexture"/> resource.
  12. /// </summary>
  13. [CustomInspector(typeof(SpriteTexture))]
  14. internal class SpriteTextureInspector : Inspector
  15. {
  16. private GUITextureField textureField = new GUITextureField(new LocEdString("Atlas"));
  17. private GUIVector2Field offsetField = new GUIVector2Field(new LocEdString("Offset"));
  18. private GUIVector2Field scaleField = new GUIVector2Field(new LocEdString("Scale"));
  19. /// <inheritdoc/>
  20. protected internal override void Initialize()
  21. {
  22. LoadResource();
  23. SpriteTexture spriteTexture = InspectedObject as SpriteTexture;
  24. if (spriteTexture == null)
  25. return;
  26. textureField.OnChanged += (x) =>
  27. {
  28. Texture texture = Resources.Load<Texture>(x);
  29. spriteTexture.Texture = texture;
  30. EditorApplication.SetDirty(spriteTexture);
  31. };
  32. offsetField.OnChanged += (x) =>
  33. {
  34. spriteTexture.Offset = x;
  35. EditorApplication.SetDirty(spriteTexture);
  36. };
  37. scaleField.OnChanged += (x) =>
  38. {
  39. spriteTexture.Scale = x;
  40. EditorApplication.SetDirty(spriteTexture);
  41. };
  42. Layout.AddElement(textureField);
  43. Layout.AddElement(offsetField);
  44. Layout.AddElement(scaleField);
  45. }
  46. /// <inheritdoc/>
  47. protected internal override InspectableState Refresh()
  48. {
  49. SpriteTexture spriteTexture = InspectedObject as SpriteTexture;
  50. if (spriteTexture == null)
  51. return InspectableState.NotModified;
  52. textureField.Value = spriteTexture.Texture;
  53. offsetField.Value = spriteTexture.Offset;
  54. scaleField.Value = spriteTexture.Scale;
  55. return InspectableState.NotModified;
  56. }
  57. }
  58. /** @} */
  59. }