Skip to content

Commit

Permalink
Revert CSM particles commit to fix particle spawner bug for 5.0.0 (#8288
Browse files Browse the repository at this point in the history
)

Reverts 5dab742
"[CSM] Add functions to create particles and particlespawners."
  • Loading branch information
paramat committed Feb 26, 2019
1 parent d80186d commit 01cd63b
Show file tree
Hide file tree
Showing 10 changed files with 8 additions and 337 deletions.
1 change: 0 additions & 1 deletion build/android/jni/Android.mk
Expand Up @@ -353,7 +353,6 @@ LOCAL_SRC_FILES += \
jni/src/script/lua_api/l_object.cpp \ jni/src/script/lua_api/l_object.cpp \
jni/src/script/lua_api/l_playermeta.cpp \ jni/src/script/lua_api/l_playermeta.cpp \
jni/src/script/lua_api/l_particles.cpp \ jni/src/script/lua_api/l_particles.cpp \
jni/src/script/lua_api/l_particles_local.cpp\
jni/src/script/lua_api/l_rollback.cpp \ jni/src/script/lua_api/l_rollback.cpp \
jni/src/script/lua_api/l_server.cpp \ jni/src/script/lua_api/l_server.cpp \
jni/src/script/lua_api/l_settings.cpp \ jni/src/script/lua_api/l_settings.cpp \
Expand Down
65 changes: 0 additions & 65 deletions doc/client_lua_api.txt
Expand Up @@ -789,16 +789,6 @@ Call these functions only at load time!
should listen from incoming messages with `minetest.register_on_modchannel_message` should listen from incoming messages with `minetest.register_on_modchannel_message`
call to receive incoming messages. Warning, this function is asynchronous. call to receive incoming messages. Warning, this function is asynchronous.


### Particles
* `minetest.add_particle(particle definition)`

* `minetest.add_particlespawner(particlespawner definition)`
* Add a `ParticleSpawner`, an object that spawns an amount of particles over `time` seconds
* Returns an `id`, and -1 if adding didn't succeed

* `minetest.delete_particlespawner(id)`
* Delete `ParticleSpawner` with `id` (return value from `minetest.add_particlespawner`)

### Misc. ### Misc.
* `minetest.parse_json(string[, nullvalue])`: returns something * `minetest.parse_json(string[, nullvalue])`: returns something
* Convert a string containing JSON data into the Lua equivalent * Convert a string containing JSON data into the Lua equivalent
Expand Down Expand Up @@ -1318,58 +1308,3 @@ Displays distance to selected world position.
* `text`: Distance suffix. Can be blank. * `text`: Distance suffix. Can be blank.
* `number:` An integer containing the RGB value of the color used to draw the text. * `number:` An integer containing the RGB value of the color used to draw the text.
* `world_pos`: World position of the waypoint. * `world_pos`: World position of the waypoint.

### Particle definition (`add_particle`)

{
pos = {x=0, y=0, z=0},
velocity = {x=0, y=0, z=0},
acceleration = {x=0, y=0, z=0},
-- ^ Spawn particle at pos with velocity and acceleration
expirationtime = 1,
-- ^ Disappears after expirationtime seconds
size = 1,
collisiondetection = false,
-- ^ collisiondetection: if true collides with physical objects
collision_removal = false,
-- ^ collision_removal: if true then particle is removed when it collides,
-- ^ requires collisiondetection = true to have any effect
vertical = false,
-- ^ vertical: if true faces player using y axis only
texture = "image.png",
-- ^ Uses texture (string)
animation = {Tile Animation definition},
-- ^ optional, specifies how to animate the particle texture
glow = 0
-- ^ optional, specify particle self-luminescence in darkness
}

### `ParticleSpawner` definition (`add_particlespawner`)

{
amount = 1,
time = 1,
-- ^ If time is 0 has infinite lifespan and spawns the amount on a per-second base
minpos = {x=0, y=0, z=0},
maxpos = {x=0, y=0, z=0},
minvel = {x=0, y=0, z=0},
maxvel = {x=0, y=0, z=0},
minacc = {x=0, y=0, z=0},
maxacc = {x=0, y=0, z=0},
minexptime = 1,
maxexptime = 1,
minsize = 1,
maxsize = 1,
-- ^ The particle's properties are random values in between the bounds:
-- ^ minpos/maxpos, minvel/maxvel (velocity), minacc/maxacc (acceleration),
-- ^ minsize/maxsize, minexptime/maxexptime (expirationtime)
collisiondetection = false,
-- ^ collisiondetection: if true uses collision detection
collision_removal = false,
-- ^ collision_removal: if true then particle is removed when it collides,
-- ^ requires collisiondetection = true to have any effect
vertical = false,
-- ^ vertical: if true faces player using y axis only
texture = "image.png",
-- ^ Uses texture (string)
}
6 changes: 2 additions & 4 deletions src/client/client.h
Expand Up @@ -565,10 +565,8 @@ class Client : public con::PeerHandler, public InventoryManager, public IGameDef
// And relations to objects // And relations to objects
std::unordered_map<int, u16> m_sounds_to_objects; std::unordered_map<int, u16> m_sounds_to_objects;


// CSM/client IDs to SSM/server IDs Mapping // HUD
// Map server particle spawner IDs to client IDs // Mapping from server hud ids to internal hud ids
std::unordered_map<u32, u32> m_particles_server_to_client;
// Map server hud ids to client hud ids
std::unordered_map<u32, u32> m_hud_server_to_client; std::unordered_map<u32, u32> m_hud_server_to_client;


