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();
            });
        }
Esempio n. 5
0
        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();
 }