diff options
Diffstat (limited to 'scene/main')
-rw-r--r-- | scene/main/node.cpp | 16 | ||||
-rw-r--r-- | scene/main/viewport.cpp | 7 |
2 files changed, 19 insertions, 4 deletions
diff --git a/scene/main/node.cpp b/scene/main/node.cpp index e511a057c5..667b4639a9 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -1234,7 +1234,7 @@ void Node::generate_instance_state() { for( List<PropertyInfo>::Element *E=properties.front();E;E=E->next() ) { PropertyInfo &pi=E->get(); - if (!(pi.usage&PROPERTY_USAGE_EDITOR) || !(pi.usage&PROPERTY_USAGE_STORAGE)) + if ((pi.usage&PROPERTY_USAGE_NO_INSTANCE_STATE) || !(pi.usage&PROPERTY_USAGE_EDITOR) || !(pi.usage&PROPERTY_USAGE_STORAGE)) continue; data.instance_state[pi.name]=get(pi.name); @@ -1424,6 +1424,20 @@ Node *Node::duplicate_and_reown(const Map<Node*,Node*>& p_reown_map) const { node->set_name(get_name()); + List<PropertyInfo> plist; + + get_property_list(&plist); + + for(List<PropertyInfo>::Element *E=plist.front();E;E=E->next()) { + + if (!(E->get().usage&PROPERTY_USAGE_STORAGE)) + continue; + String name = E->get().name; + node->set( name, get(name) ); + + } + + for(int i=0;i<get_child_count();i++) { get_child(i)->_duplicate_and_reown(node,p_reown_map); diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 6b7ed66463..ac496cac4e 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -243,7 +243,7 @@ void Viewport::update_worlds() { void Viewport::_test_new_mouseover(ObjectID new_collider) { - +#ifndef _3D_DISABLED if (new_collider!=physics_object_over) { if (physics_object_over) { @@ -271,7 +271,7 @@ void Viewport::_test_new_mouseover(ObjectID new_collider) { physics_object_over=new_collider; } - +#endif } @@ -353,7 +353,7 @@ void Viewport::_notification(int p_what) { case NOTIFICATION_FIXED_PROCESS: { if (physics_object_picking) { - +#ifndef _3D_DISABLED Vector2 last_pos(1e20,1e20); CollisionObject *last_object; ObjectID last_id=0; @@ -499,6 +499,7 @@ void Viewport::_notification(int p_what) { } } +#endif } } break; |