소스 검색

Fixed Populating MultimeshInstance Crash

When populating a MultimeshInstance (node), Godot would set the
new Multimesh's color and custom data format as the current node's
multimesh, which would cause a crash if node's multimesh is null.

Populate Function will now check if node has a multimesh or not, and
set the new multimesh with default (NONE) values if node's multimesh is
null.

Fixes Issue #61553
Arsh Panesar 3 년 전
부모
커밋
84a6407286
1개의 변경된 파일9개의 추가작업 그리고 2개의 파일을 삭제
  1. 9 2
      editor/plugins/multimesh_editor_plugin.cpp

+ 9 - 2
editor/plugins/multimesh_editor_plugin.cpp

@@ -160,8 +160,15 @@ void MultiMeshEditor::_populate() {
 	int instance_count = populate_amount->get_value();
 
 	multimesh->set_transform_format(MultiMesh::TRANSFORM_3D);
-	multimesh->set_color_format(node->get_multimesh()->get_color_format());
-	multimesh->set_custom_data_format(node->get_multimesh()->get_custom_data_format());
+
+	if (node->get_multimesh().is_null()) {
+		multimesh->set_color_format(MultiMesh::COLOR_NONE);
+		multimesh->set_custom_data_format(MultiMesh::CUSTOM_DATA_NONE);
+	} else {
+		multimesh->set_color_format(node->get_multimesh()->get_color_format());
+		multimesh->set_custom_data_format(node->get_multimesh()->get_custom_data_format());
+	}
+
 	multimesh->set_instance_count(instance_count);
 
 	float _tilt_random = populate_tilt_random->get_value();