You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.8 KiB
74 lines
1.8 KiB
extends Node
|
|
|
|
const displays: Dictionary = {
|
|
0: "Left.UL Dock", 1: "Left.BL Dock", 2: "Left.UR Dock",
|
|
3: "Left.BR Dock", 4: "Right.UL Dock", 5: "Right.BL Dock",
|
|
6: "Right.UR Dock", 7: "Right.BR Dock", 8: "Bottom Panel",
|
|
}
|
|
|
|
enum { LEFT_UPPER_LEFT, LEFT_BOTTOM_LEFT, LEFT_UPPER_RIGHT,
|
|
LEFT_BOTTOM_RIGHT, RIGHT_UPPER_LEFT, RIGHT_BOTTOM_LEFT,
|
|
RIGHT_UPPER_RIGHT, RIGHT_BOTTOM_RIGHT, BOTTOM_PANEL,
|
|
OUT_OF_BOUNDS
|
|
}
|
|
|
|
var _plugin: EditorPlugin
|
|
var _scene: Control
|
|
var _state: int
|
|
|
|
func _init(plugin: EditorPlugin, scene: Control) -> void:
|
|
_plugin = plugin
|
|
_scene = scene
|
|
|
|
func _ready() -> void:
|
|
construct()
|
|
|
|
func _process(delta: float) -> void:
|
|
update()
|
|
|
|
func _notification(what) -> void:
|
|
if what == NOTIFICATION_PREDELETE:
|
|
deconstruct()
|
|
|
|
func construct() -> void:
|
|
if not ProjectSettings.has_setting("WAT/Display"):
|
|
ProjectSettings.set_setting("WAT/Display", BOTTOM_PANEL)
|
|
ProjectSettings.save()
|
|
add_setting()
|
|
_state = get_window_state()
|
|
|
|
if _state == BOTTOM_PANEL:
|
|
_plugin.add_control_to_bottom_panel(_scene, "Tests")
|
|
else:
|
|
_plugin.add_control_to_dock(_state, _scene)
|
|
|
|
func deconstruct() -> void:
|
|
if _state == BOTTOM_PANEL:
|
|
_plugin.remove_control_from_bottom_panel(_scene)
|
|
else:
|
|
_plugin.remove_control_from_docks(_scene)
|
|
|
|
func update() -> void:
|
|
var state = get_window_state()
|
|
if state == _state:
|
|
return
|
|
|
|
deconstruct()
|
|
_state = state
|
|
construct()
|
|
|
|
ProjectSettings.set_setting("WAT/Display", _state)
|
|
ProjectSettings.save()
|
|
|
|
func get_window_state() -> int:
|
|
return ProjectSettings.get_setting("WAT/Display")
|
|
|
|
func add_setting() -> void:
|
|
var property = {}
|
|
property.name = "WAT/Display"
|
|
property.type = TYPE_INT
|
|
property.hint = PROPERTY_HINT_ENUM
|
|
property.hint_string = PoolStringArray(displays.values()).join(",")
|
|
ProjectSettings.add_property_info(property)
|
|
ProjectSettings.save()
|