feat: new primitives get selected immediately
This commit is contained in:
parent
33da5f1772
commit
d736506eb4
6 changed files with 37 additions and 30 deletions
|
|
@ -48,6 +48,7 @@ void TerrainMeshEditor::_bind_methods() {
|
|||
|
||||
void TerrainMeshEditor::ready() {
|
||||
connect(sig_primitive_list_changed, callable_mp(this, &self_type::on_primitive_list_changed));
|
||||
connect(sig_primitive_added, callable_mp(this, &self_type::set_current_selected));
|
||||
load_new();
|
||||
if (FileDialog * dialog{ memnew(FileDialog) }) {
|
||||
this->file_dialog = dialog;
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ public:
|
|||
void save_data_as();
|
||||
void set_new_file_data(Ref<SaveData> data);
|
||||
Ref<SaveData> get_new_file_data() const;
|
||||
void set_current_selected(Ref<TerrainPrimitive>);
|
||||
void set_current_selected(Ref<TerrainPrimitive> primitive);
|
||||
Ref<TerrainPrimitive> get_current_selected() const;
|
||||
void set_point_primitive_object(Ref<PackedScene> scene);
|
||||
Ref<PackedScene> get_point_primitive_object() const;
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@
|
|||
|
||||
String const TerrainMeshGenerator::sig_primitives_changed{ "primitives_changed" };
|
||||
String const TerrainMeshGenerator::sig_primitive_list_changed{ "primitive_list_changed" };
|
||||
String const TerrainMeshGenerator::sig_primitive_added{ "primitive_added" };
|
||||
String const TerrainMeshGenerator::sig_primitive_removed{ "primitive_removed" };
|
||||
|
||||
void TerrainMeshGenerator::_bind_methods() {
|
||||
BIND_HPROPERTY(Variant::ARRAY, primitives, PROPERTY_HINT_ARRAY_TYPE, vformat("%s/%s:TerrainPrimitive", Variant::OBJECT, PROPERTY_HINT_RESOURCE_TYPE));
|
||||
|
|
@ -23,6 +25,8 @@ void TerrainMeshGenerator::_bind_methods() {
|
|||
BIND_HPROPERTY(Variant::OBJECT, chunk_scene, PROPERTY_HINT_RESOURCE_TYPE, "PackedScene");
|
||||
ADD_SIGNAL(MethodInfo(sig_primitives_changed));
|
||||
ADD_SIGNAL(MethodInfo(sig_primitive_list_changed, PropertyInfo(Variant::ARRAY, "array", PROPERTY_HINT_ARRAY_TYPE, vformat("%s/%s:TerrainPrimitive", Variant::OBJECT, PROPERTY_HINT_RESOURCE_TYPE))));
|
||||
ADD_SIGNAL(MethodInfo(sig_primitive_added, PropertyInfo(Variant::OBJECT, "primitive", PROPERTY_HINT_RESOURCE_TYPE, "TerrainPrimitive")));
|
||||
ADD_SIGNAL(MethodInfo(sig_primitive_removed, PropertyInfo(Variant::OBJECT, "primitive", PROPERTY_HINT_RESOURCE_TYPE, "TerrainPrimitive")));
|
||||
ClassDB::bind_method(D_METHOD("push_task", "area", "out_mesh", "side_points"), &self_type::push_task);
|
||||
ClassDB::bind_method(D_METHOD("add_primitive", "primitive"), &self_type::add_primitive);
|
||||
ClassDB::bind_method(D_METHOD("insert_primitive", "primitive", "idx"), &self_type::insert_primitive);
|
||||
|
|
@ -264,12 +268,14 @@ void TerrainMeshGenerator::add_primitive(Ref<TerrainPrimitive> primitive) {
|
|||
Array list = get_primitives();
|
||||
list.push_front(primitive);
|
||||
set_primitives(list);
|
||||
emit_signal(sig_primitive_added, primitive);
|
||||
}
|
||||
|
||||
void TerrainMeshGenerator::insert_primitive(Ref<TerrainPrimitive> primitive, int idx) {
|
||||
Array list = get_primitives();
|
||||
list.insert(idx, primitive);
|
||||
set_primitives(list);
|
||||
emit_signal(sig_primitive_added, primitive);
|
||||
}
|
||||
|
||||
void TerrainMeshGenerator::remove_primitive(Ref<TerrainPrimitive> primitive) {
|
||||
|
|
@ -279,6 +285,7 @@ void TerrainMeshGenerator::remove_primitive(Ref<TerrainPrimitive> primitive) {
|
|||
list.remove_at(idx);
|
||||
}
|
||||
set_primitives(list);
|
||||
emit_signal(sig_primitive_removed, primitive);
|
||||
}
|
||||
|
||||
void TerrainMeshGenerator::set_primitives(Array primitives) {
|
||||
|
|
|
|||
|
|
@ -82,4 +82,6 @@ private:
|
|||
public:
|
||||
static String const sig_primitives_changed;
|
||||
static String const sig_primitive_list_changed;
|
||||
static String const sig_primitive_added;
|
||||
static String const sig_primitive_removed;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue