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);
        }
Exemplo n.º 2
0
        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);
        }