示例#1
0
 public TerrainTileSet(TerrainTileSplat Splat, string MaterialName)
 {
     splatUsed    = Splat;
     materialName = MaterialName;
 }
示例#2
0
 public TerrainTileSet(TerrainTileSplat Splat, string MaterialName)
 {
     splatUsed = Splat;
     materialName = MaterialName;
 }
示例#3
0
        public TerrainMaterialManager(string Path_)
        {
            string full_path = Path_ + '/' + "data" + '/' + "terrain.xml";
            // If file doesn't exist
            XmlReader xml = XmlReader.Create(full_path);

            // Parse file
            xml.Read();
            // Root node
            xml.MoveToContent();
            // Get set
            xml.ReadToDescendant("splat");
            // Move to first child
            if (!xml.ReadToDescendant("type"))
            {
                throw new XmlException("Cannot find element 'type' - " + xml.Name);
            }
            do
            {
                // Make new splat
                var p_terrain_splat = new TerrainTileSplat();
                m_TerrainSplatMap[Convert.ToUInt16(xml.GetAttribute("id"))] = p_terrain_splat;
                // Get items
                xml.ReadToDescendant("item");
                do
                {
                    p_terrain_splat.AddSplat(Convert.ToUInt16(xml.GetAttribute("id")),
                                             new TextureAtlasInfo(
                                                 Convert.ToSingle(xml.GetAttribute("woffset")),
                                                 1 - Convert.ToSingle(xml.GetAttribute("hoffset")),
                                                 Convert.ToSingle(xml.GetAttribute("width")),
                                                 Convert.ToSingle(xml.GetAttribute("height")))
                                             );
                } while (xml.ReadToNextSibling("item"));
            } while (xml.ReadToNextSibling("type"));
            // Get all sets
            xml.ReadToNextSibling("set");
            do
            {
                // Get the tile set name
                string set_name = xml.GetAttribute("name");
                // Create tile set instance and save it to map
                var p_terrain_tile_set = new TerrainTileSet(m_TerrainSplatMap[Convert.ToUInt16(xml.GetAttribute("splat"))],
                                                            xml.GetAttribute("material")
                                                            );
                m_MaterialMap[set_name] = p_terrain_tile_set;
                // Get first child
                xml.ReadToDescendant("types");
                do
                {
                    xml.ReadToDescendant("item");
                    do
                    {
                        // Get the id
                        byte type_id = Convert.ToByte(xml.GetAttribute("id"));
                        xml.ReadToDescendant("variant");
                        do
                        {
                            p_terrain_tile_set.AddType(type_id,
                                                       new TextureAtlasInfo(Convert.ToSingle(xml.GetAttribute("woffset")),
                                                                            1 - Convert.ToSingle(xml.GetAttribute("hoffset")),
                                                                            Convert.ToSingle(xml.GetAttribute("width")),
                                                                            Convert.ToSingle(xml.GetAttribute("height"))
                                                                            )
                                                       );
                        } while (xml.ReadToNextSibling("variant"));
                    } while (xml.ReadToNextSibling("item"));
                } while (xml.ReadToNextSibling("types"));
            } while (xml.ReadToNextSibling("set"));
        }
 public TerrainMaterialManager(string Path_)
 {
     string full_path = Path_ + '/' + "data" + '/' + "terrain.xml";
     // If file doesn't exist
     XmlReader xml = XmlReader.Create(full_path);
     // Parse file
     xml.Read();
     // Root node
     xml.MoveToContent();
     // Get set
     xml.ReadToDescendant("splat");
     // Move to first child
     if(!xml.ReadToDescendant("type"))
         throw new XmlException("Cannot find element 'type' - " + xml.Name);
     do
     {
         // Make new splat
         var p_terrain_splat = new TerrainTileSplat();
         m_TerrainSplatMap[Convert.ToUInt16(xml.GetAttribute("id"))] = p_terrain_splat;
         // Get items
         xml.ReadToDescendant("item");
         do
         {
             p_terrain_splat.AddSplat(Convert.ToUInt16(xml.GetAttribute("id")),
                 new TextureAtlasInfo(
                     Convert.ToSingle(xml.GetAttribute("woffset")),
                     1 - Convert.ToSingle(xml.GetAttribute("hoffset")),
                     Convert.ToSingle(xml.GetAttribute("width")),
                      Convert.ToSingle(xml.GetAttribute("height")))
             );
         } while (xml.ReadToNextSibling("item"));
     } while (xml.ReadToNextSibling("type"));
     // Get all sets
     xml.ReadToNextSibling("set");
     do
     {
         // Get the tile set name
         string set_name = xml.GetAttribute("name");
         // Create tile set instance and save it to map
         var p_terrain_tile_set = new TerrainTileSet(m_TerrainSplatMap[Convert.ToUInt16(xml.GetAttribute("splat"))],
             xml.GetAttribute("material")
         );
         m_MaterialMap[set_name] = p_terrain_tile_set;
         // Get first child
         xml.ReadToDescendant("types");
         do
         {
             xml.ReadToDescendant("item");
             do
             {
                 // Get the id
                 byte type_id = Convert.ToByte(xml.GetAttribute("id"));
                 xml.ReadToDescendant("variant");
                 do
                 {
                     p_terrain_tile_set.AddType(type_id,
                         new TextureAtlasInfo(Convert.ToSingle(xml.GetAttribute("woffset")),
                             1 - Convert.ToSingle(xml.GetAttribute("hoffset")),
                             Convert.ToSingle(xml.GetAttribute("width")),
                             Convert.ToSingle(xml.GetAttribute("height"))
                         )
                     );
                 } while (xml.ReadToNextSibling("variant"));
             } while (xml.ReadToNextSibling("item"));
         } while (xml.ReadToNextSibling("types"));
     } while (xml.ReadToNextSibling("set"));
 }