From caf8d2a9d16a313bbc86a27ad0642efc76852e9f Mon Sep 17 00:00:00 2001 From: Craig Robbins Date: Sat, 7 Feb 2015 17:52:56 +1000 Subject: Increase MapBlock::actuallyUpdateDayNightDiff() performance by 2-8x. ok @celeron55 Before patch, function consumes up to ~8% of the main server loop. After, ~0% (below level of 2 places of significance) --- src/mapnode.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/mapnode.cpp') diff --git a/src/mapnode.cpp b/src/mapnode.cpp index 056b94054..388071a17 100644 --- a/src/mapnode.cpp +++ b/src/mapnode.cpp @@ -74,6 +74,22 @@ void MapNode::setLight(enum LightBank bank, u8 a_light, INodeDefManager *nodemgr assert(0); } +bool MapNode::isLightDayNightEq(INodeDefManager *nodemgr) const +{ + const ContentFeatures &f = nodemgr->get(*this); + bool isEqual; + + if (f.param_type == CPT_LIGHT) { + u8 day = MYMAX(f.light_source, param1 & 0x0f); + u8 night = MYMAX(f.light_source, (param1 >> 4) & 0x0f); + isEqual = day == night; + } else { + isEqual = true; + } + + return isEqual; +} + u8 MapNode::getLight(enum LightBank bank, INodeDefManager *nodemgr) const { // Select the brightest of [light source, propagated light] -- cgit v1.2.3