Updated the serialization logic in all of the PropDataEntries.

This commit is contained in:
Relintai 2022-02-25 13:54:14 +01:00
parent 8c4540a2a6
commit 3c9ae1a391
5 changed files with 73 additions and 25 deletions

View File

@ -80,7 +80,12 @@ void Prop2DDataLight::_processor_process(Ref<Prop2DData> prop_data, Node *node,
ERR_FAIL_COND(!i);
Ref<Prop2DDataLight> l;
l.instance();
if (entry.is_valid()) {
l = entry;
} else {
l.instance();
}
l->set_light_color(i->get_color());

View File

@ -73,19 +73,30 @@ void Prop2DDataPortal::_processor_process(Ref<Prop2DData> prop_data, Node *node,
ERR_FAIL_COND(!p);
Ref<Prop2DDataPortal> l;
l.instance();
if (entry.is_valid()) {
l = entry;
} else {
l.instance();
}
l->set_is_active(p->get_portal_active());
l->set_is_two_way(p->is_two_way());
l->set_use_default_margin(p->get_use_default_margin());
l->set_portal_margin(p->get_portal_margin());
l->set_points(p->get_points());
//l->set_transform(transform * p->get_transform());
prop_data->add_prop(l);
Prop2DDataEntry::_processor_process(prop_data, node, transform, l);
}
Node *Prop2DDataPortal::_processor_get_node_for(const Transform2D &transform, Node *node) {
Portal *p = memnew(Portal);
Portal *p = nullptr;
if (!node) {
p = memnew(Portal);
} else {
p = Object::cast_to<Portal>(node);
}
p->set_portal_active(get_is_active());
p->set_two_way(get_is_two_way());
@ -93,9 +104,7 @@ Node *Prop2DDataPortal::_processor_get_node_for(const Transform2D &transform, No
p->set_portal_margin(get_portal_margin());
p->set_points(get_points());
//p->set_transform(get_transform());
return p;
return Prop2DDataEntry::_processor_get_node_for(transform, p);
}
Prop2DDataPortal::Prop2DDataPortal() {

View File

@ -52,19 +52,30 @@ void Prop2DDataProp2D::_processor_process(Ref<Prop2DData> prop_data, Node *node,
ERR_FAIL_COND(!i);
Ref<Prop2DDataProp2D> l;
l.instance();
if (entry.is_valid()) {
l = entry;
} else {
l.instance();
}
l->set_prop(i->get_prop_data());
//l->set_transform(transform * i->get_transform());
prop_data->add_prop(l);
Prop2DDataEntry::_processor_process(prop_data, node, transform, l);
}
Node *Prop2DDataProp2D::_processor_get_node_for(const Transform2D &transform, Node *node) {
Prop2DInstance *i = memnew(Prop2DInstance);
Prop2DInstance *i = nullptr;
if (!node) {
i = memnew(Prop2DInstance);
} else {
i = Object::cast_to<Prop2DInstance>(node);
}
i->set_prop_data(get_prop());
//i->set_transform(get_transform());
return i;
return Prop2DDataEntry::_processor_get_node_for(transform, i);
}
Prop2DDataProp2D::Prop2DDataProp2D() {

View File

@ -44,19 +44,31 @@ void Prop2DDataScene::_processor_process(Ref<Prop2DData> prop_data, Node *node,
ERR_FAIL_COND(!i);
Ref<Prop2DDataScene> l;
l.instance();
if (entry.is_valid()) {
l = entry;
} else {
l.instance();
}
l->set_scene(i->get_scene());
//l->set_transform(transform * i->get_transform());
prop_data->add_prop(l);
Prop2DDataEntry::_processor_process(prop_data, node, transform, l);
}
Node *Prop2DDataScene::_processor_get_node_for(const Transform2D &transform, Node *node) {
Prop2DSceneInstance *i = memnew(Prop2DSceneInstance);
Prop2DSceneInstance *i = nullptr;
if (!node) {
i = memnew(Prop2DSceneInstance);
} else {
i = Object::cast_to<Prop2DSceneInstance>(node);
}
i->set_scene(get_scene());
//i->set_transform(get_transform());
return i;
return Prop2DDataEntry::_processor_get_node_for(transform, i);
}
Prop2DDataScene::Prop2DDataScene() {

View File

@ -67,18 +67,29 @@ void Prop2DDataTiledWall2D::_processor_process(Ref<Prop2DData> prop_data, Node *
ERR_FAIL_COND(!t);
Ref<Prop2DDataTiledWall2D> tw;
tw.instance();
if (entry.is_valid()) {
tw = entry;
} else {
tw.instance();
}
tw->set_width(t->get_width());
tw->set_heigth(t->get_heigth());
tw->set_data(t->get_data());
//tw->set_collision(t->get_collision());
//tw->set_transform(transform * t->get_transform());
prop_data->add_prop(tw);
Prop2DDataEntry::_processor_process(prop_data, node, transform, tw);
}
Node *Prop2DDataTiledWall2D::_processor_get_node_for(const Transform2D &transform, Node *node) {
TiledWall2D *t = memnew(TiledWall2D);
TiledWall2D *t;
if (node) {
t = Object::cast_to<TiledWall2D>(node);
} else {
t = memnew(TiledWall2D());
}
t->set_width(get_width());
t->set_heigth(get_heigth());
@ -86,7 +97,7 @@ Node *Prop2DDataTiledWall2D::_processor_get_node_for(const Transform2D &transfor
t->set_data(get_data());
//t->set_transform(get_transform());
return t;
return Prop2DDataEntry::_processor_get_node_for(transform, t);
}
Prop2DDataTiledWall2D::Prop2DDataTiledWall2D() {