public void Add(ExposedProperty exposed) { exposed.Container = this; if (!Properties.Contains(exposed)) { Properties.Add(exposed); } }
static public void OnAdd(PEExposedPropertiesEditor editor, int parentId = 0) { var lr = GUILayoutUtility.GetLastRect(); if (lr.min == Vector2.zero) { lr.center = Event.current.mousePosition; } lr.center = GUIUtility.GUIToScreenPoint(lr.center); var menu = new GenericMenu(); menu.AddItem(new GUIContent("Property"), false, () => { PEPropertyPickerWindow.OnPropertyPickerDelegate onChanged = property => { var newProperty = new ExposedProperty(); newProperty.Label = property.GetDisplayName(); newProperty.PropertyPath = property.propertyPath; newProperty.Target = property.serializedObject.targetObject; newProperty.ParentId = parentId; editor.targets[0].Properties.Add(newProperty); newProperty.Order = editor.targets[0].Properties.OrderedItems.Any() ? editor.targets[0].Properties.OrderedItems.Max(i => i.Order + 10) : 0; editor.Build(true); Event.current.Use(); Resources.FindObjectsOfTypeAll <Editor>()[0].Repaint(); GUIUtility.ExitGUI(); }; EditorApplication.delayCall += () => PEPropertyPickerWindow.Show(editor.targets[0].gameObject, onChanged, lr); }); menu.AddItem(new GUIContent("Group"), false, () => EditorApplication.delayCall += () => { editor.targets[0].Properties.Add(new ExposedPropertyGroup { Label = "Property Group", ParentId = parentId, Order = editor.targets[0].Properties.OrderedItems.Any() ? editor.targets[0].Properties.OrderedItems.Max(i => i.Order + 10) : 0 }); editor.Build(true); }); menu.ShowAsContext(); }