39 lines
940 B
GDScript
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()
|