From 8bbbb973361f367a4888629c571fb6f43581269d Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Sun, 21 Jul 2019 11:31:30 -0300 Subject: Completed material/2D shader support (missing SCREEN_TEXTURE) --- servers/visual/rasterizer/rasterizer.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'servers/visual/rasterizer/rasterizer.cpp') diff --git a/servers/visual/rasterizer/rasterizer.cpp b/servers/visual/rasterizer/rasterizer.cpp index 647908c75f..64b5c88699 100644 --- a/servers/visual/rasterizer/rasterizer.cpp +++ b/servers/visual/rasterizer/rasterizer.cpp @@ -35,6 +35,31 @@ Rasterizer *(*Rasterizer::_create_func)() = NULL; +void RasterizerScene::InstanceDependency::instance_notify_changed(bool p_aabb, bool p_dependencies) { + for (Map::Element *E = instances.front(); E; E = E->next()) { + E->key()->dependency_changed(p_aabb, p_dependencies); + } +} +void RasterizerScene::InstanceDependency::instance_notify_deleted(RID p_deleted) { + for (Map::Element *E = instances.front(); E; E = E->next()) { + E->key()->dependency_deleted(p_deleted); + } + for (Map::Element *E = instances.front(); E; E = E->next()) { + E->key()->dependencies.erase(this); + } +} + +RasterizerScene::InstanceDependency::~InstanceDependency() { +#ifdef DEBUG_ENABLED + if (instances.size()) { + WARN_PRINT("Leaked instance dependency: Bug - did not call instance_notify_deleted when freeing."); + for (Map::Element *E = instances.front(); E; E = E->next()) { + E->key()->dependencies.erase(this); + } + } +#endif +} + Rasterizer *Rasterizer::create() { return _create_func(); -- cgit v1.2.3