add particles.stop(...)

This commit is contained in:
MihailRis 2024-11-04 14:55:35 +03:00
parent 0cd5136fdb
commit 3ecb7b447f
4 changed files with 16 additions and 10 deletions

View File

@ -1,6 +1,6 @@
function on_block_broken(id, x, y, z, playerid)
particles.emit({x+0.5, y+0.5, z+0.5}, 100, {
lifetime=2.0,
particles.emit({x+0.5, y+0.5, z+0.5}, 64, {
lifetime=1.0,
spawn_interval=0.0001,
explosion={4, 4, 4},
texture="blocks:"..block.get_textures(id)[1],

View File

@ -535,10 +535,6 @@ void WorldRenderer::drawBorders(
lineBatch->flush();
}
void WorldRenderer::addEmitter(std::unique_ptr<Emitter> emitter) {
particles->add(std::move(emitter));
}
void WorldRenderer::clear() {
renderer->clear();
}

View File

@ -8,6 +8,8 @@
#include <glm/glm.hpp>
#include "typedefs.hpp"
class Level;
class Player;
class Camera;
@ -42,7 +44,6 @@ class WorldRenderer {
std::unique_ptr<Skybox> skybox;
std::unique_ptr<Batch3D> batch3d;
std::unique_ptr<ModelBatch> modelBatch;
std::unique_ptr<ParticlesRenderer> particles;
float timer = 0.0f;
@ -80,6 +81,8 @@ class WorldRenderer {
float fogFactor
);
public:
std::unique_ptr<ParticlesRenderer> particles;
static bool showChunkBorders;
static bool showEntitiesDebug;
@ -108,7 +111,5 @@ public:
bool pause
);
void addEmitter(std::unique_ptr<Emitter> emitter);
void clear();
};

View File

@ -2,6 +2,7 @@
#include "logic/scripting/scripting_hud.hpp"
#include "graphics/render/WorldRenderer.hpp"
#include "graphics/render/ParticlesRenderer.hpp"
#include "graphics/render/Emitter.hpp"
#include "assets/assets_util.hpp"
#include "engine.hpp"
@ -34,11 +35,19 @@ static int l_emit(lua::State* L) {
region.region,
count
);
renderer->addEmitter(std::move(emitter));
return lua::pushinteger(L, renderer->particles->add(std::move(emitter)));
}
static int l_stop(lua::State* L) {
u64id_t id = lua::touinteger(L, 1);
if (auto emitter = renderer->particles->getEmitter(id)) {
emitter->stop();
}
return 0;
}
const luaL_Reg particleslib[] = {
{"emit", lua::wrap<l_emit>},
{"stop", lua::wrap<l_stop>},
{NULL, NULL}
};