// Privileges // Privileges
Expand Down
8 changes: 0 additions & 8 deletions src/client/particles.h
Expand Up @@ -196,14 +196,6 @@ friend class ParticleSpawner;
void addNodeParticle(IGameDef *gamedef, LocalPlayer *player, v3s16 pos, void addNodeParticle(IGameDef *gamedef, LocalPlayer *player, v3s16 pos,
const MapNode &n, const ContentFeatures &f); const MapNode &n, const ContentFeatures &f);


u32 getSpawnerId() const
{
for (u32 id = 0;; ++id) { // look for unused particlespawner id
if (m_particle_spawners.find(id) == m_particle_spawners.end())
return id;
}
}

protected: protected:
void addParticle(Particle* toadd); void addParticle(Particle* toadd);


Expand Down
22 changes: 6 additions & 16 deletions src/network/clientpackethandler.cpp
Expand Up @@ -977,15 +977,15 @@ void Client::handleCommand_AddParticleSpawner(NetworkPacket* pkt)
float minsize; float minsize;
float maxsize; float maxsize;
bool collisiondetection; bool collisiondetection;
u32 server_id; u32 id;


*pkt >> amount >> spawntime >> minpos >> maxpos >> minvel >> maxvel *pkt >> amount >> spawntime >> minpos >> maxpos >> minvel >> maxvel
>> minacc >> maxacc >> minexptime >> maxexptime >> minsize >> minacc >> maxacc >> minexptime >> maxexptime >> minsize
>> maxsize >> collisiondetection; >> maxsize >> collisiondetection;


std::string texture = pkt->readLongString(); std::string texture = pkt->readLongString();


*pkt >> server_id; *pkt >> id;


bool vertical = false; bool vertical = false;
bool collision_removal = false; bool collision_removal = false;
Expand All @@ -1007,9 +1007,6 @@ void Client::handleCommand_AddParticleSpawner(NetworkPacket* pkt)
object_collision = readU8(is); object_collision = readU8(is);
} catch (...) {} } catch (...) {}


u32 client_id = m_particle_manager.getSpawnerId();
m_particles_server_to_client[server_id] = client_id;

ClientEvent *event = new ClientEvent(); ClientEvent *event = new ClientEvent();
event->type = CE_ADD_PARTICLESPAWNER; event->type = CE_ADD_PARTICLESPAWNER;
event->add_particlespawner.amount = amount; event->add_particlespawner.amount = amount;
Expand All @@ -1030,7 +1027,7 @@ void Client::handleCommand_AddParticleSpawner(NetworkPacket* pkt)
event->add_particlespawner.attached_id = attached_id; event->add_particlespawner.attached_id = attached_id;
event->add_particlespawner.vertical = vertical; event->add_particlespawner.vertical = vertical;
event->add_particlespawner.texture = new std::string(texture); event->add_particlespawner.texture = new std::string(texture);
event->add_particlespawner.id = client_id; event->add_particlespawner.id = id;
event->add_particlespawner.animation = animation; event->add_particlespawner.animation = animation;
event->add_particlespawner.glow = glow; event->add_particlespawner.glow = glow;


Expand All @@ -1040,19 +1037,12 @@ void Client::handleCommand_AddParticleSpawner(NetworkPacket* pkt)


void Client::handleCommand_DeleteParticleSpawner(NetworkPacket* pkt) void Client::handleCommand_DeleteParticleSpawner(NetworkPacket* pkt)
{ {
u32 server_id; u32 id;
*pkt >> server_id; *pkt >> id;

u32 client_id;
auto i = m_particles_server_to_client.find(server_id);
if (i != m_particles_server_to_client.end())
client_id = i->second;
else
return;


ClientEvent *event = new ClientEvent(); ClientEvent *event = new ClientEvent();
event->type = CE_DELETE_PARTICLESPAWNER; event->type = CE_DELETE_PARTICLESPAWNER;
event->delete_particlespawner.id = client_id; event->delete_particlespawner.id = id;


m_client_event_queue.push(event); m_client_event_queue.push(event);
} }
Expand Down
1 change: 0 additions & 1 deletion src/script/lua_api/CMakeLists.txt
Expand Up @@ -31,7 +31,6 @@ set(client_SCRIPT_LUA_API_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/l_localplayer.cpp ${CMAKE_CURRENT_SOURCE_DIR}/l_localplayer.cpp
${CMAKE_CURRENT_SOURCE_DIR}/l_mainmenu.cpp ${CMAKE_CURRENT_SOURCE_DIR}/l_mainmenu.cpp
${CMAKE_CURRENT_SOURCE_DIR}/l_minimap.cpp ${CMAKE_CURRENT_SOURCE_DIR}/l_minimap.cpp
${CMAKE_CURRENT_SOURCE_DIR}/l_particles_local.cpp
${CMAKE_CURRENT_SOURCE_DIR}/l_sound.cpp ${CMAKE_CURRENT_SOURCE_DIR}/l_sound.cpp
${CMAKE_CURRENT_SOURCE_DIR}/l_storage.cpp ${CMAKE_CURRENT_SOURCE_DIR}/l_storage.cpp
PARENT_SCOPE) PARENT_SCOPE)
206 changes: 0 additions & 206 deletions src/script/lua_api/l_particles_local.cpp

This file was deleted.

0 comments on commit 01cd63b

Please sign in to comment.