本文整理汇总了C#中FlatRedBall.Glue.SaveClasses.NamedObjectSave.RemoveSelfFromNamedObjectList方法的典型用法代码示例。如果您正苦于以下问题:C# NamedObjectSave.RemoveSelfFromNamedObjectList方法的具体用法?C# NamedObjectSave.RemoveSelfFromNamedObjectList怎么用?C# NamedObjectSave.RemoveSelfFromNamedObjectList使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FlatRedBall.Glue.SaveClasses.NamedObjectSave
的用法示例。
在下文中一共展示了NamedObjectSave.RemoveSelfFromNamedObjectList方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RemoveNamedObject
public static void RemoveNamedObject(NamedObjectSave namedObjectToRemove, bool performSave, bool updateUi, List<string> additionalFilesToRemove)
{
StringBuilder removalInformation = new StringBuilder();
// The additionalFilesToRemove is included for consistency with other methods. It may be used later
// There are the following things that need to happen:
// 1. Remove the NamedObject from the Glue project (GLUX)
// 2. Remove any variables that use this NamedObject as their source
// 3. Remove the named object from the GUI
// 4. Update the variables for any NamedObjects that use this element containing this NamedObject
// 5. Find any Elements that contain NamedObjects that are DefinedByBase - if so, see if we should remove those or make them not DefinedByBase
// 6. Remove any events that tunnel into this.
IElement element = namedObjectToRemove.GetContainer();
if (element != null)
{
if (!namedObjectToRemove.RemoveSelfFromNamedObjectList(element.NamedObjects))
{
throw new ArgumentException();
}
#region Remove all CustomVariables that reference the removed NamedObject
for (int i = element.CustomVariables.Count - 1; i > -1; i--)
{
CustomVariable variable = element.CustomVariables[i];
if (variable.SourceObject == namedObjectToRemove.InstanceName)
{
removalInformation.AppendLine("Removed variable " + variable.ToString());
element.CustomVariables.RemoveAt(i);
}
}
#endregion
// Remove any events that use this
for (int i = element.Events.Count - 1; i > -1; i--)
{
EventResponseSave ers = element.Events[i];
if (ers.SourceObject == namedObjectToRemove.InstanceName)
{
removalInformation.AppendLine("Removed event " + ers.ToString());
element.Events.RemoveAt(i);
}
}
// Remove any objects that use this as a layer
for (int i = 0; i < element.NamedObjects.Count; i++)
{
if (element.NamedObjects[i].LayerOn == namedObjectToRemove.InstanceName)
{
removalInformation.AppendLine("Removed the following object from the deleted Layer: " + element.NamedObjects[i].ToString());
element.NamedObjects[i].LayerOn = null;
}
}
element.RefreshStatesToCustomVariables();
#region Ask the user what to do with all NamedObjects that are DefinedByBase
List<IElement> derivedElements = new List<IElement>();
if (element is EntitySave)
{
derivedElements.AddRange(ObjectFinder.Self.GetAllEntitiesThatInheritFrom(element as EntitySave));
}
else
{
derivedElements.AddRange(ObjectFinder.Self.GetAllScreensThatInheritFrom(element as ScreenSave));
}
foreach (IElement derivedElement in derivedElements)
{
// At this point, namedObjectToRemove is already removed from the current Element, so this will only
// return NamedObjects that exist in the derived.
NamedObjectSave derivedNamedObject = derivedElement.GetNamedObjectRecursively(namedObjectToRemove.InstanceName);
if (derivedNamedObject != null && derivedNamedObject != namedObjectToRemove && derivedNamedObject.DefinedByBase)
{
MultiButtonMessageBox mbmb = new MultiButtonMessageBox();
mbmb.MessageText = "What would you like to do with the object " + derivedNamedObject.ToString();
mbmb.AddButton("Keep it", DialogResult.OK);
mbmb.AddButton("Delete it", DialogResult.Cancel);
DialogResult result = mbmb.ShowDialog(MainGlueWindow.Self);
if (result == DialogResult.OK)
{
// Keep it
derivedNamedObject.DefinedByBase = false;
BaseElementTreeNode treeNode = GlueState.Self.Find.ElementTreeNode(derivedElement);
if (updateUi)
{
treeNode.UpdateReferencedTreeNodes();
//.........这里部分代码省略.........