Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
0
        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();
        }