public PhysicsMaterialFactory() { materials = new Dictionary<string, PhysicsMaterial>(); defaultMat = new PhysicsMaterial(); ReadMaterialsFromFiles(); }
/// <summary> /// Go through our media/physicsmaterials/ directory and find all of the material definitions we have, then make objects out /// of them and add them to our dictionary. /// </summary> public void ReadMaterialsFromFiles() { // since we can run this whenever (like when we're tweaking files), we want to clear this first materials.Clear(); // get all of the filenames of the files in media/physicsmaterials IEnumerable<string> files = Directory.EnumerateFiles("media/physicsmaterials/", "*.physmat"); foreach (string filename in files) { // rev up those files ConfigFile cfile = new ConfigFile(); cfile.Load(filename, "=", true); ConfigFile.SectionIterator sectionIterator = cfile.GetSectionIterator(); while (sectionIterator.MoveNext()) { string matname = sectionIterator.CurrentKey; PhysicsMaterial mat = new PhysicsMaterial { Friction = float.Parse(cfile.GetSetting("Friction", matname, PhysicsMaterial.DEFAULT_FRICTION.ToString()), culture), Bounciness = float.Parse(cfile.GetSetting("Bounciness", matname, PhysicsMaterial.DEFAULT_BOUNCINESS.ToString()), culture), AngularDamping = float.Parse(cfile.GetSetting("AngularDamping", matname, PhysicsMaterial.DEFAULT_ANGULAR_DAMPING.ToString()), culture), LinearDamping = float.Parse(cfile.GetSetting("LinearDamping", matname, PhysicsMaterial.DEFAULT_LINEAR_DAMPING.ToString()), culture), }; materials[matname] = mat; } cfile.Dispose(); sectionIterator.Dispose(); } }