fix: inspector title updates with layer name
This commit is contained in:
parent
3557d0dc31
commit
73cb82d8db
|
|
@ -7,18 +7,30 @@ void LayerEditor::_bind_methods() {
|
||||||
BIND_HPROPERTY(Variant::OBJECT, terrain, PROPERTY_HINT_NODE_TYPE, "TerrainMeshEditor");
|
BIND_HPROPERTY(Variant::OBJECT, terrain, PROPERTY_HINT_NODE_TYPE, "TerrainMeshEditor");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LayerEditor::_selected_changed() {
|
||||||
|
StringName const name{ this->selected->get_name() };
|
||||||
|
this->current_inspector->set_name(name.is_empty() ? this->selected->get_class_name() : name);
|
||||||
|
}
|
||||||
|
|
||||||
void LayerEditor::deselect_current() {
|
void LayerEditor::deselect_current() {
|
||||||
if (this->current_inspector) {
|
if (this->current_inspector) {
|
||||||
|
this->current_inspector->set_name("OutgoingInspector");
|
||||||
this->current_inspector->queue_free();
|
this->current_inspector->queue_free();
|
||||||
}
|
}
|
||||||
|
if (this->selected.is_valid()) {
|
||||||
|
this->selected->disconnect_changed(callable_mp(this, &self_type::_selected_changed));
|
||||||
|
}
|
||||||
this->current_inspector = nullptr;
|
this->current_inspector = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LayerEditor::select(Ref<TerrainPrimitive> primitive) {
|
void LayerEditor::select(Ref<TerrainPrimitive> primitive) {
|
||||||
deselect_current();
|
deselect_current();
|
||||||
|
this->selected = primitive;
|
||||||
if (primitive.is_valid() && this->inspectors.has(primitive->get_class())) {
|
if (primitive.is_valid() && this->inspectors.has(primitive->get_class())) {
|
||||||
|
this->selected->connect_changed(callable_mp(this, &self_type::_selected_changed));
|
||||||
this->current_inspector = this->inspectors.get(primitive->get_class())->instantiate();
|
this->current_inspector = this->inspectors.get(primitive->get_class())->instantiate();
|
||||||
this->current_inspector->set_name(primitive->get_name());
|
StringName name{ primitive->get_name() };
|
||||||
|
this->current_inspector->set_name(name.is_empty() ? primitive->get_class_name() : name);
|
||||||
add_child(this->current_inspector);
|
add_child(this->current_inspector);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@ class LayerEditor : public TabContainer {
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
void _selected_changed();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void deselect_current();
|
void deselect_current();
|
||||||
void select(Ref<TerrainPrimitive> primitive);
|
void select(Ref<TerrainPrimitive> primitive);
|
||||||
|
|
@ -18,6 +20,7 @@ public:
|
||||||
TerrainMeshEditor *get_terrain() const;
|
TerrainMeshEditor *get_terrain() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Ref<TerrainPrimitive> selected{};
|
||||||
HashMap<StringName, Ref<PackedScene>> inspectors{};
|
HashMap<StringName, Ref<PackedScene>> inspectors{};
|
||||||
Node *current_inspector{ nullptr };
|
Node *current_inspector{ nullptr };
|
||||||
TerrainMeshEditor *terrain{ nullptr };
|
TerrainMeshEditor *terrain{ nullptr };
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue