Browse Source

Improve CSGPolygon3D documentation

- Describe why polygon triangulation usually fails in the error message.
Hugo Locurcio 3 years ago
parent
commit
1e1fb145b3

+ 1 - 1
modules/csg/csg_shape.cpp

@@ -1757,7 +1757,7 @@ CSGBrush *CSGPolygon::_build_brush() {
 	}
 	}
 	int shape_sides = shape_polygon.size();
 	int shape_sides = shape_polygon.size();
 	Vector<int> shape_faces = Geometry::triangulate_polygon(shape_polygon);
 	Vector<int> shape_faces = Geometry::triangulate_polygon(shape_polygon);
-	ERR_FAIL_COND_V_MSG(shape_faces.size() < 3, brush, "Failed to triangulate CSGPolygon");
+	ERR_FAIL_COND_V_MSG(shape_faces.size() < 3, brush, "Failed to triangulate CSGPolygon. Make sure the polygon doesn't have any intersecting edges.");
 
 
 	// Get polygon enclosing Rect2.
 	// Get polygon enclosing Rect2.
 	Rect2 shape_rect(shape_polygon[0], Vector2());
 	Rect2 shape_rect(shape_polygon[0], Vector2());

+ 1 - 1
modules/csg/doc_classes/CSGMesh.xml

@@ -4,7 +4,7 @@
 		A CSG Mesh shape that uses a mesh resource.
 		A CSG Mesh shape that uses a mesh resource.
 	</brief_description>
 	</brief_description>
 	<description>
 	<description>
-		This CSG node allows you to use any mesh resource as a CSG shape, provided it is closed, does not self-intersect, does not contain internal faces and has no edges that connect to more then two faces.
+		This CSG node allows you to use any mesh resource as a CSG shape, provided it is closed, does not self-intersect, does not contain internal faces and has no edges that connect to more than two faces. See also [CSGPolygon] for drawing 2D extruded polygons to be used as CSG nodes.
 	</description>
 	</description>
 	<tutorials>
 	<tutorials>
 	</tutorials>
 	</tutorials>

+ 3 - 2
modules/csg/doc_classes/CSGPolygon.xml

@@ -4,7 +4,7 @@
 		Extrudes a 2D polygon shape to create a 3D mesh.
 		Extrudes a 2D polygon shape to create a 3D mesh.
 	</brief_description>
 	</brief_description>
 	<description>
 	<description>
-		An array of 2D points is extruded to quickly and easily create a variety of 3D meshes.
+		An array of 2D points is extruded to quickly and easily create a variety of 3D meshes. See also [CSGMesh] for using 3D meshes as CSG nodes.
 	</description>
 	</description>
 	<tutorials>
 	<tutorials>
 	</tutorials>
 	</tutorials>
@@ -48,7 +48,8 @@
 			When [member mode] is [constant MODE_PATH], this is the distance along the path, in meters, the texture coordinates will tile. When set to 0, texture coordinates will match geometry exactly with no tiling.
 			When [member mode] is [constant MODE_PATH], this is the distance along the path, in meters, the texture coordinates will tile. When set to 0, texture coordinates will match geometry exactly with no tiling.
 		</member>
 		</member>
 		<member name="polygon" type="PoolVector2Array" setter="set_polygon" getter="get_polygon" default="PoolVector2Array( 0, 0, 0, 1, 1, 1, 1, 0 )">
 		<member name="polygon" type="PoolVector2Array" setter="set_polygon" getter="get_polygon" default="PoolVector2Array( 0, 0, 0, 1, 1, 1, 1, 0 )">
-			The point array that defines the 2D polygon that is extruded.
+			The point array that defines the 2D polygon that is extruded. This can be a convex or concave polygon with 3 or more points. The polygon must [i]not[/i] have any intersecting edges. Otherwise, triangulation will fail and no mesh will be generated.
+			[b]Note:[/b] If only 1 or 2 points are defined in [member polygon], no mesh will be generated.
 		</member>
 		</member>
 		<member name="smooth_faces" type="bool" setter="set_smooth_faces" getter="get_smooth_faces" default="false">
 		<member name="smooth_faces" type="bool" setter="set_smooth_faces" getter="get_smooth_faces" default="false">
 			If [code]true[/code], applies smooth shading to the extrusions.
 			If [code]true[/code], applies smooth shading to the extrusions.