EnviroTimeModuleEditor.cs 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor;
  5. namespace Enviro
  6. {
  7. [CustomEditor(typeof(EnviroTimeModule))]
  8. public class EnviroTimeModuleEditor : EnviroModuleEditor
  9. {
  10. private EnviroTimeModule myTarget;
  11. //Properties
  12. private SerializedProperty simulate,latitude,longitude,utcOffset,cycleLengthInMinutes,dayLengthModifier,nightLengthModifier;
  13. //On Enable
  14. public override void OnEnable()
  15. {
  16. if(!target)
  17. return;
  18. myTarget = (EnviroTimeModule)target;
  19. serializedObj = new SerializedObject(myTarget);
  20. preset = serializedObj.FindProperty("preset");
  21. simulate = serializedObj.FindProperty("Settings.simulate");
  22. latitude = serializedObj.FindProperty("Settings.latitude");
  23. longitude = serializedObj.FindProperty("Settings.longitude");
  24. utcOffset = serializedObj.FindProperty("Settings.utcOffset");
  25. cycleLengthInMinutes = serializedObj.FindProperty("Settings.cycleLengthInMinutes");
  26. dayLengthModifier = serializedObj.FindProperty("Settings.dayLengthModifier");
  27. nightLengthModifier = serializedObj.FindProperty("Settings.nightLengthModifier");
  28. }
  29. public override void OnInspectorGUI()
  30. {
  31. if(!target)
  32. return;
  33. base.OnInspectorGUI();
  34. GUI.backgroundColor = baseModuleColor;
  35. GUILayout.BeginVertical("",boxStyleModified);
  36. GUI.backgroundColor = Color.white;
  37. EditorGUILayout.BeginHorizontal();
  38. myTarget.showModuleInspector = GUILayout.Toggle(myTarget.showModuleInspector, "Time", headerFoldout);
  39. GUILayout.FlexibleSpace();
  40. if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
  41. {
  42. EnviroManager.instance.RemoveModule(EnviroManager.ModuleType.Time);
  43. DestroyImmediate(this);
  44. return;
  45. }
  46. EditorGUILayout.EndHorizontal();
  47. if(myTarget.showModuleInspector)
  48. {
  49. //EditorGUILayout.LabelField("This module will control the time of day.");
  50. serializedObj.UpdateIfRequiredOrScript ();
  51. EditorGUI.BeginChangeCheck();
  52. GUI.backgroundColor = categoryModuleColor;
  53. GUILayout.BeginVertical("",boxStyleModified);
  54. GUI.backgroundColor = Color.white;
  55. myTarget.showTimeControls = GUILayout.Toggle(myTarget.showTimeControls, "Time Controls", headerFoldout);
  56. if(myTarget.showTimeControls)
  57. {
  58. GUILayout.Space(10);
  59. EditorGUILayout.LabelField("Time", headerStyle);
  60. myTarget.seconds = EditorGUILayout.IntSlider("Second", myTarget.seconds,0,60);
  61. myTarget.minutes = EditorGUILayout.IntSlider("Minute", myTarget.minutes,0,60);
  62. myTarget.hours = EditorGUILayout.IntSlider("Hour", myTarget.hours,0,24);
  63. GUILayout.Space(10);
  64. EditorGUILayout.LabelField("Date", headerStyle);
  65. myTarget.days = EditorGUILayout.IntSlider("Day", myTarget.days,1,32);
  66. myTarget.months = EditorGUILayout.IntSlider("Month", myTarget.months,1,13);
  67. myTarget.years = EditorGUILayout.IntSlider("Year", myTarget.years,1,3000);
  68. GUILayout.Space(10);
  69. EditorGUILayout.LabelField("Progression", headerStyle);
  70. EditorGUILayout.PropertyField(simulate);
  71. EditorGUILayout.PropertyField(cycleLengthInMinutes);
  72. EditorGUILayout.PropertyField(dayLengthModifier);
  73. EditorGUILayout.PropertyField(nightLengthModifier);
  74. Repaint();
  75. }
  76. GUILayout.EndVertical();
  77. if(myTarget.showTimeControls)
  78. GUILayout.Space(10);
  79. GUI.backgroundColor = categoryModuleColor;
  80. GUILayout.BeginVertical("",boxStyleModified);
  81. GUI.backgroundColor = Color.white;
  82. myTarget.showLocationControls = GUILayout.Toggle(myTarget.showLocationControls, "Location Controls", headerFoldout);
  83. if(myTarget.showLocationControls)
  84. {
  85. EditorGUILayout.PropertyField(longitude);
  86. EditorGUILayout.PropertyField(latitude);
  87. EditorGUILayout.PropertyField(utcOffset);
  88. }
  89. GUILayout.EndVertical();
  90. if(myTarget.showLocationControls)
  91. GUILayout.Space(10);
  92. if(!Application.isPlaying)
  93. myTarget.UpdateModule();
  94. /// Save Load
  95. GUI.backgroundColor = categoryModuleColor;
  96. GUILayout.BeginVertical("",boxStyleModified);
  97. GUI.backgroundColor = Color.white;
  98. myTarget.showSaveLoad = GUILayout.Toggle(myTarget.showSaveLoad, "Save/Load", headerFoldout);
  99. if(myTarget.showSaveLoad)
  100. {
  101. EditorGUILayout.PropertyField(preset);
  102. GUILayout.BeginHorizontal("",wrapStyle);
  103. if(myTarget.preset != null)
  104. {
  105. if(GUILayout.Button("Load"))
  106. {
  107. myTarget.LoadModuleValues();
  108. }
  109. if(GUILayout.Button("Save"))
  110. {
  111. myTarget.SaveModuleValues(myTarget.preset);
  112. }
  113. }
  114. if(GUILayout.Button("Save As New"))
  115. {
  116. myTarget.SaveModuleValues();
  117. }
  118. GUILayout.EndHorizontal();
  119. }
  120. GUILayout.EndVertical();
  121. /// Save Load End
  122. if(myTarget.showSaveLoad)
  123. GUILayout.Space(10);
  124. ApplyChanges ();
  125. }
  126. GUILayout.EndVertical();
  127. if(myTarget.showModuleInspector)
  128. GUILayout.Space(20);
  129. }
  130. }
  131. }