From 07622bf9b49830aae2a5e12b5616471da6a8b19a Mon Sep 17 00:00:00 2001 From: paramat Date: Fri, 2 Mar 2018 13:39:39 +0000 Subject: [PATCH] Generate Notifier: Clear events once after all 'on generated' functions --- src/emerge.cpp | 6 ++++++ src/mapgen/mapgen.cpp | 10 ++++++---- src/mapgen/mapgen.h | 4 ++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/emerge.cpp b/src/emerge.cpp index ffe387f63..277841053 100644 --- a/src/emerge.cpp +++ b/src/emerge.cpp @@ -585,6 +585,12 @@ MapBlock *EmergeThread::finishGen(v3s16 pos, BlockMakeData *bmdata, m_server->setAsyncFatalError("Lua: finishGen" + std::string(e.what())); } + /* + Clear generate notifier events + */ + Mapgen *mg = m_emerge->getCurrentMapgen(); + mg->gennotify.clearEvents(); + EMERGE_DBG_OUT("ended up with: " << analyze_block(block)); /* diff --git a/src/mapgen/mapgen.cpp b/src/mapgen/mapgen.cpp index 5e581086f..5f7a9d6cf 100644 --- a/src/mapgen/mapgen.cpp +++ b/src/mapgen/mapgen.cpp @@ -1003,8 +1003,7 @@ bool GenerateNotifier::addEvent(GenNotifyType type, v3s16 pos, u32 id) void GenerateNotifier::getEvents( - std::map > &event_map, - bool peek_events) + std::map > &event_map) { std::list::iterator it; @@ -1016,9 +1015,12 @@ void GenerateNotifier::getEvents( event_map[name].push_back(gn.pos); } +} - if (!peek_events) - m_notify_events.clear(); + +void GenerateNotifier::clearEvents() +{ + m_notify_events.clear(); } diff --git a/src/mapgen/mapgen.h b/src/mapgen/mapgen.h index 6ca907573..2ebba68ea 100644 --- a/src/mapgen/mapgen.h +++ b/src/mapgen/mapgen.h @@ -99,8 +99,8 @@ public: void setNotifyOnDecoIds(std::set *notify_on_deco_ids); bool addEvent(GenNotifyType type, v3s16 pos, u32 id=0); - void getEvents(std::map > &event_map, - bool peek_events=false); + void getEvents(std::map > &event_map); + void clearEvents(); private: u32 m_notify_on = 0;