/// <summary> /// Register snippet insert as sibling patch /// </summary> /// <param name="movie"></param> /// <param name="xpath"></param> /// <param name="patch"></param> public void RegisterPatch(string movie, string?xpath, PrefabExtensionInsertAsSiblingPatch patch) { RegisterPatch(movie, xpath, node => { var ownerDocument = node is XmlDocument xmlDocument ? xmlDocument : node.OwnerDocument !; if (node.ParentNode == null) { return; } var extensionNode = patch.GetPrefabExtension().DocumentElement; var importedExtensionNode = ownerDocument.ImportNode(extensionNode, true); switch (patch.Type) { case PrefabExtensionInsertAsSiblingPatch.InsertType.Append: node.ParentNode.InsertAfter(importedExtensionNode, node); break; case PrefabExtensionInsertAsSiblingPatch.InsertType.Prepend: node.ParentNode.InsertBefore(importedExtensionNode, node); break; } }); }
/** * Register XML sibling insert patch */ internal void RegisterPatch(string movie, string xpath, PrefabExtensionInsertAsSiblingPatch patch) { RegisterPatch(movie, xpath, (node) => { var extensionNode = LoadPrefabExtension(patch.Name); var importedExtensionNode = node.OwnerDocument.ImportNode(extensionNode, true); switch (patch.Type) { case PrefabExtensionInsertAsSiblingPatch.InsertType.Append: node.ParentNode.InsertAfter(importedExtensionNode, node); break; case PrefabExtensionInsertAsSiblingPatch.InsertType.Prepend: node.ParentNode.InsertBefore(importedExtensionNode, node); break; } }); }