35 lines
995 B
GDScript
35 lines
995 B
GDScript
tool
|
|
extends ImmediateGeometry
|
|
class_name SummerDayInteractionHint
|
|
|
|
|
|
var canvas_state: SummerDayCanvasState # Provided through Canvas.
|
|
|
|
|
|
func draw_dot(position: Vector3, color: Color):
|
|
var transformation = SummerDay.canvas_state.clip_space_view_transform
|
|
var transformed_position = transformation.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 transformation = SummerDay.canvas_state.clip_space_view_transform
|
|
var transformed_position_1 = transformation.xform(position_1)
|
|
var transformed_position_2 = transformation.xform(position_2)
|
|
|
|
begin(Mesh.PRIMITIVE_LINES)
|
|
set_color(color)
|
|
add_vertex(transformed_position_1)
|
|
add_vertex(transformed_position_2)
|
|
end()
|