1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-01-06 00:23:49 +02:00

Add func for noise vector

This commit is contained in:
Gerkiz 2024-04-21 19:19:48 +02:00
parent 58ac01cbbc
commit 1a6fdcdf87

View File

@ -15,6 +15,16 @@ local function get_brush(size)
return vectors
end
local function get_brush_unfiltered(size)
local vectors = {}
for x = size, size * -1, -1 do
for y = size * -1, size, 1 do
vectors[#vectors + 1] = {x = x, y = y}
end
end
return vectors
end
function Public.noise_vector_entity_path(surface, entity_name, position, base_vector, length, collision)
local seed_1 = math.random(1, 10000000)
local seed_2 = math.random(1, 10000000)
@ -100,6 +110,52 @@ function Public.noise_vector_tile_path(surface, tile_name, position, base_vector
return tiles
end
function Public.noise_vector_tiles_path(surface, tbl_tiles, position, base_vector, length, brush_size, whitelist, seed_1, seed_2, m)
seed_1 = seed_1 or math.random(1, 10000000)
seed_2 = seed_2 or math.random(1, 10000000)
m = m or math.random(1, 100) * 0.001
local vector = {}
local tiles = {}
local minimal_movement = 0.40
local brush_vectors = get_brush_unfiltered(brush_size)
local tile_name = tbl_tiles[math.random(1, #tbl_tiles)]
for _ = 1, length, 1 do
for _, brush in pairs(brush_vectors) do
local p = {x = position.x + brush.x, y = position.y + brush.y}
if whitelist then
local tile = surface.get_tile(p)
if tile.valid then
if whitelist[tile.name] then
surface.set_tiles({{name = tile_name, position = p}}, true)
tiles[#tiles + 1] = {name = tile_name, position = p}
end
end
end
end
local noise = simplex_noise(position.x * m, position.y * m, seed_1)
local noise_2 = simplex_noise(position.x * m, position.y * m, seed_2)
vector[1] = base_vector[1] + noise
vector[2] = base_vector[2] + noise_2
if math.abs(vector[1]) < minimal_movement and math.abs(vector[2]) < minimal_movement then
local i = math.random(1, 2)
if vector[i] < 0 then
vector[i] = minimal_movement * -1
else
vector[i] = minimal_movement
end
end
position = {x = position.x + vector[1], y = position.y + vector[2]}
end
return tiles, seed_1, seed_2, m
end
--/c noise_vector_path(game.player.surface, "tree-04", game.player.position, {0,0})
return Public