aboutsummaryrefslogtreecommitdiff
path: root/src/staticobject.cpp
AgeCommit message (Collapse)Author
2022-11-03Reduce exposure of various internals (#12885)Loïc Blot
* refactoring(StaticObjectList): don't expose m_active and m_stored anymore This prevents our old crap code where anyone can access to StaticObjectList. use proper modifiers. It also permits to do a short cleanup on MapBlock using a helper * refactoring(MapBlock): reduce a bit exposed m_active_blocks variable * refactoring: MapBlock::m_node_timers is now private We already had various helpers to perform this privatization, just use it. Also factorize the MapBlock stepping code for timers using already existing code and importing them from ServerEnvironment to MapBlock. It's currently done pretty straight forward without any inheritance as MapBlock is just used everywhere, maybe in a future we'll have ServerMapBlock over MapBlock. Currently for a simple function let's just use proper objects and add a comment warning * refactoring(Server): fix duplicated function for add/remove node * refactoring(guiFormSpecMenu): add removeAll function to prevent duplicated code * refactoring(ShadowRenderer) + perf: code quality + increase performance * All callers are already using the point and we should never test a function with nullptr node, it's a bug. Removed workaround which was hacky and fix the bug * Drop clientmap lookup from shadowrendered, just use directly its pointer and forbid to push it in the generic list * Reduce memory pressure on the renderShadowObject by preventing deallocating and reallocating multiple vectors on each node * refactoring(MapBlock): reduce exposure of MapBlock::m_static_objects It's not complete as some parts of the code are pretty nested, but it's better than before :) * fix: better working on new functions & drop unwanted 2 lines Co-authored-by: Jude Melton-Houghton <jwmhjwmh@gmail.com> Co-authored-by: Jude Melton-Houghton <jwmhjwmh@gmail.com>
2022-07-14Move f1000 sanitizing to the places that still use this typesfan5
2021-08-19Validate staticdata and object property length limits (#11511)sfan5
Some games provide users with enough freedom to create items with metadata longer than 64KB, preventing this from causing issues is on them but we'll still do the minimum not to abort the server if this happens.
2020-10-01(se)SerializeString: Include max length in the nameSmallJoker
This commit clarifies the maximal length of the serialized strings. It will avoid accidental use of serializeString() when a larger string can be expected. Removes unused Wide String serialization functions
2020-04-11Drop content_sao.{cpp,h}Loic Blot
Move LuaEntitySAO to a new dedicated file Drop TestSAO (useless object) Drop the old static startup initialized SAO factory, which was pretty useless. This factory was using a std::map for 2 elements, now just use a simple condition owned by ServerEnvironment, which will be lightweight, that will also drop a one time useful test on each LuaEntitySAO creation. This should reduce server load on massive SAO creation
2019-08-12Handle multiple deserialization of a block's entitiesRogier
This fix consists of two parts: - Clear the list of stored entities. This has no side-effects. - Catch the case where active entities exist and print a message. Clearing the active entitiy list has side-effects that should be handled. (those entities are known to the environment and to clients). As avoiding those side-effects is more complex, and as this problem is not expected to occur (with PR #4847 merged), there is no real incentive to implement this ATM. This issue was a contributing factor to bug #4217. With the other contributing factor removed (PR #4847), this commit makes sure this factor does not go unnoticed if it ever happens again.
2018-03-09ServerEnvironment & StaticObject cleanupsLoic Blot
* isFreeServerActiveObjectId is now part of ServerEnvironment * getFreeServerActiveObjectId is now part of ServerEnvironment * StaticObject constructor now take ServerActiveObject instead of type + string. This permits to remove a big string copy in some code parts
2017-08-20Modernize source code: last part (#6285)Loïc Blot
* Modernize source code: last par * Use empty when needed * Use emplace_back instead of push_back when needed * For range-based loops * Initializers fixes * constructors, destructors default * c++ C stl includes
2015-10-04Define and use limit constants for Irrlicht fixed-width typeskwolekr
2015-09-29Don't serialize StaticObjectList with > 65535 objectsKahrl
Because the count is serialized as u16, this would cause overflow. If minetest later deserialized a mapblock with an incorrect static object count, it would be unable to find the NameIdMapping (which comes after the StaticObjectList) and abort with an error such as "Invalid block data in database: unsupported NameIdMapping version" (issue #2610).
2015-03-04Use std::vector instead of std::list in StaticObjectList and ↵Loic Blot
MutexedMap::getValues()
2014-11-21serialize.h: use machine native byte swapping if available, fall-back to ↵Rafael Reilova
previous generic method if not (supported for GCC using endian.h, detection done in cmake) write/readARGB8() - just write 32-bit color in one op, instead of 4 1-byte ops cleanup: removed unneeded buffer init for some serialize-out functions use a #define for the fixed point factor in read/writeF1000() nodemetadata.cpp, nodetimer.cpp optimzation: simpler deserialize node position method staticobject.cpp: cleanup: use util/serialize.h inlines instead of its own de/serialization serialize.cpp: minor optimization/cleanup: avoid generation of unneeded string temporary CMakeLists.txt, cmake_config.h.in: detection of endian.h config.h: added HAVE_ENDIAN_H Commits due to feedback squashed Signed-off-by: Craig Robbins <kde.psych@gmail.com>
2013-03-11Migrate to STL containers/algorithms.Ilya Zhuravlev
2013-02-24Update Copyright YearsSfan5
2013-02-24Change Minetest-c55 to MinetestPilzAdam
2012-11-26Move util/serialize.h out from staticobject.h for smaller header dependenciesPerttu Ahola