material-maker/material_maker/widgets/polygon_edit/polygon_view.gd

38 lines
1.1 KiB
GDScript3
Raw Normal View History

2020-12-28 10:27:51 +01:00
tool
extends Control
var polygon : MMPolygon
var draw_size : Vector2 = Vector2(1, 1)
var draw_offset : Vector2 = Vector2(0, 0)
func _ready() -> void:
polygon = MMPolygon.new()
connect("resized", self, "_on_resize")
_on_resize()
func transform_point(p : Vector2) -> Vector2:
return draw_offset+p*draw_size
func reverse_transform_point(p : Vector2) -> Vector2:
return (p-draw_offset)/draw_size
func _draw():
var current_theme : Theme = get_node("/root/MainWindow").theme
var bg = current_theme.get_stylebox("panel", "Panel").bg_color
var fg = current_theme.get_color("font_color", "Label")
var axes_color : Color = bg.linear_interpolate(fg, 0.25)
var curve_color : Color = bg.linear_interpolate(fg, 0.75)
draw_rect(Rect2(draw_offset, draw_size), axes_color, false)
2020-12-28 10:27:51 +01:00
var tp : Vector2 = transform_point(polygon.points[polygon.points.size()-1])
for p in polygon.points:
var tnp = transform_point(p)
draw_line(tp, tnp, curve_color)
2020-12-28 10:27:51 +01:00
tp = tnp
func _on_resize() -> void:
var ds : float = min(rect_size.x, rect_size.y)
draw_size = Vector2(ds, ds)
draw_offset = 0.5*(rect_size-draw_size)
update()