summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--blender/concrete-wall1/concrete-wall1.json51
-rw-r--r--blender/concrete-wall1/concrete-wall1.tpl.json17
-rw-r--r--blender/concrete-wall1/n/side/0001.png (renamed from blender/concrete-wall1/side/n/0001.png)bin2302 -> 2302 bytes
-rw-r--r--blender/concrete-wall1/n/top/0001.png (renamed from blender/concrete-wall1/top/n/0001.png)bin2145 -> 2145 bytes
-rw-r--r--blender/concrete-wall1/n/wall/0001.png (renamed from blender/concrete-wall1/wall/n/0001.png)bin6322 -> 6322 bytes
-rw-r--r--blender/concrete-wall1/n/wall/0002.png (renamed from blender/concrete-wall1/wall/n/0002.png)bin7822 -> 7822 bytes
-rw-r--r--blender/concrete-wall1/n/wall/0003.png (renamed from blender/concrete-wall1/wall/n/0003.png)bin7512 -> 7512 bytes
-rw-r--r--serialize/wall-atlas.cpp3
-rw-r--r--wall-tileset-tool/main.cpp22
9 files changed, 34 insertions, 59 deletions
diff --git a/blender/concrete-wall1/concrete-wall1.json b/blender/concrete-wall1/concrete-wall1.json
deleted file mode 100644
index 196085bd..00000000
--- a/blender/concrete-wall1/concrete-wall1.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "name": "foo",
- "depth": 42,
- "frames": [
- {
- "offset": "0 x 0",
- "size": "64 x 192"
- },
- {
-
- "offset": "64 x 0",
- "size": "64 x 64"
- },
- {
-
- "offset": "128 x 0",
- "size": "64 x 64"
- }
- ],
- "n": {
- "wall": {
- "offset": 0,
- "count": 1
- }
- },
- "w": {
- "pass-mode": "shoot-through",
- "wall": {
- "default-tint": false,
- "offset": 0,
- "count": 1
- },
- "side": {
- "pixel-size": "42 x 192",
- "default-tint": true
- },
- "top": {
- "pixel-size": "192 x 42",
- "offset": 1,
- "count": 2
- },
- "overlay": {
- "pixel-size": "42 x 192",
- "tint-mult": [ 0.125, 0.25, 0.5, 1 ],
- "tint-add": [ 1, 2, 3 ],
- "default-tint": false,
- "mirrored": true
- },
- "corner-L": { "from-rotation": "n" }
- }
-}
diff --git a/blender/concrete-wall1/concrete-wall1.tpl.json b/blender/concrete-wall1/concrete-wall1.tpl.json
new file mode 100644
index 00000000..ae29a94e
--- /dev/null
+++ b/blender/concrete-wall1/concrete-wall1.tpl.json
@@ -0,0 +1,17 @@
+{
+ "name": "concrete-wall1",
+ "depth": 20,
+ "n": {
+ "pass-mode": "blocked",
+ "wall": {
+ "pixel-size": "64 x 192"
+ },
+ "side": {
+ "pixel-size": "20 x 192"
+
+ },
+ "top": {
+ "pixel-size": "192 x 20"
+ }
+ }
+}
diff --git a/blender/concrete-wall1/side/n/0001.png b/blender/concrete-wall1/n/side/0001.png
index 69b349c5..69b349c5 100644
--- a/blender/concrete-wall1/side/n/0001.png
+++ b/blender/concrete-wall1/n/side/0001.png
Binary files differ
diff --git a/blender/concrete-wall1/top/n/0001.png b/blender/concrete-wall1/n/top/0001.png
index 495a2e48..495a2e48 100644
--- a/blender/concrete-wall1/top/n/0001.png
+++ b/blender/concrete-wall1/n/top/0001.png
Binary files differ
diff --git a/blender/concrete-wall1/wall/n/0001.png b/blender/concrete-wall1/n/wall/0001.png
index 5632b9d5..5632b9d5 100644
--- a/blender/concrete-wall1/wall/n/0001.png
+++ b/blender/concrete-wall1/n/wall/0001.png
Binary files differ
diff --git a/blender/concrete-wall1/wall/n/0002.png b/blender/concrete-wall1/n/wall/0002.png
index e6320348..e6320348 100644
--- a/blender/concrete-wall1/wall/n/0002.png
+++ b/blender/concrete-wall1/n/wall/0002.png
Binary files differ
diff --git a/blender/concrete-wall1/wall/n/0003.png b/blender/concrete-wall1/n/wall/0003.png
index 4da9d208..4da9d208 100644
--- a/blender/concrete-wall1/wall/n/0003.png
+++ b/blender/concrete-wall1/n/wall/0003.png
Binary files differ
diff --git a/serialize/wall-atlas.cpp b/serialize/wall-atlas.cpp
index cbac35d5..cc14499e 100644
--- a/serialize/wall-atlas.cpp
+++ b/serialize/wall-atlas.cpp
@@ -157,7 +157,8 @@ StringView direction_index_to_name(size_t i)
std::vector<Frame> read_all_frames(const json& jroot)
{
- fm_assert(jroot.contains("frames"));
+ if (!jroot.contains("frames"))
+ return {};
std::vector<Frame> frames;
const auto& jframes = jroot["frames"];
diff --git a/wall-tileset-tool/main.cpp b/wall-tileset-tool/main.cpp
index 8fc907ae..9b07db75 100644
--- a/wall-tileset-tool/main.cpp
+++ b/wall-tileset-tool/main.cpp
@@ -35,7 +35,7 @@ const Direction& get_direction(const wall_atlas_def& atlas, size_t i)
fm_assert(atlas.direction_mask[i]);
auto idx = atlas.direction_map[i];
fm_assert(idx);
- fm_assert(idx < atlas.direction_array.size());
+ fm_assert(idx.val < atlas.direction_array.size());
return atlas.direction_array[idx.val];
}
@@ -59,7 +59,12 @@ struct resolution : Vector2i { using Vector2i::Vector2i; };
Debug& operator<<(Debug& dbg, resolution res)
{
- return dbg << res.x() << colon('x') << res.y() << colon(',');
+ auto flags = dbg.flags();
+ dbg << "";
+ dbg.setFlags(flags | Debug::Flag::NoSpace);
+ dbg << res.x() << "x"_s << res.y();
+ dbg.setFlags(flags);
+ return dbg;
}
constexpr inline int max_image_dimension = 4096;
@@ -94,7 +99,6 @@ bool do_group(state st, size_t i, size_t j, Group& new_group)
const auto& old_group = old_dir.group(j);
//auto& new_dir = get_direction(new_atlas, (size_t)i);
const auto dir_name = wall_atlas::directions[i].name;
- std::vector<frame> frames; frames.reserve(64);
const auto path = Path::join({ st.opts.input_dir, dir_name, group_name });
const auto expected_size = wall_atlas::expected_size(new_atlas.header.depth, (Group_)j);
@@ -130,12 +134,14 @@ bool do_group(state st, size_t i, size_t j, Group& new_group)
swap(mat, mat2);
}
- if (Vector2ui{(unsigned)mat.cols, (unsigned)mat.rows} != expected_size) [[unlikely]]
+ const auto size = Vector2ui{(unsigned)mat.cols, (unsigned)mat.rows};
+
+ if (size != expected_size) [[unlikely]]
{
- ERR << "fatal: wrong image size, expected size"
+ ERR << "fatal: wrong image size, expected"
<< resolution{expected_size} << colon(',')
- << "actual size" << resolution{}
- << "-- file" << filename;
+ << "actual" << resolution{size}
+ << "-- file" << filename;
return false;
}
@@ -149,6 +155,8 @@ bool do_group(state st, size_t i, size_t j, Group& new_group)
<< "for" << quoted(filename);
return false;
}
+
+ st.frames.push_back({.size = size, .mat = std::move(buf)});
}
if (count == 0)