Explorar o código

Merge pull request #10976 from saltares/issue-907

Fixes setting visibility on GridMap, issue #907
Rémi Verschelde %!s(int64=8) %!d(string=hai) anos
pai
achega
6efd777fae
Modificáronse 2 ficheiros con 20 adicións e 0 borrados
  1. 19 0
      modules/gridmap/grid_map.cpp
  2. 1 0
      modules/gridmap/grid_map.h

+ 19 - 0
modules/gridmap/grid_map.cpp

@@ -652,6 +652,24 @@ void GridMap::_notification(int p_what) {
 			//_update_area_instances();
 
 		} break;
+		case NOTIFICATION_VISIBILITY_CHANGED: {
+			_update_visibility();
+		} break;
+	}
+}
+
+void GridMap::_update_visibility() {
+	if (!is_inside_tree())
+		return;
+
+	_change_notify("visible");
+
+	for (Map<OctantKey, Octant *>::Element *e = octant_map.front(); e; e = e->next()) {
+		Octant *octant = e->value();
+		for (int i = 0; i < octant->multimesh_instances.size(); i++) {
+			Octant::MultimeshInstance &mi = octant->multimesh_instances[i];
+			VS::get_singleton()->instance_set_visible(mi.instance, is_visible());
+		}
 	}
 }
 
@@ -717,6 +735,7 @@ void GridMap::_update_octants_callback() {
 		to_delete.pop_back();
 	}
 
+	_update_visibility();
 	awaiting_update = false;
 }
 

+ 1 - 0
modules/gridmap/grid_map.h

@@ -190,6 +190,7 @@ protected:
 	void _get_property_list(List<PropertyInfo> *p_list) const;
 
 	void _notification(int p_what);
+	void _update_visibility();
 	static void _bind_methods();
 
 public: