Merge pull request #16485 from poke1024/vector2-cross
Bring back Vector2.cross()
This commit is contained in:
commit
8ded15b035
|
@ -98,11 +98,6 @@ real_t Vector2::cross(const Vector2 &p_other) const {
|
||||||
return x * p_other.y - y * p_other.x;
|
return x * p_other.y - y * p_other.x;
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector2 Vector2::cross(real_t p_other) const {
|
|
||||||
|
|
||||||
return Vector2(p_other * y, -p_other * x);
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector2 Vector2::floor() const {
|
Vector2 Vector2::floor() const {
|
||||||
|
|
||||||
return Vector2(Math::floor(x), Math::floor(y));
|
return Vector2(Math::floor(x), Math::floor(y));
|
||||||
|
|
|
@ -104,7 +104,6 @@ struct Vector2 {
|
||||||
|
|
||||||
real_t dot(const Vector2 &p_other) const;
|
real_t dot(const Vector2 &p_other) const;
|
||||||
real_t cross(const Vector2 &p_other) const;
|
real_t cross(const Vector2 &p_other) const;
|
||||||
Vector2 cross(real_t p_other) const;
|
|
||||||
Vector2 project(const Vector2 &p_vec) const;
|
Vector2 project(const Vector2 &p_vec) const;
|
||||||
|
|
||||||
Vector2 plane_project(real_t p_d, const Vector2 &p_vec) const;
|
Vector2 plane_project(real_t p_d, const Vector2 &p_vec) const;
|
||||||
|
|
|
@ -347,7 +347,7 @@ struct _VariantCall {
|
||||||
VCALL_LOCALMEM1R(Vector2, bounce);
|
VCALL_LOCALMEM1R(Vector2, bounce);
|
||||||
VCALL_LOCALMEM1R(Vector2, reflect);
|
VCALL_LOCALMEM1R(Vector2, reflect);
|
||||||
VCALL_LOCALMEM0R(Vector2, angle);
|
VCALL_LOCALMEM0R(Vector2, angle);
|
||||||
//VCALL_LOCALMEM1R(Vector2,cross);
|
VCALL_LOCALMEM1R(Vector2, cross);
|
||||||
VCALL_LOCALMEM0R(Vector2, abs);
|
VCALL_LOCALMEM0R(Vector2, abs);
|
||||||
VCALL_LOCALMEM1R(Vector2, clamped);
|
VCALL_LOCALMEM1R(Vector2, clamped);
|
||||||
|
|
||||||
|
@ -1517,7 +1517,7 @@ void register_variant_methods() {
|
||||||
ADDFUNC1R(VECTOR2, VECTOR2, Vector2, slide, VECTOR2, "n", varray());
|
ADDFUNC1R(VECTOR2, VECTOR2, Vector2, slide, VECTOR2, "n", varray());
|
||||||
ADDFUNC1R(VECTOR2, VECTOR2, Vector2, bounce, VECTOR2, "n", varray());
|
ADDFUNC1R(VECTOR2, VECTOR2, Vector2, bounce, VECTOR2, "n", varray());
|
||||||
ADDFUNC1R(VECTOR2, VECTOR2, Vector2, reflect, VECTOR2, "n", varray());
|
ADDFUNC1R(VECTOR2, VECTOR2, Vector2, reflect, VECTOR2, "n", varray());
|
||||||
//ADDFUNC1R(VECTOR2,REAL,Vector2,cross,VECTOR2,"with",varray());
|
ADDFUNC1R(VECTOR2, REAL, Vector2, cross, VECTOR2, "with", varray());
|
||||||
ADDFUNC0R(VECTOR2, VECTOR2, Vector2, abs, varray());
|
ADDFUNC0R(VECTOR2, VECTOR2, Vector2, abs, varray());
|
||||||
ADDFUNC1R(VECTOR2, VECTOR2, Vector2, clamped, REAL, "length", varray());
|
ADDFUNC1R(VECTOR2, VECTOR2, Vector2, clamped, REAL, "length", varray());
|
||||||
|
|
||||||
|
|
|
@ -81,6 +81,15 @@
|
||||||
Returns the vector with a maximum length.
|
Returns the vector with a maximum length.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
|
<method name="cross">
|
||||||
|
<return type="float">
|
||||||
|
</return>
|
||||||
|
<argument index="0" name="b" type="Vector2">
|
||||||
|
</argument>
|
||||||
|
<description>
|
||||||
|
Returns the 2-dimensional analog of the cross product with [code]b[/code].
|
||||||
|
</description>
|
||||||
|
</method>
|
||||||
<method name="cubic_interpolate">
|
<method name="cubic_interpolate">
|
||||||
<return type="Vector2">
|
<return type="Vector2">
|
||||||
</return>
|
</return>
|
||||||
|
|
|
@ -146,14 +146,19 @@ bool PinJoint2DSW::setup(real_t p_step) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline Vector2 custom_cross(const Vector2 &p_vec, real_t p_other) {
|
||||||
|
|
||||||
|
return Vector2(p_other * p_vec.y, -p_other * p_vec.x);
|
||||||
|
}
|
||||||
|
|
||||||
void PinJoint2DSW::solve(real_t p_step) {
|
void PinJoint2DSW::solve(real_t p_step) {
|
||||||
|
|
||||||
// compute relative velocity
|
// compute relative velocity
|
||||||
Vector2 vA = A->get_linear_velocity() - rA.cross(A->get_angular_velocity());
|
Vector2 vA = A->get_linear_velocity() - custom_cross(rA, A->get_angular_velocity());
|
||||||
|
|
||||||
Vector2 rel_vel;
|
Vector2 rel_vel;
|
||||||
if (B)
|
if (B)
|
||||||
rel_vel = B->get_linear_velocity() - rB.cross(B->get_angular_velocity()) - vA;
|
rel_vel = B->get_linear_velocity() - custom_cross(rB, B->get_angular_velocity()) - vA;
|
||||||
else
|
else
|
||||||
rel_vel = -vA;
|
rel_vel = -vA;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue