private void SelectTrigger(StratusTriggerBehaviour trigger) { selectedTriggerable = null; selectedTrigger = trigger; // Instantiate the editor for it, disable drawwing base trigger properties selectedEditor = UnityEditor.Editor.CreateEditor(trigger) as StratusEditor; selectedEditor.backgroundStyle = EditorStyles.helpBox; var baseTriggerProperties = selectedEditor.GetSerializedPropertiesOfType(typeof(StratusTriggerBehaviour)); foreach (var property in baseTriggerProperties) { // We still want to select persistence if (property.name == "persistent") { continue; } selectedEditor.propertyConstraints.Add(property, False); } //Highlighter.Highlight(nameof(TriggerSystem), trigger.GetType().Name); }
private void RemoveTrigger(StratusTriggerBehaviour trigger) { if (selected == trigger) { Deselect(); selectedTrigger = null; } endOfFrameRequests.Add(() => { target.triggers.Remove(trigger); Undo.DestroyObjectImmediate(trigger); }); }
private StratusTriggerSystem.ConnectionStatus GetStatus(StratusTriggerBehaviour trigger) { StratusTriggerSystem.ConnectionStatus status = StratusTriggerSystem.ConnectionStatus.Disconnected; if (selected) { if (selected == trigger) { status = StratusTriggerSystem.ConnectionStatus.Selected; } else if (selectedTriggerable && connectedTriggers.ContainsKey(trigger) && connectedTriggers[trigger]) { status = StratusTriggerSystem.ConnectionStatus.Connected; } } if (!IsConnected(trigger) && selected != trigger) { status = StratusTriggerSystem.ConnectionStatus.Disjoint; } return(status); }
private void SetTriggerContextMenu(StratusTriggerBehaviour trigger, GenericMenu menu) { // Connect if (selectedTriggerable) { if (IsConnected(trigger, selectedTriggerable)) { menu.AddItem(new GUIContent($"Disconnect from {selectedTriggerable.GetType().Name}"), false, () => Disconnect(trigger, selectedTriggerable)); } else { menu.AddItem(new GUIContent($"Connect to {selectedTriggerable.GetType().Name}"), false, () => Connect(trigger, selectedTriggerable)); } menu.AddSeparator(""); } menu.AddItem(new GUIContent("Disconnnect Triggerables"), false, () => { trigger.targets.Clear(); UpdateConnections(); }); }
private void DrawTrigger(StratusTriggerBehaviour trigger) { StratusTriggerSystem.ConnectionStatus status = StratusTriggerSystem.ConnectionStatus.Disconnected; if (selected) { if (selected == trigger) { status = StratusTriggerSystem.ConnectionStatus.Selected; } else if (selectedTriggerable && connectedTriggers.ContainsKey(trigger) && connectedTriggers[trigger]) { status = StratusTriggerSystem.ConnectionStatus.Connected; } } if (!IsConnected(trigger) && selected != trigger) { status = StratusTriggerSystem.ConnectionStatus.Disjoint; } Color color = GetColor(trigger, status); Draw(trigger, color, SelectTrigger, RemoveTrigger, SetTriggerContextMenu); }
private bool IsConnected(StratusTriggerBehaviour trigger) => StratusTriggerSystem.IsConnected(trigger);
private bool IsConnected(StratusTriggerBehaviour trigger, StratusTriggerable triggerable) => StratusTriggerSystem.IsConnected(trigger, triggerable);
private void Disconnect(StratusTriggerBehaviour trigger, StratusTriggerable triggerable) { StratusDebug.Log($"Disconnecting {trigger.GetType().Name} and {triggerable.GetType().Name}"); trigger.targets.Remove(triggerable); UpdateConnections(); }