/// <summary> /// Store fitted engine parameters in the database so they can be accessed later /// </summary> /// <param name="engine">Engine to associated this config node with</param> /// <param name="node">Config node describing engine parameters (both input parameters and fitted parameters)</param> public static void SetNodeForEngine(ModuleEnginesSolver engine, ConfigNode node) { string partName = engine.part.name; string engineType = engine.GetType().Name; string engineID = engine.engineID; Assembly assembly = engine.GetType().Assembly; node.SetValue("engineID", engineID, true); node.SetValue("DeclaringAssemblyVersion", EngineDatabase.AssemblyVersion(assembly), true); node.SetValue("DeclaringAssemblyChecksum", EngineDatabase.AssemblyChecksum(assembly), true); node.SetValue("SolverEnginesVersion", SolverEnginesVersion, true); node.SetValue("SolverEnginesAssemblyChecksum", SolverEnginesAssemblyChecksum, true); ConfigNode partNode = database.GetNode(partName); int nodeIndex = 0; if (partNode != null) { ConfigNode[] moduleNodes = partNode.GetNodes(engineType); for (int i = 0; i < moduleNodes.Length; i++) { ConfigNode mNode = moduleNodes[i]; if (mNode.GetValue("engineID") == engineID) { nodeIndex = i; } } } else { partNode = new ConfigNode(partName); database.AddNode(partNode); nodeIndex = 0; } partNode.SetNode(engineType, node, nodeIndex, true); SaveDatabase(); }
/// <summary> /// Checks whether plugins have updated for a particular engine, thus necessitating that the engine parameters be fit again /// Checks version and checksum of SolverEngines and whichever assembly declares the type of engine /// Looks for values DeclaringAssemblyVersion, DeclaringAssemblyChecksum, SolverEnginesVersion, SolverEnginesAssemblyChecksum in node /// </summary> /// <param name="engine">Engine module to check. Only used to find its declaring assembly. Can be null</param> /// <param name="node">ConfigNode to check for versions and checksums</param> /// <returns></returns> public static bool PluginUpdateCheck(ModuleEnginesSolver engine, ConfigNode node) { bool result = false; if (engine != null) { Assembly assembly = engine.GetType().Assembly; result |= (AssemblyVersion(assembly) != node.GetValue("DeclaringAssemblyVersion")); result |= (AssemblyChecksum(assembly) != node.GetValue("DeclaringAssemblyChecksum")); } result |= (SolverEnginesVersion != node.GetValue("SolverEnginesVersion")); result |= (SolverEnginesAssemblyChecksum != node.GetValue("SolverEnginesAssemblyChecksum")); return(result); }
/// <summary> /// Searches for engine in the database /// </summary> /// <param name="engine">Engine module to search for. Will use engine class, part name, and engineID to identify it</param> /// <returns>ConfigNode associated with engine if found, otherwise null</returns> public static ConfigNode GetNodeForEngine(ModuleEnginesSolver engine) { string partName = engine.part.name; string engineType = engine.GetType().Name; string engineID = engine.engineID; ConfigNode partNode = database.GetNode(partName); if (partNode != null) { foreach (ConfigNode moduleNode in partNode.GetNodes(engineType)) { if (moduleNode.GetValue("engineID") == engineID) return moduleNode; } } return null; }
/// <summary> /// Searches for engine in the database /// </summary> /// <param name="engine">Engine module to search for. Will use engine class, part name, and engineID to identify it</param> /// <returns>ConfigNode associated with engine if found, otherwise null</returns> public static ConfigNode GetNodeForEngine(ModuleEnginesSolver engine) { string partName = engine.part.name; string engineType = engine.GetType().Name; string engineID = engine.engineID; ConfigNode partNode = database.GetNode(partName); if (partNode != null) { foreach (ConfigNode moduleNode in partNode.GetNodes(engineType)) { if (moduleNode.GetValue("engineID") == engineID) { return(moduleNode); } } } return(null); }
/// <summary> /// Store fitted engine parameters in the database so they can be accessed later /// </summary> /// <param name="engine">Engine to associated this config node with</param> /// <param name="node">Config node describing engine parameters (both input parameters and fitted parameters)</param> public static void SetNodeForEngine(ModuleEnginesSolver engine, ConfigNode node) { string partName = engine.part.name; string engineType = engine.GetType().Name; string engineID = engine.engineID; Assembly assembly = engine.GetType().Assembly; node.SetValue("engineID", engineID, true); node.SetValue("DeclaringAssemblyVersion", EngineDatabase.AssemblyVersion(assembly), true); node.SetValue("DeclaringAssemblyChecksum", EngineDatabase.AssemblyChecksum(assembly), true); node.SetValue("SolverEnginesVersion", SolverEnginesVersion, true); node.SetValue("SolverEnginesAssemblyChecksum", SolverEnginesAssemblyChecksum, true); ConfigNode partNode = database.GetNode(partName); int nodeIndex = 0; if (partNode != null) { ConfigNode[] moduleNodes = partNode.GetNodes(engineType); for (int i = 0; i < moduleNodes.Length; i++ ) { ConfigNode mNode = moduleNodes[i]; if (mNode.GetValue("engineID") == engineID) { nodeIndex = i; } } } else { partNode = new ConfigNode(partName); database.AddNode(partNode); nodeIndex = 0; } partNode.SetNode(engineType, node, nodeIndex, true); SaveDatabase(); }
/// <summary> /// Checks whether plugins have updated for a particular engine, thus necessitating that the engine parameters be fit again /// Checks version and checksum of SolverEngines and whichever assembly declares the type of engine /// Looks for values DeclaringAssemblyVersion, DeclaringAssemblyChecksum, SolverEnginesVersion, SolverEnginesAssemblyChecksum in node /// </summary> /// <param name="engine">Engine module to check. Only used to find its declaring assembly. Can be null</param> /// <param name="node">ConfigNode to check for versions and checksums</param> /// <returns></returns> public static bool PluginUpdateCheck(ModuleEnginesSolver engine, ConfigNode node) { bool result = false; if (engine != null) { Assembly assembly = engine.GetType().Assembly; result |= (AssemblyVersion(assembly) != node.GetValue("DeclaringAssemblyVersion")); result |= (AssemblyChecksum(assembly) != node.GetValue("DeclaringAssemblyChecksum")); } result |= (SolverEnginesVersion != node.GetValue("SolverEnginesVersion")); result |= (SolverEnginesAssemblyChecksum != node.GetValue("SolverEnginesAssemblyChecksum")); return result; }