소스 검색

Draw triangles for HeightMapShape debug collision

Helps with ambiguous cases where it's not possible to tell which diagonal is used for collision in quads.
PouleyKetchoupp 4 년 전
부모
커밋
14d3a8dd83
1개의 변경된 파일6개의 추가작업 그리고 1개의 파일을 삭제
  1. 6 1
      scene/resources/height_map_shape.cpp

+ 6 - 1
scene/resources/height_map_shape.cpp

@@ -45,7 +45,7 @@ Vector<Vector3> HeightMapShape::get_debug_mesh_lines() {
 		PoolRealArray::Read r = map_data.read();
 
 		// reserve some memory for our points..
-		points.resize(((map_width - 1) * map_depth * 2) + (map_width * (map_depth - 1) * 2));
+		points.resize(((map_width - 1) * map_depth * 2) + (map_width * (map_depth - 1) * 2) + (map_width - 1) * (map_depth - 1) * 2);
 
 		// now set our points
 		int r_offset = 0;
@@ -66,6 +66,11 @@ Vector<Vector3> HeightMapShape::get_debug_mesh_lines() {
 					points.write[w_offset++] = Vector3(height.x, r[r_offset + map_width - 1], height.z + 1.0);
 				}
 
+				if ((w != map_width - 1) && (d != map_depth - 1)) {
+					points.write[w_offset++] = Vector3(height.x + 1.0, r[r_offset], height.z);
+					points.write[w_offset++] = Vector3(height.x, r[r_offset + map_width - 1], height.z + 1.0);
+				}
+
 				height.x += 1.0;
 			}