private void OnEnable() { // Get target m_target = (AzureTimeController)target; m_target.UpdateCalendar(); m_dateButtonLabel = m_target.GetDateString(); m_dayOfWeekLabel = m_target.GetDayOfWeekString(); // Find the serialized properties m_timeSystem = serializedObject.FindProperty("timeSystem"); m_timeDirection = serializedObject.FindProperty("timeDirection"); m_repeatMode = serializedObject.FindProperty("repeatMode"); m_timeline = serializedObject.FindProperty("timeline"); m_latitude = serializedObject.FindProperty("latitude"); m_longitude = serializedObject.FindProperty("longitude"); m_utc = serializedObject.FindProperty("utc"); m_dayLength = serializedObject.FindProperty("dayLength"); m_isTimeEvaluatedByCurve = serializedObject.FindProperty("isTimeEvaluatedByCurve"); m_dayLengthCurve = serializedObject.FindProperty("dayLengthCurve"); }
private void OnEnable() { // Get target m_target = (AzureTimeController)target; m_target.UpdateCalendar(); // Find the serialized properties m_sunTransform = serializedObject.FindProperty("m_sunTransform"); m_moonTransform = serializedObject.FindProperty("m_moonTransform"); m_directionalLight = serializedObject.FindProperty("m_directionalLight"); m_followTarget = serializedObject.FindProperty("m_followTarget"); m_timeSystem = serializedObject.FindProperty("m_timeSystem"); m_timeDirection = serializedObject.FindProperty("m_timeDirection"); m_dateLoop = serializedObject.FindProperty("m_dateLoop"); m_timeline = serializedObject.FindProperty("m_timeline"); m_hour = serializedObject.FindProperty("m_hour"); m_minute = serializedObject.FindProperty("m_minute"); m_day = serializedObject.FindProperty("m_day"); m_month = serializedObject.FindProperty("m_month"); m_year = serializedObject.FindProperty("m_year"); m_selectedCalendarDay = serializedObject.FindProperty("m_selectedCalendarDay"); m_latitude = serializedObject.FindProperty("m_latitude"); m_longitude = serializedObject.FindProperty("m_longitude"); m_utc = serializedObject.FindProperty("m_utc"); m_dayLength = serializedObject.FindProperty("m_dayLength"); m_minLightAltitude = serializedObject.FindProperty("m_minLightAltitude"); m_isTimeEvaluatedByCurve = serializedObject.FindProperty("m_isTimeEvaluatedByCurve"); m_dayLengthCurve = serializedObject.FindProperty("m_dayLengthCurve"); m_celestialBodiesList = serializedObject.FindProperty("m_celestialBodiesList"); m_onMinuteChange = serializedObject.FindProperty("m_onMinuteChange"); m_onHourChange = serializedObject.FindProperty("m_onHourChange"); m_onDayChange = serializedObject.FindProperty("m_onDayChange"); m_customEventScanMode = serializedObject.FindProperty("m_customEventScanMode"); m_customEventList = serializedObject.FindProperty("m_customEventList"); m_dayNumberList = serializedObject.FindProperty("m_dayNumberList"); // Create celestial body list m_reorderableCelestialBodiesList = new ReorderableList(serializedObject, m_celestialBodiesList, true, true, true, true) { drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => { rect.y += 2; float half = rect.width / 2; Rect fieldRect = new Rect(rect.x, rect.y, half, EditorGUIUtility.singleLineHeight); var element = m_celestialBodiesList.GetArrayElementAtIndex(index); var transform = element.FindPropertyRelative("transform"); var type = element.FindPropertyRelative("type"); // Celestial body transform EditorGUI.PropertyField(fieldRect, transform, GUIContent.none); // Celestial body type fieldRect = new Rect(rect.x + half + 5, rect.y, half - 5, EditorGUIUtility.singleLineHeight); EditorGUI.PropertyField(fieldRect, type, GUIContent.none); }, drawHeaderCallback = (Rect rect) => { EditorGUI.LabelField(rect, "Celestial Bodies", EditorStyles.boldLabel); }, drawElementBackgroundCallback = (rect, index, active, focused) => { if (active) { GUI.Box(new Rect(rect.x + 2, rect.y, rect.width - 4, rect.height + 1), "", "selectionRect"); } } }; // Create custom event list m_reorderableCeustomEventList = new ReorderableList(serializedObject, m_customEventList, true, true, true, true) { drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => { rect.y += 2; var height = EditorGUIUtility.singleLineHeight; var element = m_customEventList.GetArrayElementAtIndex(index); element.isExpanded = EditorGUI.BeginFoldoutHeaderGroup(new Rect(rect.x + 13, rect.y, rect.width - 17, height), element.isExpanded, "Event " + index.ToString()); if (element.isExpanded) { // Date settings rect.y += height + 6; var month = element.FindPropertyRelative("month"); var day = element.FindPropertyRelative("day"); var year = element.FindPropertyRelative("year"); var hour = element.FindPropertyRelative("hour"); var minute = element.FindPropertyRelative("minute"); m_eventDateSelector[0] = month.intValue; m_eventDateSelector[1] = day.intValue; m_eventDateSelector[2] = year.intValue; EditorGUI.MultiIntField(new Rect(rect.x, rect.y, rect.width, height), m_dateSelectorContent, m_eventDateSelector); month.intValue = m_eventDateSelector[0]; day.intValue = m_eventDateSelector[1]; year.intValue = m_eventDateSelector[2]; // Time settings rect.y += height + 4; m_eventTimeSelector[0] = hour.intValue; m_eventTimeSelector[1] = minute.intValue; EditorGUI.MultiIntField(new Rect(rect.x, rect.y, rect.width, height), m_timeSelectorContent, m_eventTimeSelector); hour.intValue = m_eventTimeSelector[0]; minute.intValue = m_eventTimeSelector[1]; // UnityEvent list rect.y += height + 4; EditorGUI.PropertyField(new Rect(rect.x, rect.y, rect.width, height), element.FindPropertyRelative("unityEvent"), new GUIContent("Unity Event", "")); } EditorGUI.EndFoldoutHeaderGroup(); }, drawHeaderCallback = (Rect rect) => { EditorGUI.LabelField(rect, "Custom Events", EditorStyles.boldLabel); }, elementHeightCallback = (int index) => { var element = m_customEventList.GetArrayElementAtIndex(index); var elementHeight = EditorGUI.GetPropertyHeight(element); var margin = EditorGUIUtility.standardVerticalSpacing + 2; if (element.isExpanded) { return(elementHeight - 40); } else { return(elementHeight + margin); } }, drawElementBackgroundCallback = (rect, index, active, focused) => { if (active) { GUI.Box(new Rect(rect.x + 2, rect.y, rect.width - 4, rect.height + 1), "", "selectionRect"); } } }; }