<?xml version="1.0" encoding="UTF-8" ?>
<class name="GLTFPhysicsShape" inherits="Resource" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
	<brief_description>
		Represents a glTF physics shape.
	</brief_description>
	<description>
		Represents a physics shape as defined by the [code]OMI_physics_shape[/code] or [code]OMI_collider[/code] glTF extensions. This class is an intermediary between the glTF data and Godot's nodes, and it's abstracted in a way that allows adding support for different glTF physics extensions in the future.
	</description>
	<tutorials>
		<link title="Runtime file loading and saving">$DOCS_URL/tutorials/io/runtime_file_loading_and_saving.html</link>
		<link title="OMI_physics_shape glTF extension">https://github.com/omigroup/gltf-extensions/tree/main/extensions/2.0/OMI_physics_shape</link>
		<link title="OMI_collider glTF extension">https://github.com/omigroup/gltf-extensions/tree/main/extensions/2.0/Archived/OMI_collider</link>
	</tutorials>
	<methods>
		<method name="from_dictionary" qualifiers="static">
			<return type="GLTFPhysicsShape" />
			<param index="0" name="dictionary" type="Dictionary" />
			<description>
				Creates a new GLTFPhysicsShape instance by parsing the given [Dictionary].
			</description>
		</method>
		<method name="from_node" qualifiers="static">
			<return type="GLTFPhysicsShape" />
			<param index="0" name="shape_node" type="CollisionShape3D" />
			<description>
				Creates a new GLTFPhysicsShape instance from the given Godot [CollisionShape3D] node.
			</description>
		</method>
		<method name="from_resource" qualifiers="static">
			<return type="GLTFPhysicsShape" />
			<param index="0" name="shape_resource" type="Shape3D" />
			<description>
				Creates a new GLTFPhysicsShape instance from the given Godot [Shape3D] resource.
			</description>
		</method>
		<method name="to_dictionary" qualifiers="const">
			<return type="Dictionary" />
			<description>
				Serializes this GLTFPhysicsShape instance into a [Dictionary] in the format defined by [code]OMI_physics_shape[/code].
			</description>
		</method>
		<method name="to_node">
			<return type="CollisionShape3D" />
			<param index="0" name="cache_shapes" type="bool" default="false" />
			<description>
				Converts this GLTFPhysicsShape instance into a Godot [CollisionShape3D] node.
			</description>
		</method>
		<method name="to_resource">
			<return type="Shape3D" />
			<param index="0" name="cache_shapes" type="bool" default="false" />
			<description>
				Converts this GLTFPhysicsShape instance into a Godot [Shape3D] resource.
			</description>
		</method>
	</methods>
	<members>
		<member name="height" type="float" setter="set_height" getter="get_height" default="2.0">
			The height of the shape, in meters. This is only used when the shape type is [code]"capsule"[/code] or [code]"cylinder"[/code]. This value should not be negative, and for [code]"capsule"[/code] it should be at least twice the radius.
		</member>
		<member name="importer_mesh" type="ImporterMesh" setter="set_importer_mesh" getter="get_importer_mesh">
			The [ImporterMesh] resource of the shape. This is only used when the shape type is [code]"hull"[/code] (convex hull) or [code]"trimesh"[/code] (concave trimesh).
		</member>
		<member name="is_trigger" type="bool" setter="set_is_trigger" getter="get_is_trigger" default="false">
			If [code]true[/code], indicates that this shape is a trigger. For Godot, this means that the shape should be a child of an [Area3D] node.
			This is the only variable not used in the [method to_node] method, it's intended to be used alongside when deciding where to add the generated node as a child.
		</member>
		<member name="mesh_index" type="int" setter="set_mesh_index" getter="get_mesh_index" default="-1">
			The index of the shape's mesh in the glTF file. This is only used when the shape type is [code]"hull"[/code] (convex hull) or [code]"trimesh"[/code] (concave trimesh).
		</member>
		<member name="radius" type="float" setter="set_radius" getter="get_radius" default="0.5">
			The radius of the shape, in meters. This is only used when the shape type is [code]"capsule"[/code], [code]"cylinder"[/code], or [code]"sphere"[/code]. This value should not be negative.
		</member>
		<member name="shape_type" type="String" setter="set_shape_type" getter="get_shape_type" default="&quot;&quot;">
			The type of shape this shape represents. Valid values are [code]"box"[/code], [code]"capsule"[/code], [code]"cylinder"[/code], [code]"sphere"[/code], [code]"hull"[/code], and [code]"trimesh"[/code].
		</member>
		<member name="size" type="Vector3" setter="set_size" getter="get_size" default="Vector3(1, 1, 1)">
			The size of the shape, in meters. This is only used when the shape type is [code]"box"[/code], and it represents the [code]"diameter"[/code] of the box. This value should not be negative.
		</member>
	</members>
</class>