<?xml version="1.0" encoding="UTF-8" ?>
<class name="TubeTrailMesh" inherits="PrimitiveMesh" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
	<brief_description>
		Represents a straight tube-shaped [PrimitiveMesh] with variable width.
	</brief_description>
	<description>
		[TubeTrailMesh] represents a straight tube-shaped mesh with variable width. The tube is composed of a number of cylindrical sections, each with the same [member section_length] and number of [member section_rings]. A [member curve] is sampled along the total length of the tube, meaning that the curve determines the radius of the tube along its length.
		This primitive mesh is usually used for particle trails.
	</description>
	<tutorials>
		<link title="3D Particle trails">$DOCS_URL/tutorials/3d/particles/trails.html</link>
		<link title="Particle systems (3D)">$DOCS_URL/tutorials/3d/particles/index.html</link>
	</tutorials>
	<members>
		<member name="cap_bottom" type="bool" setter="set_cap_bottom" getter="is_cap_bottom" default="true">
			If [code]true[/code], generates a cap at the bottom of the tube. This can be set to [code]false[/code] to speed up generation and rendering when the cap is never seen by the camera.
		</member>
		<member name="cap_top" type="bool" setter="set_cap_top" getter="is_cap_top" default="true">
			If [code]true[/code], generates a cap at the top of the tube. This can be set to [code]false[/code] to speed up generation and rendering when the cap is never seen by the camera.
		</member>
		<member name="curve" type="Curve" setter="set_curve" getter="get_curve">
			Determines the radius of the tube along its length. The radius of a particular section ring is obtained by multiplying the baseline [member radius] by the value of this curve at the given distance. For values smaller than [code]0[/code], the faces will be inverted. Should be a unit [Curve].
		</member>
		<member name="radial_steps" type="int" setter="set_radial_steps" getter="get_radial_steps" default="8">
			The number of sides on the tube. For example, a value of [code]5[/code] means the tube will be pentagonal. Higher values result in a more detailed tube at the cost of performance.
		</member>
		<member name="radius" type="float" setter="set_radius" getter="get_radius" default="0.5">
			The baseline radius of the tube. The radius of a particular section ring is obtained by multiplying this radius by the value of the [member curve] at the given distance.
		</member>
		<member name="section_length" type="float" setter="set_section_length" getter="get_section_length" default="0.2">
			The length of a section of the tube.
		</member>
		<member name="section_rings" type="int" setter="set_section_rings" getter="get_section_rings" default="3">
			The number of rings in a section. The [member curve] is sampled on each ring to determine its radius. Higher values result in a more detailed tube at the cost of performance.
		</member>
		<member name="sections" type="int" setter="set_sections" getter="get_sections" default="5">
			The total number of sections on the tube.
		</member>
	</members>
</class>
