From 13e08c2811946d3dea17418ee14f412a25355e43 Mon Sep 17 00:00:00 2001 From: Rodz Labs Date: Mon, 29 Jul 2024 22:31:17 +0200 Subject: [PATCH] Fixed lattice resizing --- addons/material_maker/types/lattice.gd | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/addons/material_maker/types/lattice.gd b/addons/material_maker/types/lattice.gd index a0e677f7..765debd7 100644 --- a/addons/material_maker/types/lattice.gd +++ b/addons/material_maker/types/lattice.gd @@ -26,9 +26,23 @@ func compare(lattice) -> bool: return false return true +static func get_point_from_array(v : Vector2i, size : Vector2i, points : PackedVector2Array) -> Vector2: + return points[v.x+(size.x+1)*v.y] + static func interpolate_point(v : Vector2, size : Vector2i, points : PackedVector2Array) -> Vector2: - #v *= Vector2(size) - return v + v *= Vector2(size) + var vs : Vector2i = Vector2i(floor(v.x), floor(v.y)) + vs.x = clampi(vs.x, 0, size.x-1) + vs.y = clampi(vs.y, 0, size.y-1) + var vt : Vector2 = Vector2(v.x-vs.x, v.y-vs.y) + print(str(vs)+" "+str(vt)) + var p00 : Vector2 = get_point_from_array(vs, size, points) + var p01 : Vector2 = get_point_from_array(vs+Vector2i(0, 1), size, points) + var p10 : Vector2 = get_point_from_array(vs+Vector2i(1, 0), size, points) + var p11 : Vector2 = get_point_from_array(vs+Vector2i(1, 1), size, points) + var p0 : Vector2 = lerp(p00, p01, vt.y) + var p1 : Vector2 = lerp(p10, p11, vt.y) + return lerp(p0, p1, vt.x) func resize(sx : int, sy : int) -> void: var old_size : Vector2i = size