mirror of
https://github.com/Relintai/world_generator_addon.git
synced 2024-11-19 20:47:19 +01:00
Reworked the EditorResourceWidget, now it uses an EditorResourcePicker.
This commit is contained in:
parent
59006f2c33
commit
a9344fb743
@ -16,6 +16,9 @@ var editor_scene : Node = null
|
|||||||
|
|
||||||
var tool_button : ToolButton = null
|
var tool_button : ToolButton = null
|
||||||
|
|
||||||
|
func edit_resource(resource: Resource) -> void:
|
||||||
|
get_editor_interface().edit_resource(resource)
|
||||||
|
|
||||||
func _enter_tree():
|
func _enter_tree():
|
||||||
# add_custom_type("WorldGeneratorSettings", "Resource", SWorldGeneratorSettings, null)
|
# add_custom_type("WorldGeneratorSettings", "Resource", SWorldGeneratorSettings, null)
|
||||||
#
|
#
|
||||||
|
@ -5,14 +5,16 @@ var _resource_type : String = "Resource"
|
|||||||
var _resource : Resource = null
|
var _resource : Resource = null
|
||||||
var _plugin : EditorPlugin = null
|
var _plugin : EditorPlugin = null
|
||||||
|
|
||||||
signal on_resource_changed(new_res)
|
var _picker : EditorResourcePicker = null
|
||||||
|
|
||||||
func _enter_tree():
|
signal on_resource_changed(new_res)
|
||||||
$ResourceButton.set_drag_forwarding(self)
|
|
||||||
|
|
||||||
func set_resource_type(type : String) -> void:
|
func set_resource_type(type : String) -> void:
|
||||||
_resource_type = type
|
_resource_type = type
|
||||||
|
|
||||||
|
if _picker:
|
||||||
|
_picker.base_type = _resource_type
|
||||||
|
|
||||||
func set_resource(res : Resource) -> void:
|
func set_resource(res : Resource) -> void:
|
||||||
if res && !res.is_class(_resource_type):
|
if res && !res.is_class(_resource_type):
|
||||||
return
|
return
|
||||||
@ -21,21 +23,40 @@ func set_resource(res : Resource) -> void:
|
|||||||
|
|
||||||
_resource = res
|
_resource = res
|
||||||
|
|
||||||
refresh_ui()
|
if _picker:
|
||||||
|
_picker.edited_resource = _resource
|
||||||
|
|
||||||
if emit:
|
if emit:
|
||||||
emit_signal("on_resource_changed", _resource)
|
emit_signal("on_resource_changed", _resource)
|
||||||
|
|
||||||
func refresh_ui() -> void:
|
func set_plugin(plugin : EditorPlugin) -> void:
|
||||||
|
_plugin = plugin
|
||||||
|
|
||||||
|
func _enter_tree():
|
||||||
|
if Engine.is_editor_hint():
|
||||||
|
_picker = EditorResourcePicker.new()
|
||||||
|
_picker.set_h_size_flags(SIZE_EXPAND_FILL)
|
||||||
|
_picker.set_v_size_flags(SIZE_EXPAND_FILL)
|
||||||
|
add_child(_picker)
|
||||||
|
|
||||||
if _resource:
|
if _resource:
|
||||||
var text : String = _resource.resource_name
|
_picker.edited_resource = _resource
|
||||||
|
|
||||||
if text == "":
|
_picker.base_type = _resource_type
|
||||||
text = _resource.get_class()
|
|
||||||
|
|
||||||
$ResourceButton.text = text
|
_picker.connect(@"resource_changed", self, "_on_resource_changed")
|
||||||
else:
|
_picker.connect(@"resource_selected", self, "_on_resource_selected")
|
||||||
$ResourceButton.text = "[null]"
|
|
||||||
|
func _on_resource_changed(resource: Resource) -> void:
|
||||||
|
var emit : bool = resource != _resource
|
||||||
|
|
||||||
|
_resource = resource
|
||||||
|
|
||||||
|
if emit:
|
||||||
|
emit_signal("on_resource_changed", _resource)
|
||||||
|
|
||||||
|
func _on_resource_selected(resource: Resource, edit: bool) -> void:
|
||||||
|
_plugin.edit_resource(resource)
|
||||||
|
|
||||||
func on_clear_button_pressed() -> void:
|
func on_clear_button_pressed() -> void:
|
||||||
if _resource:
|
if _resource:
|
||||||
@ -45,36 +66,3 @@ func on_resource_button_pressed() -> void:
|
|||||||
if _resource && _plugin:
|
if _resource && _plugin:
|
||||||
_plugin.get_editor_interface().inspect_object(_resource)
|
_plugin.get_editor_interface().inspect_object(_resource)
|
||||||
|
|
||||||
#examples
|
|
||||||
#{files:[res://modules/planets/test_planet/test_world.tres], from:@@4176:[Tree:9070], type:files}
|
|
||||||
#{from:Button:[Button:917001], resource:[Resource:26180], type:resource}
|
|
||||||
|
|
||||||
func can_drop_data_fw(position, data, from_control):
|
|
||||||
return true
|
|
||||||
|
|
||||||
func drop_data_fw(position, data, from_control):
|
|
||||||
if data["type"] == "resource":
|
|
||||||
var res : Resource = data["resource"]
|
|
||||||
set_resource(res)
|
|
||||||
elif data["type"] == "files":
|
|
||||||
var files : Array = data["files"]
|
|
||||||
|
|
||||||
for f in files:
|
|
||||||
var res : Resource = load(f)
|
|
||||||
set_resource(res)
|
|
||||||
return
|
|
||||||
|
|
||||||
func get_drag_data_fw(position, from_control):
|
|
||||||
if !_resource:
|
|
||||||
return
|
|
||||||
|
|
||||||
var d : Dictionary = Dictionary()
|
|
||||||
|
|
||||||
d["from"] = self
|
|
||||||
d["resource"] = _resource
|
|
||||||
d["type"] = "resource"
|
|
||||||
|
|
||||||
return d
|
|
||||||
|
|
||||||
func set_plugin(plugin : EditorPlugin) -> void:
|
|
||||||
_plugin = plugin
|
|
||||||
|
@ -6,18 +6,3 @@
|
|||||||
margin_right = 376.0
|
margin_right = 376.0
|
||||||
margin_bottom = 40.0
|
margin_bottom = 40.0
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
[node name="ResourceButton" type="Button" parent="."]
|
|
||||||
margin_right = 342.0
|
|
||||||
margin_bottom = 40.0
|
|
||||||
size_flags_horizontal = 3
|
|
||||||
|
|
||||||
[node name="Clear" type="Button" parent="."]
|
|
||||||
margin_left = 346.0
|
|
||||||
margin_right = 376.0
|
|
||||||
margin_bottom = 40.0
|
|
||||||
rect_min_size = Vector2( 30, 0 )
|
|
||||||
text = "X"
|
|
||||||
|
|
||||||
[connection signal="pressed" from="ResourceButton" to="." method="on_resource_button_pressed"]
|
|
||||||
[connection signal="pressed" from="Clear" to="." method="on_clear_button_pressed"]
|
|
||||||
|
Loading…
Reference in New Issue
Block a user