// Use this for initialization void Start() { torchModSettings = new TorchSettings(); improvedPlayerTorchMod.GetSettings().Deserialize("Torch", ref torchModSettings); //Apply any torch settings changes if we have to if (torchModSettings.PlayerTorchChanged) { AdjustPlayerTorch(); } }
public void ReadFile() { defaultSettings = new TrainerSettings("default_settings", alwaysActive: true, inUse: false); multipleBehaviours = new MultipleBehaviours("behaviors", alwaysActive: false); engineSettings = new EngineSettings(inUse: false); checkpointSettings = new CheckpointSettings(inUse: false); torchSettings = new TorchSettings(inUse: false); using (StreamReader sr = new StreamReader(Path)) { string line = ""; string settingsType = ""; string multipleBehavioursType = ""; while ((line = sr.ReadLine()) != null) { var spiltFile = line.Split(':'); string key = Regex.Replace(spiltFile[0], @"\s+", ""); string value = Regex.Replace(spiltFile[1], @"\s+", ""); switch (key) { case "default_settings": defaultSettings.inUse = true; settingsType = "default_settings"; break; case "behaviors": settingsType = "behaviors"; break; case "engine_settings": engineSettings.inUse = true; settingsType = "engine_settings"; break; case "checkpoint_settings": checkpointSettings.inUse = true; settingsType = "checkpoint_settings"; break; case "torch_settings": torchSettings.inUse = true; settingsType = "torch_settings"; break; default: break; } switch (settingsType) { case "behaviors": if (value == "" && key == "behaviors") { readDataMultipleBehaviours[settingsType] = new Dictionary <string, Dictionary <string, string> >(); } else if (value == "" && !(new List <string> { "behaviors", "hyperparameters", "network_settings" }.Contains(key))) { multipleBehavioursType = key; readDataMultipleBehaviours[settingsType][multipleBehavioursType] = new Dictionary <string, string>(); } else if (key != "behaviors") { readDataMultipleBehaviours[settingsType][multipleBehavioursType][key] = value; } break; default: if (!readData.ContainsKey(settingsType)) { readData[settingsType] = new Dictionary <string, string>(); } else { readData[settingsType][key] = value; } break; } } } if (defaultSettings.inUse) { WriteBehaviorsToClass(defaultSettings); } if (readDataMultipleBehaviours.ContainsKey("behaviors")) { int index = 0; foreach (KeyValuePair <string, Dictionary <string, string> > behaviors in readDataMultipleBehaviours["behaviors"]) { multipleBehaviours.behaviors.Add(new Config.TrainerSettingsMultipleBehaviour(behaviors.Key)); WriteBehaviorsToClass(multipleBehaviours.behaviors[index].Behaviour); var settings = multipleBehaviours.behaviors[index]; for (int i = 0; i < settings.Behaviour.trainer_settings.Count; i++) { UpdateMultipleBehavioursClass(readDataMultipleBehaviours, settings, settings.Behaviour.trainer_settings[i]); } for (int i = 0; i < settings.Behaviour.hyperparameters.hyperparameters_entries_base.Count; i++) { UpdateMultipleBehavioursClass(readDataMultipleBehaviours, settings, settings.Behaviour.trainer_settings[i]); } for (int i = 0; i < settings.Behaviour.hyperparameters.hyperparameters_entries_ppo.Count; i++) { UpdateMultipleBehavioursClass(readDataMultipleBehaviours, settings, settings.Behaviour.trainer_settings[i]); } for (int i = 0; i < settings.Behaviour.hyperparameters.hyperparameters_entries_sac.Count; i++) { UpdateMultipleBehavioursClass(readDataMultipleBehaviours, settings, settings.Behaviour.trainer_settings[i]); } for (int i = 0; i < settings.Behaviour.network_settings.network_settings_entries.Count; i++) { UpdateMultipleBehavioursClass(readDataMultipleBehaviours, settings, settings.Behaviour.trainer_settings[i]); } index++; } } WriteToClass(engineSettings, engineSettings.engine_settings); WriteToClass(checkpointSettings, checkpointSettings.checkpoint_settings); WriteToClass(torchSettings, torchSettings.device); // logging // foreach (KeyValuePair<string, Dictionary<string, string>> attachStat1 in readData) // { // Debug.Log(attachStat1.Key); // foreach (KeyValuePair<string, string> attachStat2 in attachStat1.Value) // { // Debug.Log(attachStat2.Key); // Debug.Log(attachStat2.Value); // } // } // foreach (KeyValuePair<string, Dictionary<string, Dictionary<string, string>>> attachStat1 in readDataMultipleBehaviours) // { // Debug.Log(attachStat1.Key); // foreach (KeyValuePair<string, Dictionary<string, string>> attachStat2 in attachStat1.Value) // { // Debug.Log(attachStat2.Key); // foreach (KeyValuePair<string, string> attachStat3 in attachStat2.Value) // { // Debug.Log(attachStat3.Key); // Debug.Log(attachStat3.Value); // } // } // } }