예제 #1
0
 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));
             }
         }
     }
 }
예제 #2
0
 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"));
     }
 }