Exemplo n.º 1
0
        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");
        }
Exemplo n.º 2
0
        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");
                    }
                }
            };
        }