virtual public void Load(ConfigNode node) { try { ConfigNode.LoadObjectFromConfig(this, node); } catch (Exception e) { Utils.Log("Exception while loading {}\n{}\n{}\n{}", this, e.Message, e.StackTrace, node); } foreach (var fi in get_fields()) { if (not_persistant(fi)) { continue; } var n = node.GetNode(fi.Name); //restore types saved as nodes if (n != null) { //restore IConfigNodes if (fi.FieldType.GetInterface(cnode_name) != null) { var f = get_or_create <IConfigNode>(fi); if (f != null) { f.Load(n); fi.SetValue(this, f); } } //restore ConfigNodes else if (typeof(ConfigNode).IsAssignableFrom(fi.FieldType)) { fi.SetValue(this, n.CreateCopy()); } //restore Orbit else if (fi.FieldType == typeof(Orbit)) { var obt = new OrbitSnapshot(n); fi.SetValue(this, obt.Load()); } continue; } //restore types saved as values var v = node.GetValue(fi.Name); if (v != null) { if (fi.FieldType == typeof(Guid)) { fi.SetValue(this, new Guid(v)); } else if (fi.FieldType == typeof(Vector3d)) { fi.SetValue(this, KSPUtil.ParseVector3d(v)); } } } }
public void Load(ConfigNode node) { if (node.HasValue("positive")) { positive = KSPUtil.ParseVector3d(node.GetValue("positive")); } if (node.HasValue("negative")) { negative = KSPUtil.ParseVector3d(node.GetValue("negative")); } }