Example #1
0
        protected override void OnSPInspectorGUI()
        {
            this.serializedObject.Update();

            this.DrawPropertyField(EditorHelper.PROP_SCRIPT);

            _toAdd.Clear();
            _toAdd.AddRange(System.Enum.GetValues(typeof(EventTriggerType)).Cast <EventTriggerType>());

            var triggersProp = this.serializedObject.FindProperty(PROP_TRIGGERS);

            for (int i = 0; i < triggersProp.arraySize; i++)
            {
                var prop    = triggersProp.GetArrayElementAtIndex(i);
                var eventId = prop.FindPropertyRelative(PROP_EVENTID).GetEnumValue <EventTriggerType>();
                var label   = EditorHelper.TempContent(eventId.ToString());
                var h       = _drawer.GetPropertyHeight(prop, label);
                var rect    = EditorGUILayout.GetControlRect(true, h);
                _drawer.OnGUI(rect, prop, label);
                _toAdd.Remove(eventId);
            }

            var btnHeight     = EditorGUIUtility.singleLineHeight * 1.5f;
            var btnVerPadding = EditorGUIUtility.singleLineHeight / 2f;
            var btnRect       = EditorGUILayout.GetControlRect(false, btnVerPadding + btnVerPadding + btnHeight);
            var btnWidth      = Mathf.Min(btnRect.width, 200f);
            var btnHorPadding = Mathf.Max(0f, (btnRect.width - btnWidth) / 2f);

            btnRect = new Rect(btnRect.xMin + btnHorPadding, btnRect.yMin + btnVerPadding, btnWidth, btnHeight);
            if (GUI.Button(btnRect, "Add New Event Type"))
            {
                var labels = (from e in _toAdd select e.ToString()).ToArray();

                var menu = new GenericMenu();
                foreach (var e in _toAdd)
                {
                    menu.AddItem(EditorHelper.TempContent(e.ToString()), false, () =>
                    {
                        triggersProp.arraySize++;
                        var el = triggersProp.GetArrayElementAtIndex(triggersProp.arraySize - 1);
                        el.FindPropertyRelative(PROP_EVENTID).SetEnumValue(e);
                        el.FindPropertyRelative(TriggerPropertyDrawer.PROP_TARGETS).arraySize = 0;
                        triggersProp.serializedObject.ApplyModifiedProperties();
                    });
                }
                menu.ShowAsContext();
            }

            this.DrawDefaultInspectorExcept(EditorHelper.PROP_SCRIPT, PROP_TRIGGERS);

            this.serializedObject.ApplyModifiedProperties();
        }
        protected override void OnSPInspectorGUI()
        {
            this.serializedObject.Update();

            this.DrawPropertyField(EditorHelper.PROP_SCRIPT);
            this.DrawPropertyField(PROP_ORDER);
            this.DrawPropertyField(PROP_ACTIVATEON);

            var targetsProp = this.serializedObject.FindProperty(PROP_TARGETS);
            var label       = EditorHelper.TempContent(targetsProp.displayName);
            var area        = EditorGUILayout.GetControlRect(false, _targetsDrawer.GetPropertyHeight(targetsProp, label));

            _targetsDrawer.OnGUI(area, targetsProp, label);

            this.DrawDefaultInspectorExcept(EditorHelper.PROP_SCRIPT, PROP_ORDER, PROP_ACTIVATEON, PROP_TARGETS);


            this.serializedObject.ApplyModifiedProperties();
        }