+ const Block &BlockAt(const Pos &pos) const { return BlockAt(ToIndex(pos)); }
+
+ const Block *FindNext(const Pos &pos, Block::Face face) const;
+ const Block *FindNext(const Block::Pos &pos, Block::Face face) const { return FindNext(Pos(pos), face); }
+ const Block *FindNext(int index, Block::Face face) const { return FindNext(ToPos(index), face); }
+
+ const BlockType &Type(const Block &b) const { return *types->Get(b.type); }
+
+ void SetLight(int index, int level);
+ void SetLight(const Pos &pos, int level) { SetLight(ToIndex(pos), level); }
+ void SetLight(const Block::Pos &pos, int level) { SetLight(ToIndex(pos), level); }
+
+ int GetLight(int index) const;
+ int GetLight(const Pos &pos) const { return GetLight(ToIndex(pos)); }
+ int GetLight(const Block::Pos &pos) const { return GetLight(ToIndex(pos)); }
+
+ bool Intersection(
+ const Ray &ray,
+ const glm::mat4 &M,
+ float &dist
+ ) const {
+ return blank::Intersection(ray, Bounds(), M, &dist);
+ }