tile2d's interface so far is pretty simple. Define some class/struct that represents what a tile contains, create a World object, create a TileMap object using createTileMap() and you have your first tile body and tile map
#include <iostream>
#include <tile2d/world.hpp>
struct CustomTileData {
std::string name;
}
int main() {
boost::object_pool<t2d::TileMap<TileData>> tileMapPool;
t2d::World<CustomTileData> physicsWorld(4);
std::pair<t2d::TileMap<TileData>, t2d::WorldBody*> tileMap = t2d::createTileMap(tileMapPool, physicsWorld);
t2d::TileProperties<TileData> tileProperty;
tileProperty.userData.name = "My cool tile";
tileProperty.isMultiTile = true;
tileProperty.isMainTile = true;
tileProperty.mutliTile.width = 4;
tileProperty.mutliTile.height= 4;
t2d::PhysicsTileProperties physicsTileProperty;
physicsTileProperties.density = 10.0f;
physicsTileProperties.staticFriction = 100;
physicsTileProperties.dynamicFriction = 100;
physicsTileProperties.restitution = 100;
tileMap.first->addTile({0, 0}, tileProperty, physicsTileProperty);
bool res = tileMap.first.addTile({0, 0}, tileProperty, physicsTileProperty);
if(res) {
std::cout << "Tile could not be created!\n";
}
tileMap.first->removeTile({0, 0});
tileProperty.isMultiTile = false;
tileMap.first->beginBulkInsert();
for(uint32_t i = 0; i < 1000; i++)
for(uint32_t j = 0; j < 1000; j++)
tileMap.first->addTile({i, j}, tileProperty);
tileMap.first->endBulkInsert();
tileMap.second->addLinearVelocity({0.0f, 100.0f});
while(true) {
physicsWorld.update(0.016, 6);
}
physicsWorld.destroyBody(pair.second);
tileMapPool.destroy(pair.first);
return 0;
}