Exemple #1
0
MapRenderer::MapRenderer(Map* map)
    : m_Map(map)
    , m_Verts(sf::Quads)
{
    m_TileSheet.loadFromFile("res/tilesheet.png");

    TEX_COORDS = 
    {   // TODO: Remove magic numbers
        { { 0.f, 0.f } , { 10.f, 0.f }, { 0.f, 10.f }, { 10.f, 10.f } },  // Grass
        { { 10.f, 0.f }, { 20.f, 0.f }, { 10.f, 10.f }, { 20.f, 10.f } }, // Sand
        { { 20.f, 0.f }, { 30.f, 0.f }, { 20.f, 10.f }, { 30.f, 10.f } }, // Stone
        { { 30.f, 0.f }, { 40.f, 0.f }, { 30.f, 10.f }, { 40.f, 10.f } }  // Water
    };

    buildVertexArray();
}
Exemple #2
0
void Tilemap::update(const sf::View& view, int margin)
{
	sf::IntRect newView((view.getCenter().x - (view.getSize().x / 2.f)) / tilesize,
						(view.getCenter().y - (view.getSize().y / 2.f)) / tilesize,
						(view.getSize().x) / tilesize,
						(view.getSize().y) / tilesize); // @TODO Handle rotations & all the shizzle because SFML.

	sf::IntRect maprect(0, 0, wid, hei);

	newView = clip(newView, maprect);

	const sf::Vector2i topleft(newView.left, newView.top),
			           bottomright(newView.left + newView.width, newView.top + newView.height);
	if (wasTilemapChanged || !vboview.contains(topleft) || !vboview.contains(bottomright)) // if a VBO update is required
	{
		vboview = sf::IntRect(newView.left - margin,
				              newView.top - margin,
				              newView.width + (margin * 2),
				              newView.height + (margin * 2));
		vboview = clip(vboview, maprect);

		vbo = buildVertexArray(vboview);
	}
}
Exemple #3
0
void MapRenderer::changeMap(Map* newMap)
{
    m_Map = newMap;
    buildVertexArray();
}
Exemple #4
0
	Model::Model(Material* material, Mesh* mesh, api::Shader* shader, bool castsShadows) :
		m_material(material), mesh(mesh), m_shader(shader), castShadows(castsShadows)
	{
		buildVertexArray();
	}