SummerDay/addons/summer_day/user_interface/canvas/rendering/interaction_hint.gd

39 lines
940 B
GDScript

tool
extends ImmediateGeometry
class_name SummerDayInteractionHint
var canvas_state: SummerDayCanvasState # Provided through Canvas.
func draw_dot(position: Vector3, color: Color):
var transformed_position = canvas_state.clip_space_view_transform.xform(
position
)
var radius = 3.0
var vertex_count = 12.0
begin(Mesh.PRIMITIVE_TRIANGLE_FAN)
set_color(color)
for i in range(vertex_count):
var weight = i / vertex_count
var offset = Vector3(sin(weight * TAU), cos(weight * TAU), 0.0)
add_vertex(transformed_position + offset)
end()
func draw_line(position_1: Vector3, position_2: Vector3, color: Color):
var transformed_position_1 = canvas_state.clip_space_view_transform.xform(
position_1
)
var transformed_position_2 = canvas_state.clip_space_view_transform.xform(
position_2
)
begin(Mesh.PRIMITIVE_LINES)
set_color(color)
add_vertex(transformed_position_1)
add_vertex(transformed_position_2)
end()