From c610643c4ca1d1c32ca3e400b5cb055f25401107 Mon Sep 17 00:00:00 2001 From: paramat Date: Fri, 23 Feb 2018 13:42:48 +0000 Subject: Place schematic (on vmanip): Enable use of 'place center' flags For 'place schematic' and 'place schematic on vmanip' APIs. Fix 'place center' code to properly centre schematics. Fix some comments. --- src/mapgen/mg_schematic.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/mapgen') diff --git a/src/mapgen/mg_schematic.cpp b/src/mapgen/mg_schematic.cpp index fc77194ac..ba619b2e0 100644 --- a/src/mapgen/mg_schematic.cpp +++ b/src/mapgen/mg_schematic.cpp @@ -188,15 +188,15 @@ bool Schematic::placeOnVManip(MMVManip *vm, v3s16 p, u32 flags, //// Adjust placement position if necessary if (flags & DECO_PLACE_CENTER_X) - p.X -= (s.X + 1) / 2; + p.X -= (s.X - 1) / 2; if (flags & DECO_PLACE_CENTER_Y) - p.Y -= (s.Y + 1) / 2; + p.Y -= (s.Y - 1) / 2; if (flags & DECO_PLACE_CENTER_Z) - p.Z -= (s.Z + 1) / 2; + p.Z -= (s.Z - 1) / 2; blitToVManip(vm, p, rot, force_place); - return vm->m_area.contains(VoxelArea(p, p + s - v3s16(1,1,1))); + return vm->m_area.contains(VoxelArea(p, p + s - v3s16(1, 1, 1))); } void Schematic::placeOnMap(ServerMap *map, v3s16 p, u32 flags, @@ -219,16 +219,16 @@ void Schematic::placeOnMap(ServerMap *map, v3s16 p, u32 flags, //// Adjust placement position if necessary if (flags & DECO_PLACE_CENTER_X) - p.X -= (s.X + 1) / 2; + p.X -= (s.X - 1) / 2; if (flags & DECO_PLACE_CENTER_Y) - p.Y -= (s.Y + 1) / 2; + p.Y -= (s.Y - 1) / 2; if (flags & DECO_PLACE_CENTER_Z) - p.Z -= (s.Z + 1) / 2; + p.Z -= (s.Z - 1) / 2; //// Create VManip for effected area, emerge our area, modify area //// inside VManip, then blit back. v3s16 bp1 = getNodeBlockPos(p); - v3s16 bp2 = getNodeBlockPos(p + s - v3s16(1,1,1)); + v3s16 bp2 = getNodeBlockPos(p + s - v3s16(1, 1, 1)); MMVManip vm(map); vm.initialEmerge(bp1, bp2); -- cgit v1.2.3