Browse Source

Fixed reversed custom AABB null check when recalculating multimesh AABBs

Arman Elgudzhyan 1 year ago
parent
commit
533eab89ab

+ 2 - 2
drivers/gles3/storage/mesh_storage.cpp

@@ -1962,7 +1962,7 @@ void MeshStorage::multimesh_set_buffer(RID p_multimesh, const Vector<float> &p_b
 		//if we have a mesh set, we need to re-generate the AABB from the new data
 		//if we have a mesh set, we need to re-generate the AABB from the new data
 		const float *data = p_buffer.ptr();
 		const float *data = p_buffer.ptr();
 
 
-		if (multimesh->custom_aabb != AABB()) {
+		if (multimesh->custom_aabb == AABB()) {
 			_multimesh_re_create_aabb(multimesh, data, multimesh->instances);
 			_multimesh_re_create_aabb(multimesh, data, multimesh->instances);
 			multimesh->dependency.changed_notify(Dependency::DEPENDENCY_CHANGED_AABB);
 			multimesh->dependency.changed_notify(Dependency::DEPENDENCY_CHANGED_AABB);
 		}
 		}
@@ -2113,7 +2113,7 @@ void MeshStorage::_update_dirty_multimeshes() {
 
 
 			if (multimesh->aabb_dirty && multimesh->mesh.is_valid()) {
 			if (multimesh->aabb_dirty && multimesh->mesh.is_valid()) {
 				multimesh->aabb_dirty = false;
 				multimesh->aabb_dirty = false;
-				if (multimesh->custom_aabb != AABB()) {
+				if (multimesh->custom_aabb == AABB()) {
 					_multimesh_re_create_aabb(multimesh, data, visible_instances);
 					_multimesh_re_create_aabb(multimesh, data, visible_instances);
 					multimesh->dependency.changed_notify(Dependency::DEPENDENCY_CHANGED_AABB);
 					multimesh->dependency.changed_notify(Dependency::DEPENDENCY_CHANGED_AABB);
 				}
 				}

+ 2 - 2
servers/rendering/renderer_rd/storage_rd/mesh_storage.cpp

@@ -1963,7 +1963,7 @@ void MeshStorage::multimesh_set_buffer(RID p_multimesh, const Vector<float> &p_b
 		//if we have a mesh set, we need to re-generate the AABB from the new data
 		//if we have a mesh set, we need to re-generate the AABB from the new data
 		const float *data = p_buffer.ptr();
 		const float *data = p_buffer.ptr();
 
 
-		if (multimesh->custom_aabb != AABB()) {
+		if (multimesh->custom_aabb == AABB()) {
 			_multimesh_re_create_aabb(multimesh, data, multimesh->instances);
 			_multimesh_re_create_aabb(multimesh, data, multimesh->instances);
 			multimesh->dependency.changed_notify(Dependency::DEPENDENCY_CHANGED_AABB);
 			multimesh->dependency.changed_notify(Dependency::DEPENDENCY_CHANGED_AABB);
 		}
 		}
@@ -2087,7 +2087,7 @@ void MeshStorage::_update_dirty_multimeshes() {
 			if (multimesh->aabb_dirty) {
 			if (multimesh->aabb_dirty) {
 				//aabb is dirty..
 				//aabb is dirty..
 				multimesh->aabb_dirty = false;
 				multimesh->aabb_dirty = false;
-				if (multimesh->custom_aabb != AABB()) {
+				if (multimesh->custom_aabb == AABB()) {
 					_multimesh_re_create_aabb(multimesh, data, visible_instances);
 					_multimesh_re_create_aabb(multimesh, data, visible_instances);
 					multimesh->dependency.changed_notify(Dependency::DEPENDENCY_CHANGED_AABB);
 					multimesh->dependency.changed_notify(Dependency::DEPENDENCY_CHANGED_AABB);
 				}
 				}