Add support for motion in 2D intersect_shape function
It was only missing extended rect for broadphase check, the solver was already taking the motion from parameters into account.
This commit is contained in:
parent
ec0dc93083
commit
160346f794
2 changed files with 2 additions and 2 deletions
|
@ -100,8 +100,7 @@
|
||||||
<argument index="0" name="shape" type="Physics2DShapeQueryParameters" />
|
<argument index="0" name="shape" type="Physics2DShapeQueryParameters" />
|
||||||
<argument index="1" name="max_results" type="int" default="32" />
|
<argument index="1" name="max_results" type="int" default="32" />
|
||||||
<description>
|
<description>
|
||||||
Checks the intersections of a shape, given through a [Physics2DShapeQueryParameters] object, against the space.
|
Checks the intersections of a shape, given through a [Physics2DShapeQueryParameters] object, against the space. The intersected shapes are returned in an array containing dictionaries with the following fields:
|
||||||
[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:
|
|
||||||
[code]collider[/code]: The colliding object.
|
[code]collider[/code]: The colliding object.
|
||||||
[code]collider_id[/code]: The colliding object's ID.
|
[code]collider_id[/code]: The colliding object's ID.
|
||||||
[code]metadata[/code]: The intersecting shape's metadata. This metadata is different from [method Object.get_meta], and is set with [method Physics2DServer.shape_set_data].
|
[code]metadata[/code]: The intersecting shape's metadata. This metadata is different from [method Object.get_meta], and is set with [method Physics2DServer.shape_set_data].
|
||||||
|
|
|
@ -210,6 +210,7 @@ int Physics2DDirectSpaceStateSW::intersect_shape(const RID &p_shape, const Trans
|
||||||
ERR_FAIL_COND_V(!shape, 0);
|
ERR_FAIL_COND_V(!shape, 0);
|
||||||
|
|
||||||
Rect2 aabb = p_xform.xform(shape->get_aabb());
|
Rect2 aabb = p_xform.xform(shape->get_aabb());
|
||||||
|
aabb = aabb.merge(Rect2(aabb.position + p_motion, aabb.size)); //motion
|
||||||
aabb = aabb.grow(p_margin);
|
aabb = aabb.grow(p_margin);
|
||||||
|
|
||||||
int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, Space2DSW::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
|
int amount = space->broadphase->cull_aabb(aabb, space->intersection_query_results, Space2DSW::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
|
||||||
|
|
Loading…
Reference in a new issue