mirror of
https://github.com/Relintai/props.git
synced 2024-11-12 10:15:25 +01:00
Now the editor can properly handle without a restart when an already existing PropData gets re-serialized with the scene conversion tool.
This commit is contained in:
parent
1d4e05b5a1
commit
cb3aa0b1b0
@ -65,16 +65,21 @@ void PropEditorPlugin::convert_scene(Node *root, const String &path) {
|
||||
|
||||
ResourceLoader l;
|
||||
if (l.exists(path)) {
|
||||
Ref<Resource> res = l.load(path);
|
||||
Ref<PropData> res = l.load(path, "PropData");
|
||||
|
||||
ERR_FAIL_COND((res.is_valid() && res->get_class() != "PropData"));
|
||||
ERR_FAIL_COND(!res.is_valid());
|
||||
|
||||
res.unref();
|
||||
}
|
||||
res->copy_from(data);
|
||||
|
||||
ResourceSaver s;
|
||||
s.save(path, res);
|
||||
|
||||
res.unref();
|
||||
} else {
|
||||
ResourceSaver s;
|
||||
s.save(path, data);
|
||||
}
|
||||
}
|
||||
|
||||
void PropEditorPlugin::_quick_convert_button_pressed() {
|
||||
convert_active_scene_to_prop_data();
|
||||
|
@ -112,6 +112,20 @@ void PropData::add_textures_into(Ref<TexturePacker> texture_packer) {
|
||||
}
|
||||
#endif
|
||||
|
||||
void PropData::copy_from(const Ref<PropData> &prop_data) {
|
||||
_id = prop_data->_id;
|
||||
_snap_to_mesh = prop_data->_snap_to_mesh;
|
||||
_snap_axis = prop_data->_snap_axis;
|
||||
|
||||
_props.clear();
|
||||
|
||||
for (int i = 0; i < prop_data->_props.size(); ++i) {
|
||||
_props.push_back(prop_data->_props[i]);
|
||||
}
|
||||
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
PropData::PropData() {
|
||||
_id = 0;
|
||||
_snap_to_mesh = false;
|
||||
@ -144,4 +158,6 @@ void PropData::_bind_methods() {
|
||||
#if TEXTURE_PACKER_PRESENT
|
||||
ClassDB::bind_method(D_METHOD("add_textures_into", "texture_packer"), &PropData::add_textures_into);
|
||||
#endif
|
||||
|
||||
ClassDB::bind_method(D_METHOD("copy_from", "prop_data"), &PropData::copy_from);
|
||||
}
|
||||
|
@ -42,7 +42,6 @@ SOFTWARE.
|
||||
|
||||
#include "prop_data_entry.h"
|
||||
|
||||
|
||||
#if TEXTURE_PACKER_PRESENT
|
||||
#include "../../texture_packer/texture_packer.h"
|
||||
#endif
|
||||
@ -74,6 +73,8 @@ public:
|
||||
void add_textures_into(Ref<TexturePacker> texture_packer);
|
||||
#endif
|
||||
|
||||
void copy_from(const Ref<PropData> &prop_data);
|
||||
|
||||
PropData();
|
||||
~PropData();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user