diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2022-12-05 06:30:59 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2022-12-05 06:30:59 +0100 |
commit | 960e346159dbf152d9847f0998e1e717fb7dbfef (patch) | |
tree | 6aab5985d1a2f20542e152d70c9be46bbed0025e /src/tile-atlas.cpp | |
parent | 4ad635e8dfe21d2dd0e0582c44379dde26ca57a8 (diff) |
src: add pass_mode field to tile_atlas
Diffstat (limited to 'src/tile-atlas.cpp')
-rw-r--r-- | src/tile-atlas.cpp | 13 |
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 |