From a5bda4bd94f9634ae0123105db91372fc2747488 Mon Sep 17 00:00:00 2001 From: fgnm Date: Sun, 19 May 2024 17:54:12 +0200 Subject: [PATCH] Do not share shader's uniforms with multiple components --- hyperlap2d-runtime-libgdx | 2 +- .../editor/view/ui/panel/ShaderUniformsPanelMediator.java | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/hyperlap2d-runtime-libgdx b/hyperlap2d-runtime-libgdx index e04d0273..8854f474 160000 --- a/hyperlap2d-runtime-libgdx +++ b/hyperlap2d-runtime-libgdx @@ -1 +1 @@ -Subproject commit e04d027316b42dd0547d9f0fb413be1464538fb6 +Subproject commit 8854f4746199321cc972ca948bc3ac15188dfaea diff --git a/src/main/java/games/rednblack/editor/view/ui/panel/ShaderUniformsPanelMediator.java b/src/main/java/games/rednblack/editor/view/ui/panel/ShaderUniformsPanelMediator.java index 0d2f8a08..88891595 100644 --- a/src/main/java/games/rednblack/editor/view/ui/panel/ShaderUniformsPanelMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/panel/ShaderUniformsPanelMediator.java @@ -1,5 +1,6 @@ package games.rednblack.editor.view.ui.panel; +import com.badlogic.gdx.utils.Pools; import games.rednblack.editor.renderer.components.ShaderComponent; import games.rednblack.editor.renderer.data.ShaderUniformVO; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; @@ -94,7 +95,7 @@ public class ShaderUniformsPanelMediator extends Mediator { private void addNewUniform(Object[] payload) { String name = (String) payload[0]; - ShaderUniformVO vo = new ShaderUniformVO(); + ShaderUniformVO vo = Pools.get(ShaderUniformVO.class, ShaderComponent.UNIFORMS_POOL_SIZE).obtain(); switch (payload.length) { case 2: if (payload[1] instanceof Integer) @@ -121,7 +122,8 @@ public class ShaderUniformsPanelMediator extends Mediator { private void removeUniform(String uniform) { ShaderComponent shaderComponent = SandboxComponentRetriever.get(observable, ShaderComponent.class); - shaderComponent.customUniforms.remove(uniform); + ShaderUniformVO vo = shaderComponent.customUniforms.remove(uniform); + Pools.free(vo); updateView(); }