Advertisement
Guest User

Untitled

a guest
Mar 31st, 2015
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. #include "../mapcraftercore/mc/world.h"
  2. #include "../mapcraftercore/mc/worldcache.h"
  3. #include "../mapcraftercore/renderer/blockimages.h"
  4. #include "../mapcraftercore/renderer/image.h"
  5. #include "../mapcraftercore/renderer/rendermode.h"
  6. #include "../mapcraftercore/renderer/renderview.h"
  7. #include "../mapcraftercore/renderer/tilerenderer.h"
  8. #include "../mapcraftercore/renderer/tileset.h"
  9. #include "../mapcraftercore/renderer/rendermodes/lighting.h"
  10. #include "../mapcraftercore/util.h"
  11.  
  12. #include <string>
  13.  
  14. using namespace mapcrafter;
  15. using namespace mapcrafter::renderer;
  16.  
  17. int main(int argc, char** argv) {
  18. std::string view_name = "topdown";
  19. RenderView* view = createRenderView(view_name);
  20.  
  21. BlockImageTextureResources resources;
  22. resources.setTextureSize(16, 0);
  23. resources.loadAll(util::findTextureDir().string());
  24.  
  25. BlockImages* images = view->createBlockImages();
  26. images->loadBlocks(resources);
  27.  
  28. mc::World world(argv[1]);
  29. world.load();
  30. mc::WorldCache world_cache(world);
  31. TileSet* tile_set = view->createTileSet(1);
  32. tile_set->scan(world);
  33.  
  34. RenderMode* render_mode = new LightingRenderMode(true, 1.0, false);
  35. TileRenderer* tile_renderer = view->createTileRenderer(images, 1, &world_cache, render_mode);
  36.  
  37. TilePos tiles_min, tiles_max, tiles_offset;
  38.  
  39. auto tiles = tile_set->getRequiredRenderTiles();
  40. for (auto it = tiles.begin(); it != tiles.end(); ++it) {
  41. if (it == tiles.begin())
  42. tiles_min = tiles_max = *it;
  43. tiles_min = TilePos(std::min(tiles_min.getX(), it->getX()), std::min(tiles_min.getY(), it->getY()));
  44. tiles_max = TilePos(std::max(tiles_max.getX(), it->getX()), std::max(tiles_max.getY(), it->getY()));
  45. }
  46.  
  47. int tile_size = tile_renderer->getTileSize();
  48. RGBAImage image((tiles_max.getX() - tiles_min.getX() + 1) * tile_size,
  49. (tiles_max.getY() - tiles_min.getY() + 1) * tile_size);
  50.  
  51. for (auto it = tiles.begin(); it != tiles.end(); ++it) {
  52. LOG(INFO) << *it;
  53. RGBAImage tile;
  54. tile_renderer->renderTile(*it, tile);
  55. TilePos image_tile = *it - tiles_min;
  56. image.simpleAlphaBlit(tile, image_tile.getX() * tile_size, image_tile.getY() * tile_size);
  57. }
  58.  
  59. image.writePNG(view_name + ".png");
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement