summaryrefslogtreecommitdiff
path: root/servers/visual/visual_server_scene.h
diff options
context:
space:
mode:
Diffstat (limited to 'servers/visual/visual_server_scene.h')
-rw-r--r--servers/visual/visual_server_scene.h22
1 files changed, 13 insertions, 9 deletions
diff --git a/servers/visual/visual_server_scene.h b/servers/visual/visual_server_scene.h
index 61fdfd0861..a4c3499359 100644
--- a/servers/visual/visual_server_scene.h
+++ b/servers/visual/visual_server_scene.h
@@ -151,7 +151,7 @@ public:
//aabb stuff
bool update_aabb;
- bool update_materials;
+ bool update_dependencies;
SelfList<Instance> update_item;
@@ -174,14 +174,18 @@ public:
InstanceBaseData *base_data;
- virtual void base_removed() {
-
- singleton->instance_set_base(self, RID());
+ virtual void dependency_deleted(RID p_dependency) {
+ if (p_dependency == base) {
+ singleton->instance_set_base(self, RID());
+ } else if (p_dependency == skeleton) {
+ singleton->instance_attach_skeleton(self, RID());
+ } else {
+ singleton->_instance_queue_update(this, false, true);
+ }
}
- virtual void base_changed(bool p_aabb, bool p_materials) {
-
- singleton->_instance_queue_update(this, p_aabb, p_materials);
+ virtual void dependency_changed(bool p_aabb, bool p_dependencies) {
+ singleton->_instance_queue_update(this, p_aabb, p_dependencies);
}
Instance() :
@@ -192,7 +196,7 @@ public:
scenario = NULL;
update_aabb = false;
- update_materials = false;
+ update_dependencies = false;
extra_margin = 0;
@@ -222,7 +226,7 @@ public:
};
SelfList<Instance>::List _instance_update_list;
- void _instance_queue_update(Instance *p_instance, bool p_update_aabb, bool p_update_materials = false);
+ void _instance_queue_update(Instance *p_instance, bool p_update_aabb, bool p_update_dependencies = false);
struct InstanceGeometryData : public InstanceBaseData {