summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2020-10-22 23:00:02 -0400
committerAndrew Opalach <andrew@akon.city> 2020-10-22 23:00:02 -0400
commitb66ba3884135ec746a84a78c38d4fb2fdc0c98a4 (patch)
tree780f4c5ab3b6999acd4fa6cbdda15553533738ff
parentf3a2a07b3bd7984f851f9f4816e115043b76e923 (diff)
downloadmauri-b66ba3884135ec746a84a78c38d4fb2fdc0c98a4.tar.gz
mauri-b66ba3884135ec746a84a78c38d4fb2fdc0c98a4.tar.bz2
mauri-b66ba3884135ec746a84a78c38d4fb2fdc0c98a4.zip
fix object/effect load order, visualizer memory leak
-rw-r--r--.cache/clangd/index/assets.cc.23B79FF96D65AF01.idxbin3034 -> 0 bytes
-rw-r--r--.cache/clangd/index/assets.h.1F4A45CE4A88EE50.idxbin2908 -> 0 bytes
-rw-r--r--.cache/clangd/index/context.cc.29D2991336B691E0.idxbin1090 -> 0 bytes
-rw-r--r--.cache/clangd/index/context.h.2258FC505D7BFE7A.idxbin1094 -> 0 bytes
-rw-r--r--.cache/clangd/index/context_glfw.cc.4B2B0770E8112A48.idxbin1968 -> 0 bytes
-rw-r--r--.cache/clangd/index/context_glfw.h.D427F9C1DD1FA20F.idxbin898 -> 0 bytes
-rw-r--r--.cache/clangd/index/context_null.h.7B5A64DED10E9D58.idxbin952 -> 0 bytes
-rw-r--r--.cache/clangd/index/context_x11.cc.0F598D995E81BABA.idxbin4720 -> 0 bytes
-rw-r--r--.cache/clangd/index/context_x11.h.73FA3E08604A605C.idxbin1912 -> 0 bytes
-rw-r--r--.cache/clangd/index/effect.cc.0BC9ED9FBEAF7230.idxbin2084 -> 0 bytes
-rw-r--r--.cache/clangd/index/effect.h.C9BA75F9C2CEBE09.idxbin1408 -> 0 bytes
-rw-r--r--.cache/clangd/index/engine.cc.54C290F3F5FEB67B.idxbin3876 -> 0 bytes
-rw-r--r--.cache/clangd/index/engine.h.0BA065D269C810C5.idxbin2554 -> 0 bytes
-rw-r--r--.cache/clangd/index/framebuffer.cc.C4658B2F26DF7D26.idxbin1104 -> 0 bytes
-rw-r--r--.cache/clangd/index/framebuffer.h.8A056E5C24972123.idxbin596 -> 0 bytes
-rw-r--r--.cache/clangd/index/gl.c.58D5E00F09226E2F.idxbin84718 -> 0 bytes
-rw-r--r--.cache/clangd/index/gl.cc.3791D0ADA616F76B.idxbin6166 -> 0 bytes
-rw-r--r--.cache/clangd/index/gl.h.4110C3685F72B241.idxbin165332 -> 0 bytes
-rw-r--r--.cache/clangd/index/gl.h.BC2D32DDBB22B90E.idxbin3288 -> 0 bytes
-rw-r--r--.cache/clangd/index/json.h.0271679A1AAEA3F1.idxbin2166 -> 0 bytes
-rw-r--r--.cache/clangd/index/khrplatform.h.63C8D2DA1E712281.idxbin1912 -> 0 bytes
-rw-r--r--.cache/clangd/index/log.h.3F43BA97A2EE1858.idxbin298 -> 0 bytes
-rw-r--r--.cache/clangd/index/material.cc.8E7E7195608167B3.idxbin1470 -> 0 bytes
-rw-r--r--.cache/clangd/index/material.h.868C4B7FDCFED6E5.idxbin842 -> 0 bytes
-rw-r--r--.cache/clangd/index/mauri.cc.49D5933B36D8F675.idxbin1022 -> 0 bytes
-rw-r--r--.cache/clangd/index/model.cc.1BDD17FEDEE6EEC2.idxbin1414 -> 0 bytes
-rw-r--r--.cache/clangd/index/model.h.83755EB2F4D6C2A8.idxbin918 -> 0 bytes
-rw-r--r--.cache/clangd/index/object.cc.35629F50251FA494.idxbin3884 -> 0 bytes
-rw-r--r--.cache/clangd/index/object.h.2E0F1AB9C8DA6021.idxbin2642 -> 0 bytes
-rw-r--r--.cache/clangd/index/pass.cc.EFADF6DB77056E1A.idxbin5206 -> 0 bytes
-rw-r--r--.cache/clangd/index/pass.h.75192BF26A8A1B14.idxbin2904 -> 0 bytes
-rw-r--r--.cache/clangd/index/s3tc.cpp.9B38B3A2C81E9A69.idxbin574 -> 0 bytes
-rw-r--r--.cache/clangd/index/s3tc.h.9467401D5B25AA10.idxbin614 -> 0 bytes
-rw-r--r--.cache/clangd/index/scene.cc.49BFEFBD57AFA1FC.idxbin1908 -> 0 bytes
-rw-r--r--.cache/clangd/index/scene.h.F137EBF68DF6DE19.idxbin1490 -> 0 bytes
-rw-r--r--.cache/clangd/index/shader.cc.EE8E91B2245F196F.idxbin4462 -> 0 bytes
-rw-r--r--.cache/clangd/index/shader.h.1B848452B04B0F75.idxbin1964 -> 0 bytes
-rw-r--r--.cache/clangd/index/stb_image.h.71C3424DBA0BB687.idxbin73208 -> 0 bytes
-rw-r--r--.cache/clangd/index/texture.cc.70699AAA88190AB7.idxbin3156 -> 0 bytes
-rw-r--r--.cache/clangd/index/texture.h.DA51BC96BACD3711.idxbin3228 -> 0 bytes
-rw-r--r--.cache/clangd/index/util.cc.95B656C3E176A8EB.idxbin736 -> 0 bytes
-rw-r--r--.cache/clangd/index/util.h.7065F6174EA563A6.idxbin1078 -> 0 bytes
-rw-r--r--.cache/clangd/index/visualizer.cc.1609983AB117C639.idxbin4570 -> 0 bytes
-rw-r--r--.cache/clangd/index/visualizer.h.BF456546CAE489EE.idxbin2562 -> 0 bytes
-rw-r--r--.gitignore1
-rwxr-xr-xrandom.sh2
-rw-r--r--src/engine.cc1
-rw-r--r--src/gl.cc1
-rw-r--r--src/objects/effect.cc5
-rw-r--r--src/objects/material.cc3
-rw-r--r--src/objects/object.cc71
-rw-r--r--src/objects/object.h7
-rw-r--r--src/objects/pass.h4
-rw-r--r--src/objects/scene.cc2
-rw-r--r--src/texture.cc17
-rw-r--r--src/visualizer.cc3
56 files changed, 74 insertions, 43 deletions
diff --git a/.cache/clangd/index/assets.cc.23B79FF96D65AF01.idx b/.cache/clangd/index/assets.cc.23B79FF96D65AF01.idx
deleted file mode 100644
index 2730c7a..0000000
--- a/.cache/clangd/index/assets.cc.23B79FF96D65AF01.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/assets.h.1F4A45CE4A88EE50.idx b/.cache/clangd/index/assets.h.1F4A45CE4A88EE50.idx
deleted file mode 100644
index f1c956a..0000000
--- a/.cache/clangd/index/assets.h.1F4A45CE4A88EE50.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/context.cc.29D2991336B691E0.idx b/.cache/clangd/index/context.cc.29D2991336B691E0.idx
deleted file mode 100644
index e6b4144..0000000
--- a/.cache/clangd/index/context.cc.29D2991336B691E0.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/context.h.2258FC505D7BFE7A.idx b/.cache/clangd/index/context.h.2258FC505D7BFE7A.idx
deleted file mode 100644
index 54755a6..0000000
--- a/.cache/clangd/index/context.h.2258FC505D7BFE7A.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/context_glfw.cc.4B2B0770E8112A48.idx b/.cache/clangd/index/context_glfw.cc.4B2B0770E8112A48.idx
deleted file mode 100644
index 403b43b..0000000
--- a/.cache/clangd/index/context_glfw.cc.4B2B0770E8112A48.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/context_glfw.h.D427F9C1DD1FA20F.idx b/.cache/clangd/index/context_glfw.h.D427F9C1DD1FA20F.idx
deleted file mode 100644
index 26f69e6..0000000
--- a/.cache/clangd/index/context_glfw.h.D427F9C1DD1FA20F.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/context_null.h.7B5A64DED10E9D58.idx b/.cache/clangd/index/context_null.h.7B5A64DED10E9D58.idx
deleted file mode 100644
index c2faa31..0000000
--- a/.cache/clangd/index/context_null.h.7B5A64DED10E9D58.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/context_x11.cc.0F598D995E81BABA.idx b/.cache/clangd/index/context_x11.cc.0F598D995E81BABA.idx
deleted file mode 100644
index 108b106..0000000
--- a/.cache/clangd/index/context_x11.cc.0F598D995E81BABA.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/context_x11.h.73FA3E08604A605C.idx b/.cache/clangd/index/context_x11.h.73FA3E08604A605C.idx
deleted file mode 100644
index ec77f00..0000000
--- a/.cache/clangd/index/context_x11.h.73FA3E08604A605C.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/effect.cc.0BC9ED9FBEAF7230.idx b/.cache/clangd/index/effect.cc.0BC9ED9FBEAF7230.idx
deleted file mode 100644
index 2a2bc62..0000000
--- a/.cache/clangd/index/effect.cc.0BC9ED9FBEAF7230.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/effect.h.C9BA75F9C2CEBE09.idx b/.cache/clangd/index/effect.h.C9BA75F9C2CEBE09.idx
deleted file mode 100644
index 3f98e4e..0000000
--- a/.cache/clangd/index/effect.h.C9BA75F9C2CEBE09.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/engine.cc.54C290F3F5FEB67B.idx b/.cache/clangd/index/engine.cc.54C290F3F5FEB67B.idx
deleted file mode 100644
index 5fbd31d..0000000
--- a/.cache/clangd/index/engine.cc.54C290F3F5FEB67B.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/engine.h.0BA065D269C810C5.idx b/.cache/clangd/index/engine.h.0BA065D269C810C5.idx
deleted file mode 100644
index 3d7d200..0000000
--- a/.cache/clangd/index/engine.h.0BA065D269C810C5.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/framebuffer.cc.C4658B2F26DF7D26.idx b/.cache/clangd/index/framebuffer.cc.C4658B2F26DF7D26.idx
deleted file mode 100644
index dcb0b26..0000000
--- a/.cache/clangd/index/framebuffer.cc.C4658B2F26DF7D26.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/framebuffer.h.8A056E5C24972123.idx b/.cache/clangd/index/framebuffer.h.8A056E5C24972123.idx
deleted file mode 100644
index 6ea77f4..0000000
--- a/.cache/clangd/index/framebuffer.h.8A056E5C24972123.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/gl.c.58D5E00F09226E2F.idx b/.cache/clangd/index/gl.c.58D5E00F09226E2F.idx
deleted file mode 100644
index 7e37a92..0000000
--- a/.cache/clangd/index/gl.c.58D5E00F09226E2F.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/gl.cc.3791D0ADA616F76B.idx b/.cache/clangd/index/gl.cc.3791D0ADA616F76B.idx
deleted file mode 100644
index 6937f27..0000000
--- a/.cache/clangd/index/gl.cc.3791D0ADA616F76B.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/gl.h.4110C3685F72B241.idx b/.cache/clangd/index/gl.h.4110C3685F72B241.idx
deleted file mode 100644
index 7630949..0000000
--- a/.cache/clangd/index/gl.h.4110C3685F72B241.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/gl.h.BC2D32DDBB22B90E.idx b/.cache/clangd/index/gl.h.BC2D32DDBB22B90E.idx
deleted file mode 100644
index 2e926b4..0000000
--- a/.cache/clangd/index/gl.h.BC2D32DDBB22B90E.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/json.h.0271679A1AAEA3F1.idx b/.cache/clangd/index/json.h.0271679A1AAEA3F1.idx
deleted file mode 100644
index 08803a7..0000000
--- a/.cache/clangd/index/json.h.0271679A1AAEA3F1.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/khrplatform.h.63C8D2DA1E712281.idx b/.cache/clangd/index/khrplatform.h.63C8D2DA1E712281.idx
deleted file mode 100644
index b67b9b8..0000000
--- a/.cache/clangd/index/khrplatform.h.63C8D2DA1E712281.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/log.h.3F43BA97A2EE1858.idx b/.cache/clangd/index/log.h.3F43BA97A2EE1858.idx
deleted file mode 100644
index cd2a885..0000000
--- a/.cache/clangd/index/log.h.3F43BA97A2EE1858.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/material.cc.8E7E7195608167B3.idx b/.cache/clangd/index/material.cc.8E7E7195608167B3.idx
deleted file mode 100644
index f12b76c..0000000
--- a/.cache/clangd/index/material.cc.8E7E7195608167B3.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/material.h.868C4B7FDCFED6E5.idx b/.cache/clangd/index/material.h.868C4B7FDCFED6E5.idx
deleted file mode 100644
index 66971b8..0000000
--- a/.cache/clangd/index/material.h.868C4B7FDCFED6E5.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/mauri.cc.49D5933B36D8F675.idx b/.cache/clangd/index/mauri.cc.49D5933B36D8F675.idx
deleted file mode 100644
index e7565b6..0000000
--- a/.cache/clangd/index/mauri.cc.49D5933B36D8F675.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/model.cc.1BDD17FEDEE6EEC2.idx b/.cache/clangd/index/model.cc.1BDD17FEDEE6EEC2.idx
deleted file mode 100644
index 4d0be3a..0000000
--- a/.cache/clangd/index/model.cc.1BDD17FEDEE6EEC2.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/model.h.83755EB2F4D6C2A8.idx b/.cache/clangd/index/model.h.83755EB2F4D6C2A8.idx
deleted file mode 100644
index af773b0..0000000
--- a/.cache/clangd/index/model.h.83755EB2F4D6C2A8.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/object.cc.35629F50251FA494.idx b/.cache/clangd/index/object.cc.35629F50251FA494.idx
deleted file mode 100644
index ba6f662..0000000
--- a/.cache/clangd/index/object.cc.35629F50251FA494.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/object.h.2E0F1AB9C8DA6021.idx b/.cache/clangd/index/object.h.2E0F1AB9C8DA6021.idx
deleted file mode 100644
index 6866ffa..0000000
--- a/.cache/clangd/index/object.h.2E0F1AB9C8DA6021.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/pass.cc.EFADF6DB77056E1A.idx b/.cache/clangd/index/pass.cc.EFADF6DB77056E1A.idx
deleted file mode 100644
index 0a67bec..0000000
--- a/.cache/clangd/index/pass.cc.EFADF6DB77056E1A.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/pass.h.75192BF26A8A1B14.idx b/.cache/clangd/index/pass.h.75192BF26A8A1B14.idx
deleted file mode 100644
index 324c7e4..0000000
--- a/.cache/clangd/index/pass.h.75192BF26A8A1B14.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/s3tc.cpp.9B38B3A2C81E9A69.idx b/.cache/clangd/index/s3tc.cpp.9B38B3A2C81E9A69.idx
deleted file mode 100644
index cb6ed2b..0000000
--- a/.cache/clangd/index/s3tc.cpp.9B38B3A2C81E9A69.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/s3tc.h.9467401D5B25AA10.idx b/.cache/clangd/index/s3tc.h.9467401D5B25AA10.idx
deleted file mode 100644
index 168dc10..0000000
--- a/.cache/clangd/index/s3tc.h.9467401D5B25AA10.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/scene.cc.49BFEFBD57AFA1FC.idx b/.cache/clangd/index/scene.cc.49BFEFBD57AFA1FC.idx
deleted file mode 100644
index 3df65a1..0000000
--- a/.cache/clangd/index/scene.cc.49BFEFBD57AFA1FC.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/scene.h.F137EBF68DF6DE19.idx b/.cache/clangd/index/scene.h.F137EBF68DF6DE19.idx
deleted file mode 100644
index 542831b..0000000
--- a/.cache/clangd/index/scene.h.F137EBF68DF6DE19.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/shader.cc.EE8E91B2245F196F.idx b/.cache/clangd/index/shader.cc.EE8E91B2245F196F.idx
deleted file mode 100644
index b1f5e3c..0000000
--- a/.cache/clangd/index/shader.cc.EE8E91B2245F196F.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/shader.h.1B848452B04B0F75.idx b/.cache/clangd/index/shader.h.1B848452B04B0F75.idx
deleted file mode 100644
index 96569e3..0000000
--- a/.cache/clangd/index/shader.h.1B848452B04B0F75.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/stb_image.h.71C3424DBA0BB687.idx b/.cache/clangd/index/stb_image.h.71C3424DBA0BB687.idx
deleted file mode 100644
index 1fdaa67..0000000
--- a/.cache/clangd/index/stb_image.h.71C3424DBA0BB687.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/texture.cc.70699AAA88190AB7.idx b/.cache/clangd/index/texture.cc.70699AAA88190AB7.idx
deleted file mode 100644
index db4a36d..0000000
--- a/.cache/clangd/index/texture.cc.70699AAA88190AB7.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/texture.h.DA51BC96BACD3711.idx b/.cache/clangd/index/texture.h.DA51BC96BACD3711.idx
deleted file mode 100644
index e292f95..0000000
--- a/.cache/clangd/index/texture.h.DA51BC96BACD3711.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/util.cc.95B656C3E176A8EB.idx b/.cache/clangd/index/util.cc.95B656C3E176A8EB.idx
deleted file mode 100644
index 6ec2c14..0000000
--- a/.cache/clangd/index/util.cc.95B656C3E176A8EB.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/util.h.7065F6174EA563A6.idx b/.cache/clangd/index/util.h.7065F6174EA563A6.idx
deleted file mode 100644
index 43c4f73..0000000
--- a/.cache/clangd/index/util.h.7065F6174EA563A6.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/visualizer.cc.1609983AB117C639.idx b/.cache/clangd/index/visualizer.cc.1609983AB117C639.idx
deleted file mode 100644
index f8edd04..0000000
--- a/.cache/clangd/index/visualizer.cc.1609983AB117C639.idx
+++ /dev/null
Binary files differ
diff --git a/.cache/clangd/index/visualizer.h.BF456546CAE489EE.idx b/.cache/clangd/index/visualizer.h.BF456546CAE489EE.idx
deleted file mode 100644
index abf148e..0000000
--- a/.cache/clangd/index/visualizer.h.BF456546CAE489EE.idx
+++ /dev/null
Binary files differ
diff --git a/.gitignore b/.gitignore
index cd9449f..eb32573 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,3 @@
build*/
compile_commands.json
-.clangd/
.cache/
diff --git a/random.sh b/random.sh
index a9910c9..04f7907 100755
--- a/random.sh
+++ b/random.sh
@@ -3,7 +3,7 @@
cd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
WALLPAPERS_PATH=../../c/workshop_wallpapers
-BUILD_DIR=build-release
+BUILD_DIR=build-debug
export mesa_glthread=true
diff --git a/src/engine.cc b/src/engine.cc
index a49851d..c52a6de 100644
--- a/src/engine.cc
+++ b/src/engine.cc
@@ -117,7 +117,6 @@ void Engine::create_framebuffer(const std::string &name, f32 width, f32 height,
void Engine::update()
{
context->process_input();
- time = context->current_time();
context->cursor_pos(&view.cursor_pos[0], &view.cursor_pos[1]);
diff --git a/src/gl.cc b/src/gl.cc
index 627a763..53d8d59 100644
--- a/src/gl.cc
+++ b/src/gl.cc
@@ -76,7 +76,6 @@ RenderObject::RenderObject(RenderObjType type, f32 width, f32 height)
// the UV cuts out the padding used to make the texture dimensions powers of two.
f32 x_scale = width / (f32)next_power_of_two(width);
f32 y_scale = height / (f32)next_power_of_two(height);
-
f32 vertices[] = {
-width, height, 0.f, 0.f, y_scale,
width, -height, 0.f, x_scale, 0.f,
diff --git a/src/objects/effect.cc b/src/objects/effect.cc
index fe3fbbe..283d764 100644
--- a/src/objects/effect.cc
+++ b/src/objects/effect.cc
@@ -50,8 +50,7 @@ void Effect::load(Engine *engine, Object *object, bool last)
for (auto &fbo : fbos)
{
- engine->create_framebuffer(fbo.name + buffer_id, object->size[0],
- object->size[1], fbo.scale);
+ engine->create_framebuffer(fbo.name + buffer_id, object->size[0], object->size[1], fbo.scale);
}
u32 index = 0;
@@ -63,7 +62,7 @@ void Effect::load(Engine *engine, Object *object, bool last)
pass.object = object;
pass.effect = this;
- pass.combine = i == (passes1.size() - 1) && last;
+ pass.combine = object->visible && i == (passes1.size() - 1) && last;
if (passes1[i]->command != COPY)
{
diff --git a/src/objects/material.cc b/src/objects/material.cc
index 6efa2d0..8b6f493 100644
--- a/src/objects/material.cc
+++ b/src/objects/material.cc
@@ -42,7 +42,8 @@ void Material::load(Engine *engine, Object *object, MaterialType type, Pass *pas
_pass.object = object;
_pass.effect = nullptr;
- if (object->effects.size() == 0 && !object->passthrough)
+ if (object->effects.size() == 0
+ && !object->passthrough && object->visible)
_pass.combine = true;
else
_pass.combine = false;
diff --git a/src/objects/object.cc b/src/objects/object.cc
index 8e6cc3d..a0e4485 100644
--- a/src/objects/object.cc
+++ b/src/objects/object.cc
@@ -1,3 +1,5 @@
+#include <cstdlib>
+#include <forward_list>
#include <glm/fwd.hpp>
#include <glm/trigonometric.hpp>
@@ -25,6 +27,32 @@ Object::Object(Parser &p, json &root)
for (auto &id : root["dependencies"])
deps.push_back(id);
+ // Filter deps that are either the same as this objects
+ // id or repeated. This could be handled be sorting objects
+ // on the scene in order of deps but I'm not sure if that would
+ // break other things.
+ for (auto it = deps.begin(); it != deps.end();)
+ {
+ bool remove = false;
+
+ if (*it == id)
+ {
+ remove = true;
+ }
+
+ for (auto rt = deps.begin(); rt != deps.end(); ++rt)
+ {
+ if (rt != it && *rt == *it)
+ {
+ remove = true;
+ break;
+ }
+ }
+
+ if (remove) deps.erase(it);
+ else it++;
+ }
+
p.get_value<vec3>(root, "angles", &angles, vec3(0.f));
p.get_value<vec3>(root, "color", &color, vec3(0.f));
p.get_value<vec2>(root, "size", &size, vec2(0.f));
@@ -67,7 +95,6 @@ void Object::get_model(f32 width, f32 height, bool flip)
model = glm::scale(model, scale);
- //mat4x4 _ortho = glm::ortho(-width, width, height, -height, 0.0099999997764825821f, 10000.f);
mat4x4 _ortho = glm::ortho(-width, width, height, -height, 0.f, 1.f);
if (flip)
@@ -80,25 +107,27 @@ void Object::get_model(f32 width, f32 height, bool flip)
void Object::load(Engine *engine)
{
- if (loaded)
+ if (loaded_as_dep)
return;
-
+
for (auto &dep : deps)
{
- if (dep == id)
- continue;
- auto dep_object = engine->scene->get_object_by_id(dep);
- if (dep_object != nullptr)
- dep_object->load(engine);
+ auto object = engine->scene->get_object_by_id(dep);
+ object->load(engine);
+ object->loaded_as_dep = true;
}
if (image != nullptr)
{
if (image->passthrough)
+ {
passthrough = true;
+ }
if (image->fullscreen)
+ {
fullscreen = true;
+ }
if (image->width != 0.f && image->height != 0.f)
{
@@ -143,7 +172,7 @@ void Object::load(Engine *engine)
{
// Get last effect that is visible
// to know when to make a combine pass.
- Effect *last_effect = effects[0];
+ Effect *last_effect = nullptr;
for (auto &effect : effects)
{
@@ -153,26 +182,32 @@ void Object::load(Engine *engine)
}
}
- for (auto &effect : effects)
+ if (last_effect != nullptr)
+ {
+ for (auto &effect : effects)
+ {
+ effect->load(engine, this, effect == last_effect);
+ }
+ }
+ else if (visible)
{
- effect->load(engine, this, effect == last_effect);
+ // If there are effects but no visible effects, make sure
+ // combine is set on the background pass.
+ this->passes.back()->combine = true;
}
}
-
- loaded = true;
}
void Object::update(Engine *engine)
{
- //if (engine->time > this->shake_tick)
- //{
- //}
}
void Object::draw(Engine *engine)
{
- if (!visible)
- return;
+ for (auto &dep : deps)
+ {
+ engine->scene->get_object_by_id(dep)->draw(engine);
+ }
#if FRAME_STEP
std::cout << name << " (model):\n";
diff --git a/src/objects/object.h b/src/objects/object.h
index 47fe2cc..5ca7702 100644
--- a/src/objects/object.h
+++ b/src/objects/object.h
@@ -67,15 +67,14 @@ class Object
std::vector<Effect *> effects;
+ bool loaded_as_dep = false;
+
void load(Engine *engine);
void update(Engine *engine);
void draw(Engine *engine);
private:
- Model *image = nullptr;
-
vec3 angles;
-
vec3 origin;
vec3 scale;
@@ -84,7 +83,7 @@ class Object
bool buffer_switch = false;
- bool loaded = false;
+ Model *image = nullptr;
};
} // namespace Mauri
diff --git a/src/objects/pass.h b/src/objects/pass.h
index b84fbf3..75e5563 100644
--- a/src/objects/pass.h
+++ b/src/objects/pass.h
@@ -77,6 +77,8 @@ class RenderPass
RenderPass(Engine *engine, Pass *pass);
~RenderPass();
+ bool combine;
+
Shader *shader = nullptr;
void draw(Engine *engine);
@@ -92,8 +94,6 @@ class RenderPass
mat4x4 *model;
RenderObject *robject;
- bool combine;
-
std::array<Texture *, MAX_TEXTURES> textures = {0};
};
diff --git a/src/objects/scene.cc b/src/objects/scene.cc
index d3819dc..97b9f58 100644
--- a/src/objects/scene.cc
+++ b/src/objects/scene.cc
@@ -75,6 +75,8 @@ void Scene::draw(Engine *engine)
{
for (auto &object : objects)
{
+ if (object->loaded_as_dep)
+ continue;
object->draw(engine);
}
}
diff --git a/src/texture.cc b/src/texture.cc
index 8ef1ae3..f147472 100644
--- a/src/texture.cc
+++ b/src/texture.cc
@@ -26,8 +26,10 @@ Texture::Texture(Asset *asset)
{
hash = asset->hash;
- auto type = asset->reads(9);
- auto itype = asset->reads(9);
+ //auto type = asset->reads(9);
+ //auto itype = asset->reads(9);
+
+ asset->seek(18);
auto format = (TextureFormat)asset->read<u32>();
@@ -116,9 +118,10 @@ Texture::Texture(Asset *asset)
{
switch (format)
{
- case RGBA8888:
+ case RGBA8888: {
_texture->upload(buffer, mwidth, mheight, i, GL_RGBA, true);
break;
+ }
case DXT5: {
auto decompressed = new u32[decompressed_byte_count];
BlockDecompressImageDXT5(mwidth, mheight, buffer, decompressed);
@@ -199,14 +202,6 @@ Texture::Texture(Asset *asset)
}
}
- for (auto &frame : frames)
- {
- //std::cout << frame.id << "\n";
- //std::cout << frame.x << " " << frame.y << "\n";
- //std::cout << frame.frame_time << "\n";
- //std::cout << frame.unknown0 << " " << frame.unknown1 << "\n";
- }
-
asset->reset();
}
diff --git a/src/visualizer.cc b/src/visualizer.cc
index a76c613..e4da2bf 100644
--- a/src/visualizer.cc
+++ b/src/visualizer.cc
@@ -6,6 +6,7 @@
#include <utility>
#include "assets.h"
+#include "gst/gstbuffer.h"
#include "gst/gstcaps.h"
#include "gst/gstelement.h"
#include "gst/gstmemory.h"
@@ -190,6 +191,8 @@ void Visualizer::update_sample()
fftw_execute(p_left);
fftw_execute(p_right);
+ gst_sample_unref(sample);
+
g_mutex_unlock(&mutex);
}