diff options
author | kwolekr <kwolekr@minetest.net> | 2014-12-06 04:18:04 -0500 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2014-12-06 13:53:35 -0500 |
commit | 5062b99cb0d252d9e377ff4560f7ecc9e66fd558 (patch) | |
tree | 3474c0734aac243cabfcf3af763becb4025da35b /src/mg_decoration.cpp | |
parent | 2b119e1e192ead701e69e261fe94ccb7382dbee7 (diff) | |
download | minetest-5062b99cb0d252d9e377ff4560f7ecc9e66fd558.tar.gz minetest-5062b99cb0d252d9e377ff4560f7ecc9e66fd558.tar.bz2 minetest-5062b99cb0d252d9e377ff4560f7ecc9e66fd558.zip |
Rewrite generate notification mechanism
Add support for notify-on-decoration
Clean up mapgen constructors
Clean up mapgen.cpp code style somewhat
Remove trailing whitespace from some files
Diffstat (limited to 'src/mg_decoration.cpp')
-rw-r--r-- | src/mg_decoration.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/mg_decoration.cpp b/src/mg_decoration.cpp index 3604b06c0..a8fd9eaad 100644 --- a/src/mg_decoration.cpp +++ b/src/mg_decoration.cpp @@ -144,7 +144,9 @@ size_t Decoration::placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax) } } - generate(mg, &ps, max_y, v3s16(x, y, z)); + v3s16 pos(x, y, z); + if (generate(mg, &ps, max_y, pos)) + mg->gennotify.addEvent(GENNOTIFY_DECORATION, pos, id); } } @@ -254,12 +256,12 @@ bool DecoSimple::canPlaceDecoration(ManualMapVoxelManipulator *vm, v3s16 p) } -void DecoSimple::generate(Mapgen *mg, PseudoRandom *pr, s16 max_y, v3s16 p) +size_t DecoSimple::generate(Mapgen *mg, PseudoRandom *pr, s16 max_y, v3s16 p) { ManualMapVoxelManipulator *vm = mg->vm; if (!canPlaceDecoration(vm, p)) - return; + return 0; content_t c_place = c_decos[pr->range(0, c_decos.size() - 1)]; @@ -279,6 +281,8 @@ void DecoSimple::generate(Mapgen *mg, PseudoRandom *pr, s16 max_y, v3s16 p) vm->m_data[vi] = MapNode(c_place); } + + return 1; } @@ -291,7 +295,7 @@ int DecoSimple::getHeight() /////////////////////////////////////////////////////////////////////////////// -void DecoSchematic::generate(Mapgen *mg, PseudoRandom *pr, s16 max_y, v3s16 p) +size_t DecoSchematic::generate(Mapgen *mg, PseudoRandom *pr, s16 max_y, v3s16 p) { ManualMapVoxelManipulator *vm = mg->vm; @@ -305,12 +309,14 @@ void DecoSchematic::generate(Mapgen *mg, PseudoRandom *pr, s16 max_y, v3s16 p) u32 vi = vm->m_area.index(p); content_t c = vm->m_data[vi].getContent(); if (!CONTAINS(c_place_on, c)) - return; + return 0; Rotation rot = (rotation == ROTATE_RAND) ? (Rotation)pr->range(ROTATE_0, ROTATE_270) : rotation; schematic->blitToVManip(p, vm, rot, false, mg->ndef); + + return 1; } |