aboutsummaryrefslogtreecommitdiff
path: root/util/sectors2sqlite.py
diff options
context:
space:
mode:
authorRealBadAngel <maciej.kasatkin@o2.pl>2014-08-21 23:28:01 +0200
committerRealBadAngel <maciej.kasatkin@o2.pl>2014-08-21 23:28:01 +0200
commitd9df592da824629149bf744726beba33f604dc2d (patch)
tree2950e26912e7662616c38d382520ebb8cd820328 /util/sectors2sqlite.py
parent2a5c88bde167c69b178d6c5ed4d702cadc211ded (diff)
downloadminetest-d9df592da824629149bf744726beba33f604dc2d.tar.gz
minetest-d9df592da824629149bf744726beba33f604dc2d.tar.bz2
minetest-d9df592da824629149bf744726beba33f604dc2d.zip
Pass light sources in blue channel of vertex color instead of decoded light for all special drawtypes.
Plus some style fixes and optimizations.
Diffstat (limited to 'util/sectors2sqlite.py')
0 files changed, 0 insertions, 0 deletions
ss="hl com">51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #pragma once #include "mtevent.h" #include <list> #include <map> class EventManager : public MtEventManager { static void receiverReceive(MtEvent *e, void *data) { MtEventReceiver *r = (MtEventReceiver *)data; r->onEvent(e); } struct FuncSpec { event_receive_func f; void *d; FuncSpec(event_receive_func f, void *d) : f(f), d(d) {} }; struct Dest { std::list<FuncSpec> funcs{}; }; std::map<MtEvent::Type, Dest> m_dest{}; public: ~EventManager() override = default; void put(MtEvent *e) override { std::map<MtEvent::Type, Dest>::iterator i = m_dest.find(e->getType()); if (i != m_dest.end()) { std::list<FuncSpec> &funcs = i->second.funcs; for (FuncSpec &func : funcs) { (*(func.f))(e, func.d); } } delete e; } void reg(MtEvent::Type type, event_receive_func f, void *data) override { std::map<MtEvent::Type, Dest>::iterator i = m_dest.find(type); if (i != m_dest.end()) { i->second.funcs.emplace_back(f, data); } else { Dest dest; dest.funcs.emplace_back(f, data); m_dest[type] = dest; } } void dereg(MtEvent::Type type, event_receive_func f, void *data) override { std::map<MtEvent::Type, Dest>::iterator i = m_dest.find(type); if (i != m_dest.end()) { std::list<FuncSpec> &funcs = i->second.funcs; auto j = funcs.begin(); while (j != funcs.end()) { bool remove = (j->f == f && (!data || j->d == data)); if (remove) funcs.erase(j++); else ++j; } } } };