Пример #1
0
        /// <summary>
        /// Paste all the effectors from the copied trigger to this
        /// </summary>
        public void PasteEffectors()
        {
            if (copiedTrigger == null)
            {
                return;
            }
            if (copiedTrigger.TargetAgentType != selectedTrigger.TargetAgentType)
            {
                ScenarioManager.Instance.logPanel.EnqueueWarning("Cannot paste trigger effectors. Copied trigger targets different agent type.");
                return;
            }

            var pasteAction = new Action(() =>
            {
                ScenarioManager.Instance.GetExtension <ScenarioUndoManager>()
                .RegisterRecord(new UndoTriggerCopy(selectedTrigger));
                selectedTrigger.CopyProperties(copiedTrigger);
            });

            //If there are any effectors added ask for replacing
            if (selectedTrigger.Trigger.Effectors.Count > 0)
            {
                var popupData = new ConfirmationPopup.PopupData
                {
                    Text = "Replace currently added effectors with the copied ones?"
                };
                popupData.ConfirmCallback += pasteAction;
                ScenarioManager.Instance.confirmationPopup.Show(popupData);
            }
            else
            {
                pasteAction.Invoke();
            }
        }
Пример #2
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="targetTrigger">Scenario trigger that was changed</param>
        public UndoTriggerCopy(ScenarioTrigger targetTrigger)
        {
            this.targetTrigger = targetTrigger;
            var gameObject =
                Object.Instantiate(targetTrigger.gameObject, ScenarioManager.Instance.GetExtension <ScenarioUndoManager>().transform);

            backupTrigger = gameObject.GetComponent <ScenarioTrigger>();
            backupTrigger.CopyProperties(targetTrigger);
        }
Пример #3
0
        /// <summary>
        /// Copies selected trigger
        /// </summary>
        public void CopyEffectors()
        {
            if (copiedTrigger != null)
            {
                Destroy(copiedTrigger.gameObject);
            }
            var clonedTriggerObject = Instantiate(selectedTrigger.gameObject,
                                                  ScenarioManager.Instance.GetExtension <ScenarioWaypointsManager>().transform);

            clonedTriggerObject.SetActive(false);
            copiedTrigger = clonedTriggerObject.GetComponent <ScenarioTrigger>();
            copiedTrigger.CopyProperties(selectedTrigger);
            ScenarioManager.Instance.logPanel.EnqueueInfo(
                $"Copied {selectedTrigger.Trigger.Effectors.Count} trigger effectors.");
        }
Пример #4
0
 /// <inheritdoc/>
 public override void Undo()
 {
     targetTrigger.CopyProperties(backupTrigger);
     Object.Destroy(backupTrigger);
     ScenarioManager.Instance.logPanel.EnqueueInfo("Undo applied to rollback copying a trigger.");
 }