예제 #1
0
 private static XMLSettingsGroupLoader CreateSettingsGroupLoader()
 {
     var loader = new XMLSettingsGroupLoader();
     loader.RegisterComplexSettingLoader("layouts", new XMLLayoutLoader());
     loader.RegisterComplexSettingLoader("localeSymbols", new XMLLocaleSymbolLoader());
     loader.RegisterComplexSettingLoader("stringIds", new XMLStringIDSetLoader());
     loader.RegisterComplexSettingLoader("scripting", new XMLOpcodeLookupLoader());
     loader.RegisterComplexSettingLoader("vertexLayouts", new XMLVertexLayoutLoader());
     return loader;
 }
예제 #2
0
        private static XMLSettingsGroupLoader CreateSettingsGroupLoader()
        {
            var loader = new XMLSettingsGroupLoader();

            loader.RegisterComplexSettingLoader("layouts", new XMLLayoutLoader());
            loader.RegisterComplexSettingLoader("localeSymbols", new XMLLocaleSymbolLoader());
            loader.RegisterComplexSettingLoader("stringIds", new XMLStringIDSetLoader());
            loader.RegisterComplexSettingLoader("scripting", new XMLOpcodeLookupLoader());
            loader.RegisterComplexSettingLoader("vertexLayouts", new XMLVertexLayoutLoader());
            return(loader);
        }
예제 #3
0
        /// <summary>
        ///     Loads an engine database from an XML container.
        /// </summary>
        /// <param name="container">The container to read engine elements from.</param>
        /// <returns>The built engine database.</returns>
        public static EngineDatabase LoadDatabase(XContainer container)
        {
            XMLSettingsGroupLoader loader = CreateSettingsGroupLoader();
            var result = new EngineDatabase();

            foreach (XElement elem in container.Elements("engine"))
            {
                string        name     = XMLUtil.GetStringAttribute(elem, "name");
                string        version  = XMLUtil.GetStringAttribute(elem, "version");
                string        inherits = XMLUtil.GetStringAttribute(elem, "inherits", null);
                SettingsGroup settings = loader.LoadSettingsGroup(elem);
                if (!string.IsNullOrWhiteSpace(inherits))
                {
                    // Clone the base engine's settings and then import the new settings on top of it
                    SettingsGroup baseSettings = result.FindEngineByName(inherits).Settings.DeepClone();
                    baseSettings.Import(settings);
                    settings = baseSettings;
                }
                var desc = new EngineDescription(name, version, settings);
                result.RegisterEngine(desc);
            }
            return(result);
        }