summaryrefslogtreecommitdiffhomepage
path: root/src/tile-atlas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tile-atlas.cpp')
-rw-r--r--src/tile-atlas.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/tile-atlas.cpp b/src/tile-atlas.cpp
index 9b3886da..6f9e832f 100644
--- a/src/tile-atlas.cpp
+++ b/src/tile-atlas.cpp
@@ -9,9 +9,9 @@
namespace floormat {
-tile_atlas::tile_atlas(StringView name, const ImageView2D& image, Vector2ub tile_count) :
+tile_atlas::tile_atlas(StringView name, const ImageView2D& image, Vector2ub tile_count, Optional<enum pass_mode> p) :
texcoords_{make_texcoords_array(Vector2ui(image.size()), tile_count)},
- name_{name}, size_{image.size()}, dims_{tile_count}
+ name_{name}, size_{image.size()}, dims_{tile_count}, passability{std::move(p)}
{
constexpr auto variant_max = std::numeric_limits<variant_t>::max();
fm_assert(num_tiles() <= variant_max);
@@ -55,4 +55,13 @@ auto tile_atlas::make_texcoords_array(Vector2ui pixel_size, Vector2ub tile_count
return ptr;
}
+std::size_t tile_atlas::num_tiles() const { return Vector2ui{dims_}.product(); }
+Optional<enum pass_mode> tile_atlas::pass_mode() const { return passability; }
+
+void tile_atlas::set_pass_mode(enum pass_mode p)
+{
+ fm_assert(!passability || passability == p);
+ passability = { InPlaceInit, p };
+}
+
} // namespace floormat