浏览代码

Add NavigationMesh debug when navmesh is added later through scripts

Add NavigationMesh debug when navmesh is added later through scripts

(cherry picked from commit b6eff47bac0a2745da6e3aa95ffa340eb71c7248)
smix8 3 年之前
父节点
当前提交
106bf9b793
共有 1 个文件被更改,包括 11 次插入0 次删除
  1. 11 0
      scene/3d/navigation_mesh_instance.cpp

+ 11 - 0
scene/3d/navigation_mesh_instance.cpp

@@ -139,6 +139,17 @@ void NavigationMeshInstance::set_navigation_mesh(const Ref<NavigationMesh> &p_na
 
 	NavigationServer::get_singleton()->region_set_navmesh(region, p_navmesh);
 
+	if (debug_view == nullptr && is_inside_tree() && navmesh.is_valid() && get_tree()->is_debugging_navigation_hint()) {
+		MeshInstance *dm = memnew(MeshInstance);
+		dm->set_mesh(navmesh->get_debug_mesh());
+		if (is_enabled()) {
+			dm->set_material_override(get_tree()->get_debug_navigation_material());
+		} else {
+			dm->set_material_override(get_tree()->get_debug_navigation_disabled_material());
+		}
+		add_child(dm);
+		debug_view = dm;
+	}
 	if (debug_view && navmesh.is_valid()) {
 		Object::cast_to<MeshInstance>(debug_view)->set_mesh(navmesh->get_debug_mesh());
 	}