public DecorationManager(XMLModel.DecorationCollection collection, AtlasModelLoader modelLoader, GraphicsDevice device) { data = collection; nameMeshMap = new Dictionary <string, Mesh>(); foreach (var decoration in data.Decorations) { nameMeshMap.Add(decoration.Name, modelLoader.LoadModel(decoration.Model.Name, decoration.Model.Texture, decoration.Model.ColorTexture).Mesh); } }
protected override void LoadContent() { // Load shader, set up settings var black = Game.Content.Load <Texture2D>("Textures/black"); basicShader = Game.Content.Load <Effect>("Shaders/BasicColorMapped"); basicShader.CurrentTechnique = basicShader.Techniques["DefaultTechnique"]; basicShader.Parameters["ColorMapTexture"].SetValue(black); basicShader.Parameters["ColorInfluence"].SetValue(1.0f); basicShader.Parameters["FogColor"].SetValue(SkyColor.ToVector4()); basicShader.Parameters["FogEndDistance"].SetValue(FogDistance); // Load models, decoration and biome data var modelLoader = new AtlasModelLoader(2048, 2048, basicShader, Game.Content); var decorationData = orbis.Content.Load <XMLModel.DecorationCollection>("Config/Decorations"); var decorationManager = new DecorationManager(decorationData, modelLoader, GraphicsDevice); // Load decorations foreach (var data in decorationData.Decorations) { decorations.Add(data.Name, new DecorationPool(decorationManager.GetDecorationMesh(data.Name), GraphicsDevice, 1)); } var biomeData = orbis.Content.Load <XMLModel.BiomeCollection>("Config/Biomes"); biomeMappedData = new Dictionary <string, BiomeMappedData>(); // Load biomes foreach (var biome in biomeData.Biomes) { biomeMappedData.Add(biome.Name, new BiomeMappedData { HexMesh = modelLoader.LoadModel(biome.HexModel.Name, biome.HexModel.Texture, biome.HexModel.ColorTexture).Mesh, DefaultDecoration = biome.DefaultDecoration, DefaultDensity = biome.DecorationDensity, }); } // Load tile highlight mesh var model = modelLoader.LoadModel("flag", "flag"); tileHighlightMesh = new RenderableMesh(GraphicsDevice, model.Mesh); modelLoader.FinializeLoading(GraphicsDevice); // Set up shader textures basicShader.Parameters["MainTexture"].SetValue(modelLoader.Material.Texture); basicShader.Parameters["ColorMapTexture"].SetValue(modelLoader.Material.ColorMap); if (atlasDebugEnabled) { // Atlas texture debugging Mesh mesh = null; using (var stream = TitleContainer.OpenStream("Content/Meshes/quad_up.obj")) { mesh = ObjParser.FromStream(stream); } atlasDebugInstance = new RenderInstance { mesh = new RenderableMesh(GraphicsDevice, mesh), matrix = Matrix.CreateScale(10) * Matrix.CreateTranslation(0, 0, 30), }; basicShader.Parameters["ColorMapTexture"].SetValue(black); } base.LoadContent(); }