/** * erzeugt die Terrain-Vertices. * * @author OLiver */ void TerrainRenderer::GenerateVertices(const GameWorldViewer * gwv) { delete[] vertices; vertices = new Vertex[width * height]; memset(vertices, 0, sizeof(Vertex) * width * height); // Terrain generieren for(unsigned short y = 0; y < height; ++y) { for(unsigned short x = 0; x < width; ++x) { UpdateVertexPos(x,y,gwv); UpdateVertexColor(x,y,gwv); UpdateVertexTerrain(x,y,gwv); } } // Ränder generieren for(unsigned short y = 0; y < height; ++y) { for(unsigned short x = 0; x < width; ++x) { UpdateBorderVertex(x,y,gwv); } } }
/** * erzeugt die Terrain-Vertices. * * @author OLiver */ void TerrainRenderer::GenerateVertices(const GameWorldViewer& gwv) { vertices.clear(); vertices.resize(width * height); // Terrain generieren for(MapCoord y = 0; y < height; ++y) { for(MapCoord x = 0; x < width; ++x) { MapPoint pt(x, y); UpdateVertexPos(pt, gwv); UpdateVertexColor(pt, gwv); UpdateVertexTerrain(pt, gwv); } } // Ränder generieren for(MapCoord y = 0; y < height; ++y) { for(MapCoord x = 0; x < width; ++x) { MapPoint pt(x, y); UpdateBorderVertex(pt, gwv); } } }
/** * erzeugt die Terrain-Vertices. * * @author OLiver */ void TerrainRenderer::GenerateVertices(const GameWorldViewer* gwv) { delete[] vertices; vertices = new Vertex[width * height]; memset(vertices, 0, sizeof(Vertex) * width * height); // Terrain generieren for(MapCoord y = 0; y < height; ++y) { for(MapCoord x = 0; x < width; ++x) { MapPoint pt(x, y); UpdateVertexPos(pt, gwv); UpdateVertexColor(pt, gwv); UpdateVertexTerrain(pt, gwv); } } // Ränder generieren for(MapCoord y = 0; y < height; ++y) { for(MapCoord x = 0; x < width; ++x) { MapPoint pt(x, y); UpdateBorderVertex(pt, gwv); } } }
void TerrainRenderer::AltitudeChanged(const MapCoord x, const MapCoord y, const GameWorldViewer * gwv) { // den selbst sowieso die Punkte darum updaten, da sich bei letzteren die Schattierung geändert haben könnte UpdateVertexPos(x,y,gwv); UpdateVertexColor(x,y,gwv); for(unsigned i = 0;i<6;++i) UpdateVertexColor(gwv->GetXA(x,y,i),gwv->GetYA(x,y,i),gwv); // und für die Ränder UpdateBorderVertex(x,y,gwv); for(unsigned i = 0;i<6;++i) UpdateBorderVertex(gwv->GetXA(x,y,i),gwv->GetYA(x,y,i),gwv); // den selbst sowieso die Punkte darum updaten, da sich bei letzteren die Schattierung geändert haben könnte UpdateTrianglePos(x,y,gwv,true); UpdateTriangleColor(x,y,gwv,true); for(unsigned i = 0;i<6;++i) { UpdateTrianglePos(gwv->GetXA(x,y,i),gwv->GetYA(x,y,i),gwv,true); UpdateTriangleColor(gwv->GetXA(x,y,i),gwv->GetYA(x,y,i),gwv,true); } // Auch im zweiten Kreis drumherum die Dreiecke neu berechnen, da die durch die Schattenänderung der umliegenden // Punkte auch geändert werden könnten for(unsigned i = 0;i<12;++i) UpdateTriangleColor(gwv->GetXA2(x,y,i),gwv->GetYA2(x,y,i),gwv,true); // und für die Ränder UpdateBorderTrianglePos(x,y,gwv,true); UpdateBorderTriangleColor(x,y,gwv,true); for(unsigned i = 0;i<6;++i) { UpdateBorderTrianglePos(gwv->GetXA(x,y,i),gwv->GetYA(x,y,i),gwv,true); UpdateBorderTriangleColor(gwv->GetXA(x,y,i),gwv->GetYA(x,y,i),gwv,true); } for(unsigned i = 0;i<12;++i) UpdateBorderTriangleColor(gwv->GetXA2(x,y,i),gwv->GetYA2(x,y,i),gwv,true); }