summaryrefslogtreecommitdiffhomepage
path: root/src/tile-atlas.cpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2022-12-05 06:30:59 +0100
committerStanislaw Halik <sthalik@misaki.pl>2022-12-05 06:30:59 +0100
commit960e346159dbf152d9847f0998e1e717fb7dbfef (patch)
tree6aab5985d1a2f20542e152d70c9be46bbed0025e /src/tile-atlas.cpp
parent4ad635e8dfe21d2dd0e0582c44379dde26ca57a8 (diff)
src: add pass_mode field to tile_atlas
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