Allow a top and bottom radius equal to 0 in CylinderMesh
The CylinderMesh generation code handles this special case and
avoids generating the top and bottom faces if their radius is equal
to 0. This improves performance by reducing the number of vertices
to draw.
If both values are set to 0, nothing will be visible but the mesh
generation will still succeed.
This also improves the CylinderMesh class documentation.
(cherry picked from commit b4ed84ba2b
)
This commit is contained in:
parent
eb3ddbc050
commit
e7d6f8b8b8
|
@ -4,7 +4,7 @@
|
||||||
Class representing a cylindrical [PrimitiveMesh].
|
Class representing a cylindrical [PrimitiveMesh].
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
Class representing a cylindrical [PrimitiveMesh]. This class can be used to create cones by setting either the [member top_radius] or [member bottom_radius] properties to 0.0.
|
Class representing a cylindrical [PrimitiveMesh]. This class can be used to create cones by setting either the [member top_radius] or [member bottom_radius] properties to [code]0.0[/code].
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
|
@ -12,19 +12,19 @@
|
||||||
</methods>
|
</methods>
|
||||||
<members>
|
<members>
|
||||||
<member name="bottom_radius" type="float" setter="set_bottom_radius" getter="get_bottom_radius" default="1.0">
|
<member name="bottom_radius" type="float" setter="set_bottom_radius" getter="get_bottom_radius" default="1.0">
|
||||||
Bottom radius of the cylinder.
|
Bottom radius of the cylinder. If set to [code]0.0[/code], the bottom faces will not be generated, resulting in a conic shape.
|
||||||
</member>
|
</member>
|
||||||
<member name="height" type="float" setter="set_height" getter="get_height" default="2.0">
|
<member name="height" type="float" setter="set_height" getter="get_height" default="2.0">
|
||||||
Full height of the cylinder.
|
Full height of the cylinder.
|
||||||
</member>
|
</member>
|
||||||
<member name="radial_segments" type="int" setter="set_radial_segments" getter="get_radial_segments" default="64">
|
<member name="radial_segments" type="int" setter="set_radial_segments" getter="get_radial_segments" default="64">
|
||||||
Number of radial segments on the cylinder.
|
Number of radial segments on the cylinder. Higher values result in a more detailed cylinder/cone at the cost of performance.
|
||||||
</member>
|
</member>
|
||||||
<member name="rings" type="int" setter="set_rings" getter="get_rings" default="4">
|
<member name="rings" type="int" setter="set_rings" getter="get_rings" default="4">
|
||||||
Number of edge rings along the height of the cylinder.
|
Number of edge rings along the height of the cylinder. Changing [member rings] does not have any visual impact unless a shader or procedural mesh tool is used to alter the vertex data. Higher values result in more subdivisions, which can be used to create smoother-looking effects with shaders or procedural mesh tools (at the cost of performance). When not altering the vertex data using a shader or procedural mesh tool, [member rings] should be kept to its default value.
|
||||||
</member>
|
</member>
|
||||||
<member name="top_radius" type="float" setter="set_top_radius" getter="get_top_radius" default="1.0">
|
<member name="top_radius" type="float" setter="set_top_radius" getter="get_top_radius" default="1.0">
|
||||||
Top radius of the cylinder.
|
Top radius of the cylinder. If set to [code]0.0[/code], the top faces will not be generated, resulting in a conic shape.
|
||||||
</member>
|
</member>
|
||||||
</members>
|
</members>
|
||||||
<constants>
|
<constants>
|
||||||
|
|
|
@ -886,9 +886,9 @@ void CylinderMesh::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("set_rings", "rings"), &CylinderMesh::set_rings);
|
ClassDB::bind_method(D_METHOD("set_rings", "rings"), &CylinderMesh::set_rings);
|
||||||
ClassDB::bind_method(D_METHOD("get_rings"), &CylinderMesh::get_rings);
|
ClassDB::bind_method(D_METHOD("get_rings"), &CylinderMesh::get_rings);
|
||||||
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "top_radius", PROPERTY_HINT_RANGE, "0.001,100.0,0.001,or_greater"), "set_top_radius", "get_top_radius");
|
ADD_PROPERTY(PropertyInfo(Variant::REAL, "top_radius", PROPERTY_HINT_RANGE, "0,100,0.001,or_greater"), "set_top_radius", "get_top_radius");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "bottom_radius", PROPERTY_HINT_RANGE, "0.001,100.0,0.001,or_greater"), "set_bottom_radius", "get_bottom_radius");
|
ADD_PROPERTY(PropertyInfo(Variant::REAL, "bottom_radius", PROPERTY_HINT_RANGE, "0,100,0.001,or_greater"), "set_bottom_radius", "get_bottom_radius");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "height", PROPERTY_HINT_RANGE, "0.001,100.0,0.001,or_greater"), "set_height", "get_height");
|
ADD_PROPERTY(PropertyInfo(Variant::REAL, "height", PROPERTY_HINT_RANGE, "0.001,100,0.001,or_greater"), "set_height", "get_height");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "radial_segments", PROPERTY_HINT_RANGE, "1,100,1,or_greater"), "set_radial_segments", "get_radial_segments");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "radial_segments", PROPERTY_HINT_RANGE, "1,100,1,or_greater"), "set_radial_segments", "get_radial_segments");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "rings", PROPERTY_HINT_RANGE, "0,100,1,or_greater"), "set_rings", "get_rings");
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "rings", PROPERTY_HINT_RANGE, "0,100,1,or_greater"), "set_rings", "get_rings");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue