aboutsummaryrefslogtreecommitdiff
path: root/src/script/cpp_api/s_node.cpp
Commit message (Expand)AuthorAge
* Add meshnode drawtype.RealBadAngel2014-10-18
* Fix object reference pushing functions when called from coroutinesShadowNinja2014-10-07
* Add optional framed glasslike drawtypeBlockMen2014-10-02
* Add firelike drawtypeTriBlade92014-09-21
* Only push the Lua error handler onceShadowNinja2014-04-27
* Pass pointed_thing to on_punch and minetest.register_on_punchnode callbacksShadowNinja2014-01-23
* Pass a errfunc to lua_pcall to get a tracebackShadowNinja2013-11-15
* Omnicleanup: header cleanup, add ModApiUtil shared between game and mainmenuKahrl2013-08-14
* Weather supportproller2013-07-27
* Leveled nodeboxproller2013-07-13
* Move scriptapi to separate folder (by sapier)sapier2013-05-25
class="hl kwc">friend class ::TestClientActiveObjectMgr; friend class ::TestServerActiveObjectMgr; public: virtual void step(float dtime, const std::function<void(T *)> &f) = 0; virtual bool registerObject(T *obj) = 0; virtual void removeObject(u16 id) = 0; T *getActiveObject(u16 id) { typename std::unordered_map<u16, T *>::const_iterator n = m_active_objects.find(id); return (n != m_active_objects.end() ? n->second : nullptr); } protected: u16 getFreeId() const { // try to reuse id's as late as possible static thread_local u16 last_used_id = 0; u16 startid = last_used_id; while (!isFreeId(++last_used_id)) { if (last_used_id == startid) return 0; } return last_used_id; } bool isFreeId(u16 id) const { return id != 0 && m_active_objects.find(id) == m_active_objects.end(); } std::unordered_map<u16, T *> m_active_objects; };