<?xml version="1.0" encoding="UTF-8" ?>
<class name="PhysicsShapeQueryParameters3D" inherits="RefCounted" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
	<brief_description>
		Provides parameters for [PhysicsDirectSpaceState3D]'s methods.
	</brief_description>
	<description>
		By changing various properties of this object, such as the shape, you can configure the parameters for [PhysicsDirectSpaceState3D]'s methods.
	</description>
	<tutorials>
	</tutorials>
	<members>
		<member name="collide_with_areas" type="bool" setter="set_collide_with_areas" getter="is_collide_with_areas_enabled" default="false">
			If [code]true[/code], the query will take [Area3D]s into account.
		</member>
		<member name="collide_with_bodies" type="bool" setter="set_collide_with_bodies" getter="is_collide_with_bodies_enabled" default="true">
			If [code]true[/code], the query will take [PhysicsBody3D]s into account.
		</member>
		<member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask" default="4294967295">
			The physics layers the query will detect (as a bitmask). By default, all collision layers are detected. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information.
		</member>
		<member name="exclude" type="RID[]" setter="set_exclude" getter="get_exclude" default="[]">
			The list of object [RID]s that will be excluded from collisions. Use [method CollisionObject3D.get_rid] to get the [RID] associated with a [CollisionObject3D]-derived node.
			[b]Note:[/b] The returned array is copied and any changes to it will not update the original property value. To update the value you need to modify the returned array, and then assign it to the property again.
		</member>
		<member name="margin" type="float" setter="set_margin" getter="get_margin" default="0.0">
			The collision margin for the shape.
		</member>
		<member name="motion" type="Vector3" setter="set_motion" getter="get_motion" default="Vector3(0, 0, 0)">
			The motion of the shape being queried for.
		</member>
		<member name="shape" type="Resource" setter="set_shape" getter="get_shape">
			The [Shape3D] that will be used for collision/intersection queries. This stores the actual reference which avoids the shape to be released while being used for queries, so always prefer using this over [member shape_rid].
		</member>
		<member name="shape_rid" type="RID" setter="set_shape_rid" getter="get_shape_rid" default="RID()">
			The queried shape's [RID] that will be used for collision/intersection queries. Use this over [member shape] if you want to optimize for performance using the Servers API:
			[codeblocks]
			[gdscript]
			var shape_rid = PhysicsServer3D.sphere_shape_create()
			var radius = 2.0
			PhysicsServer3D.shape_set_data(shape_rid, radius)

			var params = PhysicsShapeQueryParameters3D.new()
			params.shape_rid = shape_rid

			# Execute physics queries here...

			# Release the shape when done with physics queries.
			PhysicsServer3D.free_rid(shape_rid)
			[/gdscript]
			[csharp]
			RID shapeRid = PhysicsServer3D.SphereShapeCreate();
			float radius = 2.0f;
			PhysicsServer3D.ShapeSetData(shapeRid, radius);

			var params = new PhysicsShapeQueryParameters3D();
			params.ShapeRid = shapeRid;

			// Execute physics queries here...

			// Release the shape when done with physics queries.
			PhysicsServer3D.FreeRid(shapeRid);
			[/csharp]
			[/codeblocks]
		</member>
		<member name="transform" type="Transform3D" setter="set_transform" getter="get_transform" default="Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)">
			The queried shape's transform matrix.
		</member>
	</members>
</class>
