From b5f313f1763a188abe28b0a2b8dcb653d2a942f0 Mon Sep 17 00:00:00 2001 From: Redacted Date: Fri, 3 Jan 2025 22:25:27 -0500 Subject: [PATCH] Bugfix for alpha-masking sometimes not working. --- CMakeLists.txt | 2 +- assets/sprites/alpha_mask.png | Bin 0 -> 3865 bytes include/Game/entity/Box.h | 2 +- src/Engine/types/entity/InstancedSprite.cpp | 7 +------ src/Engine/types/scene/Scene.cpp | 4 ++-- 5 files changed, 5 insertions(+), 10 deletions(-) create mode 100644 assets/sprites/alpha_mask.png diff --git a/CMakeLists.txt b/CMakeLists.txt index 4165403..24002cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,7 +14,7 @@ include (cmake/CPM.cmake) CPMAddPackage( NAME JGL - URL https://git.redacted.cc/josh/JGL/archive/Prerelease-44.zip + URL https://git.redacted.cc/josh/JGL/archive/Prerelease-45.zip ) CPMAddPackage( diff --git a/assets/sprites/alpha_mask.png b/assets/sprites/alpha_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..3e4611197f85cb9ce6d32398f5c32535b0ba21ec GIT binary patch literal 3865 zcmeHKeTWog7+=ZGbJg-Ag34f+D=cVsK6Ym3qg~~^y^lrr+`HS<(#Usb-q{=6`DkYD zcJ9oQjtIpv5~4_<3=1K>3Igi_qlo-NipoDqL4y1&GD^ath@P3<+uI|d4)VVnn4OvD z{XM_;d4A9HzU;fR(A&KzetSF?i!I9aWc%UCz%8}5!0$xgw(sF_e6+aH??+X_ac$kG zV8S19Fo6R@kHvyhX5sXbkD1m#%DbN3a>L`#eD}fS_uD@mU*7Zb*#rA_?tW|ctG`}3 zb5Z!PFE?=Ly>rWB=BcA&C%0VOw!8i6(T>d@{q_6``6jmim+?2h`C-pvf8O@>_}Ia{ zefuAN@yP0dtK(wZv7WB(h3_2g^V-m|19$k_)*nCo!j)yO3!D4QFIrEZFwcIeo!UNr z<5!!OUS4wkfdg~1OWtkK?z{WaVv>BVb^Dr@b-yXW&%MlZZ^(DPLXTZ|sF+%D^S6*| zU_eeA^J^8=HWNs*OE?jj4kR0krB?+GQnzBCDB-eUWyqf zb@9MxZ&4lHs>&LenY@N(G<8P2b0wrXff z^ePJ)$LXaKg=LkYcs`k=q>?63YDv@?R!}9mBs5XwEYC-libEAzeh8rco(Q z0E#3pQnJJ#N)sh6g&9s4MZSq*oohf>qDpgAA(aMHLP<-pd{U=S67dwTiV`KuSf@l@ z(p5pwr4mX-RGO-E*{+G8oQ8?Yn0BmkG!P1|v=?$2l1ngCmO=&jIyhv=wT3kmObrwb z6A$<(RFf5x94Dp(R$@d>2NXf zZMSIKl?)kD5TR#dI1kH7Lq5tP9|I}F@e0c-99LvgiXbSANHOr+gts+AANeit12lJ0arrL@cz>n6xYM&J&T1o^FEeZvxwG=!wjI}6E;HnL&gUBjl*gfj)I%zkq z(F&{}>AI?M6y$^{9*dZgMJS>maH^hUWfhh5>Fl1Z`&H!P_A=-QT0wh8S`qg|g}Qe- zx;lu%Du7@V%Tf)&Sg9@;T~C+}_l(Jm)ATCQ$+uGsG#6Hma~e5dC@FBVI*h4-A`;HqIT&hvBm&UqIX+`2$qx@i}`15CZS zYCB!>htJIc;D5PJoV?$id${ew QeknxfI(xH6R&ROoZ!88ega7~l literal 0 HcmV?d00001 diff --git a/include/Game/entity/Box.h b/include/Game/entity/Box.h index 6ea9cf8..a964b80 100644 --- a/include/Game/entity/Box.h +++ b/include/Game/entity/Box.h @@ -10,5 +10,5 @@ class Game::Box final : public Engine::InstancedSprite { public: void Update() final; public: - explicit Box(const Vector2& position, unsigned int depth = 0, float rad_rotation = 0.0f) : Engine::InstancedSprite(position, depth, "assets/sprites/Re3D.png", rad_rotation) {} + explicit Box(const Vector2& position, unsigned int depth = 0, float rad_rotation = 0.0f) : Engine::InstancedSprite(position, depth, "assets/sprites/Re3D.png", rad_rotation, Colors::White, nullptr, "assets/sprites/alpha_mask.png") {} }; \ No newline at end of file diff --git a/src/Engine/types/entity/InstancedSprite.cpp b/src/Engine/types/entity/InstancedSprite.cpp index 9d47f30..e6fea0a 100644 --- a/src/Engine/types/entity/InstancedSprite.cpp +++ b/src/Engine/types/entity/InstancedSprite.cpp @@ -6,19 +6,14 @@ Texture* InstancedSprite::GetTexture() { auto* itx = Globals::CurrentScene->GetInstancedTexture(this); if (itx) return itx->GetTexture(); - return nullptr; } Texture* InstancedSprite::GetAlphaMask() { - if (Sprite::GetAlphaMask()) - return Sprite::GetAlphaMask(); - auto* ita = Globals::CurrentScene->GetInstancedAlphaMask(this); if (ita) return ita->GetTexture(); - - return nullptr; + return Sprite::GetAlphaMask(); } InstancedSprite::~InstancedSprite() { diff --git a/src/Engine/types/scene/Scene.cpp b/src/Engine/types/scene/Scene.cpp index 451a915..c98576e 100644 --- a/src/Engine/types/scene/Scene.cpp +++ b/src/Engine/types/scene/Scene.cpp @@ -167,8 +167,8 @@ InstancedTexture* Scene::GetInstancedAlphaMask(const InstancedSprite* user) { if (itx->InUseBy(user)) return itx; - if (!user->GetAlphaMaskFilesystemPath().empty() && !instanced_alpha_masks.empty()) { - auto *t = new Texture(user->GetTextureFilesystemPath()); + if (!user->GetAlphaMaskFilesystemPath().empty()) { + auto *t = new Texture(user->GetAlphaMaskFilesystemPath()); auto *itx = new InstancedTexture(t, user); instanced_alpha_masks.push_back(itx); return itx;