Add (slightly broken) mapping helper tool
This commit is contained in:
parent
e02d1e4cc3
commit
7dc9c90390
5 changed files with 138 additions and 0 deletions
7
addons/pnhelper/plugin.cfg
Normal file
7
addons/pnhelper/plugin.cfg
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
[plugin]
|
||||||
|
|
||||||
|
name="PowerNetworkHelper"
|
||||||
|
description="Helper tools for connecting devices to power networks"
|
||||||
|
author="Hamcha"
|
||||||
|
version="0.1"
|
||||||
|
script="plugin.gd"
|
13
addons/pnhelper/plugin.gd
Normal file
13
addons/pnhelper/plugin.gd
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
tool
|
||||||
|
extends EditorPlugin
|
||||||
|
|
||||||
|
var dock
|
||||||
|
|
||||||
|
func _enter_tree():
|
||||||
|
dock = preload("res://addons/pnhelper/pngui.tscn").instance()
|
||||||
|
dock.api = self
|
||||||
|
add_control_to_dock(DOCK_SLOT_RIGHT_BL, dock)
|
||||||
|
|
||||||
|
func _exit_tree():
|
||||||
|
remove_control_from_docks(dock)
|
||||||
|
dock.free()
|
51
addons/pnhelper/pngui.gd
Normal file
51
addons/pnhelper/pngui.gd
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
tool
|
||||||
|
|
||||||
|
extends Control
|
||||||
|
|
||||||
|
var socketTemplate = preload("res://Actors/Objects/ElectricSocket/ElectricSocket.tscn")
|
||||||
|
|
||||||
|
var api : EditorPlugin
|
||||||
|
|
||||||
|
onready var socket_types = $Commands/MakeSocket/Type
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
# Add make_socket options
|
||||||
|
socket_types.add_item("SNK", 0)
|
||||||
|
socket_types.add_item("SRC", 1)
|
||||||
|
socket_types.add_item("BID", 2)
|
||||||
|
|
||||||
|
func _make_socket(direction: String) -> void:
|
||||||
|
var socket_dir = null
|
||||||
|
var socket_type = null
|
||||||
|
var offset = Vector2.ZERO
|
||||||
|
match direction:
|
||||||
|
"up":
|
||||||
|
socket_dir = ElectricSocket.Direction.DOWN
|
||||||
|
offset.y = -32
|
||||||
|
"left":
|
||||||
|
socket_dir = ElectricSocket.Direction.RIGHT
|
||||||
|
offset.x = -32
|
||||||
|
"down":
|
||||||
|
socket_dir = ElectricSocket.Direction.UP
|
||||||
|
offset.y = 32
|
||||||
|
"right":
|
||||||
|
socket_dir = ElectricSocket.Direction.LEFT
|
||||||
|
offset.x = 32
|
||||||
|
match socket_types.get_selected_id():
|
||||||
|
0:
|
||||||
|
socket_type = ElectricSocket.Flow.SINK
|
||||||
|
1:
|
||||||
|
socket_type = ElectricSocket.Flow.SOURCE
|
||||||
|
2:
|
||||||
|
socket_type = ElectricSocket.Flow.BIDIRECTIONAL
|
||||||
|
var map = api.get_editor_interface().get_edited_scene_root()
|
||||||
|
var sockets = map.get_node("sockets")
|
||||||
|
var nodes = api.get_editor_interface().get_selection().get_selected_nodes()
|
||||||
|
for node in nodes:
|
||||||
|
var socket = socketTemplate.instance()
|
||||||
|
socket.direction = socket_dir
|
||||||
|
socket.flow = socket_type
|
||||||
|
sockets.add_child(socket)
|
||||||
|
socket.owner = map
|
||||||
|
socket.global_position = node.global_position + offset
|
||||||
|
socket.connectionPaths = [socket.get_path_to(node)]
|
63
addons/pnhelper/pngui.tscn
Normal file
63
addons/pnhelper/pngui.tscn
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
[gd_scene load_steps=2 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://addons/pnhelper/pngui.gd" type="Script" id=1]
|
||||||
|
|
||||||
|
[node name="Mapping tools" type="Control"]
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="Commands" type="VBoxContainer" parent="."]
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="MakeSocket" type="HBoxContainer" parent="Commands"]
|
||||||
|
margin_right = 1280.0
|
||||||
|
margin_bottom = 20.0
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="Commands/MakeSocket"]
|
||||||
|
margin_top = 3.0
|
||||||
|
margin_right = 84.0
|
||||||
|
margin_bottom = 17.0
|
||||||
|
text = "Make socket "
|
||||||
|
|
||||||
|
[node name="Type" type="OptionButton" parent="Commands/MakeSocket"]
|
||||||
|
margin_left = 88.0
|
||||||
|
margin_right = 117.0
|
||||||
|
margin_bottom = 20.0
|
||||||
|
|
||||||
|
[node name="Left" type="Button" parent="Commands/MakeSocket"]
|
||||||
|
margin_left = 121.0
|
||||||
|
margin_right = 141.0
|
||||||
|
margin_bottom = 20.0
|
||||||
|
text = "<"
|
||||||
|
|
||||||
|
[node name="Up" type="Button" parent="Commands/MakeSocket"]
|
||||||
|
margin_left = 145.0
|
||||||
|
margin_right = 164.0
|
||||||
|
margin_bottom = 20.0
|
||||||
|
text = "^"
|
||||||
|
|
||||||
|
[node name="Down" type="Button" parent="Commands/MakeSocket"]
|
||||||
|
margin_left = 168.0
|
||||||
|
margin_right = 187.0
|
||||||
|
margin_bottom = 20.0
|
||||||
|
text = "v"
|
||||||
|
|
||||||
|
[node name="Right" type="Button" parent="Commands/MakeSocket"]
|
||||||
|
margin_left = 191.0
|
||||||
|
margin_right = 211.0
|
||||||
|
margin_bottom = 20.0
|
||||||
|
text = ">"
|
||||||
|
[connection signal="pressed" from="Commands/MakeSocket/Left" to="." method="_make_socket" binds= [ "left" ]]
|
||||||
|
[connection signal="pressed" from="Commands/MakeSocket/Up" to="." method="_make_socket" binds= [ "up" ]]
|
||||||
|
[connection signal="pressed" from="Commands/MakeSocket/Down" to="." method="_make_socket" binds= [ "down" ]]
|
||||||
|
[connection signal="pressed" from="Commands/MakeSocket/Right" to="." method="_make_socket" binds= [ "right" ]]
|
|
@ -200,6 +200,10 @@ Gotm="*res://gotm/Gotm.gd"
|
||||||
window/size/width=1280
|
window/size/width=1280
|
||||||
window/size/height=800
|
window/size/height=800
|
||||||
|
|
||||||
|
[editor_plugins]
|
||||||
|
|
||||||
|
enabled=PoolStringArray( "pnhelper" )
|
||||||
|
|
||||||
[gui]
|
[gui]
|
||||||
|
|
||||||
theme/custom="res://Graphics/UI/ui_theme.tres"
|
theme/custom="res://Graphics/UI/ui_theme.tres"
|
||||||
|
|
Reference in a new issue