Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions core/color.h
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,16 @@ struct Color {
a = 1.0;
}

/**
* Copy constructor
*/
_FORCE_INLINE_ Color(const Color &p_color) {
r = p_color.r;
g = p_color.g;
b = p_color.b;
a = p_color.a;
}

/**
* RGB / RGBA construct parameters. Alpha is optional, but defaults to 1.0
*/
Expand Down
5 changes: 5 additions & 0 deletions core/math/aabb.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,11 @@ class AABB {
position(p_pos),
size(p_size) {
}

inline AABB(const AABB &p_aabb) :
position(p_aabb.position),
size(p_aabb.size) {
}
};

inline bool AABB::intersects(const AABB &p_aabb) const {
Expand Down
6 changes: 6 additions & 0 deletions core/math/matrix3.h
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,12 @@ class Basis {
elements[2][1] = 0;
elements[2][2] = 1;
}

_FORCE_INLINE_ Basis(const Basis &p_basis) {
elements[0] = p_basis.elements[0];
elements[1] = p_basis.elements[1];
elements[2] = p_basis.elements[2];
}
};

_FORCE_INLINE_ void Basis::operator*=(const Basis &p_matrix) {
Expand Down
4 changes: 4 additions & 0 deletions core/math/plane.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@ class Plane {
operator String() const;

_FORCE_INLINE_ Plane() { d = 0; }
_FORCE_INLINE_ Plane(const Plane &p_plane) :
normal(p_plane.normal),
d(p_plane.d){};

_FORCE_INLINE_ Plane(real_t p_a, real_t p_b, real_t p_c, real_t p_d) :
normal(p_a, p_b, p_c),
d(p_d){};
Expand Down
10 changes: 5 additions & 5 deletions core/math/quat.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,11 +124,11 @@ class Quat {
Quat(const Vector3 &axis, const real_t &angle) { set_axis_angle(axis, angle); }

Quat(const Vector3 &euler) { set_euler(euler); }
Quat(const Quat &q) {
x = q.x;
y = q.y;
z = q.z;
w = q.w;
Quat(const Quat &p_quat) {
x = p_quat.x;
y = p_quat.y;
z = p_quat.z;
w = p_quat.w;
}

Quat(const Vector3 &v0, const Vector3 &v1) // shortest arc
Expand Down
4 changes: 4 additions & 0 deletions core/math/rect2.h
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,10 @@ struct Rect2 {
operator String() const { return String(position) + ", " + String(size); }

Rect2() {}
Rect2(const Rect2 &p_rect2) :
position(p_rect2.position),
size(p_rect2.size) {
}
Rect2(real_t p_x, real_t p_y, real_t p_width, real_t p_height) :
position(Point2(p_x, p_y)),
size(Size2(p_width, p_height)) {
Expand Down
5 changes: 5 additions & 0 deletions core/math/transform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,11 @@ Transform::operator String() const {
return basis.operator String() + " - " + origin.operator String();
}

Transform::Transform(const Transform &p_trans) :
basis(p_trans.basis),
origin(p_trans.origin) {
}

Transform::Transform(const Basis &p_basis, const Vector3 &p_origin) :
basis(p_basis),
origin(p_origin) {
Expand Down
1 change: 1 addition & 0 deletions core/math/transform.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ class Transform {
operator String() const;

Transform(const Basis &p_basis, const Vector3 &p_origin = Vector3());
Transform(const Transform &p_trans);
Transform() {}
};

Expand Down
7 changes: 7 additions & 0 deletions core/math/transform_2d.h
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,13 @@ struct Transform2D {
}

Transform2D(real_t p_rot, const Vector2 &p_pos);

Transform2D(const Transform2D &p_trans2d) {
elements[0] = p_trans2d.elements[0];
elements[1] = p_trans2d.elements[1];
elements[2] = p_trans2d.elements[2];
}

Transform2D() {
elements[0][0] = 1.0;
elements[1][1] = 1.0;
Expand Down
4 changes: 4 additions & 0 deletions core/math/vector2.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,10 @@ struct Vector2 {

operator String() const { return String::num(x) + ", " + String::num(y); }

_FORCE_INLINE_ Vector2(const Vector2 &p_vec2) {
x = p_vec2.x;
y = p_vec2.y;
}
_FORCE_INLINE_ Vector2(real_t p_x, real_t p_y) {
x = p_x;
y = p_y;
Expand Down
5 changes: 5 additions & 0 deletions core/math/vector3.h
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,11 @@ struct Vector3 {
operator String() const;

_FORCE_INLINE_ Vector3() { x = y = z = 0; }
_FORCE_INLINE_ Vector3(const Vector3 &p_vec3) {
x = p_vec3.x;
y = p_vec3.y;
z = p_vec3.z;
}
_FORCE_INLINE_ Vector3(real_t p_x, real_t p_y, real_t p_z) {
x = p_x;
y = p_y;
Expand Down
106 changes: 78 additions & 28 deletions core/variant_call.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -828,20 +828,32 @@ struct _VariantCall {
static ConstructFunc *construct_funcs;

static void Vector2_init1(Variant &r_ret, const Variant **p_args) {
r_ret = Vector2(p_args[0]->operator Vector2());
}

static void Vector2_init2(Variant &r_ret, const Variant **p_args) {
r_ret = Vector2(*p_args[0], *p_args[1]);
}

static void Rect2_init1(Variant &r_ret, const Variant **p_args) {
r_ret = Rect2(p_args[0]->operator Rect2());
}

static void Rect2_init2(Variant &r_ret, const Variant **p_args) {

r_ret = Rect2(*p_args[0], *p_args[1]);
}

static void Rect2_init2(Variant &r_ret, const Variant **p_args) {
static void Rect2_init3(Variant &r_ret, const Variant **p_args) {

r_ret = Rect2(*p_args[0], *p_args[1], *p_args[2], *p_args[3]);
}

static void Transform2D_init1(Variant &r_ret, const Variant **p_args) {
Transform2D m(p_args[0]->operator Transform2D());
r_ret = m;
}

static void Transform2D_init2(Variant &r_ret, const Variant **p_args) {

Transform2D m(*p_args[0], *p_args[1]);
Expand All @@ -858,70 +870,94 @@ struct _VariantCall {
}

static void Vector3_init1(Variant &r_ret, const Variant **p_args) {
r_ret = Vector3(p_args[0]->operator Vector3());
}

static void Vector3_init2(Variant &r_ret, const Variant **p_args) {

r_ret = Vector3(*p_args[0], *p_args[1], *p_args[2]);
}

static void Plane_init1(Variant &r_ret, const Variant **p_args) {
r_ret = Plane(p_args[0]->operator Plane());
}

static void Plane_init2(Variant &r_ret, const Variant **p_args) {

r_ret = Plane(*p_args[0], *p_args[1], *p_args[2], *p_args[3]);
}

static void Plane_init2(Variant &r_ret, const Variant **p_args) {
static void Plane_init3(Variant &r_ret, const Variant **p_args) {

r_ret = Plane(*p_args[0], *p_args[1], *p_args[2]);
}

static void Plane_init3(Variant &r_ret, const Variant **p_args) {
static void Plane_init4(Variant &r_ret, const Variant **p_args) {

r_ret = Plane(p_args[0]->operator Vector3(), p_args[1]->operator real_t());
}
static void Plane_init4(Variant &r_ret, const Variant **p_args) {
static void Plane_init5(Variant &r_ret, const Variant **p_args) {

r_ret = Plane(p_args[0]->operator Vector3(), p_args[1]->operator Vector3());
}

static void Quat_init1(Variant &r_ret, const Variant **p_args) {
r_ret = Quat(p_args[0]->operator Quat());
}

static void Quat_init2(Variant &r_ret, const Variant **p_args) {

r_ret = Quat(*p_args[0], *p_args[1], *p_args[2], *p_args[3]);
}

static void Quat_init2(Variant &r_ret, const Variant **p_args) {
static void Quat_init3(Variant &r_ret, const Variant **p_args) {

r_ret = Quat(((Vector3)(*p_args[0])), ((float)(*p_args[1])));
}

static void Quat_init3(Variant &r_ret, const Variant **p_args) {
static void Quat_init4(Variant &r_ret, const Variant **p_args) {

r_ret = Quat(((Vector3)(*p_args[0])));
}

static void Color_init1(Variant &r_ret, const Variant **p_args) {
r_ret = Color(p_args[0]->operator Color());
}

static void Color_init2(Variant &r_ret, const Variant **p_args) {

r_ret = Color(*p_args[0], *p_args[1], *p_args[2], *p_args[3]);
}

static void Color_init2(Variant &r_ret, const Variant **p_args) {
static void Color_init3(Variant &r_ret, const Variant **p_args) {

r_ret = Color(*p_args[0], *p_args[1], *p_args[2]);
}

static void Color_init3(Variant &r_ret, const Variant **p_args) {
static void Color_init4(Variant &r_ret, const Variant **p_args) {

r_ret = Color::html(*p_args[0]);
}

static void Color_init4(Variant &r_ret, const Variant **p_args) {
static void Color_init5(Variant &r_ret, const Variant **p_args) {

r_ret = Color::hex(*p_args[0]);
}

static void AABB_init1(Variant &r_ret, const Variant **p_args) {
r_ret = ::AABB(p_args[0]->operator ::AABB());
}

static void AABB_init2(Variant &r_ret, const Variant **p_args) {

r_ret = ::AABB(*p_args[0], *p_args[1]);
}

static void Basis_init1(Variant &r_ret, const Variant **p_args) {
r_ret = Basis(p_args[0]->operator Basis());
}

static void Basis_init2(Variant &r_ret, const Variant **p_args) {

Basis m;
m.set_axis(0, *p_args[0]);
Expand All @@ -930,12 +966,16 @@ struct _VariantCall {
r_ret = m;
}

static void Basis_init2(Variant &r_ret, const Variant **p_args) {
static void Basis_init3(Variant &r_ret, const Variant **p_args) {

r_ret = Basis(p_args[0]->operator Vector3(), p_args[1]->operator real_t());
}

static void Transform_init1(Variant &r_ret, const Variant **p_args) {
r_ret = Transform(p_args[0]->operator Transform());
}

static void Transform_init2(Variant &r_ret, const Variant **p_args) {

Transform t;
t.basis.set_axis(0, *p_args[0]);
Expand All @@ -945,7 +985,7 @@ struct _VariantCall {
r_ret = t;
}

static void Transform_init2(Variant &r_ret, const Variant **p_args) {
static void Transform_init3(Variant &r_ret, const Variant **p_args) {

r_ret = Transform(p_args[0]->operator Basis(), p_args[1]->operator Vector3());
}
Expand Down Expand Up @@ -1854,34 +1894,44 @@ void register_variant_methods() {

/* REGISTER CONSTRUCTORS */

_VariantCall::add_constructor(_VariantCall::Vector2_init1, Variant::VECTOR2, "x", Variant::REAL, "y", Variant::REAL);
_VariantCall::add_constructor(_VariantCall::Vector2_init1, Variant::VECTOR2, "vector2", Variant::VECTOR2);
_VariantCall::add_constructor(_VariantCall::Vector2_init2, Variant::VECTOR2, "x", Variant::REAL, "y", Variant::REAL);

_VariantCall::add_constructor(_VariantCall::Rect2_init1, Variant::RECT2, "position", Variant::VECTOR2, "size", Variant::VECTOR2);
_VariantCall::add_constructor(_VariantCall::Rect2_init2, Variant::RECT2, "x", Variant::REAL, "y", Variant::REAL, "width", Variant::REAL, "height", Variant::REAL);
_VariantCall::add_constructor(_VariantCall::Rect2_init1, Variant::RECT2, "rect2", Variant::RECT2);
_VariantCall::add_constructor(_VariantCall::Rect2_init2, Variant::RECT2, "position", Variant::VECTOR2, "size", Variant::VECTOR2);
_VariantCall::add_constructor(_VariantCall::Rect2_init3, Variant::RECT2, "x", Variant::REAL, "y", Variant::REAL, "width", Variant::REAL, "height", Variant::REAL);

_VariantCall::add_constructor(_VariantCall::Transform2D_init1, Variant::TRANSFORM2D, "transform2d", Variant::TRANSFORM2D);
_VariantCall::add_constructor(_VariantCall::Transform2D_init2, Variant::TRANSFORM2D, "rotation", Variant::REAL, "position", Variant::VECTOR2);
_VariantCall::add_constructor(_VariantCall::Transform2D_init3, Variant::TRANSFORM2D, "x_axis", Variant::VECTOR2, "y_axis", Variant::VECTOR2, "origin", Variant::VECTOR2);

_VariantCall::add_constructor(_VariantCall::Vector3_init1, Variant::VECTOR3, "x", Variant::REAL, "y", Variant::REAL, "z", Variant::REAL);
_VariantCall::add_constructor(_VariantCall::Vector3_init1, Variant::VECTOR3, "vector3", Variant::VECTOR3);
_VariantCall::add_constructor(_VariantCall::Vector3_init2, Variant::VECTOR3, "x", Variant::REAL, "y", Variant::REAL, "z", Variant::REAL);

_VariantCall::add_constructor(_VariantCall::Plane_init1, Variant::PLANE, "a", Variant::REAL, "b", Variant::REAL, "c", Variant::REAL, "d", Variant::REAL);
_VariantCall::add_constructor(_VariantCall::Plane_init2, Variant::PLANE, "v1", Variant::VECTOR3, "v2", Variant::VECTOR3, "v3", Variant::VECTOR3);
_VariantCall::add_constructor(_VariantCall::Plane_init3, Variant::PLANE, "normal", Variant::VECTOR3, "d", Variant::REAL);
_VariantCall::add_constructor(_VariantCall::Plane_init1, Variant::PLANE, "plane", Variant::PLANE);
_VariantCall::add_constructor(_VariantCall::Plane_init2, Variant::PLANE, "a", Variant::REAL, "b", Variant::REAL, "c", Variant::REAL, "d", Variant::REAL);
_VariantCall::add_constructor(_VariantCall::Plane_init3, Variant::PLANE, "v1", Variant::VECTOR3, "v2", Variant::VECTOR3, "v3", Variant::VECTOR3);
_VariantCall::add_constructor(_VariantCall::Plane_init4, Variant::PLANE, "normal", Variant::VECTOR3, "d", Variant::REAL);

_VariantCall::add_constructor(_VariantCall::Quat_init1, Variant::QUAT, "x", Variant::REAL, "y", Variant::REAL, "z", Variant::REAL, "w", Variant::REAL);
_VariantCall::add_constructor(_VariantCall::Quat_init2, Variant::QUAT, "axis", Variant::VECTOR3, "angle", Variant::REAL);
_VariantCall::add_constructor(_VariantCall::Quat_init3, Variant::QUAT, "euler", Variant::VECTOR3);
_VariantCall::add_constructor(_VariantCall::Quat_init1, Variant::QUAT, "quat", Variant::QUAT);
_VariantCall::add_constructor(_VariantCall::Quat_init2, Variant::QUAT, "x", Variant::REAL, "y", Variant::REAL, "z", Variant::REAL, "w", Variant::REAL);
_VariantCall::add_constructor(_VariantCall::Quat_init3, Variant::QUAT, "axis", Variant::VECTOR3, "angle", Variant::REAL);
_VariantCall::add_constructor(_VariantCall::Quat_init4, Variant::QUAT, "euler", Variant::VECTOR3);

_VariantCall::add_constructor(_VariantCall::Color_init1, Variant::COLOR, "r", Variant::REAL, "g", Variant::REAL, "b", Variant::REAL, "a", Variant::REAL);
_VariantCall::add_constructor(_VariantCall::Color_init2, Variant::COLOR, "r", Variant::REAL, "g", Variant::REAL, "b", Variant::REAL);
_VariantCall::add_constructor(_VariantCall::Color_init1, Variant::COLOR, "color", Variant::COLOR);
_VariantCall::add_constructor(_VariantCall::Color_init2, Variant::COLOR, "r", Variant::REAL, "g", Variant::REAL, "b", Variant::REAL, "a", Variant::REAL);
_VariantCall::add_constructor(_VariantCall::Color_init3, Variant::COLOR, "r", Variant::REAL, "g", Variant::REAL, "b", Variant::REAL);

_VariantCall::add_constructor(_VariantCall::AABB_init1, Variant::AABB, "position", Variant::VECTOR3, "size", Variant::VECTOR3);
_VariantCall::add_constructor(_VariantCall::AABB_init1, Variant::AABB, "aabb", Variant::AABB);
_VariantCall::add_constructor(_VariantCall::AABB_init2, Variant::AABB, "position", Variant::VECTOR3, "size", Variant::VECTOR3);

_VariantCall::add_constructor(_VariantCall::Basis_init1, Variant::BASIS, "x_axis", Variant::VECTOR3, "y_axis", Variant::VECTOR3, "z_axis", Variant::VECTOR3);
_VariantCall::add_constructor(_VariantCall::Basis_init2, Variant::BASIS, "axis", Variant::VECTOR3, "phi", Variant::REAL);
_VariantCall::add_constructor(_VariantCall::Basis_init1, Variant::BASIS, "basis", Variant::BASIS);
_VariantCall::add_constructor(_VariantCall::Basis_init2, Variant::BASIS, "x_axis", Variant::VECTOR3, "y_axis", Variant::VECTOR3, "z_axis", Variant::VECTOR3);
_VariantCall::add_constructor(_VariantCall::Basis_init3, Variant::BASIS, "axis", Variant::VECTOR3, "phi", Variant::REAL);

_VariantCall::add_constructor(_VariantCall::Transform_init1, Variant::TRANSFORM, "x_axis", Variant::VECTOR3, "y_axis", Variant::VECTOR3, "z_axis", Variant::VECTOR3, "origin", Variant::VECTOR3);
_VariantCall::add_constructor(_VariantCall::Transform_init2, Variant::TRANSFORM, "basis", Variant::BASIS, "origin", Variant::VECTOR3);
_VariantCall::add_constructor(_VariantCall::Transform_init1, Variant::TRANSFORM, "transform", Variant::TRANSFORM);
_VariantCall::add_constructor(_VariantCall::Transform_init2, Variant::TRANSFORM, "x_axis", Variant::VECTOR3, "y_axis", Variant::VECTOR3, "z_axis", Variant::VECTOR3, "origin", Variant::VECTOR3);
_VariantCall::add_constructor(_VariantCall::Transform_init3, Variant::TRANSFORM, "basis", Variant::BASIS, "origin", Variant::VECTOR3);

/* REGISTER CONSTANTS */

Expand Down