From 8842e186e6bca1a98d95476207bf441d13c6a50b Mon Sep 17 00:00:00 2001 From: fgnm Date: Mon, 29 Jan 2024 23:39:10 +0100 Subject: [PATCH] Pool Talos particles --- h2d-libgdx-talos-extension | 2 +- .../java/games/rednblack/editor/proxy/ResourceManager.java | 7 ++++--- .../rednblack/editor/utils/asset/impl/TalosVFXAsset.java | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/h2d-libgdx-talos-extension b/h2d-libgdx-talos-extension index b564f270..0a108476 160000 --- a/h2d-libgdx-talos-extension +++ b/h2d-libgdx-talos-extension @@ -1 +1 @@ -Subproject commit b564f27018e3a0bf5e967ae89ea466afb5cbbb11 +Subproject commit 0a108476b100d4eaea46ce2465dbf0df47578571 diff --git a/src/main/java/games/rednblack/editor/proxy/ResourceManager.java b/src/main/java/games/rednblack/editor/proxy/ResourceManager.java index 15af2d81..8fdce8e3 100644 --- a/src/main/java/games/rednblack/editor/proxy/ResourceManager.java +++ b/src/main/java/games/rednblack/editor/proxy/ResourceManager.java @@ -15,6 +15,7 @@ import com.badlogic.gdx.utils.*; import com.esotericsoftware.spine.SkeletonJson; import com.kotcrab.vis.ui.VisUI; import games.rednblack.talos.runtime.ParticleEffectDescriptor; +import games.rednblack.talos.runtime.ParticleEffectInstancePool; import games.rednblack.talos.runtime.utils.ShaderDescriptor; import games.rednblack.talos.runtime.utils.VectorField; import dev.lyze.gdxtinyvg.TinyVG; @@ -53,7 +54,7 @@ public class ResourceManager extends Proxy implements IResourceRetriever { public static final String NAME = TAG; private final HashMap particleEffects = new HashMap<>(1); - private final HashMap talosVFXs = new HashMap<>(1); + private final HashMap talosVFXs = new HashMap<>(1); private final HashMap currentProjectAtlas = new HashMap<>(1); private final HashMap spineAnimAtlases = new HashMap<>(); @@ -345,7 +346,7 @@ public class ResourceManager extends Proxy implements IResourceRetriever { ParticleEffectDescriptor effectDescriptor = new ParticleEffectDescriptor(); effectDescriptor.setAssetProvider(assetProvider); effectDescriptor.load(Gdx.files.internal(file.getAbsolutePath())); - talosVFXs.put(filename, effectDescriptor); + talosVFXs.put(filename, new ParticleEffectInstancePool(effectDescriptor, 1, games.rednblack.editor.renderer.resources.ResourceManager.PARTICLE_POOL_SIZE)); } } @@ -593,7 +594,7 @@ public class ResourceManager extends Proxy implements IResourceRetriever { return particleEffects; } - public HashMap getProjectTalosList() { + public HashMap getProjectTalosList() { return talosVFXs; } diff --git a/src/main/java/games/rednblack/editor/utils/asset/impl/TalosVFXAsset.java b/src/main/java/games/rednblack/editor/utils/asset/impl/TalosVFXAsset.java index 0ac99d9d..1da24e2d 100644 --- a/src/main/java/games/rednblack/editor/utils/asset/impl/TalosVFXAsset.java +++ b/src/main/java/games/rednblack/editor/utils/asset/impl/TalosVFXAsset.java @@ -246,7 +246,7 @@ public class TalosVFXAsset extends Asset { File fileSrc = new File(currentProjectPath + ProjectManager.TALOS_VFX_DIR_PATH + File.separator + talosVO.particleName); FileUtils.copyFileToDirectory(fileSrc, tmpDir); exportMapperVO.mapper.add(new ExportMapperVO.ExportedAsset(AssetsUtils.TYPE_TALOS_VFX, fileSrc.getName())); - ParticleEffectDescriptor particleEffect = resourceManager.getProjectTalosList().get(talosVO.particleName); + ParticleEffectDescriptor particleEffect = resourceManager.getProjectTalosList().get(talosVO.particleName).getParticleEffectDescriptor(); for (ParticleEmitterDescriptor emitter : new Array.ArrayIterator<>(particleEffect.emitterModuleGraphs)) { for (AbstractModule module : new Array.ArrayIterator<>(emitter.getModules())) { if (module instanceof TextureModule) {