From cd3c2b2586d95640518878240c736e4cca6f52df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Brada?= Date: Thu, 2 Apr 2015 00:35:35 +0200 Subject: [PATCH] Putising some igneous stuff from sedimentaary. --- ign.lua | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 ign.lua diff --git a/ign.lua b/ign.lua new file mode 100644 index 0000000..4761bba --- /dev/null +++ b/ign.lua @@ -0,0 +1,114 @@ +-- +-- Igneous Layer +-- + +local layer={ + top={ + offset = -13, scale = 0, + spread = {x=80, y=80, z=80}, + octaves = 0, persist = 0 }, + bot={ + offset = -180, scale = 10, seed=100, + spread = {x=80, y=80, z=80}, + octaves = 2, persist = 0.7 }, + primary={ name="rocks:basalt" }, + localized={}, + seedseq=100, + stats={ count=0, total=0, node={}, totalnodes=0 } +} + +-- more rock defs + + +local reg=function(name,param) + layer.localized[name]={ + spread=(param.spread or 20), + height=(param.height or 15), + treshold=(param.treshold or 0.85), + secondary=(param.secondary), + seed=seedseq, + } + layer.stats.node[name]=0 + layer.seedseq=layer.seedseq+1 +end +rocks.register_igneous=reg + +-- rock registration + --eg: reg("default:stone_with_coal", { spread=48, height=14, treshold=0.45 }) + +minetest.register_on_generated(function(minp, maxp, seed) + if ( (layer.top.offset+layer.top.scale)>minp.y ) + and ( (layer.bot.offset-layer.bot.scale)bottom[noise2d_ix]) + and ((nodes[pos]==stone_ctx) or (nodes[pos]==dirt_ctx)) + then + layer.stats.totalnodes=layer.stats.totalnodes+1 + if nodes[pos]==stone_ctx then nodes[pos] = air_ctx end --layer.primary.ctx + for k,loc in pairs(localized) do + if ( loc.noise[noise3d_ix] > loc.treshold) then + nodes[pos]=loc.ctx + layer.stats.node[loc.ndn]=layer.stats.node[loc.ndn]+1 + end + end + end + noise2d_ix=noise2d_ix+1 + noise3d_ix=noise3d_ix+1 + end + noise2d_ix=noise2d_ix-side_length + end + noise2d_ix=noise2d_ix+side_length + end + manipulator:set_data(nodes) + --manipulator:calc_lighting() + manipulator:set_lighting({day=15,night=15}) + --manipulator:update_liquids() + manipulator:write_to_map() + print("[rocks] igneous gen2 "..os.clock()-timebefore) + layer.stats.count=layer.stats.count+1 + layer.stats.total=layer.stats.total+(os.clock()-timebefore) + layer.stats.side=side_length + end +end) + +minetest.register_on_shutdown(function() + print("[rocks](ign) on_shutdown: generated total "..layer.stats.count.." chunks in "..layer.stats.total.." seconds ("..(layer.stats.total/layer.stats.count).." seconds per "..layer.stats.side.."^3 chunk)") + for name,total in pairs(layer.stats.node) do + print("[rocks](ign) "..name..": "..total.." nodes placed ("..(total*100)/(layer.stats.count*layer.stats.totalnodes).." %)") + end +end) + +-- ~ Tomas Brod \ No newline at end of file