Răsfoiți Sursa

Merge pull request #45065 from aaronfranke/3.2-basis-eq-inst

[3.2] Use instance and first arg in Basis is_equal_approx
Rémi Verschelde 4 ani în urmă
părinte
comite
5cf55fe905
3 a modificat fișierele cu 6 adăugiri și 4 ștergeri
  1. 2 2
      core/math/basis.h
  2. 3 2
      core/variant_call.cpp
  3. 1 0
      doc/classes/Basis.xml

+ 2 - 2
core/math/basis.h

@@ -145,8 +145,8 @@ public:
 	}
 
 	bool is_equal_approx(const Basis &p_basis) const;
-	// TODO: Break compatibility in 4.0 by getting rid of this so that it's only an instance method. See also TODO in variant_call.cpp
-	bool is_equal_approx(const Basis &a, const Basis &b) const { return a.is_equal_approx(b); }
+	// For complicated reasons, the second argument is always discarded. See #45062.
+	bool is_equal_approx(const Basis &a, const Basis &b) const { return is_equal_approx(a); }
 	bool is_equal_approx_ratio(const Basis &a, const Basis &b, real_t p_epsilon = UNIT_EPSILON) const;
 
 	bool operator==(const Basis &p_matrix) const;

+ 3 - 2
core/variant_call.cpp

@@ -846,7 +846,7 @@ struct _VariantCall {
 	VCALL_PTR0R(Basis, get_orthogonal_index);
 	VCALL_PTR0R(Basis, orthonormalized);
 	VCALL_PTR2R(Basis, slerp);
-	VCALL_PTR2R(Basis, is_equal_approx); // TODO: Break compatibility in 4.0 to change this to an instance method (a.is_equal_approx(b) as VCALL_PTR1R) for consistency.
+	VCALL_PTR2R(Basis, is_equal_approx);
 	VCALL_PTR0R(Basis, get_rotation_quat);
 
 	VCALL_PTR0R(Transform, inverse);
@@ -1966,7 +1966,8 @@ void register_variant_methods() {
 	ADDFUNC1R(BASIS, VECTOR3, Basis, xform_inv, VECTOR3, "v", varray());
 	ADDFUNC0R(BASIS, INT, Basis, get_orthogonal_index, varray());
 	ADDFUNC2R(BASIS, BASIS, Basis, slerp, BASIS, "b", REAL, "t", varray());
-	ADDFUNC2R(BASIS, BOOL, Basis, is_equal_approx, BASIS, "b", REAL, "epsilon", varray(CMP_EPSILON)); // TODO: Replace in 4.0, see other TODO.
+	// For complicated reasons, the epsilon argument is always discarded. See #45062.
+	ADDFUNC2R(BASIS, BOOL, Basis, is_equal_approx, BASIS, "b", REAL, "epsilon", varray(CMP_EPSILON));
 	ADDFUNC0R(BASIS, QUAT, Basis, get_rotation_quat, varray());
 
 	ADDFUNC0R(TRANSFORM, TRANSFORM, Transform, inverse, varray());

+ 1 - 0
doc/classes/Basis.xml

@@ -115,6 +115,7 @@
 			</argument>
 			<description>
 				Returns [code]true[/code] if this basis and [code]b[/code] are approximately equal, by calling [code]is_equal_approx[/code] on each component.
+				[b]Note:[/b] For complicated reasons, the epsilon argument is always discarded. Don't use the epsilon argument, it does nothing.
 			</description>
 		</method>
 		<method name="orthonormalized">