Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "../mapcraftercore/mc/world.h"
- #include "../mapcraftercore/mc/worldcache.h"
- #include "../mapcraftercore/renderer/blockimages.h"
- #include "../mapcraftercore/renderer/image.h"
- #include "../mapcraftercore/renderer/rendermode.h"
- #include "../mapcraftercore/renderer/renderview.h"
- #include "../mapcraftercore/renderer/tilerenderer.h"
- #include "../mapcraftercore/renderer/tileset.h"
- #include "../mapcraftercore/renderer/rendermodes/lighting.h"
- #include "../mapcraftercore/util.h"
- #include <string>
- using namespace mapcrafter;
- using namespace mapcrafter::renderer;
- int main(int argc, char** argv) {
- std::string view_name = "topdown";
- RenderView* view = createRenderView(view_name);
- BlockImageTextureResources resources;
- resources.setTextureSize(16, 0);
- resources.loadAll(util::findTextureDir().string());
- BlockImages* images = view->createBlockImages();
- images->loadBlocks(resources);
- mc::World world(argv[1]);
- world.load();
- mc::WorldCache world_cache(world);
- TileSet* tile_set = view->createTileSet(1);
- tile_set->scan(world);
- RenderMode* render_mode = new LightingRenderMode(true, 1.0, false);
- TileRenderer* tile_renderer = view->createTileRenderer(images, 1, &world_cache, render_mode);
- TilePos tiles_min, tiles_max, tiles_offset;
- auto tiles = tile_set->getRequiredRenderTiles();
- for (auto it = tiles.begin(); it != tiles.end(); ++it) {
- if (it == tiles.begin())
- tiles_min = tiles_max = *it;
- tiles_min = TilePos(std::min(tiles_min.getX(), it->getX()), std::min(tiles_min.getY(), it->getY()));
- tiles_max = TilePos(std::max(tiles_max.getX(), it->getX()), std::max(tiles_max.getY(), it->getY()));
- }
- int tile_size = tile_renderer->getTileSize();
- RGBAImage image((tiles_max.getX() - tiles_min.getX() + 1) * tile_size,
- (tiles_max.getY() - tiles_min.getY() + 1) * tile_size);
- for (auto it = tiles.begin(); it != tiles.end(); ++it) {
- LOG(INFO) << *it;
- RGBAImage tile;
- tile_renderer->renderTile(*it, tile);
- TilePos image_tile = *it - tiles_min;
- image.simpleAlphaBlit(tile, image_tile.getX() * tile_size, image_tile.getY() * tile_size);
- }
- image.writePNG(view_name + ".png");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement