diff options
author | kwolekr <kwolekr@minetest.net> | 2015-04-17 00:52:48 -0400 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2015-04-17 00:53:05 -0400 |
commit | 406d9ba87b9f6e57b86c6282bf157e3341aa195c (patch) | |
tree | de88e4136a31c3e350a0257301b134555706ae82 /src/mg_decoration.cpp | |
parent | f0a1379e5a9ebc954e95d07c1ad5d71587adc6bc (diff) | |
download | minetest-406d9ba87b9f6e57b86c6282bf157e3341aa195c.tar.gz minetest-406d9ba87b9f6e57b86c6282bf157e3341aa195c.tar.bz2 minetest-406d9ba87b9f6e57b86c6282bf157e3341aa195c.zip |
Schematics: Remove referenced schematics from Decorations on clear
Diffstat (limited to 'src/mg_decoration.cpp')
-rw-r--r-- | src/mg_decoration.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/mg_decoration.cpp b/src/mg_decoration.cpp index 8f81b0d11..ec2d3e8b0 100644 --- a/src/mg_decoration.cpp +++ b/src/mg_decoration.cpp @@ -61,16 +61,6 @@ size_t DecorationManager::placeAllDecos(Mapgen *mg, u32 blockseed, } -void DecorationManager::clear() -{ - for (size_t i = 0; i < m_objects.size(); i++) { - Decoration *deco = (Decoration *)m_objects[i]; - delete deco; - } - m_objects.clear(); -} - - /////////////////////////////////////////////////////////////////////////////// @@ -320,8 +310,20 @@ int DecoSimple::getHeight() /////////////////////////////////////////////////////////////////////////////// +DecoSchematic::DecoSchematic() : + Decoration::Decoration() +{ + schematic = NULL; +} + + size_t DecoSchematic::generate(MMVManip *vm, PseudoRandom *pr, v3s16 p) { + // Schematic could have been unloaded but not the decoration + // In this case generate() does nothing (but doesn't *fail*) + if (schematic == NULL) + return 0; + if (flags & DECO_PLACE_CENTER_X) p.X -= (schematic->size.X + 1) / 2; if (flags & DECO_PLACE_CENTER_Y) |