InspectableFieldStyle.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. using System;
  4. using System.Collections.Generic;
  5. using BansheeEditor.Windows.Inspector.Style;
  6. using BansheeEngine;
  7. namespace BansheeEditor
  8. {
  9. /// <summary>
  10. /// Contains style information about inspectable items
  11. /// </summary>
  12. public class InspectableFieldStyle
  13. {
  14. /// <summary>
  15. /// Creates all the relevant style information for a SerializableField
  16. /// </summary>
  17. /// <param name="field">A SerializableField</param>
  18. /// <returns>Style information</returns>
  19. public static InspectableFieldStyle[] Create(SerializableField field)
  20. {
  21. List<InspectableFieldStyle> styles = new List<InspectableFieldStyle>();
  22. if (field.Range)
  23. styles.Add(new InspectableFieldRangeStyle(field.RangeMinimum, field.RangeMaximum));
  24. if (field.Step != default(float))
  25. styles.Add(new InspectableFieldStepStyle(field.Step));
  26. return styles.ToArray();
  27. }
  28. /// <summary>
  29. /// Finds a specific type of style information
  30. /// </summary>
  31. /// <typeparam name="T">The specified type</typeparam>
  32. /// <param name="styleInfo">The array to search into</param>
  33. /// <returns>The desired style or default</returns>
  34. public static T FindStyle<T>(InspectableFieldStyle[] styleInfo) where T : InspectableFieldStyle
  35. {
  36. for (int i = 0; i < styleInfo.Length; i++)
  37. {
  38. if (styleInfo[i].GetType() == typeof(T))
  39. return (T)styleInfo[i];
  40. }
  41. return default(T);
  42. }
  43. }
  44. }