31 lines
988 B
GDScript
31 lines
988 B
GDScript
extends ColorRect
|
|
signal drawing_finished
|
|
|
|
const TEX_SIZE = 512
|
|
var triangles : Array = []
|
|
var min_point: Vector3 = Vector3(-1, -1, -1)
|
|
var max_point: Vector3 = Vector3(-1, -1, -1)
|
|
var normals = false
|
|
|
|
func _draw():
|
|
var default_color = Color(0.5, 0.5, 0.5, 1.0)
|
|
default_color.r = range_lerp(0, min_point.x, max_point.x, 0.0, 1.0)
|
|
default_color.g = range_lerp(0, min_point.y, max_point.y, 0.0, 1.0)
|
|
default_color.b = range_lerp(0, min_point.z, max_point.z, 0.0, 1.0)
|
|
draw_rect(Rect2(0, 0, TEX_SIZE, TEX_SIZE), default_color, true)
|
|
for t in triangles:
|
|
var colors = []
|
|
var uvs = []
|
|
for k in t:
|
|
# print(k.shape)
|
|
# print(k.uv)
|
|
if normals:
|
|
colors.push_back(Color(k.normal.x, k.normal.y, k.normal.z, 1))
|
|
else:
|
|
colors.push_back(Color(k.shape.x, k.shape.y, k.shape.z, 1))
|
|
uvs.push_back(k.uv * TEX_SIZE)
|
|
draw_polygon(PoolVector2Array(uvs), PoolColorArray(colors))
|
|
yield(get_tree(), "idle_frame")
|
|
yield(get_tree(), "idle_frame")
|
|
emit_signal("drawing_finished")
|