1
0
mirror of git://repo.or.cz/rocks.git synced 2024-11-18 08:10:47 +01:00
rocks/register.lua
2015-03-25 22:12:00 +01:00

62 lines
1.5 KiB
Lua

-- global table and register_* functions
rocks = {}
rocks.layers = {}
rocks.layers_name = {}
rocks.veins = {}
rocks.ores = {}
rocks.register_layer=function(name,params,rock)
assert(name)
assert(params)
assert(rock)
assert(params.gain)
assert(params.height)
local maxheight
local ld= {
gain=params.gain,
height=params.height,
maxheight=maxheight,
limit=(params.limit*params.gain)+params.height,
seed=params.seed or 0,
rock={ node=rock },
veins={},
name=name
}
rocks.layers_name[name]= ld
print("[rocks] layer "..ld.name.." height="..ld.height.." limit="..ld.limit)
end
rocks.register_vein=function(name,params)
assert(name)
assert(params)
assert(not rocks.veins[name])
rocks.veins[name]={
np={
offset=0, scale=1, octaves=1, presist=0.8,
spread={x=params.spread.x, y=params.spread.y, z=params.spread.z},
-- swapped, becouse we generate by horizontal layers
seed=params.seed
},
treshold=params.treshold,
hmin=params.hmin, hmax=params.hmax,
layers=params.layers,
ores={}
}
for i,layername in pairs(params.layers) do
rocks.layers_name[layername].veins[name]=rocks.veins[name]
print("[rocks] vein "..name.." in "..layername)
end
end
rocks.register_ore=function( vein, node, params )
-- params= {treshold=0, chance=1 }
ore={ node=node }
ore.treshold=(params.treshold or rocks.veins[vein].treshold)
ore.chance= (params.chance or 1)
table.insert(rocks.veins[vein].ores, ore)
print("[rocks] ore "..node.." in "..vein.." chance="..ore.chance.." treshold="..ore.treshold)
end