void KOrthogonalMap::initeNode(KOrthoNode &Node, U32 TileID, const KOrthoLayer &Layer) { Node.tileID = TileID; Node.atlasID = Layer.atlas.id; Node.fliph = Layer.atlas.getFlipH(); Node.flipv = Layer.atlas.getFlipV(); KRectF32 dim = getTileDimension(TileID); Node.verts[0].pos.x = dim.left; Node.verts[0].pos.y = dim.bottom; Node.verts[1].pos.x = dim.left; Node.verts[1].pos.y = dim.top; Node.verts[2].pos.x = dim.right; Node.verts[2].pos.y = dim.bottom; Node.verts[3].pos.x = dim.right; Node.verts[3].pos.y = dim.top; Node.verts[0].r = Node.verts[1].r = Node.verts[2].r = Node.verts[3].r = Layer.blend.getR(); Node.verts[0].g = Node.verts[1].g = Node.verts[2].g = Node.verts[3].g = Layer.blend.getG(); Node.verts[0].b = Node.verts[1].b = Node.verts[2].b = Node.verts[3].b = Layer.blend.getB(); Node.verts[0].a = Node.verts[1].a = Node.verts[2].a = Node.verts[3].a = Layer.blend.getA(); Node.verts[0].tindex = Node.verts[1].tindex = Node.verts[2].tindex = Node.verts[3].tindex = Layer.textureID; Node.verts[1].uv = KVector2F32(Layer.atlas.blu, Layer.atlas.blv); Node.verts[0].uv = KVector2F32(Layer.atlas.blu, Layer.atlas.trv); Node.verts[3].uv = KVector2F32(Layer.atlas.tru, Layer.atlas.blv); Node.verts[2].uv = KVector2F32(Layer.atlas.tru, Layer.atlas.trv); }
// load xml-level ----------------------------------------------- void TiledLoader::loadLevel(const char * fileName) { if (!m_Doc.LoadFile(fileName)) { // if file is found, ... proceed printf("load file=[%s] succeeded\n", fileName); // get tile-dimension for rendering getTileDimension(); //load all textures into TextureManager loadMapTextures(); } else { printf("load file=[%s] failed\n", fileName); } }
void KOrthogonalMap::getTileLayers(U32 TileID, std::vector<KOrthoLayer> &Output) { Output.clear(); // check range if (TileID >= _krootList.size()) { KD_PRINT("tile id is out of range or tile map is not created yet"); return; } Output.reserve(_krootList[TileID].layerSize); U32 tindex = _krootList[TileID].firstNode; auto dim = getTileDimension(TileID); for (SIZE ncounter = 0; ncounter < _krootList[TileID].layerSize; ++ncounter) { Output.push_back(KOrthoLayer()); initeLayer(_knodeList[tindex], Output.back()); tindex = _knodeList[tindex].nextNode; } }