diff options
author | Juan Linietsky <reduzio@gmail.com> | 2015-12-13 20:39:01 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2015-12-13 20:39:01 -0300 |
commit | 7f96f0603e16a970c7b0ea1fba936e56baf80d4a (patch) | |
tree | f470757f0dc5669ed7fbd6c720339dde0d7ce04d /scene/resources/packed_scene.cpp | |
parent | 72ff61963b207cc41664f7aeb39448d0a2f8369f (diff) | |
download | redot-engine-7f96f0603e16a970c7b0ea1fba936e56baf80d4a.tar.gz |
-scenes are properly reloaded when a dependency changes, fixes #2896
(it's clevery done so local changes to scenes are kept even if unsaved)
Diffstat (limited to 'scene/resources/packed_scene.cpp')
-rw-r--r-- | scene/resources/packed_scene.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/scene/resources/packed_scene.cpp b/scene/resources/packed_scene.cpp index f8283bb5ca..443d1630a7 100644 --- a/scene/resources/packed_scene.cpp +++ b/scene/resources/packed_scene.cpp @@ -1537,6 +1537,7 @@ void SceneState::add_editable_instance(const NodePath& p_path){ SceneState::SceneState() { base_scene_idx=-1; + last_modified_time=0; } @@ -1596,6 +1597,15 @@ Node *PackedScene::instance(bool p_gen_edit_state) const { return s; } +void PackedScene::recreate_state() { + + state = Ref<SceneState>( memnew( SceneState )); + state->set_path(get_path()); +#ifdef TOOLS_ENABLED + state->set_last_modified_time(get_last_modified_time()); +#endif +} + Ref<SceneState> PackedScene::get_state() { return state; @@ -1607,6 +1617,7 @@ void PackedScene::set_path(const String& p_path,bool p_take_over) { Resource::set_path(p_path,p_take_over); } + void PackedScene::_bind_methods() { ObjectTypeDB::bind_method(_MD("pack","path:Node"),&PackedScene::pack); |