/
ConfigNodeExtensions.cs
33 lines (31 loc) · 1.07 KB
/
ConfigNodeExtensions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ModuleManager.Extensions
{
public static class ConfigNodeExtensions
{
public static void ShallowCopyFrom(this ConfigNode toNode, ConfigNode fromeNode)
{
toNode.ClearData();
foreach (ConfigNode.Value value in fromeNode.values)
toNode.values.Add(value);
foreach (ConfigNode node in fromeNode.nodes)
toNode.nodes.Add(node);
}
// KSP implementation of ConfigNode.CreateCopy breaks with badly formed nodes (nodes with a blank name)
public static ConfigNode DeepCopy(this ConfigNode from)
{
ConfigNode to = new ConfigNode(from.name);
foreach (ConfigNode.Value value in from.values)
to.AddValue(value.name, value.value);
foreach (ConfigNode node in from.nodes)
{
ConfigNode newNode = DeepCopy(node);
to.nodes.Add(newNode);
}
return to;
}
}
}