summaryrefslogtreecommitdiff
path: root/src/mg_decoration.cpp
diff options
context:
space:
mode:
authorkwolekr <kwolekr@minetest.net>2015-04-17 00:52:48 -0400
committerkwolekr <kwolekr@minetest.net>2015-04-17 00:53:05 -0400
commit406d9ba87b9f6e57b86c6282bf157e3341aa195c (patch)
treede88e4136a31c3e350a0257301b134555706ae82 /src/mg_decoration.cpp
parentf0a1379e5a9ebc954e95d07c1ad5d71587adc6bc (diff)
downloadminetest-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.cpp22
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)