diff options
author | PouleyKetchoupp <pouleyketchoup@gmail.com> | 2021-11-01 18:00:58 -0700 |
---|---|---|
committer | PouleyKetchoupp <pouleyketchoup@gmail.com> | 2021-11-04 11:44:39 -0700 |
commit | acbd24ea842cb90ab49cd66d5dc7220e57c73f29 (patch) | |
tree | 9ae32f04a7f744f7c58a19a1b9679f49589053cb /doc/classes | |
parent | 25bea735449d4e762e3c5f6b960d5f5b9cf79ac1 (diff) |
Use parameter classes instead of arguments for all physics queries
Same as what is already done for shape queries, applied to point and ray
queries. Easier to document and more flexible to add more parameters.
Also expose intersect_point method to script in 3D.
Remove intersect_point_on_canvas in 2D, replaced with a parameter.
Diffstat (limited to 'doc/classes')
-rw-r--r-- | doc/classes/PhysicsDirectSpaceState2D.xml | 50 | ||||
-rw-r--r-- | doc/classes/PhysicsDirectSpaceState3D.xml | 35 | ||||
-rw-r--r-- | doc/classes/PhysicsPointQueryParameters2D.xml | 31 | ||||
-rw-r--r-- | doc/classes/PhysicsPointQueryParameters3D.xml | 28 | ||||
-rw-r--r-- | doc/classes/PhysicsRayQueryParameters2D.xml | 31 | ||||
-rw-r--r-- | doc/classes/PhysicsRayQueryParameters3D.xml | 31 | ||||
-rw-r--r-- | doc/classes/PhysicsShapeQueryParameters2D.xml | 2 | ||||
-rw-r--r-- | doc/classes/PhysicsShapeQueryParameters3D.xml | 5 |
8 files changed, 158 insertions, 55 deletions
diff --git a/doc/classes/PhysicsDirectSpaceState2D.xml b/doc/classes/PhysicsDirectSpaceState2D.xml index 887b382267..5892ef266f 100644 --- a/doc/classes/PhysicsDirectSpaceState2D.xml +++ b/doc/classes/PhysicsDirectSpaceState2D.xml @@ -13,7 +13,7 @@ <methods> <method name="cast_motion"> <return type="Array" /> - <argument index="0" name="shape" type="PhysicsShapeQueryParameters2D" /> + <argument index="0" name="parameters" type="PhysicsShapeQueryParameters2D" /> <description> Checks how far a [Shape2D] can move without colliding. All the parameters for the query, including the shape and the motion, are supplied through a [PhysicsShapeQueryParameters2D] object. Returns an array with the safe and unsafe proportions (between 0 and 1) of the motion. The safe proportion is the maximum fraction of the motion that can be made without a collision. The unsafe proportion is the minimum fraction of the distance that must be moved for a collision. If no collision is detected a result of [code][1.0, 1.0][/code] will be returned. @@ -22,7 +22,7 @@ </method> <method name="collide_shape"> <return type="Array" /> - <argument index="0" name="shape" type="PhysicsShapeQueryParameters2D" /> + <argument index="0" name="parameters" type="PhysicsShapeQueryParameters2D" /> <argument index="1" name="max_results" type="int" default="32" /> <description> Checks the intersections of a shape, given through a [PhysicsShapeQueryParameters2D] object, against the space. The resulting array contains a list of points where the shape intersects another. Like with [method intersect_shape], the number of returned results can be limited to save processing time. @@ -31,7 +31,7 @@ </method> <method name="get_rest_info"> <return type="Dictionary" /> - <argument index="0" name="shape" type="PhysicsShapeQueryParameters2D" /> + <argument index="0" name="parameters" type="PhysicsShapeQueryParameters2D" /> <description> Checks the intersections of a shape, given through a [PhysicsShapeQueryParameters2D] object, against the space. If it collides with more than one shape, the nearest one is selected. If the shape did not intersect anything, then an empty dictionary is returned instead. [b]Note:[/b] This method does not take into account the [code]motion[/code] property of the object. The returned object is a dictionary containing the following fields: @@ -45,51 +45,23 @@ </method> <method name="intersect_point"> <return type="Array" /> - <argument index="0" name="point" type="Vector2" /> + <argument index="0" name="parameters" type="PhysicsPointQueryParameters2D" /> <argument index="1" name="max_results" type="int" default="32" /> - <argument index="2" name="exclude" type="Array" default="[]" /> - <argument index="3" name="collision_mask" type="int" default="4294967295" /> - <argument index="4" name="collide_with_bodies" type="bool" default="true" /> - <argument index="5" name="collide_with_areas" type="bool" default="false" /> <description> - Checks whether a point is inside any solid shape. The shapes the point is inside of are returned in an array containing dictionaries with the following fields: + Checks whether a point is inside any solid shape. Position and other parameters are defined through [PhysicsPointQueryParameters2D]. The shapes the point is inside of are returned in an array containing dictionaries with the following fields: [code]collider[/code]: The colliding object. [code]collider_id[/code]: The colliding object's ID. [code]rid[/code]: The intersecting object's [RID]. [code]shape[/code]: The shape index of the colliding shape. - Additionally, the method can take an [code]exclude[/code] array of objects or [RID]s that are to be excluded from collisions, a [code]collision_mask[/code] bitmask representing the physics layers to detect (all layers by default), or booleans to determine if the ray should collide with [PhysicsBody2D]s or [Area2D]s, respectively. - [b]Note:[/b] [ConcavePolygonShape2D]s and [CollisionPolygon2D]s in [code]Segments[/code] build mode are not solid shapes. Therefore, they will not be detected. - </description> - </method> - <method name="intersect_point_on_canvas"> - <return type="Array" /> - <argument index="0" name="point" type="Vector2" /> - <argument index="1" name="canvas_instance_id" type="int" /> - <argument index="2" name="max_results" type="int" default="32" /> - <argument index="3" name="exclude" type="Array" default="[]" /> - <argument index="4" name="collision_mask" type="int" default="4294967295" /> - <argument index="5" name="collide_with_bodies" type="bool" default="true" /> - <argument index="6" name="collide_with_areas" type="bool" default="false" /> - <description> - Checks whether a point is inside any solid shape, in a specific canvas layer given by [code]canvas_instance_id[/code]. The shapes the point is inside of are returned in an array containing dictionaries with the following fields: - [code]collider[/code]: The colliding object. - [code]collider_id[/code]: The colliding object's ID. - [code]rid[/code]: The intersecting object's [RID]. - [code]shape[/code]: The shape index of the colliding shape. - Additionally, the method can take an [code]exclude[/code] array of objects or [RID]s that are to be excluded from collisions, a [code]collision_mask[/code] bitmask representing the physics layers to detect (all layers by default), or booleans to determine if the ray should collide with [PhysicsBody2D]s or [Area2D]s, respectively. + The number of intersections can be limited with the [code]max_results[/code] parameter, to reduce the processing time. [b]Note:[/b] [ConcavePolygonShape2D]s and [CollisionPolygon2D]s in [code]Segments[/code] build mode are not solid shapes. Therefore, they will not be detected. </description> </method> <method name="intersect_ray"> <return type="Dictionary" /> - <argument index="0" name="from" type="Vector2" /> - <argument index="1" name="to" type="Vector2" /> - <argument index="2" name="exclude" type="Array" default="[]" /> - <argument index="3" name="collision_mask" type="int" default="4294967295" /> - <argument index="4" name="collide_with_bodies" type="bool" default="true" /> - <argument index="5" name="collide_with_areas" type="bool" default="false" /> + <argument index="0" name="parameters" type="PhysicsRayQueryParameters2D" /> <description> - Intersects a ray in a given space. The returned object is a dictionary with the following fields: + Intersects a ray in a given space. Ray position and other parameters are defined through [PhysicsRayQueryParameters2D]. The returned object is a dictionary with the following fields: [code]collider[/code]: The colliding object. [code]collider_id[/code]: The colliding object's ID. [code]normal[/code]: The object's surface normal at the intersection point. @@ -97,16 +69,14 @@ [code]rid[/code]: The intersecting object's [RID]. [code]shape[/code]: The shape index of the colliding shape. If the ray did not intersect anything, then an empty dictionary is returned instead. - Additionally, the method can take an [code]exclude[/code] array of objects or [RID]s that are to be excluded from collisions, a [code]collision_mask[/code] bitmask representing the physics layers to detect (all layers by default), or booleans to determine if the ray should collide with [PhysicsBody2D]s or [Area2D]s, respectively. </description> </method> <method name="intersect_shape"> <return type="Array" /> - <argument index="0" name="shape" type="PhysicsShapeQueryParameters2D" /> + <argument index="0" name="parameters" type="PhysicsShapeQueryParameters2D" /> <argument index="1" name="max_results" type="int" default="32" /> <description> - Checks the intersections of a shape, given through a [PhysicsShapeQueryParameters2D] object, against the space. - [b]Note:[/b] This method does not take into account the [code]motion[/code] property of the object. The intersected shapes are returned in an array containing dictionaries with the following fields: + Checks the intersections of a shape, given through a [PhysicsShapeQueryParameters2D] object, against the space. The intersected shapes are returned in an array containing dictionaries with the following fields: [code]collider[/code]: The colliding object. [code]collider_id[/code]: The colliding object's ID. [code]rid[/code]: The intersecting object's [RID]. diff --git a/doc/classes/PhysicsDirectSpaceState3D.xml b/doc/classes/PhysicsDirectSpaceState3D.xml index 8c37072f29..6a7fe46518 100644 --- a/doc/classes/PhysicsDirectSpaceState3D.xml +++ b/doc/classes/PhysicsDirectSpaceState3D.xml @@ -13,8 +13,7 @@ <methods> <method name="cast_motion"> <return type="Array" /> - <argument index="0" name="shape" type="PhysicsShapeQueryParameters3D" /> - <argument index="1" name="motion" type="Vector3" /> + <argument index="0" name="parameters" type="PhysicsShapeQueryParameters3D" /> <description> Checks how far a [Shape3D] can move without colliding. All the parameters for the query, including the shape, are supplied through a [PhysicsShapeQueryParameters3D] object. Returns an array with the safe and unsafe proportions (between 0 and 1) of the motion. The safe proportion is the maximum fraction of the motion that can be made without a collision. The unsafe proportion is the minimum fraction of the distance that must be moved for a collision. If no collision is detected a result of [code][1.0, 1.0][/code] will be returned. @@ -23,16 +22,17 @@ </method> <method name="collide_shape"> <return type="Array" /> - <argument index="0" name="shape" type="PhysicsShapeQueryParameters3D" /> + <argument index="0" name="parameters" type="PhysicsShapeQueryParameters3D" /> <argument index="1" name="max_results" type="int" default="32" /> <description> Checks the intersections of a shape, given through a [PhysicsShapeQueryParameters3D] object, against the space. The resulting array contains a list of points where the shape intersects another. Like with [method intersect_shape], the number of returned results can be limited to save processing time. Returned points are a list of pairs of contact points. For each pair the first one is in the shape passed in [PhysicsShapeQueryParameters3D] object, second one is in the collided shape from the physics space. + [b]Note:[/b] This method does not take into account the [code]motion[/code] property of the object. </description> </method> <method name="get_rest_info"> <return type="Dictionary" /> - <argument index="0" name="shape" type="PhysicsShapeQueryParameters3D" /> + <argument index="0" name="parameters" type="PhysicsShapeQueryParameters3D" /> <description> Checks the intersections of a shape, given through a [PhysicsShapeQueryParameters3D] object, against the space. If it collides with more than one shape, the nearest one is selected. The returned object is a dictionary containing the following fields: [code]collider_id[/code]: The colliding object's ID. @@ -42,18 +42,27 @@ [code]rid[/code]: The intersecting object's [RID]. [code]shape[/code]: The shape index of the colliding shape. If the shape did not intersect anything, then an empty dictionary is returned instead. + [b]Note:[/b] This method does not take into account the [code]motion[/code] property of the object. + </description> + </method> + <method name="intersect_point"> + <return type="Array" /> + <argument index="0" name="parameters" type="PhysicsPointQueryParameters3D" /> + <argument index="1" name="max_results" type="int" default="32" /> + <description> + Checks whether a point is inside any solid shape. Position and other parameters are defined through [PhysicsPointQueryParameters3D]. The shapes the point is inside of are returned in an array containing dictionaries with the following fields: + [code]collider[/code]: The colliding object. + [code]collider_id[/code]: The colliding object's ID. + [code]rid[/code]: The intersecting object's [RID]. + [code]shape[/code]: The shape index of the colliding shape. + The number of intersections can be limited with the [code]max_results[/code] parameter, to reduce the processing time. </description> </method> <method name="intersect_ray"> <return type="Dictionary" /> - <argument index="0" name="from" type="Vector3" /> - <argument index="1" name="to" type="Vector3" /> - <argument index="2" name="exclude" type="Array" default="[]" /> - <argument index="3" name="collision_mask" type="int" default="4294967295" /> - <argument index="4" name="collide_with_bodies" type="bool" default="true" /> - <argument index="5" name="collide_with_areas" type="bool" default="false" /> + <argument index="0" name="parameters" type="PhysicsRayQueryParameters3D" /> <description> - Intersects a ray in a given space. The returned object is a dictionary with the following fields: + Intersects a ray in a given space. Ray position and other parameters are defined through [PhysicsRayQueryParameters3D]. The returned object is a dictionary with the following fields: [code]collider[/code]: The colliding object. [code]collider_id[/code]: The colliding object's ID. [code]normal[/code]: The object's surface normal at the intersection point. @@ -61,12 +70,11 @@ [code]rid[/code]: The intersecting object's [RID]. [code]shape[/code]: The shape index of the colliding shape. If the ray did not intersect anything, then an empty dictionary is returned instead. - Additionally, the method can take an [code]exclude[/code] array of objects or [RID]s that are to be excluded from collisions, a [code]collision_mask[/code] bitmask representing the physics layers to detect (all layers by default), or booleans to determine if the ray should collide with [PhysicsBody3D]s or [Area3D]s, respectively. </description> </method> <method name="intersect_shape"> <return type="Array" /> - <argument index="0" name="shape" type="PhysicsShapeQueryParameters3D" /> + <argument index="0" name="parameters" type="PhysicsShapeQueryParameters3D" /> <argument index="1" name="max_results" type="int" default="32" /> <description> Checks the intersections of a shape, given through a [PhysicsShapeQueryParameters3D] object, against the space. The intersected shapes are returned in an array containing dictionaries with the following fields: @@ -75,6 +83,7 @@ [code]rid[/code]: The intersecting object's [RID]. [code]shape[/code]: The shape index of the colliding shape. The number of intersections can be limited with the [code]max_results[/code] parameter, to reduce the processing time. + [b]Note:[/b] This method does not take into account the [code]motion[/code] property of the object. </description> </method> </methods> diff --git a/doc/classes/PhysicsPointQueryParameters2D.xml b/doc/classes/PhysicsPointQueryParameters2D.xml new file mode 100644 index 0000000000..6acd83b101 --- /dev/null +++ b/doc/classes/PhysicsPointQueryParameters2D.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="PhysicsPointQueryParameters2D" inherits="RefCounted" version="4.0"> + <brief_description> + Parameters to be sent to a 2D point physics query. + </brief_description> + <description> + This class contains the position and other parameters to be used for [method PhysicsDirectSpaceState2D.intersect_point]. + </description> + <tutorials> + </tutorials> + <members> + <member name="canvas_instance_id" type="int" setter="set_canvas_instance_id" getter="get_canvas_instance_id" default="0"> + If different from [code]0[/code], restricts the query to a specific canvas layer specified by its instance id. See [method Object.get_instance_id]. + </member> + <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 [Area2D]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 [PhysicsBody2D]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=https://docs.godotengine.org/en/latest/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="Array" setter="set_exclude" getter="get_exclude" default="[]"> + The list of objects or object [RID]s that will be excluded from collisions. + </member> + <member name="position" type="Vector2" setter="set_position" getter="get_position" default="Vector2(0, 0)"> + The position being queried for, in global coordinates. + </member> + </members> +</class> diff --git a/doc/classes/PhysicsPointQueryParameters3D.xml b/doc/classes/PhysicsPointQueryParameters3D.xml new file mode 100644 index 0000000000..488f56872d --- /dev/null +++ b/doc/classes/PhysicsPointQueryParameters3D.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="PhysicsPointQueryParameters3D" inherits="RefCounted" version="4.0"> + <brief_description> + Parameters to be sent to a 3D point physics query. + </brief_description> + <description> + This class contains the position and other parameters to be used for [method PhysicsDirectSpaceState3D.intersect_point]. + </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=https://docs.godotengine.org/en/latest/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="Array" setter="set_exclude" getter="get_exclude" default="[]"> + The list of objects or object [RID]s that will be excluded from collisions. + </member> + <member name="position" type="Vector3" setter="set_position" getter="get_position" default="Vector3(0, 0, 0)"> + The position being queried for, in global coordinates. + </member> + </members> +</class> diff --git a/doc/classes/PhysicsRayQueryParameters2D.xml b/doc/classes/PhysicsRayQueryParameters2D.xml new file mode 100644 index 0000000000..0e99e47286 --- /dev/null +++ b/doc/classes/PhysicsRayQueryParameters2D.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="PhysicsRayQueryParameters2D" inherits="RefCounted" version="4.0"> + <brief_description> + Parameters to be sent to a 2D ray physics query. + </brief_description> + <description> + This class contains the ray position and other parameters to be used for [method PhysicsDirectSpaceState2D.intersect_ray]. + </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 [Area2D]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 [PhysicsBody2D]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=https://docs.godotengine.org/en/latest/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="Array" setter="set_exclude" getter="get_exclude" default="[]"> + The list of objects or object [RID]s that will be excluded from collisions. + </member> + <member name="from" type="Vector2" setter="set_from" getter="get_from" default="Vector2(0, 0)"> + The starting point of the ray being queried for, in global coordinates. + </member> + <member name="to" type="Vector2" setter="set_to" getter="get_to" default="Vector2(0, 0)"> + The ending point of the ray being queried for, in global coordinates. + </member> + </members> +</class> diff --git a/doc/classes/PhysicsRayQueryParameters3D.xml b/doc/classes/PhysicsRayQueryParameters3D.xml new file mode 100644 index 0000000000..dbd09e5128 --- /dev/null +++ b/doc/classes/PhysicsRayQueryParameters3D.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="PhysicsRayQueryParameters3D" inherits="RefCounted" version="4.0"> + <brief_description> + Parameters to be sent to a 3D ray physics query. + </brief_description> + <description> + This class contains the ray position and other parameters to be used for [method PhysicsDirectSpaceState3D.intersect_ray]. + </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=https://docs.godotengine.org/en/latest/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="Array" setter="set_exclude" getter="get_exclude" default="[]"> + The list of objects or object [RID]s that will be excluded from collisions. + </member> + <member name="from" type="Vector3" setter="set_from" getter="get_from" default="Vector3(0, 0, 0)"> + The starting point of the ray being queried for, in global coordinates. + </member> + <member name="to" type="Vector3" setter="set_to" getter="get_to" default="Vector3(0, 0, 0)"> + The ending point of the ray being queried for, in global coordinates. + </member> + </members> +</class> diff --git a/doc/classes/PhysicsShapeQueryParameters2D.xml b/doc/classes/PhysicsShapeQueryParameters2D.xml index 6035b662ea..abd19f1326 100644 --- a/doc/classes/PhysicsShapeQueryParameters2D.xml +++ b/doc/classes/PhysicsShapeQueryParameters2D.xml @@ -4,7 +4,7 @@ Parameters to be sent to a 2D shape physics query. </brief_description> <description> - This class contains the shape and other parameters for 2D intersection/collision queries. + This class contains the shape and other parameters for [PhysicsDirectSpaceState2D] intersection/collision queries. </description> <tutorials> </tutorials> diff --git a/doc/classes/PhysicsShapeQueryParameters3D.xml b/doc/classes/PhysicsShapeQueryParameters3D.xml index 1a289ff9d0..2dffd5347a 100644 --- a/doc/classes/PhysicsShapeQueryParameters3D.xml +++ b/doc/classes/PhysicsShapeQueryParameters3D.xml @@ -4,7 +4,7 @@ Parameters to be sent to a 3D shape physics query. </brief_description> <description> - This class contains the shape and other parameters for 3D intersection/collision queries. + This class contains the shape and other parameters for [PhysicsDirectSpaceState3D] intersection/collision queries. </description> <tutorials> </tutorials> @@ -24,6 +24,9 @@ <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> |