|
@@ -44,8 +44,11 @@
|
|
|
CASE_TYPE(PREFIX, OP, REAL) \
|
|
|
CASE_TYPE(PREFIX, OP, STRING) \
|
|
|
CASE_TYPE(PREFIX, OP, VECTOR2) \
|
|
|
+ CASE_TYPE(PREFIX, OP, VECTOR2I) \
|
|
|
CASE_TYPE(PREFIX, OP, RECT2) \
|
|
|
+ CASE_TYPE(PREFIX, OP, RECT2I) \
|
|
|
CASE_TYPE(PREFIX, OP, VECTOR3) \
|
|
|
+ CASE_TYPE(PREFIX, OP, VECTOR3I) \
|
|
|
CASE_TYPE(PREFIX, OP, TRANSFORM2D) \
|
|
|
CASE_TYPE(PREFIX, OP, PLANE) \
|
|
|
CASE_TYPE(PREFIX, OP, QUAT) \
|
|
@@ -80,8 +83,11 @@
|
|
|
TYPE(PREFIX, OP, REAL), \
|
|
|
TYPE(PREFIX, OP, STRING), \
|
|
|
TYPE(PREFIX, OP, VECTOR2), \
|
|
|
+ TYPE(PREFIX, OP, VECTOR2I), \
|
|
|
TYPE(PREFIX, OP, RECT2), \
|
|
|
+ TYPE(PREFIX, OP, RECT2I), \
|
|
|
TYPE(PREFIX, OP, VECTOR3), \
|
|
|
+ TYPE(PREFIX, OP, VECTOR3I), \
|
|
|
TYPE(PREFIX, OP, TRANSFORM2D), \
|
|
|
TYPE(PREFIX, OP, PLANE), \
|
|
|
TYPE(PREFIX, OP, QUAT), \
|
|
@@ -228,14 +234,16 @@ bool Variant::booleanize() const {
|
|
|
_RETURN(p_a._data.m_type); \
|
|
|
};
|
|
|
|
|
|
-#define DEFAULT_OP_NUM_VEC(m_prefix, m_op_name, m_name, m_op, m_type) \
|
|
|
- CASE_TYPE(m_prefix, m_op_name, m_name) { \
|
|
|
- if (p_b.type == INT) _RETURN(p_a._data.m_type m_op p_b._data._int); \
|
|
|
- if (p_b.type == REAL) _RETURN(p_a._data.m_type m_op p_b._data._real); \
|
|
|
- if (p_b.type == VECTOR2) _RETURN(p_a._data.m_type m_op *reinterpret_cast<const Vector2 *>(p_b._data._mem)); \
|
|
|
- if (p_b.type == VECTOR3) _RETURN(p_a._data.m_type m_op *reinterpret_cast<const Vector3 *>(p_b._data._mem)); \
|
|
|
- \
|
|
|
- _RETURN_FAIL \
|
|
|
+#define DEFAULT_OP_NUM_VEC(m_prefix, m_op_name, m_name, m_op, m_type) \
|
|
|
+ CASE_TYPE(m_prefix, m_op_name, m_name) { \
|
|
|
+ if (p_b.type == INT) _RETURN(p_a._data.m_type m_op p_b._data._int); \
|
|
|
+ if (p_b.type == REAL) _RETURN(p_a._data.m_type m_op p_b._data._real); \
|
|
|
+ if (p_b.type == VECTOR2) _RETURN(p_a._data.m_type m_op *reinterpret_cast<const Vector2 *>(p_b._data._mem)); \
|
|
|
+ if (p_b.type == VECTOR3) _RETURN(p_a._data.m_type m_op *reinterpret_cast<const Vector3 *>(p_b._data._mem)); \
|
|
|
+ if (p_b.type == VECTOR2I) _RETURN(p_a._data.m_type m_op *reinterpret_cast<const Vector2 *>(p_b._data._mem)); \
|
|
|
+ if (p_b.type == VECTOR3I) _RETURN(p_a._data.m_type m_op *reinterpret_cast<const Vector3 *>(p_b._data._mem)); \
|
|
|
+ \
|
|
|
+ _RETURN_FAIL \
|
|
|
};
|
|
|
|
|
|
#define DEFAULT_OP_STR_REV(m_prefix, m_op_name, m_name, m_op, m_type) \
|
|
@@ -491,9 +499,12 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
DEFAULT_OP_NUM_NULL(math, OP_EQUAL, REAL, ==, _real);
|
|
|
DEFAULT_OP_STR_NULL(math, OP_EQUAL, STRING, ==, String);
|
|
|
DEFAULT_OP_LOCALMEM_NULL(math, OP_EQUAL, VECTOR2, ==, Vector2);
|
|
|
+ DEFAULT_OP_LOCALMEM_NULL(math, OP_EQUAL, VECTOR2I, ==, Vector2i);
|
|
|
DEFAULT_OP_LOCALMEM_NULL(math, OP_EQUAL, RECT2, ==, Rect2);
|
|
|
+ DEFAULT_OP_LOCALMEM_NULL(math, OP_EQUAL, RECT2I, ==, Rect2i);
|
|
|
DEFAULT_OP_PTRREF_NULL(math, OP_EQUAL, TRANSFORM2D, ==, _transform2d);
|
|
|
DEFAULT_OP_LOCALMEM_NULL(math, OP_EQUAL, VECTOR3, ==, Vector3);
|
|
|
+ DEFAULT_OP_LOCALMEM_NULL(math, OP_EQUAL, VECTOR3I, ==, Vector3i);
|
|
|
DEFAULT_OP_LOCALMEM_NULL(math, OP_EQUAL, PLANE, ==, Plane);
|
|
|
DEFAULT_OP_LOCALMEM_NULL(math, OP_EQUAL, QUAT, ==, Quat);
|
|
|
DEFAULT_OP_PTRREF_NULL(math, OP_EQUAL, AABB, ==, _aabb);
|
|
@@ -585,9 +596,12 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
DEFAULT_OP_NUM_NULL(math, OP_NOT_EQUAL, REAL, !=, _real);
|
|
|
DEFAULT_OP_STR_NULL(math, OP_NOT_EQUAL, STRING, !=, String);
|
|
|
DEFAULT_OP_LOCALMEM_NULL(math, OP_NOT_EQUAL, VECTOR2, !=, Vector2);
|
|
|
+ DEFAULT_OP_LOCALMEM_NULL(math, OP_NOT_EQUAL, VECTOR2I, !=, Vector2i);
|
|
|
DEFAULT_OP_LOCALMEM_NULL(math, OP_NOT_EQUAL, RECT2, !=, Rect2);
|
|
|
+ DEFAULT_OP_LOCALMEM_NULL(math, OP_NOT_EQUAL, RECT2I, !=, Rect2i);
|
|
|
DEFAULT_OP_PTRREF_NULL(math, OP_NOT_EQUAL, TRANSFORM2D, !=, _transform2d);
|
|
|
DEFAULT_OP_LOCALMEM_NULL(math, OP_NOT_EQUAL, VECTOR3, !=, Vector3);
|
|
|
+ DEFAULT_OP_LOCALMEM_NULL(math, OP_NOT_EQUAL, VECTOR3I, !=, Vector3i);
|
|
|
DEFAULT_OP_LOCALMEM_NULL(math, OP_NOT_EQUAL, PLANE, !=, Plane);
|
|
|
DEFAULT_OP_LOCALMEM_NULL(math, OP_NOT_EQUAL, QUAT, !=, Quat);
|
|
|
DEFAULT_OP_PTRREF_NULL(math, OP_NOT_EQUAL, AABB, !=, _aabb);
|
|
@@ -653,7 +667,9 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
DEFAULT_OP_NUM(math, OP_LESS, REAL, <, _real);
|
|
|
DEFAULT_OP_STR(math, OP_LESS, STRING, <, String);
|
|
|
DEFAULT_OP_LOCALMEM(math, OP_LESS, VECTOR2, <, Vector2);
|
|
|
+ DEFAULT_OP_LOCALMEM(math, OP_LESS, VECTOR2I, <, Vector2i);
|
|
|
DEFAULT_OP_LOCALMEM(math, OP_LESS, VECTOR3, <, Vector3);
|
|
|
+ DEFAULT_OP_LOCALMEM(math, OP_LESS, VECTOR3I, <, Vector3i);
|
|
|
DEFAULT_OP_LOCALMEM(math, OP_LESS, _RID, <, RID);
|
|
|
DEFAULT_OP_ARRAY_LT(math, OP_LESS, PACKED_BYTE_ARRAY, uint8_t);
|
|
|
DEFAULT_OP_ARRAY_LT(math, OP_LESS, PACKED_INT_ARRAY, int);
|
|
@@ -665,6 +681,7 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
|
|
|
CASE_TYPE(math, OP_LESS, NIL)
|
|
|
CASE_TYPE(math, OP_LESS, RECT2)
|
|
|
+ CASE_TYPE(math, OP_LESS, RECT2I)
|
|
|
CASE_TYPE(math, OP_LESS, TRANSFORM2D)
|
|
|
CASE_TYPE(math, OP_LESS, PLANE)
|
|
|
CASE_TYPE(math, OP_LESS, QUAT)
|
|
@@ -689,12 +706,15 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
DEFAULT_OP_NUM(math, OP_LESS_EQUAL, REAL, <=, _real);
|
|
|
DEFAULT_OP_STR(math, OP_LESS_EQUAL, STRING, <=, String);
|
|
|
DEFAULT_OP_LOCALMEM(math, OP_LESS_EQUAL, VECTOR2, <=, Vector2);
|
|
|
+ DEFAULT_OP_LOCALMEM(math, OP_LESS_EQUAL, VECTOR2I, <=, Vector2i);
|
|
|
DEFAULT_OP_LOCALMEM(math, OP_LESS_EQUAL, VECTOR3, <=, Vector3);
|
|
|
+ DEFAULT_OP_LOCALMEM(math, OP_LESS_EQUAL, VECTOR3I, <=, Vector3i);
|
|
|
DEFAULT_OP_LOCALMEM(math, OP_LESS_EQUAL, _RID, <=, RID);
|
|
|
|
|
|
CASE_TYPE(math, OP_LESS_EQUAL, NIL)
|
|
|
CASE_TYPE(math, OP_LESS_EQUAL, BOOL)
|
|
|
CASE_TYPE(math, OP_LESS_EQUAL, RECT2)
|
|
|
+ CASE_TYPE(math, OP_LESS_EQUAL, RECT2I)
|
|
|
CASE_TYPE(math, OP_LESS_EQUAL, TRANSFORM2D)
|
|
|
CASE_TYPE(math, OP_LESS_EQUAL, PLANE)
|
|
|
CASE_TYPE(math, OP_LESS_EQUAL, QUAT)
|
|
@@ -762,7 +782,9 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
DEFAULT_OP_NUM(math, OP_GREATER, REAL, >, _real);
|
|
|
DEFAULT_OP_STR_REV(math, OP_GREATER, STRING, <, String);
|
|
|
DEFAULT_OP_LOCALMEM_REV(math, OP_GREATER, VECTOR2, <, Vector2);
|
|
|
+ DEFAULT_OP_LOCALMEM_REV(math, OP_GREATER, VECTOR2I, <, Vector2i);
|
|
|
DEFAULT_OP_LOCALMEM_REV(math, OP_GREATER, VECTOR3, <, Vector3);
|
|
|
+ DEFAULT_OP_LOCALMEM_REV(math, OP_GREATER, VECTOR3I, <, Vector3i);
|
|
|
DEFAULT_OP_LOCALMEM_REV(math, OP_GREATER, _RID, <, RID);
|
|
|
DEFAULT_OP_ARRAY_GT(math, OP_GREATER, PACKED_BYTE_ARRAY, uint8_t);
|
|
|
DEFAULT_OP_ARRAY_GT(math, OP_GREATER, PACKED_INT_ARRAY, int);
|
|
@@ -774,6 +796,7 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
|
|
|
CASE_TYPE(math, OP_GREATER, NIL)
|
|
|
CASE_TYPE(math, OP_GREATER, RECT2)
|
|
|
+ CASE_TYPE(math, OP_GREATER, RECT2I)
|
|
|
CASE_TYPE(math, OP_GREATER, TRANSFORM2D)
|
|
|
CASE_TYPE(math, OP_GREATER, PLANE)
|
|
|
CASE_TYPE(math, OP_GREATER, QUAT)
|
|
@@ -801,12 +824,15 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
DEFAULT_OP_NUM(math, OP_GREATER_EQUAL, REAL, >=, _real);
|
|
|
DEFAULT_OP_STR_REV(math, OP_GREATER_EQUAL, STRING, <=, String);
|
|
|
DEFAULT_OP_LOCALMEM_REV(math, OP_GREATER_EQUAL, VECTOR2, <=, Vector2);
|
|
|
+ DEFAULT_OP_LOCALMEM_REV(math, OP_GREATER_EQUAL, VECTOR2I, <=, Vector2i);
|
|
|
DEFAULT_OP_LOCALMEM_REV(math, OP_GREATER_EQUAL, VECTOR3, <=, Vector3);
|
|
|
+ DEFAULT_OP_LOCALMEM_REV(math, OP_GREATER_EQUAL, VECTOR3I, <=, Vector3i);
|
|
|
DEFAULT_OP_LOCALMEM_REV(math, OP_GREATER_EQUAL, _RID, <=, RID);
|
|
|
|
|
|
CASE_TYPE(math, OP_GREATER_EQUAL, NIL)
|
|
|
CASE_TYPE(math, OP_GREATER_EQUAL, BOOL)
|
|
|
CASE_TYPE(math, OP_GREATER_EQUAL, RECT2)
|
|
|
+ CASE_TYPE(math, OP_GREATER_EQUAL, RECT2I)
|
|
|
CASE_TYPE(math, OP_GREATER_EQUAL, TRANSFORM2D)
|
|
|
CASE_TYPE(math, OP_GREATER_EQUAL, PLANE)
|
|
|
CASE_TYPE(math, OP_GREATER_EQUAL, QUAT)
|
|
@@ -853,7 +879,9 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
DEFAULT_OP_NUM(math, OP_ADD, REAL, +, _real);
|
|
|
DEFAULT_OP_STR(math, OP_ADD, STRING, +, String);
|
|
|
DEFAULT_OP_LOCALMEM(math, OP_ADD, VECTOR2, +, Vector2);
|
|
|
+ DEFAULT_OP_LOCALMEM(math, OP_ADD, VECTOR2I, +, Vector2i);
|
|
|
DEFAULT_OP_LOCALMEM(math, OP_ADD, VECTOR3, +, Vector3);
|
|
|
+ DEFAULT_OP_LOCALMEM(math, OP_ADD, VECTOR3I, +, Vector3i);
|
|
|
DEFAULT_OP_LOCALMEM(math, OP_ADD, QUAT, +, Quat);
|
|
|
DEFAULT_OP_LOCALMEM(math, OP_ADD, COLOR, +, Color);
|
|
|
|
|
@@ -868,6 +896,7 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
CASE_TYPE(math, OP_ADD, NIL)
|
|
|
CASE_TYPE(math, OP_ADD, BOOL)
|
|
|
CASE_TYPE(math, OP_ADD, RECT2)
|
|
|
+ CASE_TYPE(math, OP_ADD, RECT2I)
|
|
|
CASE_TYPE(math, OP_ADD, TRANSFORM2D)
|
|
|
CASE_TYPE(math, OP_ADD, PLANE)
|
|
|
CASE_TYPE(math, OP_ADD, AABB)
|
|
@@ -888,7 +917,9 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
DEFAULT_OP_NUM(math, OP_SUBTRACT, INT, -, _int);
|
|
|
DEFAULT_OP_NUM(math, OP_SUBTRACT, REAL, -, _real);
|
|
|
DEFAULT_OP_LOCALMEM(math, OP_SUBTRACT, VECTOR2, -, Vector2);
|
|
|
+ DEFAULT_OP_LOCALMEM(math, OP_SUBTRACT, VECTOR2I, -, Vector2i);
|
|
|
DEFAULT_OP_LOCALMEM(math, OP_SUBTRACT, VECTOR3, -, Vector3);
|
|
|
+ DEFAULT_OP_LOCALMEM(math, OP_SUBTRACT, VECTOR3I, -, Vector3i);
|
|
|
DEFAULT_OP_LOCALMEM(math, OP_SUBTRACT, QUAT, -, Quat);
|
|
|
DEFAULT_OP_LOCALMEM(math, OP_SUBTRACT, COLOR, -, Color);
|
|
|
|
|
@@ -896,6 +927,7 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
CASE_TYPE(math, OP_SUBTRACT, BOOL)
|
|
|
CASE_TYPE(math, OP_SUBTRACT, STRING)
|
|
|
CASE_TYPE(math, OP_SUBTRACT, RECT2)
|
|
|
+ CASE_TYPE(math, OP_SUBTRACT, RECT2I)
|
|
|
CASE_TYPE(math, OP_SUBTRACT, TRANSFORM2D)
|
|
|
CASE_TYPE(math, OP_SUBTRACT, PLANE)
|
|
|
CASE_TYPE(math, OP_SUBTRACT, AABB)
|
|
@@ -975,13 +1007,16 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
DEFAULT_OP_NUM_VEC(math, OP_MULTIPLY, INT, *, _int);
|
|
|
DEFAULT_OP_NUM_VEC(math, OP_MULTIPLY, REAL, *, _real);
|
|
|
DEFAULT_OP_LOCALMEM_NUM(math, OP_MULTIPLY, VECTOR2, *, Vector2);
|
|
|
+ DEFAULT_OP_LOCALMEM_NUM(math, OP_MULTIPLY, VECTOR2I, *, Vector2i);
|
|
|
DEFAULT_OP_LOCALMEM_NUM(math, OP_MULTIPLY, VECTOR3, *, Vector3);
|
|
|
+ DEFAULT_OP_LOCALMEM_NUM(math, OP_MULTIPLY, VECTOR3I, *, Vector3i);
|
|
|
DEFAULT_OP_LOCALMEM_NUM(math, OP_MULTIPLY, COLOR, *, Color);
|
|
|
|
|
|
CASE_TYPE(math, OP_MULTIPLY, NIL)
|
|
|
CASE_TYPE(math, OP_MULTIPLY, BOOL)
|
|
|
CASE_TYPE(math, OP_MULTIPLY, STRING)
|
|
|
CASE_TYPE(math, OP_MULTIPLY, RECT2)
|
|
|
+ CASE_TYPE(math, OP_MULTIPLY, RECT2I)
|
|
|
CASE_TYPE(math, OP_MULTIPLY, PLANE)
|
|
|
CASE_TYPE(math, OP_MULTIPLY, AABB)
|
|
|
CASE_TYPE(math, OP_MULTIPLY, STRING_NAME)
|
|
@@ -1019,13 +1054,16 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
DEFAULT_OP_NUM_DIV(math, OP_DIVIDE, INT, _int);
|
|
|
DEFAULT_OP_NUM_DIV(math, OP_DIVIDE, REAL, _real);
|
|
|
DEFAULT_OP_LOCALMEM_NUM(math, OP_DIVIDE, VECTOR2, /, Vector2);
|
|
|
+ DEFAULT_OP_LOCALMEM_NUM(math, OP_DIVIDE, VECTOR2I, /, Vector2i);
|
|
|
DEFAULT_OP_LOCALMEM_NUM(math, OP_DIVIDE, VECTOR3, /, Vector3);
|
|
|
+ DEFAULT_OP_LOCALMEM_NUM(math, OP_DIVIDE, VECTOR3I, /, Vector3i);
|
|
|
DEFAULT_OP_LOCALMEM_NUM(math, OP_DIVIDE, COLOR, /, Color);
|
|
|
|
|
|
CASE_TYPE(math, OP_DIVIDE, NIL)
|
|
|
CASE_TYPE(math, OP_DIVIDE, BOOL)
|
|
|
CASE_TYPE(math, OP_DIVIDE, STRING)
|
|
|
CASE_TYPE(math, OP_DIVIDE, RECT2)
|
|
|
+ CASE_TYPE(math, OP_DIVIDE, RECT2I)
|
|
|
CASE_TYPE(math, OP_DIVIDE, TRANSFORM2D)
|
|
|
CASE_TYPE(math, OP_DIVIDE, PLANE)
|
|
|
CASE_TYPE(math, OP_DIVIDE, AABB)
|
|
@@ -1054,14 +1092,17 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
DEFAULT_OP_NUM_POS(math, OP_POSITIVE, INT, _int);
|
|
|
DEFAULT_OP_NUM_POS(math, OP_POSITIVE, REAL, _real);
|
|
|
DEFAULT_OP_LOCALMEM_POS(math, OP_POSITIVE, VECTOR3, Vector3);
|
|
|
+ DEFAULT_OP_LOCALMEM_POS(math, OP_POSITIVE, VECTOR3I, Vector3i);
|
|
|
DEFAULT_OP_LOCALMEM_POS(math, OP_POSITIVE, PLANE, Plane);
|
|
|
DEFAULT_OP_LOCALMEM_POS(math, OP_POSITIVE, QUAT, Quat);
|
|
|
DEFAULT_OP_LOCALMEM_POS(math, OP_POSITIVE, VECTOR2, Vector2);
|
|
|
+ DEFAULT_OP_LOCALMEM_POS(math, OP_POSITIVE, VECTOR2I, Vector2i);
|
|
|
|
|
|
CASE_TYPE(math, OP_POSITIVE, NIL)
|
|
|
CASE_TYPE(math, OP_POSITIVE, BOOL)
|
|
|
CASE_TYPE(math, OP_POSITIVE, STRING)
|
|
|
CASE_TYPE(math, OP_POSITIVE, RECT2)
|
|
|
+ CASE_TYPE(math, OP_POSITIVE, RECT2I)
|
|
|
CASE_TYPE(math, OP_POSITIVE, TRANSFORM2D)
|
|
|
CASE_TYPE(math, OP_POSITIVE, AABB)
|
|
|
CASE_TYPE(math, OP_POSITIVE, BASIS)
|
|
@@ -1091,7 +1132,9 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
DEFAULT_OP_NUM_NEG(math, OP_NEGATE, REAL, _real);
|
|
|
|
|
|
DEFAULT_OP_LOCALMEM_NEG(math, OP_NEGATE, VECTOR2, Vector2);
|
|
|
+ DEFAULT_OP_LOCALMEM_NEG(math, OP_NEGATE, VECTOR2I, Vector2i);
|
|
|
DEFAULT_OP_LOCALMEM_NEG(math, OP_NEGATE, VECTOR3, Vector3);
|
|
|
+ DEFAULT_OP_LOCALMEM_NEG(math, OP_NEGATE, VECTOR3I, Vector3i);
|
|
|
DEFAULT_OP_LOCALMEM_NEG(math, OP_NEGATE, PLANE, Plane);
|
|
|
DEFAULT_OP_LOCALMEM_NEG(math, OP_NEGATE, QUAT, Quat);
|
|
|
DEFAULT_OP_LOCALMEM_NEG(math, OP_NEGATE, COLOR, Color);
|
|
@@ -1100,6 +1143,7 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
CASE_TYPE(math, OP_NEGATE, BOOL)
|
|
|
CASE_TYPE(math, OP_NEGATE, STRING)
|
|
|
CASE_TYPE(math, OP_NEGATE, RECT2)
|
|
|
+ CASE_TYPE(math, OP_NEGATE, RECT2I)
|
|
|
CASE_TYPE(math, OP_NEGATE, TRANSFORM2D)
|
|
|
CASE_TYPE(math, OP_NEGATE, AABB)
|
|
|
CASE_TYPE(math, OP_NEGATE, BASIS)
|
|
@@ -1159,8 +1203,11 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a,
|
|
|
CASE_TYPE(math, OP_MODULE, BOOL)
|
|
|
CASE_TYPE(math, OP_MODULE, REAL)
|
|
|
CASE_TYPE(math, OP_MODULE, VECTOR2)
|
|
|
+ CASE_TYPE(math, OP_MODULE, VECTOR2I)
|
|
|
CASE_TYPE(math, OP_MODULE, RECT2)
|
|
|
+ CASE_TYPE(math, OP_MODULE, RECT2I)
|
|
|
CASE_TYPE(math, OP_MODULE, VECTOR3)
|
|
|
+ CASE_TYPE(math, OP_MODULE, VECTOR3I)
|
|
|
CASE_TYPE(math, OP_MODULE, TRANSFORM2D)
|
|
|
CASE_TYPE(math, OP_MODULE, PLANE)
|
|
|
CASE_TYPE(math, OP_MODULE, QUAT)
|
|
@@ -1327,6 +1374,28 @@ void Variant::set_named(const StringName &p_index, const Variant &p_value, bool
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ } break;
|
|
|
+ case VECTOR2I: {
|
|
|
+ if (p_value.type == Variant::INT) {
|
|
|
+ Vector2i *v = reinterpret_cast<Vector2i *>(_data._mem);
|
|
|
+ if (p_index == CoreStringNames::singleton->x) {
|
|
|
+ v->x = p_value._data._int;
|
|
|
+ valid = true;
|
|
|
+ } else if (p_index == CoreStringNames::singleton->y) {
|
|
|
+ v->y = p_value._data._int;
|
|
|
+ valid = true;
|
|
|
+ }
|
|
|
+ } else if (p_value.type == Variant::REAL) {
|
|
|
+ Vector2i *v = reinterpret_cast<Vector2i *>(_data._mem);
|
|
|
+ if (p_index == CoreStringNames::singleton->x) {
|
|
|
+ v->x = p_value._data._real;
|
|
|
+ valid = true;
|
|
|
+ } else if (p_index == CoreStringNames::singleton->y) {
|
|
|
+ v->y = p_value._data._real;
|
|
|
+ valid = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
} break;
|
|
|
case RECT2: {
|
|
|
|
|
@@ -1345,6 +1414,23 @@ void Variant::set_named(const StringName &p_index, const Variant &p_value, bool
|
|
|
}
|
|
|
}
|
|
|
} break;
|
|
|
+ case RECT2I: {
|
|
|
+
|
|
|
+ if (p_value.type == Variant::VECTOR2I) {
|
|
|
+ Rect2i *v = reinterpret_cast<Rect2i *>(_data._mem);
|
|
|
+ //scalar name
|
|
|
+ if (p_index == CoreStringNames::singleton->position) {
|
|
|
+ v->position = *reinterpret_cast<const Vector2i *>(p_value._data._mem);
|
|
|
+ valid = true;
|
|
|
+ } else if (p_index == CoreStringNames::singleton->size) {
|
|
|
+ v->size = *reinterpret_cast<const Vector2i *>(p_value._data._mem);
|
|
|
+ valid = true;
|
|
|
+ } else if (p_index == CoreStringNames::singleton->end) {
|
|
|
+ v->size = *reinterpret_cast<const Vector2i *>(p_value._data._mem) - v->position;
|
|
|
+ valid = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } break;
|
|
|
case TRANSFORM2D: {
|
|
|
|
|
|
if (p_value.type == Variant::VECTOR2) {
|
|
@@ -1390,6 +1476,35 @@ void Variant::set_named(const StringName &p_index, const Variant &p_value, bool
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ } break;
|
|
|
+ case VECTOR3I: {
|
|
|
+
|
|
|
+ if (p_value.type == Variant::INT) {
|
|
|
+ Vector3i *v = reinterpret_cast<Vector3i *>(_data._mem);
|
|
|
+ if (p_index == CoreStringNames::singleton->x) {
|
|
|
+ v->x = p_value._data._int;
|
|
|
+ valid = true;
|
|
|
+ } else if (p_index == CoreStringNames::singleton->y) {
|
|
|
+ v->y = p_value._data._int;
|
|
|
+ valid = true;
|
|
|
+ } else if (p_index == CoreStringNames::singleton->z) {
|
|
|
+ v->z = p_value._data._int;
|
|
|
+ valid = true;
|
|
|
+ }
|
|
|
+ } else if (p_value.type == Variant::REAL) {
|
|
|
+ Vector3i *v = reinterpret_cast<Vector3i *>(_data._mem);
|
|
|
+ if (p_index == CoreStringNames::singleton->x) {
|
|
|
+ v->x = p_value._data._real;
|
|
|
+ valid = true;
|
|
|
+ } else if (p_index == CoreStringNames::singleton->y) {
|
|
|
+ v->y = p_value._data._real;
|
|
|
+ valid = true;
|
|
|
+ } else if (p_index == CoreStringNames::singleton->z) {
|
|
|
+ v->z = p_value._data._real;
|
|
|
+ valid = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
} break;
|
|
|
case PLANE: {
|
|
|
|
|
@@ -1626,6 +1741,15 @@ Variant Variant::get_named(const StringName &p_index, bool *r_valid) const {
|
|
|
return v->y;
|
|
|
}
|
|
|
|
|
|
+ } break;
|
|
|
+ case VECTOR2I: {
|
|
|
+ const Vector2i *v = reinterpret_cast<const Vector2i *>(_data._mem);
|
|
|
+ if (p_index == CoreStringNames::singleton->x) {
|
|
|
+ return v->x;
|
|
|
+ } else if (p_index == CoreStringNames::singleton->y) {
|
|
|
+ return v->y;
|
|
|
+ }
|
|
|
+
|
|
|
} break;
|
|
|
case RECT2: {
|
|
|
|
|
@@ -1639,6 +1763,18 @@ Variant Variant::get_named(const StringName &p_index, bool *r_valid) const {
|
|
|
return v->size + v->position;
|
|
|
}
|
|
|
} break;
|
|
|
+ case RECT2I: {
|
|
|
+
|
|
|
+ const Rect2i *v = reinterpret_cast<const Rect2i *>(_data._mem);
|
|
|
+ //scalar name
|
|
|
+ if (p_index == CoreStringNames::singleton->position) {
|
|
|
+ return v->position;
|
|
|
+ } else if (p_index == CoreStringNames::singleton->size) {
|
|
|
+ return v->size;
|
|
|
+ } else if (p_index == CoreStringNames::singleton->end) {
|
|
|
+ return v->size + v->position;
|
|
|
+ }
|
|
|
+ } break;
|
|
|
case TRANSFORM2D: {
|
|
|
|
|
|
const Transform2D *v = _data._transform2d;
|
|
@@ -1662,6 +1798,18 @@ Variant Variant::get_named(const StringName &p_index, bool *r_valid) const {
|
|
|
return v->z;
|
|
|
}
|
|
|
|
|
|
+ } break;
|
|
|
+ case VECTOR3I: {
|
|
|
+
|
|
|
+ const Vector3i *v = reinterpret_cast<const Vector3i *>(_data._mem);
|
|
|
+ if (p_index == CoreStringNames::singleton->x) {
|
|
|
+ return v->x;
|
|
|
+ } else if (p_index == CoreStringNames::singleton->y) {
|
|
|
+ return v->y;
|
|
|
+ } else if (p_index == CoreStringNames::singleton->z) {
|
|
|
+ return v->z;
|
|
|
+ }
|
|
|
+
|
|
|
} break;
|
|
|
case PLANE: {
|
|
|
|
|
@@ -1892,6 +2040,41 @@ void Variant::set(const Variant &p_index, const Variant &p_value, bool *r_valid)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ } break; // 5
|
|
|
+ case VECTOR2I: {
|
|
|
+
|
|
|
+ if (p_value.type != Variant::INT && p_value.type != Variant::REAL)
|
|
|
+ return;
|
|
|
+
|
|
|
+ if (p_index.get_type() == Variant::INT || p_index.get_type() == Variant::REAL) {
|
|
|
+ // scalar index
|
|
|
+ int idx = p_index;
|
|
|
+
|
|
|
+ if (idx < 0)
|
|
|
+ idx += 2;
|
|
|
+ if (idx >= 0 && idx < 2) {
|
|
|
+
|
|
|
+ Vector2i *v = reinterpret_cast<Vector2i *>(_data._mem);
|
|
|
+ valid = true;
|
|
|
+ (*v)[idx] = p_value;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ } else if (p_index.get_type() == Variant::STRING) {
|
|
|
+ //scalar name
|
|
|
+
|
|
|
+ const String *str = reinterpret_cast<const String *>(p_index._data._mem);
|
|
|
+ Vector2i *v = reinterpret_cast<Vector2i *>(_data._mem);
|
|
|
+ if (*str == "x") {
|
|
|
+ valid = true;
|
|
|
+ v->x = p_value;
|
|
|
+ return;
|
|
|
+ } else if (*str == "y") {
|
|
|
+ valid = true;
|
|
|
+ v->y = p_value;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
} break; // 5
|
|
|
case RECT2: {
|
|
|
|
|
@@ -1918,6 +2101,31 @@ void Variant::set(const Variant &p_index, const Variant &p_value, bool *r_valid)
|
|
|
}
|
|
|
}
|
|
|
} break;
|
|
|
+ case RECT2I: {
|
|
|
+
|
|
|
+ if (p_value.type != Variant::VECTOR2I)
|
|
|
+ return;
|
|
|
+
|
|
|
+ if (p_index.get_type() == Variant::STRING) {
|
|
|
+ //scalar name
|
|
|
+
|
|
|
+ const String *str = reinterpret_cast<const String *>(p_index._data._mem);
|
|
|
+ Rect2i *v = reinterpret_cast<Rect2i *>(_data._mem);
|
|
|
+ if (*str == "position") {
|
|
|
+ valid = true;
|
|
|
+ v->position = p_value;
|
|
|
+ return;
|
|
|
+ } else if (*str == "size") {
|
|
|
+ valid = true;
|
|
|
+ v->size = p_value;
|
|
|
+ return;
|
|
|
+ } else if (*str == "end") {
|
|
|
+ valid = true;
|
|
|
+ v->size = Vector2i(p_value) - v->position;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } break;
|
|
|
case TRANSFORM2D: {
|
|
|
|
|
|
if (p_value.type != Variant::VECTOR2)
|
|
@@ -1994,6 +2202,44 @@ void Variant::set(const Variant &p_index, const Variant &p_value, bool *r_valid)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ } break;
|
|
|
+ case VECTOR3I: {
|
|
|
+
|
|
|
+ if (p_value.type != Variant::INT && p_value.type != Variant::REAL)
|
|
|
+ return;
|
|
|
+
|
|
|
+ if (p_index.get_type() == Variant::INT || p_index.get_type() == Variant::REAL) {
|
|
|
+ //scalar index
|
|
|
+ int idx = p_index;
|
|
|
+ if (idx < 0)
|
|
|
+ idx += 3;
|
|
|
+ if (idx >= 0 && idx < 3) {
|
|
|
+
|
|
|
+ Vector3i *v = reinterpret_cast<Vector3i *>(_data._mem);
|
|
|
+ valid = true;
|
|
|
+ (*v)[idx] = p_value;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ } else if (p_index.get_type() == Variant::STRING) {
|
|
|
+
|
|
|
+ //scalar name
|
|
|
+ const String *str = reinterpret_cast<const String *>(p_index._data._mem);
|
|
|
+ Vector3i *v = reinterpret_cast<Vector3i *>(_data._mem);
|
|
|
+ if (*str == "x") {
|
|
|
+ valid = true;
|
|
|
+ v->x = p_value;
|
|
|
+ return;
|
|
|
+ } else if (*str == "y") {
|
|
|
+ valid = true;
|
|
|
+ v->y = p_value;
|
|
|
+ return;
|
|
|
+ } else if (*str == "z") {
|
|
|
+ valid = true;
|
|
|
+ v->z = p_value;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
} break;
|
|
|
case PLANE: {
|
|
|
|
|
@@ -2355,6 +2601,34 @@ Variant Variant::get(const Variant &p_index, bool *r_valid) const {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ } break; // 5
|
|
|
+ case VECTOR2I: {
|
|
|
+
|
|
|
+ if (p_index.get_type() == Variant::INT || p_index.get_type() == Variant::REAL) {
|
|
|
+ // scalar index
|
|
|
+ int idx = p_index;
|
|
|
+ if (idx < 0)
|
|
|
+ idx += 2;
|
|
|
+ if (idx >= 0 && idx < 2) {
|
|
|
+
|
|
|
+ const Vector2i *v = reinterpret_cast<const Vector2i *>(_data._mem);
|
|
|
+ valid = true;
|
|
|
+ return (*v)[idx];
|
|
|
+ }
|
|
|
+ } else if (p_index.get_type() == Variant::STRING) {
|
|
|
+ //scalar name
|
|
|
+
|
|
|
+ const String *str = reinterpret_cast<const String *>(p_index._data._mem);
|
|
|
+ const Vector2i *v = reinterpret_cast<const Vector2i *>(_data._mem);
|
|
|
+ if (*str == "x") {
|
|
|
+ valid = true;
|
|
|
+ return v->x;
|
|
|
+ } else if (*str == "y") {
|
|
|
+ valid = true;
|
|
|
+ return v->y;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
} break; // 5
|
|
|
case RECT2: {
|
|
|
|
|
@@ -2375,6 +2649,25 @@ Variant Variant::get(const Variant &p_index, bool *r_valid) const {
|
|
|
}
|
|
|
}
|
|
|
} break;
|
|
|
+ case RECT2I: {
|
|
|
+
|
|
|
+ if (p_index.get_type() == Variant::STRING) {
|
|
|
+ //scalar name
|
|
|
+
|
|
|
+ const String *str = reinterpret_cast<const String *>(p_index._data._mem);
|
|
|
+ const Rect2i *v = reinterpret_cast<const Rect2i *>(_data._mem);
|
|
|
+ if (*str == "position") {
|
|
|
+ valid = true;
|
|
|
+ return v->position;
|
|
|
+ } else if (*str == "size") {
|
|
|
+ valid = true;
|
|
|
+ return v->size;
|
|
|
+ } else if (*str == "end") {
|
|
|
+ valid = true;
|
|
|
+ return v->size + v->position;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } break;
|
|
|
case VECTOR3: {
|
|
|
|
|
|
if (p_index.get_type() == Variant::INT || p_index.get_type() == Variant::REAL) {
|
|
@@ -2405,6 +2698,37 @@ Variant Variant::get(const Variant &p_index, bool *r_valid) const {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ } break;
|
|
|
+ case VECTOR3I: {
|
|
|
+
|
|
|
+ if (p_index.get_type() == Variant::INT || p_index.get_type() == Variant::REAL) {
|
|
|
+ //scalar index
|
|
|
+ int idx = p_index;
|
|
|
+ if (idx < 0)
|
|
|
+ idx += 3;
|
|
|
+ if (idx >= 0 && idx < 3) {
|
|
|
+
|
|
|
+ const Vector3i *v = reinterpret_cast<const Vector3i *>(_data._mem);
|
|
|
+ valid = true;
|
|
|
+ return (*v)[idx];
|
|
|
+ }
|
|
|
+ } else if (p_index.get_type() == Variant::STRING) {
|
|
|
+
|
|
|
+ //scalar name
|
|
|
+ const String *str = reinterpret_cast<const String *>(p_index._data._mem);
|
|
|
+ const Vector3i *v = reinterpret_cast<const Vector3i *>(_data._mem);
|
|
|
+ if (*str == "x") {
|
|
|
+ valid = true;
|
|
|
+ return v->x;
|
|
|
+ } else if (*str == "y") {
|
|
|
+ valid = true;
|
|
|
+ return v->y;
|
|
|
+ } else if (*str == "z") {
|
|
|
+ valid = true;
|
|
|
+ return v->z;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
} break;
|
|
|
case TRANSFORM2D: {
|
|
|
|
|
@@ -2881,6 +3205,12 @@ void Variant::get_property_list(List<PropertyInfo> *p_list) const {
|
|
|
p_list->push_back(PropertyInfo(Variant::REAL, "x"));
|
|
|
p_list->push_back(PropertyInfo(Variant::REAL, "y"));
|
|
|
|
|
|
+ } break; // 5
|
|
|
+ case VECTOR2I: {
|
|
|
+
|
|
|
+ p_list->push_back(PropertyInfo(Variant::INT, "x"));
|
|
|
+ p_list->push_back(PropertyInfo(Variant::INT, "y"));
|
|
|
+
|
|
|
} break; // 5
|
|
|
case RECT2: {
|
|
|
|
|
@@ -2888,6 +3218,13 @@ void Variant::get_property_list(List<PropertyInfo> *p_list) const {
|
|
|
p_list->push_back(PropertyInfo(Variant::VECTOR2, "size"));
|
|
|
p_list->push_back(PropertyInfo(Variant::VECTOR2, "end"));
|
|
|
|
|
|
+ } break;
|
|
|
+ case RECT2I: {
|
|
|
+
|
|
|
+ p_list->push_back(PropertyInfo(Variant::VECTOR2I, "position"));
|
|
|
+ p_list->push_back(PropertyInfo(Variant::VECTOR2I, "size"));
|
|
|
+ p_list->push_back(PropertyInfo(Variant::VECTOR2I, "end"));
|
|
|
+
|
|
|
} break;
|
|
|
case VECTOR3: {
|
|
|
|
|
@@ -2895,6 +3232,13 @@ void Variant::get_property_list(List<PropertyInfo> *p_list) const {
|
|
|
p_list->push_back(PropertyInfo(Variant::REAL, "y"));
|
|
|
p_list->push_back(PropertyInfo(Variant::REAL, "z"));
|
|
|
|
|
|
+ } break;
|
|
|
+ case VECTOR3I: {
|
|
|
+
|
|
|
+ p_list->push_back(PropertyInfo(Variant::INT, "x"));
|
|
|
+ p_list->push_back(PropertyInfo(Variant::INT, "y"));
|
|
|
+ p_list->push_back(PropertyInfo(Variant::INT, "z"));
|
|
|
+
|
|
|
} break;
|
|
|
case TRANSFORM2D: {
|
|
|
|
|
@@ -3562,16 +3906,50 @@ void Variant::blend(const Variant &a, const Variant &b, float c, Variant &r_dst)
|
|
|
r_dst = *reinterpret_cast<const Vector2 *>(a._data._mem) + *reinterpret_cast<const Vector2 *>(b._data._mem) * c;
|
|
|
}
|
|
|
return;
|
|
|
+ case VECTOR2I: {
|
|
|
+ int32_t vax = reinterpret_cast<const Vector2i *>(a._data._mem)->x;
|
|
|
+ int32_t vbx = reinterpret_cast<const Vector2i *>(b._data._mem)->x;
|
|
|
+ int32_t vay = reinterpret_cast<const Vector2i *>(a._data._mem)->y;
|
|
|
+ int32_t vby = reinterpret_cast<const Vector2i *>(b._data._mem)->y;
|
|
|
+ r_dst = Vector2i(int32_t(vax + vbx * c + 0.5), int32_t(vay + vby * c + 0.5));
|
|
|
+ }
|
|
|
+ return;
|
|
|
case RECT2: {
|
|
|
const Rect2 *ra = reinterpret_cast<const Rect2 *>(a._data._mem);
|
|
|
const Rect2 *rb = reinterpret_cast<const Rect2 *>(b._data._mem);
|
|
|
r_dst = Rect2(ra->position + rb->position * c, ra->size + rb->size * c);
|
|
|
}
|
|
|
return;
|
|
|
+ case RECT2I: {
|
|
|
+ const Rect2i *ra = reinterpret_cast<const Rect2i *>(a._data._mem);
|
|
|
+ const Rect2i *rb = reinterpret_cast<const Rect2i *>(b._data._mem);
|
|
|
+
|
|
|
+ int32_t vax = ra->position.x;
|
|
|
+ int32_t vay = ra->position.y;
|
|
|
+ int32_t vbx = ra->size.x;
|
|
|
+ int32_t vby = ra->size.y;
|
|
|
+ int32_t vcx = rb->position.x;
|
|
|
+ int32_t vcy = rb->position.y;
|
|
|
+ int32_t vdx = rb->size.x;
|
|
|
+ int32_t vdy = rb->size.y;
|
|
|
+
|
|
|
+ r_dst = Rect2i(int32_t(vax + vbx * c + 0.5), int32_t(vay + vby * c + 0.5), int32_t(vcx + vdx * c + 0.5), int32_t(vcy + vdy * c + 0.5));
|
|
|
+ }
|
|
|
+ return;
|
|
|
case VECTOR3: {
|
|
|
r_dst = *reinterpret_cast<const Vector3 *>(a._data._mem) + *reinterpret_cast<const Vector3 *>(b._data._mem) * c;
|
|
|
}
|
|
|
return;
|
|
|
+ case VECTOR3I: {
|
|
|
+ int32_t vax = reinterpret_cast<const Vector3i *>(a._data._mem)->x;
|
|
|
+ int32_t vbx = reinterpret_cast<const Vector3i *>(b._data._mem)->x;
|
|
|
+ int32_t vay = reinterpret_cast<const Vector3i *>(a._data._mem)->y;
|
|
|
+ int32_t vby = reinterpret_cast<const Vector3i *>(b._data._mem)->y;
|
|
|
+ int32_t vaz = reinterpret_cast<const Vector3i *>(a._data._mem)->z;
|
|
|
+ int32_t vbz = reinterpret_cast<const Vector3i *>(b._data._mem)->z;
|
|
|
+ r_dst = Vector3i(int32_t(vax + vbx * c + 0.5), int32_t(vay + vby * c + 0.5), int32_t(vaz + vbz * c + 0.5));
|
|
|
+ }
|
|
|
+ return;
|
|
|
case AABB: {
|
|
|
const ::AABB *ra = reinterpret_cast<const ::AABB *>(a._data._mem);
|
|
|
const ::AABB *rb = reinterpret_cast<const ::AABB *>(b._data._mem);
|
|
@@ -3688,14 +4066,51 @@ void Variant::interpolate(const Variant &a, const Variant &b, float c, Variant &
|
|
|
r_dst = reinterpret_cast<const Vector2 *>(a._data._mem)->linear_interpolate(*reinterpret_cast<const Vector2 *>(b._data._mem), c);
|
|
|
}
|
|
|
return;
|
|
|
+ case VECTOR2I: {
|
|
|
+ int32_t vax = reinterpret_cast<const Vector2i *>(a._data._mem)->x;
|
|
|
+ int32_t vbx = reinterpret_cast<const Vector2i *>(b._data._mem)->x;
|
|
|
+ int32_t vay = reinterpret_cast<const Vector2i *>(a._data._mem)->y;
|
|
|
+ int32_t vby = reinterpret_cast<const Vector2i *>(b._data._mem)->y;
|
|
|
+ r_dst = Vector2i(int32_t(vax + vbx * c + 0.5), int32_t(vay + vby * c + 0.5));
|
|
|
+ }
|
|
|
+ return;
|
|
|
+
|
|
|
case RECT2: {
|
|
|
r_dst = Rect2(reinterpret_cast<const Rect2 *>(a._data._mem)->position.linear_interpolate(reinterpret_cast<const Rect2 *>(b._data._mem)->position, c), reinterpret_cast<const Rect2 *>(a._data._mem)->size.linear_interpolate(reinterpret_cast<const Rect2 *>(b._data._mem)->size, c));
|
|
|
}
|
|
|
return;
|
|
|
+ case RECT2I: {
|
|
|
+ const Rect2i *ra = reinterpret_cast<const Rect2i *>(a._data._mem);
|
|
|
+ const Rect2i *rb = reinterpret_cast<const Rect2i *>(b._data._mem);
|
|
|
+
|
|
|
+ int32_t vax = ra->position.x;
|
|
|
+ int32_t vay = ra->position.y;
|
|
|
+ int32_t vbx = ra->size.x;
|
|
|
+ int32_t vby = ra->size.y;
|
|
|
+ int32_t vcx = rb->position.x;
|
|
|
+ int32_t vcy = rb->position.y;
|
|
|
+ int32_t vdx = rb->size.x;
|
|
|
+ int32_t vdy = rb->size.y;
|
|
|
+
|
|
|
+ r_dst = Rect2i(int32_t(vax + vbx * c + 0.5), int32_t(vay + vby * c + 0.5), int32_t(vcx + vdx * c + 0.5), int32_t(vcy + vdy * c + 0.5));
|
|
|
+ }
|
|
|
+ return;
|
|
|
+
|
|
|
case VECTOR3: {
|
|
|
r_dst = reinterpret_cast<const Vector3 *>(a._data._mem)->linear_interpolate(*reinterpret_cast<const Vector3 *>(b._data._mem), c);
|
|
|
}
|
|
|
return;
|
|
|
+ case VECTOR3I: {
|
|
|
+ int32_t vax = reinterpret_cast<const Vector3i *>(a._data._mem)->x;
|
|
|
+ int32_t vbx = reinterpret_cast<const Vector3i *>(b._data._mem)->x;
|
|
|
+ int32_t vay = reinterpret_cast<const Vector3i *>(a._data._mem)->y;
|
|
|
+ int32_t vby = reinterpret_cast<const Vector3i *>(b._data._mem)->y;
|
|
|
+ int32_t vaz = reinterpret_cast<const Vector3i *>(a._data._mem)->z;
|
|
|
+ int32_t vbz = reinterpret_cast<const Vector3i *>(b._data._mem)->z;
|
|
|
+ r_dst = Vector3i(int32_t(vax + vbx * c + 0.5), int32_t(vay + vby * c + 0.5), int32_t(vaz + vbz * c + 0.5));
|
|
|
+ }
|
|
|
+ return;
|
|
|
+
|
|
|
case TRANSFORM2D: {
|
|
|
r_dst = a._data._transform2d->interpolate_with(*b._data._transform2d, c);
|
|
|
}
|