MagicNStuff/source/addons/proto_shape/proto_shape.gd
SchimmelSpreu83 2a60380258 Added Plugins
- ProtoShape
- StairsCharacter (GDExtension)
- TODO Manager
- 3D Cursor
2025-09-21 23:42:15 +02:00

53 lines
2.0 KiB
GDScript

@tool
extends EditorPlugin
const ProtoGizmo = preload("res://addons/proto_shape/proto_gizmo/proto_gizmo.gd")
var gizmo_plugin = ProtoGizmo.new()
var undo_redo: EditorUndoRedoManager
func _enter_tree():
undo_redo = get_undo_redo()
gizmo_plugin.undo_redo = undo_redo
add_custom_type("ProtoRamp", "Node3D", preload("res://addons/proto_shape/proto_ramp/proto_ramp.gd"), preload("res://addons/proto_shape/icon/proto-ramp-icon.png"))
add_custom_type("ProtoGizmoWrapper", "Node", preload("res://addons/proto_shape/proto_gizmo_wrapper/proto_gizmo_wrapper.gd"), preload("res://addons/proto_shape/icon/proto-gizmo-wrapper-icon.png"))
add_node_3d_gizmo_plugin(gizmo_plugin)
var snap_to_grid_action = InputEventKey.new()
snap_to_grid_action.keycode = KEY_CTRL
var fine_snap_to_grid_action = InputEventKey.new()
fine_snap_to_grid_action.keycode = KEY_SHIFT
InputMap.add_action("snap_to_grid")
InputMap.add_action("fine_snap_to_grid")
InputMap.action_add_event("snap_to_grid", snap_to_grid_action)
InputMap.action_add_event("fine_snap_to_grid", fine_snap_to_grid_action)
func _exit_tree():
remove_custom_type("ProtoRamp")
remove_custom_type("ProtoGizmoWrapper")
remove_node_3d_gizmo_plugin(gizmo_plugin)
InputMap.erase_action("snap_to_grid")
InputMap.erase_action("fine_snap_to_grid")
func _shortcut_input(event: InputEvent) -> void:
if event.is_action_pressed("snap_to_grid"):
if event is InputEventKey:
if event.keycode == KEY_CTRL:
gizmo_plugin.snapping = true
if event.shift_pressed:
gizmo_plugin.fine_snapping = true
else:
gizmo_plugin.fine_snapping = false
if event.is_action_pressed("fine_snap_to_grid"):
if event is InputEventKey:
if event.keycode == KEY_SHIFT and event.ctrl_pressed:
gizmo_plugin.fine_snapping = true
else:
gizmo_plugin.snapping = false
gizmo_plugin.fine_snapping = false
if event.is_action_released("snap_to_grid"):
gizmo_plugin.snapping = false
gizmo_plugin.fine_snapping = false
if event.is_action_released("fine_snap_to_grid"):
gizmo_plugin.fine_snapping = false