Fix collide_shape return type

Fix PhysicsDirectSpaceState3D::_collide_shape return type.
Also PhysicsDirectSpaceState2D::_collide_shape.
This commit is contained in:
Ricardo Buring 2023-03-23 15:59:41 +01:00
parent b31d00a914
commit 61429a5f49
6 changed files with 12 additions and 12 deletions

View file

@ -21,7 +21,7 @@
</description> </description>
</method> </method>
<method name="collide_shape"> <method name="collide_shape">
<return type="PackedVector2Array[]" /> <return type="Vector2[]" />
<param index="0" name="parameters" type="PhysicsShapeQueryParameters2D" /> <param index="0" name="parameters" type="PhysicsShapeQueryParameters2D" />
<param index="1" name="max_results" type="int" default="32" /> <param index="1" name="max_results" type="int" default="32" />
<description> <description>

View file

@ -21,7 +21,7 @@
</description> </description>
</method> </method>
<method name="collide_shape"> <method name="collide_shape">
<return type="PackedVector3Array[]" /> <return type="Vector3[]" />
<param index="0" name="parameters" type="PhysicsShapeQueryParameters3D" /> <param index="0" name="parameters" type="PhysicsShapeQueryParameters3D" />
<param index="1" name="max_results" type="int" default="32" /> <param index="1" name="max_results" type="int" default="32" />
<description> <description>

View file

@ -409,17 +409,17 @@ Vector<real_t> PhysicsDirectSpaceState2D::_cast_motion(const Ref<PhysicsShapeQue
return ret; return ret;
} }
TypedArray<PackedVector2Array> PhysicsDirectSpaceState2D::_collide_shape(const Ref<PhysicsShapeQueryParameters2D> &p_shape_query, int p_max_results) { TypedArray<Vector2> PhysicsDirectSpaceState2D::_collide_shape(const Ref<PhysicsShapeQueryParameters2D> &p_shape_query, int p_max_results) {
ERR_FAIL_COND_V(!p_shape_query.is_valid(), Array()); ERR_FAIL_COND_V(!p_shape_query.is_valid(), TypedArray<Vector2>());
Vector<Vector2> ret; Vector<Vector2> ret;
ret.resize(p_max_results * 2); ret.resize(p_max_results * 2);
int rc = 0; int rc = 0;
bool res = collide_shape(p_shape_query->get_parameters(), ret.ptrw(), p_max_results, rc); bool res = collide_shape(p_shape_query->get_parameters(), ret.ptrw(), p_max_results, rc);
if (!res) { if (!res) {
return TypedArray<PackedVector2Array>(); return TypedArray<Vector2>();
} }
TypedArray<PackedVector2Array> r; TypedArray<Vector2> r;
r.resize(rc * 2); r.resize(rc * 2);
for (int i = 0; i < rc * 2; i++) { for (int i = 0; i < rc * 2; i++) {
r[i] = ret[i]; r[i] = ret[i];

View file

@ -120,7 +120,7 @@ class PhysicsDirectSpaceState2D : public Object {
TypedArray<Dictionary> _intersect_point(const Ref<PhysicsPointQueryParameters2D> &p_point_query, int p_max_results = 32); TypedArray<Dictionary> _intersect_point(const Ref<PhysicsPointQueryParameters2D> &p_point_query, int p_max_results = 32);
TypedArray<Dictionary> _intersect_shape(const Ref<PhysicsShapeQueryParameters2D> &p_shape_query, int p_max_results = 32); TypedArray<Dictionary> _intersect_shape(const Ref<PhysicsShapeQueryParameters2D> &p_shape_query, int p_max_results = 32);
Vector<real_t> _cast_motion(const Ref<PhysicsShapeQueryParameters2D> &p_shape_query); Vector<real_t> _cast_motion(const Ref<PhysicsShapeQueryParameters2D> &p_shape_query);
TypedArray<PackedVector2Array> _collide_shape(const Ref<PhysicsShapeQueryParameters2D> &p_shape_query, int p_max_results = 32); TypedArray<Vector2> _collide_shape(const Ref<PhysicsShapeQueryParameters2D> &p_shape_query, int p_max_results = 32);
Dictionary _get_rest_info(const Ref<PhysicsShapeQueryParameters2D> &p_shape_query); Dictionary _get_rest_info(const Ref<PhysicsShapeQueryParameters2D> &p_shape_query);
protected: protected:

View file

@ -429,17 +429,17 @@ Vector<real_t> PhysicsDirectSpaceState3D::_cast_motion(const Ref<PhysicsShapeQue
return ret; return ret;
} }
TypedArray<PackedVector3Array> PhysicsDirectSpaceState3D::_collide_shape(const Ref<PhysicsShapeQueryParameters3D> &p_shape_query, int p_max_results) { TypedArray<Vector3> PhysicsDirectSpaceState3D::_collide_shape(const Ref<PhysicsShapeQueryParameters3D> &p_shape_query, int p_max_results) {
ERR_FAIL_COND_V(!p_shape_query.is_valid(), Array()); ERR_FAIL_COND_V(!p_shape_query.is_valid(), TypedArray<Vector3>());
Vector<Vector3> ret; Vector<Vector3> ret;
ret.resize(p_max_results * 2); ret.resize(p_max_results * 2);
int rc = 0; int rc = 0;
bool res = collide_shape(p_shape_query->get_parameters(), ret.ptrw(), p_max_results, rc); bool res = collide_shape(p_shape_query->get_parameters(), ret.ptrw(), p_max_results, rc);
if (!res) { if (!res) {
return TypedArray<PackedVector3Array>(); return TypedArray<Vector3>();
} }
TypedArray<PackedVector3Array> r; TypedArray<Vector3> r;
r.resize(rc * 2); r.resize(rc * 2);
for (int i = 0; i < rc * 2; i++) { for (int i = 0; i < rc * 2; i++) {
r[i] = ret[i]; r[i] = ret[i];

View file

@ -125,7 +125,7 @@ private:
TypedArray<Dictionary> _intersect_point(const Ref<PhysicsPointQueryParameters3D> &p_point_query, int p_max_results = 32); TypedArray<Dictionary> _intersect_point(const Ref<PhysicsPointQueryParameters3D> &p_point_query, int p_max_results = 32);
TypedArray<Dictionary> _intersect_shape(const Ref<PhysicsShapeQueryParameters3D> &p_shape_query, int p_max_results = 32); TypedArray<Dictionary> _intersect_shape(const Ref<PhysicsShapeQueryParameters3D> &p_shape_query, int p_max_results = 32);
Vector<real_t> _cast_motion(const Ref<PhysicsShapeQueryParameters3D> &p_shape_query); Vector<real_t> _cast_motion(const Ref<PhysicsShapeQueryParameters3D> &p_shape_query);
TypedArray<PackedVector3Array> _collide_shape(const Ref<PhysicsShapeQueryParameters3D> &p_shape_query, int p_max_results = 32); TypedArray<Vector3> _collide_shape(const Ref<PhysicsShapeQueryParameters3D> &p_shape_query, int p_max_results = 32);
Dictionary _get_rest_info(const Ref<PhysicsShapeQueryParameters3D> &p_shape_query); Dictionary _get_rest_info(const Ref<PhysicsShapeQueryParameters3D> &p_shape_query);
protected: protected: