From 8ace387da3976b4b12d192dcbd033fead05d83a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Brada?= Date: Sun, 7 Jun 2015 11:04:27 +0200 Subject: [PATCH] Experiments with layers. --- rocks/layers.lua | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 rocks/layers.lua diff --git a/rocks/layers.lua b/rocks/layers.lua new file mode 100644 index 0000000..013b011 --- /dev/null +++ b/rocks/layers.lua @@ -0,0 +1,61 @@ +local np_elv = { + offset = -4, octaves = 2, persist = 0.4, + scale = 28, + spread = {x=25, y=25, z=25}, + seed = -546, +} +local np_fault = { + offset = -5, octaves = 2, persist = 0.4, + scale = 10, + spread = {x=25, y=25, z=25}, + seed = 632, +} + +rocksl.genlayers = function (minp, maxp, seed, vm, area) + local t1 = os.clock() + local data = vm:get_data() + + local chunksize = maxp.x - minp.x + 1 + local pmapsize = {x = chunksize, y = chunksize, z = chunksize} + local minpxz = {x = minp.x, y = minp.z} + local c_stone= minetest.get_content_id("default:stone") + local c_sample=minetest.get_content_id("rocks:samplelayerblock") + local c_air=minetest.get_content_id("air") + + n_elv= minetest.get_perlin_map(np_elv, pmapsize) : get2dMap_flat(minpxz) + n_fault= minetest.get_perlin_map(np_fault, pmapsize) : get2dMap_flat(minpxz) + + local nixz=1 + for z=minp.z, maxp.z do for x=minp.x, maxp.x do + + local fault=n_fault[nixz] + local lmh=-10 + if fault>0 then lmh=lmh+10 end + local lt=math.floor(n_elv[nixz]) + if lt>0 then + if lt>18 then lt=18 end + local top=math.min(lmh,maxp.y) + local bot=math.max(1+lmh-lt,minp.y) + for y=bot, top do + local di=area:index(x,y,z) + data[di]=c_sample + end + end + + nixz=nixz+1 + if z%100>50 then + for y=minp.y, maxp.y do data[area:index(x,y,z)]=c_air end + end + + end end + vm:set_data(data) + vm:set_lighting({day=15,night=15}) + minetest.log("action", "rocks/genlayers/ "..math.ceil((os.clock() - t1) * 1000).." ms ") +end + +minetest.register_node( "rocks:samplelayerblock", { + description = S("Sample"), + tiles = { "rocks_Slate.png" }, + is_ground_content = true, sounds = default.node_sound_stone_defaults(), + groups = {cracky=3}, +})