HotReloadOptionBase.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using UnityEditor;
  2. namespace SingularityGroup.HotReload.Editor {
  3. /// <summary>
  4. /// An option stored inside the current Unity project.
  5. /// </summary>
  6. internal abstract class ProjectOptionBase : IOption, ISerializedProjectOption {
  7. public abstract string ShortSummary { get; }
  8. public abstract string Summary { get; }
  9. public virtual bool GetValue(SerializedObject so) {
  10. return so.FindProperty(ObjectPropertyName).boolValue;
  11. }
  12. protected SerializedProperty GetProperty(SerializedObject so) {
  13. return so.FindProperty(ObjectPropertyName);
  14. }
  15. public virtual void SetValue(SerializedObject so, bool value) {
  16. so.FindProperty(ObjectPropertyName).boolValue = value;
  17. }
  18. public virtual void InnerOnGUI(SerializedObject so) { }
  19. public abstract string ObjectPropertyName { get; }
  20. /// <remarks>
  21. /// Override this if your option is not needed for on-device Hot Reload to work.<br/>
  22. /// (by default, a project option must be true for Hot Reload to work)
  23. /// </remarks>
  24. public virtual bool IsRequiredForBuild() {
  25. return true;
  26. }
  27. }
  28. /// <summary>
  29. /// An option that is stored on the user's computer (shared between Unity projects).
  30. /// </summary>
  31. internal abstract class ComputerOptionBase : IOption {
  32. public abstract string ShortSummary { get; }
  33. public abstract string Summary { get; }
  34. public abstract bool GetValue();
  35. /// Uses <see cref="HotReloadPrefs"/> for storing the value on the user's computer.
  36. public virtual void SetValue(bool value) { }
  37. public bool GetValue(SerializedObject so) => GetValue();
  38. public virtual void SetValue(SerializedObject so, bool value) => SetValue(value);
  39. void IOption.InnerOnGUI(SerializedObject so) {
  40. InnerOnGUI();
  41. }
  42. public virtual void InnerOnGUI() { }
  43. }
  44. }