dp-konzultace/addons/portal_gizmos/gizmo.gd

43 lines
1.1 KiB
GDScript

extends EditorNode3DGizmoPlugin
func _init():
print("[gizmo] _init")
create_material("main", Color(1,0,1), false, true, false)
func _get_gizmo_name() -> String:
return "PortalGizmo"
func _has_gizmo(for_node_3d: Node3D) -> bool:
var result: bool = for_node_3d is Portal
if result: print("[gizmo] _has_gizmo: " + for_node_3d.name)
return result
func _redraw(gizmo):
var node3d = gizmo.get_node_3d() as Portal
print("[gizmo] _redraw: " + node3d.name)
gizmo.clear() # Always clear the gizmo
if node3d not in EditorInterface.get_selection().get_selected_nodes():
return # If not selected, don't draw anything
var lines = PackedVector3Array()
lines.push_back(Vector3(0, 0, 0))
if node3d.exit_portal != null:
lines.push_back(node3d.to_local(node3d.exit_portal.global_position))
else:
lines.push_back(Vector3(5, 5, 5))
#var handles = PackedVector3Array()
#handles.push_back(Vector3(0, 1, 0))
#handles.push_back(Vector3(0, 2, 0))
gizmo.add_lines(lines, get_material("main", gizmo), false)
#gizmo.add_handles(handles, get_material("handles", gizmo), [])