- Tile &TileAt(int surface, int x, int y) {
- return tiles[IndexOf(surface, x, y)];
- }
- const Tile &TileAt(int surface, int x, int y) const {
- return tiles[IndexOf(surface, x, y)];
- }
+ Tile &TileAt(int surface, int x, int y) noexcept;
+ const Tile &TileAt(int surface, int x, int y) const noexcept;
+ const TileType &TypeAt(int surface, int x, int y) const noexcept;
+
+ /// The length in tiles of the side of each surface.
+ int SideLength() const { return sidelength; }
+
+ // center point of tile on surface at elevation
+ glm::dvec3 TileCenter(int surface, int x, int y, double elevation = 0.0) const noexcept;
+
+ void BuildVAO(const Set<TileType> &);
+ void Draw(app::Assets &, graphics::Viewport &) override;