/// <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(); } }
/// <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); }
/// <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."); }
/// <inheritdoc/> public override void Undo() { targetTrigger.CopyProperties(backupTrigger); Object.Destroy(backupTrigger); ScenarioManager.Instance.logPanel.EnqueueInfo("Undo applied to rollback copying a trigger."); }