diff options
author | raymoo <uguu@installgentoo.com> | 2016-08-04 13:09:21 -0700 |
---|---|---|
committer | Ner'zhul <nerzhul@users.noreply.github.com> | 2016-10-13 17:33:16 +0200 |
commit | c9e7a27eeb628be78a835abadf8afe1177eb90c5 (patch) | |
tree | 119a8747a0d33f69f5e14c6a563f3e9df673f923 /src/environment.cpp | |
parent | 0b27a70b294590d7fb2bb25bf2d207a719ce8d98 (diff) | |
download | minetest-c9e7a27eeb628be78a835abadf8afe1177eb90c5.tar.gz minetest-c9e7a27eeb628be78a835abadf8afe1177eb90c5.tar.bz2 minetest-c9e7a27eeb628be78a835abadf8afe1177eb90c5.zip |
Attached particle spawners
Diffstat (limited to 'src/environment.cpp')
-rw-r--r-- | src/environment.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/environment.cpp b/src/environment.cpp index ceaa01d7a..ceaf40d89 100644 --- a/src/environment.cpp +++ b/src/environment.cpp @@ -1518,6 +1518,30 @@ u32 ServerEnvironment::addParticleSpawner(float exptime) return id; } +u32 ServerEnvironment::addParticleSpawner(float exptime, u16 attached_id) +{ + u32 id = addParticleSpawner(exptime); + m_particle_spawner_attachments[id] = attached_id; + if (ServerActiveObject *obj = getActiveObject(attached_id)) { + obj->attachParticleSpawner(id); + } + return id; +} + +void ServerEnvironment::deleteParticleSpawner(u32 id, bool remove_from_object) +{ + m_particle_spawners.erase(id); + UNORDERED_MAP<u32, u16>::iterator it = m_particle_spawner_attachments.find(id); + if (it != m_particle_spawner_attachments.end()) { + u16 obj_id = (*it).second; + ServerActiveObject *sao = getActiveObject(obj_id); + if (sao != NULL && remove_from_object) { + sao->detachParticleSpawner(id); + } + m_particle_spawner_attachments.erase(id); + } +} + ServerActiveObject* ServerEnvironment::getActiveObject(u16 id) { ActiveObjectMap::iterator n = m_active_objects.find(id); |