mirror of
https://github.com/t-affeldt/climate_api.git
synced 2025-06-30 15:30:43 +02:00
Improve calculation performance, write helpful README
This commit is contained in:
@ -33,6 +33,10 @@ function api.set_effect_cycle(name, cycle)
|
||||
climate_mod.cycles[name].timespan = cycle
|
||||
end
|
||||
|
||||
function api.register_global_influence(name, func)
|
||||
climate_mod.global_influences[name] = func
|
||||
end
|
||||
|
||||
function api.register_influence(name, func)
|
||||
climate_mod.influences[name] = func
|
||||
end
|
||||
|
@ -20,12 +20,12 @@ climate_api.register_influence("biome", function(pos)
|
||||
return biome
|
||||
end)
|
||||
|
||||
climate_api.register_influence("windspeed", function(_)
|
||||
climate_api.register_global_influence("windspeed", function()
|
||||
local wind = climate_api.environment.get_wind()
|
||||
return vector.length(wind)
|
||||
end)
|
||||
|
||||
climate_api.register_influence("wind_yaw", function(_)
|
||||
climate_api.register_global_influence("wind_yaw", function()
|
||||
local wind = climate_api.environment.get_wind()
|
||||
if vector.length(wind) == 0 then return 0 end
|
||||
return minetest.dir_to_yaw(wind)
|
||||
@ -45,10 +45,6 @@ climate_api.register_influence("daylight", function(pos)
|
||||
return minetest.env:get_node_light(pos, 0.5)
|
||||
end)
|
||||
|
||||
climate_api.register_influence("time", function(_)
|
||||
climate_api.register_global_influence("time", function()
|
||||
return minetest.get_timeofday()
|
||||
end)
|
||||
|
||||
climate_api.register_influence("day_count", function(_)
|
||||
return minetest.get_day_count()
|
||||
end)
|
@ -14,6 +14,7 @@ minetest.register_globalstep(function(dtime)
|
||||
world_timer = 0
|
||||
climate_mod.state:set_float("noise_timer", noise_timer)
|
||||
climate_mod.world.update_status(noise_timer)
|
||||
climate_mod.global_environment = climate_mod.trigger.get_global_environment()
|
||||
end
|
||||
|
||||
local previous_effects = table.copy(climate_mod.current_effects)
|
||||
|
@ -1,20 +1,15 @@
|
||||
local trigger = {}
|
||||
|
||||
function trigger.get_position_environment(pos)
|
||||
local wind_x = climate_mod.state:get_float("wind_x")
|
||||
local wind_z = climate_mod.state:get_float("wind_z")
|
||||
|
||||
--[[local env = {}
|
||||
env.pos = pos
|
||||
env.height = pos.y
|
||||
env.wind = vector.new(wind_x, 0, wind_z)
|
||||
env.windspeed = vector.length(env.wind)
|
||||
env.heat = climate_api.environment.get_heat(pos)
|
||||
env.humidity = climate_api.environment.get_humidity(pos)
|
||||
env.time = minetest.get_timeofday()
|
||||
env.date = minetest.get_day_count()
|
||||
env.light = minetest.get_node_light(vector.add(pos, vector.new({x=0,y=1,z=0})), 0.5)]]
|
||||
function trigger.get_global_environment()
|
||||
local env = {}
|
||||
for influence, func in pairs(climate_mod.global_influences) do
|
||||
env[influence] = func()
|
||||
end
|
||||
return env
|
||||
end
|
||||
|
||||
function trigger.get_position_environment(pos)
|
||||
local env = table.copy(climate_mod.global_environment)
|
||||
for influence, func in pairs(climate_mod.influences) do
|
||||
env[influence] = func(pos)
|
||||
end
|
||||
|
Reference in New Issue
Block a user