public static void AddCriteriaModel(this ICriteriaModelContainer criteriaModelContainer) { // Each new criteria model added is guaranteed a unique name, no check needed before action Undo.RegisterCompleteObjectUndo(criteriaModelContainer.SerializableAsset, "Add Criteria Model"); var criteriaModel = ScriptableObject.CreateInstance <CriteriaModel>(); criteriaModel.UniqueNameProvider = criteriaModelContainer; criteriaModel.ResetName(); criteriaModel.GraphModel = criteriaModelContainer.GraphModel; criteriaModelContainer.AddCriteriaModelNoUndo(criteriaModel); Utility.SaveAssetIntoObject(criteriaModel, (Object)((VSGraphModel)criteriaModelContainer.GraphModel).AssetModel); }
public static void AddCriteriaModel(this ICriteriaModelContainer criteriaModelContainer) { // Each new criteria model added is guaranteed a unique name, no check needed before action Undo.RegisterCompleteObjectUndo(criteriaModelContainer.SerializableAsset, "Add Criteria Model"); var criteriaModel = new CriteriaModel(); criteriaModel.UniqueNameProvider = criteriaModelContainer; criteriaModel.AssignNewGuid(); criteriaModel.ResetName(); criteriaModel.GraphModel = criteriaModelContainer.GraphModel; criteriaModelContainer.AddCriteriaModelNoUndo(criteriaModel); EditorUtility.SetDirty((Object)(criteriaModelContainer.GraphModel).AssetModel); }
public static CriteriaModel DuplicateCriteriaModel(this ICriteriaModelContainer criteriaModelContainer, CriteriaModel criteriaModel, ICriteriaModelContainer targetCriteriaModelContainer, CriteriaModel targetCriteriaModel, bool insertAtEnd) { Assert.AreNotEqual(criteriaModelContainer, targetCriteriaModelContainer); var index = criteriaModelContainer.IndexOfCriteriaModel(criteriaModel); if (index == -1) { throw new ArgumentOutOfRangeException(criteriaModel.ToString()); } Undo.RegisterCompleteObjectUndo(targetCriteriaModelContainer.SerializableAsset, "Duplicate Criteria Model"); CriteriaModel clone = criteriaModel.Clone(); foreach (var criterion in clone.Criteria) { Utility.SaveAssetIntoObject(criterion.Value.NodeAssetReference, (Object)clone.GraphModel.AssetModel); } clone.GraphModel = targetCriteriaModelContainer.GraphModel; clone.UniqueNameProvider = targetCriteriaModelContainer; clone.SetUniqueName(clone.Name); if (insertAtEnd) { targetCriteriaModelContainer.AddCriteriaModelNoUndo(clone); } else { var targetIndex = targetCriteriaModelContainer.IndexOfCriteriaModel(targetCriteriaModel); if (targetIndex == -1) { throw new ArgumentOutOfRangeException(targetCriteriaModel.ToString()); } targetCriteriaModelContainer.InsertCriteriaModelNoUndo(targetIndex, clone); } Utility.SaveAssetIntoObject(clone, (Object)((VSGraphModel)clone.GraphModel).AssetModel); return(clone); }