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

43 lines
1.2 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)
2021-09-30 21:31:52 +02:00
var closed : bool = true
func set_closed(c : bool = true):
closed = c
update()
2020-12-28 10:27:51 +01:00
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 = mm_globals.main_window.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)
2021-09-30 21:31:52 +02:00
var tp : Vector2 = transform_point(polygon.points[polygon.points.size()-1 if closed else 0])
2020-12-28 10:27:51 +01:00
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()