Fix shadow mesh recursion.

This commit is contained in:
Radiant 2024-08-31 22:31:43 +03:00
parent 739019e4e4
commit 70860aafd8
3 changed files with 3 additions and 0 deletions

View File

@ -743,6 +743,7 @@ String MeshStorage::mesh_get_path(RID p_mesh) const {
} }
void MeshStorage::mesh_set_shadow_mesh(RID p_mesh, RID p_shadow_mesh) { void MeshStorage::mesh_set_shadow_mesh(RID p_mesh, RID p_shadow_mesh) {
ERR_FAIL_COND_MSG(p_mesh == p_shadow_mesh, "Cannot set a mesh as its own shadow mesh.");
Mesh *mesh = mesh_owner.get_or_null(p_mesh); Mesh *mesh = mesh_owner.get_or_null(p_mesh);
ERR_FAIL_NULL(mesh); ERR_FAIL_NULL(mesh);

View File

@ -2251,6 +2251,7 @@ Error ArrayMesh::lightmap_unwrap_cached(const Transform3D &p_base_transform, flo
} }
void ArrayMesh::set_shadow_mesh(const Ref<ArrayMesh> &p_mesh) { void ArrayMesh::set_shadow_mesh(const Ref<ArrayMesh> &p_mesh) {
ERR_FAIL_COND_MSG(p_mesh == this, "Cannot set a mesh as its own shadow mesh.");
shadow_mesh = p_mesh; shadow_mesh = p_mesh;
if (shadow_mesh.is_valid()) { if (shadow_mesh.is_valid()) {
RS::get_singleton()->mesh_set_shadow_mesh(mesh, shadow_mesh->get_rid()); RS::get_singleton()->mesh_set_shadow_mesh(mesh, shadow_mesh->get_rid());

View File

@ -783,6 +783,7 @@ String MeshStorage::mesh_get_path(RID p_mesh) const {
} }
void MeshStorage::mesh_set_shadow_mesh(RID p_mesh, RID p_shadow_mesh) { void MeshStorage::mesh_set_shadow_mesh(RID p_mesh, RID p_shadow_mesh) {
ERR_FAIL_COND_MSG(p_mesh == p_shadow_mesh, "Cannot set a mesh as its own shadow mesh.");
Mesh *mesh = mesh_owner.get_or_null(p_mesh); Mesh *mesh = mesh_owner.get_or_null(p_mesh);
ERR_FAIL_NULL(mesh); ERR_FAIL_NULL(mesh);