Implemented interaction hints.
This commit is contained in:
parent
d7f1df9dc5
commit
97ed921f20
|
@ -0,0 +1,9 @@
|
||||||
|
tool
|
||||||
|
extends Button
|
||||||
|
|
||||||
|
|
||||||
|
func _on_Button_pressed():
|
||||||
|
print(SummerDay.test)
|
||||||
|
print(SummerDay.canvas_state.test)
|
||||||
|
print(SummerDay.canvas_state.fill_transform)
|
||||||
|
print(SummerDay.canvas_state.rect_size)
|
|
@ -17,3 +17,29 @@ func _interact(event: InputEvent) -> bool: # Virtual.
|
||||||
|
|
||||||
func _update_table(table: SummerDayTable): # Virtual.
|
func _update_table(table: SummerDayTable): # Virtual.
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
func _draw_interaction_hint(): # Virtual.
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
func update_interaction_hint():
|
||||||
|
SummerDay.interaction_hint.clear()
|
||||||
|
_draw_interaction_hint()
|
||||||
|
|
||||||
|
|
||||||
|
func draw_dot(position: Vector3, color: Color):
|
||||||
|
SummerDay.interaction_hint.draw_dot(position, color)
|
||||||
|
|
||||||
|
|
||||||
|
func draw_line(position_1: Vector3, position_2: Vector3,
|
||||||
|
color: Color, second_color = null
|
||||||
|
):
|
||||||
|
var color_2: Color
|
||||||
|
if second_color == null:
|
||||||
|
color_2 = color
|
||||||
|
else:
|
||||||
|
color_2 = second_color
|
||||||
|
SummerDay.interaction_hint.draw_line(
|
||||||
|
position_1, position_2, color, color_2
|
||||||
|
)
|
||||||
|
|
|
@ -15,6 +15,7 @@ export(PoolVector2Array) var vertices = PoolVector2Array([
|
||||||
Vector2(-0.1, 0.4),
|
Vector2(-0.1, 0.4),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
var picked_point = -1
|
||||||
|
|
||||||
|
|
||||||
func _check_for_selection_candidate(event: InputEvent) -> bool: # Virtual.
|
func _check_for_selection_candidate(event: InputEvent) -> bool: # Virtual.
|
||||||
|
@ -25,7 +26,21 @@ func _check_for_selection_candidate(event: InputEvent) -> bool: # Virtual.
|
||||||
|
|
||||||
|
|
||||||
func _interact(event: InputEvent) -> bool: # Virtual.
|
func _interact(event: InputEvent) -> bool: # Virtual.
|
||||||
return false
|
|
||||||
|
if event is InputEventMouseButton:
|
||||||
|
if event.button_index == BUTTON_LEFT:
|
||||||
|
if event.pressed:
|
||||||
|
_pick_point(event.position)
|
||||||
|
else:
|
||||||
|
picked_point = -1
|
||||||
|
|
||||||
|
if event is InputEventMouseMotion:
|
||||||
|
if picked_point != -1:
|
||||||
|
|
||||||
|
vertices[picked_point] = event.position
|
||||||
|
#_update_table()
|
||||||
|
update_interaction_hint()
|
||||||
|
return true
|
||||||
|
|
||||||
|
|
||||||
func _update_table(table: SummerDayTable): # Virtual.
|
func _update_table(table: SummerDayTable): # Virtual.
|
||||||
|
@ -35,4 +50,48 @@ func _update_table(table: SummerDayTable): # Virtual.
|
||||||
func _is_point_included(point: Vector2) -> bool: # Private.
|
func _is_point_included(point: Vector2) -> bool: # Private.
|
||||||
var convex_hull = Geometry.convex_hull_2d(vertices)
|
var convex_hull = Geometry.convex_hull_2d(vertices)
|
||||||
return Geometry.is_point_in_polygon(point, convex_hull)
|
return Geometry.is_point_in_polygon(point, convex_hull)
|
||||||
|
|
||||||
|
|
||||||
|
func _draw_interaction_hint():
|
||||||
|
for i in range(4):
|
||||||
|
var vertex_2d = vertices[i]
|
||||||
|
var vertex = _with_z(vertex_2d, 0.0)
|
||||||
|
draw_dot(vertex, Color.cornflower)
|
||||||
|
for i in range(4, 8):
|
||||||
|
var vertex_2d = vertices[i]
|
||||||
|
var vertex = _with_z(vertex_2d, -1.0)
|
||||||
|
draw_dot(vertex, Color.crimson)
|
||||||
|
for i in range(4):
|
||||||
|
draw_line(
|
||||||
|
_with_z(vertices[i], 0.0),
|
||||||
|
_with_z(vertices[wrapi(i + 1, 0, 4)], 0.0),
|
||||||
|
Color.cornflower
|
||||||
|
)
|
||||||
|
for i in range(4):
|
||||||
|
draw_line(
|
||||||
|
_with_z(vertices[i], 0.0),
|
||||||
|
_with_z(vertices[i + 4], -1.0),
|
||||||
|
Color.cornflower,
|
||||||
|
Color.crimson
|
||||||
|
)
|
||||||
|
for i in range(4):
|
||||||
|
draw_line(
|
||||||
|
_with_z(vertices[i + 4], -1.0),
|
||||||
|
_with_z(vertices[wrapi(i + 5, 4, 8)], -1.0),
|
||||||
|
Color.crimson
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
func _pick_point(mouse_pos):
|
||||||
|
var picked_point_so_far = -1
|
||||||
|
var nearest_distance = 0.02
|
||||||
|
for i in vertices.size():
|
||||||
|
var distance = vertices[i].distance_to(mouse_pos)
|
||||||
|
if distance < nearest_distance:
|
||||||
|
nearest_distance = distance
|
||||||
|
picked_point_so_far = i
|
||||||
|
picked_point = picked_point_so_far
|
||||||
|
|
||||||
|
|
||||||
|
func _with_z(vector: Vector2, z: float) -> Vector3:
|
||||||
|
return Vector3(vector.x, vector.y, z)
|
||||||
|
|
|
@ -15,8 +15,14 @@ func _pass_input(event: InputEvent): # Virtual.
|
||||||
if success:
|
if success:
|
||||||
block_selection = true
|
block_selection = true
|
||||||
if !block_selection:
|
if !block_selection:
|
||||||
selected.clear()
|
|
||||||
for i in editable_list:
|
for i in editable_list:
|
||||||
if i._check_for_selection_candidate(event):
|
if i._check_for_selection_candidate(event):
|
||||||
|
selected.clear()
|
||||||
selected.append(i)
|
selected.append(i)
|
||||||
|
i.update_interaction_hint()
|
||||||
print("YOU CLICKED!!")
|
print("YOU CLICKED!!")
|
||||||
|
|
||||||
|
|
||||||
|
func update_interaction_hint():
|
||||||
|
for i in selected:
|
||||||
|
i.update_interaction_hint()
|
||||||
|
|
|
@ -13,10 +13,14 @@ export(Array, Resource) var tracks
|
||||||
|
|
||||||
var raw_aspect_ratio setget , _get_raw_aspect_ratio
|
var raw_aspect_ratio setget , _get_raw_aspect_ratio
|
||||||
|
|
||||||
|
var selected_track
|
||||||
|
|
||||||
func setup_tracks():
|
|
||||||
|
func setup():
|
||||||
for track in tracks:
|
for track in tracks:
|
||||||
|
selected_track = track
|
||||||
emit_signal("track_added", track)
|
emit_signal("track_added", track)
|
||||||
|
update_interaction_hint()
|
||||||
|
|
||||||
|
|
||||||
func add_track(blueprint: SummerDayBlueprint):
|
func add_track(blueprint: SummerDayBlueprint):
|
||||||
|
@ -24,6 +28,7 @@ func add_track(blueprint: SummerDayBlueprint):
|
||||||
track.blueprint = blueprint
|
track.blueprint = blueprint
|
||||||
track.add_cell(0)
|
track.add_cell(0)
|
||||||
tracks.append(track)
|
tracks.append(track)
|
||||||
|
selected_track = track
|
||||||
emit_signal("track_added", track)
|
emit_signal("track_added", track)
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,6 +39,11 @@ func create_scene() -> SummerDayScene:
|
||||||
return _scene
|
return _scene
|
||||||
|
|
||||||
|
|
||||||
|
func update_interaction_hint():
|
||||||
|
if selected_track:
|
||||||
|
selected_track.update_interaction_hint()
|
||||||
|
|
||||||
|
|
||||||
func _set_resolution(new_resolution):
|
func _set_resolution(new_resolution):
|
||||||
var handled_resolution = Vector2()
|
var handled_resolution = Vector2()
|
||||||
|
|
||||||
|
|
|
@ -31,3 +31,9 @@ func pass_local_input(event: InputEvent):
|
||||||
var current_cell = get_current_cell()
|
var current_cell = get_current_cell()
|
||||||
if current_cell:
|
if current_cell:
|
||||||
current_cell._pass_input(event)
|
current_cell._pass_input(event)
|
||||||
|
|
||||||
|
|
||||||
|
func update_interaction_hint():
|
||||||
|
var cell = get_current_cell()
|
||||||
|
if cell:
|
||||||
|
cell.update_interaction_hint()
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
[gd_scene load_steps=3 format=2]
|
[gd_scene load_steps=4 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://addons/summer_day/user_interface/canvas/canvas.tscn" type="PackedScene" id=1]
|
[ext_resource path="res://addons/summer_day/user_interface/canvas/canvas.tscn" type="PackedScene" id=1]
|
||||||
[ext_resource path="res://addons/summer_day/main_screen.gd" type="Script" id=2]
|
[ext_resource path="res://addons/summer_day/main_screen.gd" type="Script" id=2]
|
||||||
|
[ext_resource path="res://Buctton.gd" type="Script" id=3]
|
||||||
|
|
||||||
[node name="MainScreen" type="Control"]
|
[node name="MainScreen" type="Control"]
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
|
@ -13,3 +14,11 @@ __meta__ = {
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="Canvas" parent="." instance=ExtResource( 1 )]
|
[node name="Canvas" parent="." instance=ExtResource( 1 )]
|
||||||
|
|
||||||
|
[node name="Button" type="Button" parent="."]
|
||||||
|
margin_right = 63.0
|
||||||
|
margin_bottom = 20.0
|
||||||
|
text = "PRESS"
|
||||||
|
script = ExtResource( 3 )
|
||||||
|
|
||||||
|
[connection signal="pressed" from="Button" to="Button" method="_on_Button_pressed"]
|
||||||
|
|
|
@ -19,6 +19,8 @@ func _enter_tree():
|
||||||
canvas_instance = main_screen_instance.get_node("Canvas")
|
canvas_instance = main_screen_instance.get_node("Canvas")
|
||||||
self.connect("document_changed",
|
self.connect("document_changed",
|
||||||
canvas_instance, "_on_SummerDay_document_changed")
|
canvas_instance, "_on_SummerDay_document_changed")
|
||||||
|
canvas_instance.connect("resized",
|
||||||
|
canvas_instance, "_on_Canvas_resized")
|
||||||
# Add the main panel to the editor's main viewport.
|
# Add the main panel to the editor's main viewport.
|
||||||
get_editor_interface().get_editor_viewport().add_child(main_screen_instance)
|
get_editor_interface().get_editor_viewport().add_child(main_screen_instance)
|
||||||
# Hide the main panel. Very much required.
|
# Hide the main panel. Very much required.
|
||||||
|
@ -46,6 +48,13 @@ func _exit_tree():
|
||||||
remove_control_from_bottom_panel(timeline_instance)
|
remove_control_from_bottom_panel(timeline_instance)
|
||||||
|
|
||||||
|
|
||||||
|
func enable_plugin():
|
||||||
|
add_autoload_singleton(
|
||||||
|
"SummerDay",
|
||||||
|
"res://addons/summer_day/utilities/summer_day_globals.gd"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
func disable_plugin():
|
func disable_plugin():
|
||||||
remove_autoload_singleton("SummerDay")
|
remove_autoload_singleton("SummerDay")
|
||||||
|
|
||||||
|
@ -70,8 +79,9 @@ func handles(object):
|
||||||
|
|
||||||
|
|
||||||
func edit(object):
|
func edit(object):
|
||||||
if object != $"/root/SummerDay".document:
|
var _SummerDay = $"/root/SummerDay"
|
||||||
$"/root/SummerDay".document = object
|
if object != _SummerDay.document:
|
||||||
|
_SummerDay.document = object
|
||||||
emit_signal("document_changed", object)
|
emit_signal("document_changed", object)
|
||||||
|
|
||||||
|
|
||||||
|
@ -88,6 +98,7 @@ func _initilize():
|
||||||
"SummerDay",
|
"SummerDay",
|
||||||
"res://addons/summer_day/utilities/summer_day_globals.gd"
|
"res://addons/summer_day/utilities/summer_day_globals.gd"
|
||||||
)
|
)
|
||||||
|
|
||||||
MainScreen = load("res://addons/summer_day/main_screen.tscn")
|
MainScreen = load("res://addons/summer_day/main_screen.tscn")
|
||||||
Timeline = load("res://addons/summer_day/user_interface/timeline/timeline.tscn")
|
Timeline = load("res://addons/summer_day/user_interface/timeline/timeline.tscn")
|
||||||
Document = load("res://addons/summer_day/data/document/document.gd")
|
Document = load("res://addons/summer_day/data/document/document.gd")
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
tool
|
||||||
extends SummerDayTool
|
extends SummerDayTool
|
||||||
class_name SummerDayFreeTransformCanvasTool
|
class_name SummerDayFreeTransformCanvasTool
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
tool
|
||||||
extends SummerDayTool
|
extends SummerDayTool
|
||||||
class_name SummerDayHandCanvasTool
|
class_name SummerDayHandCanvasTool
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
tool
|
||||||
extends SummerDayTool
|
extends SummerDayTool
|
||||||
class_name SummerDayPenCanvasTool
|
class_name SummerDayPenCanvasTool
|
||||||
|
|
||||||
|
@ -8,7 +9,7 @@ func _init():
|
||||||
|
|
||||||
func _check_for_use(event: InputEvent):
|
func _check_for_use(event: InputEvent):
|
||||||
if event is InputEventMouseButton:
|
if event is InputEventMouseButton:
|
||||||
if event.button_index == BUTTON_LEFT and event.is_pressed():
|
if event.button_index == BUTTON_LEFT:
|
||||||
return true
|
return true
|
||||||
|
|
||||||
if event is InputEventMouseMotion:
|
if event is InputEventMouseMotion:
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
tool
|
||||||
extends SummerDayTool
|
extends SummerDayTool
|
||||||
class_name SummerDayRotationCanvasTool
|
class_name SummerDayRotationCanvasTool
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
tool
|
||||||
extends SummerDayToolPool
|
extends SummerDayToolPool
|
||||||
class_name SummerDayCanvasToolPool
|
class_name SummerDayCanvasToolPool
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
tool
|
||||||
extends SummerDayTool
|
extends SummerDayTool
|
||||||
class_name SummerDayZoomCanvasTool
|
class_name SummerDayZoomCanvasTool
|
||||||
|
|
||||||
|
|
|
@ -44,12 +44,11 @@ func drop_data(position, data):
|
||||||
func _on_SummerDay_document_changed(new_doc):
|
func _on_SummerDay_document_changed(new_doc):
|
||||||
new_doc.connect("track_added",
|
new_doc.connect("track_added",
|
||||||
MeshContainer, "_on_Document_add_track")
|
MeshContainer, "_on_Document_add_track")
|
||||||
new_doc.setup_tracks()
|
new_doc.setup()
|
||||||
canvas_state.update_fill_transform()
|
canvas_state.update_fill_transform()
|
||||||
new_doc.connect("resolution_changed",
|
new_doc.connect("resolution_changed",
|
||||||
self, "_on_scene_aspect_ratio_changed")
|
self, "_on_scene_aspect_ratio_changed")
|
||||||
$Render/Label.text = str(new_doc) + "\n" + str(new_doc.resolution)
|
$Render/Label.text = str(new_doc) + "\n" + str(new_doc.resolution)
|
||||||
canvas_state.update_fill_transform()
|
|
||||||
|
|
||||||
|
|
||||||
func _on_Canvas_resized():
|
func _on_Canvas_resized():
|
||||||
|
@ -85,7 +84,10 @@ func _on_view_transform_changed(canvas_transform, spatial_transform):
|
||||||
var mat = mesh.surface_get_material(i)
|
var mat = mesh.surface_get_material(i)
|
||||||
mat.set_shader_param("canvas_transform", basis)
|
mat.set_shader_param("canvas_transform", basis)
|
||||||
else:
|
else:
|
||||||
l.get_material().set_shader_param("canvas_transform", basis)
|
if l.has_method("get_material"):
|
||||||
|
l.get_material().set_shader_param("canvas_transform", basis)
|
||||||
|
else:
|
||||||
|
l.material_override.set_shader_param("canvas_transform", basis)
|
||||||
|
|
||||||
|
|
||||||
func _on_canvas_polygon_changed(new_polygon):
|
func _on_canvas_polygon_changed(new_polygon):
|
||||||
|
|
|
@ -27,19 +27,31 @@ blend_mode = 3
|
||||||
|
|
||||||
[sub_resource type="Shader" id=6]
|
[sub_resource type="Shader" id=6]
|
||||||
code = "shader_type spatial;
|
code = "shader_type spatial;
|
||||||
render_mode blend_mix, depth_draw_opaque, unshaded, depth_test_disable;
|
render_mode blend_mix,depth_draw_opaque,cull_disabled,unshaded,depth_test_disable,skip_vertex_transform;
|
||||||
|
|
||||||
|
|
||||||
|
uniform mat3 canvas_transform;
|
||||||
|
|
||||||
|
void vertex() {
|
||||||
|
vec4 pre = vec4(VERTEX, 1.0);
|
||||||
|
vec3 transformed_xy = vec3(pre.xy, 1.0) * transpose(canvas_transform);
|
||||||
|
vec4 post = vec4(transformed_xy.x, transformed_xy.y, pre.z, pre.w);
|
||||||
|
POSITION = post;
|
||||||
|
VERTEX = (post / post.w).xyz;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void fragment() {
|
void fragment() {
|
||||||
float depth = texture(DEPTH_TEXTURE, SCREEN_UV).r;
|
float depth = texture(DEPTH_TEXTURE, SCREEN_UV).r;
|
||||||
float weight = clamp((FRAGCOORD.z - depth) * float(0xFFFFFF), 0.0, 0.66);
|
float weight = clamp((FRAGCOORD.z - depth) * float(0xFFFFFF), 0.0, 0.66);
|
||||||
vec3 screen_color = texture(SCREEN_TEXTURE, SCREEN_UV).rgb;
|
vec3 screen_color = texture(SCREEN_TEXTURE, SCREEN_UV).rgb;
|
||||||
ALBEDO = mix(ALBEDO, screen_color, weight);
|
ALBEDO = mix(COLOR.rgb, screen_color, weight);
|
||||||
}"
|
}"
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id=7]
|
[sub_resource type="ShaderMaterial" id=7]
|
||||||
render_priority = 1
|
render_priority = 1
|
||||||
shader = SubResource( 6 )
|
shader = SubResource( 6 )
|
||||||
|
shader_param/canvas_transform = Basis( 0.587128, 0, -0.414469, 0, -0.943144, 0.393899, 0, 0, 1 )
|
||||||
|
|
||||||
[node name="Canvas" type="PanelContainer"]
|
[node name="Canvas" type="PanelContainer"]
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
|
@ -102,7 +114,7 @@ invert_enable = true
|
||||||
invert_border = 1000.0
|
invert_border = 1000.0
|
||||||
polygon = PoolVector2Array( 0, 0, 1.77778, 0, 1.77778, 1, 0, 1 )
|
polygon = PoolVector2Array( 0, 0, 1.77778, 0, 1.77778, 1, 0, 1 )
|
||||||
|
|
||||||
[node name="InteractionHint" type="ImmediateGeometry" parent="Render/RenderLayer"]
|
[node name="InteractionHint" type="ImmediateGeometry" parent="Render/RenderLayer" groups=["SummerDaySpatialTransform"]]
|
||||||
material_override = SubResource( 7 )
|
material_override = SubResource( 7 )
|
||||||
script = ExtResource( 3 )
|
script = ExtResource( 3 )
|
||||||
|
|
||||||
|
@ -117,5 +129,3 @@ gui_disable_input = true
|
||||||
[node name="Label" type="Label" parent="Render"]
|
[node name="Label" type="Label" parent="Render"]
|
||||||
margin_right = 40.0
|
margin_right = 40.0
|
||||||
margin_bottom = 14.0
|
margin_bottom = 14.0
|
||||||
|
|
||||||
[connection signal="resized" from="." to="." method="_on_Canvas_resized"]
|
|
||||||
|
|
|
@ -3,10 +3,12 @@ class_name SummerDayCanvasState
|
||||||
|
|
||||||
signal fill_transform_changed(fill_transform)
|
signal fill_transform_changed(fill_transform)
|
||||||
signal canvas_transform_changed(canvas_transform)
|
signal canvas_transform_changed(canvas_transform)
|
||||||
signal view_transform_changed(view_transform)
|
signal view_transform_changed(view_transform, spatial_transform)
|
||||||
|
|
||||||
signal canvas_polygon_changed(polygon)
|
signal canvas_polygon_changed(polygon)
|
||||||
|
|
||||||
|
var test = "Das ist im Canvas_State"
|
||||||
|
|
||||||
var rect_size: Vector2
|
var rect_size: Vector2
|
||||||
|
|
||||||
var fill_transform := Transform2D.IDENTITY
|
var fill_transform := Transform2D.IDENTITY
|
||||||
|
@ -52,7 +54,7 @@ func update_fill_transform():
|
||||||
translation
|
translation
|
||||||
)
|
)
|
||||||
|
|
||||||
_update_canvas_polygon()
|
#_update_canvas_polygon()
|
||||||
|
|
||||||
emit_signal("fill_transform_changed", fill_transform)
|
emit_signal("fill_transform_changed", fill_transform)
|
||||||
|
|
||||||
|
|
|
@ -7,28 +7,28 @@ var canvas_state: SummerDayCanvasState # Provided through Canvas.
|
||||||
|
|
||||||
|
|
||||||
func draw_dot(position: Vector3, color: Color):
|
func draw_dot(position: Vector3, color: Color):
|
||||||
var transformation = SummerDay.canvas_state.clip_space_view_transform
|
var radius = 0.0085
|
||||||
var transformed_position = transformation.xform(position)
|
var vertex_count = 6.0
|
||||||
|
|
||||||
var radius = 3.0
|
|
||||||
var vertex_count = 12.0
|
|
||||||
|
|
||||||
begin(Mesh.PRIMITIVE_TRIANGLE_FAN)
|
begin(Mesh.PRIMITIVE_TRIANGLE_FAN)
|
||||||
set_color(color)
|
set_color(color)
|
||||||
for i in range(vertex_count):
|
for i in range(vertex_count):
|
||||||
var weight = i / vertex_count
|
var weight = i / vertex_count
|
||||||
var offset = Vector3(sin(weight * TAU), cos(weight * TAU), 0.0)
|
var offset = Vector3(
|
||||||
add_vertex(transformed_position + offset)
|
sin(weight * TAU) * radius,
|
||||||
|
cos(weight * TAU) * radius,
|
||||||
|
0.0
|
||||||
|
)
|
||||||
|
add_vertex(position + offset)
|
||||||
end()
|
end()
|
||||||
|
|
||||||
|
|
||||||
func draw_line(position_1: Vector3, position_2: Vector3, color: Color):
|
func draw_line(position_1: Vector3, position_2: Vector3,
|
||||||
var transformation = SummerDay.canvas_state.clip_space_view_transform
|
color_1: Color, color_2: Color
|
||||||
var transformed_position_1 = transformation.xform(position_1)
|
):
|
||||||
var transformed_position_2 = transformation.xform(position_2)
|
|
||||||
|
|
||||||
begin(Mesh.PRIMITIVE_LINES)
|
begin(Mesh.PRIMITIVE_LINES)
|
||||||
set_color(color)
|
set_color(color_1)
|
||||||
add_vertex(transformed_position_1)
|
add_vertex(position_1)
|
||||||
add_vertex(transformed_position_2)
|
set_color(color_2)
|
||||||
|
add_vertex(position_2)
|
||||||
end()
|
end()
|
||||||
|
|
|
@ -2,6 +2,8 @@ tool
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
|
||||||
|
var test = "Jojojawdfq"
|
||||||
|
|
||||||
var document: SummerDayDocument
|
var document: SummerDayDocument
|
||||||
var canvas_state: SummerDayCanvasState
|
var canvas_state: SummerDayCanvasState
|
||||||
var interaction_hint: SummerDayInteractionHint
|
var interaction_hint: SummerDayInteractionHint
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
[sub_resource type="Resource" id=1]
|
[sub_resource type="Resource" id=1]
|
||||||
script = ExtResource( 6 )
|
script = ExtResource( 6 )
|
||||||
vertices = PoolVector2Array( -0.4, -0.4, 0.1, -0.4, 0.1, 0.1, -0.4, 0.1, -0.1, -0.1, 0.4, -0.1, 0.4, 0.4, -0.1, 0.4 )
|
vertices = PoolVector2Array( -0.4, -0.4, 0.1, -0.4, 0.113769, -0.0876254, -0.4, 0.1, -0.1, -0.1, 0.4, -0.1, 0.4, 0.4, -0.1, 0.4 )
|
||||||
|
|
||||||
[sub_resource type="Resource" id=2]
|
[sub_resource type="Resource" id=2]
|
||||||
script = ExtResource( 3 )
|
script = ExtResource( 3 )
|
||||||
|
|
|
@ -55,5 +55,5 @@ void fragment() {
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
shader = SubResource( 1 )
|
shader = SubResource( 1 )
|
||||||
shader_param/canvas_transform = Basis( -0.100636, -0.496363, 0.0452502, -0.707523, 0.143448, 0.352804, 0, 0, 1 )
|
shader_param/canvas_transform = Basis( 0.999546, 0, -0.0981899, 0, -1.22596, -0.0477029, 0, 0, 1 )
|
||||||
shader_param/table = ExtResource( 1 )
|
shader_param/table = ExtResource( 1 )
|
||||||
|
|
Loading…
Reference in New Issue
Block a user