Add Vector3 assignment operators (flutter/engine#34013)

This commit is contained in:
Brandon DeRosier 2022-06-13 19:28:59 -07:00 committed by GitHub
parent 16731be1a7
commit a62d83a8fe
2 changed files with 62 additions and 0 deletions

View File

@ -724,6 +724,40 @@ TEST(GeometryTest, PointAbs) {
ASSERT_POINT_NEAR(a_abs, expected);
}
TEST(GeometryTest, CanUseVector3AssignmentOperators) {
{
Vector3 p(1, 2, 4);
p += Vector3(1, 2, 4);
ASSERT_EQ(p.x, 2u);
ASSERT_EQ(p.y, 4u);
ASSERT_EQ(p.z, 8u);
}
{
Vector3 p(3, 6, 8);
p -= Vector3(1, 2, 3);
ASSERT_EQ(p.x, 2u);
ASSERT_EQ(p.y, 4u);
ASSERT_EQ(p.z, 5u);
}
{
Vector3 p(1, 2, 3);
p *= Vector3(2, 3, 4);
ASSERT_EQ(p.x, 2u);
ASSERT_EQ(p.y, 6u);
ASSERT_EQ(p.z, 12u);
}
{
Vector3 p(2, 6, 12);
p /= Vector3(2, 3, 4);
ASSERT_EQ(p.x, 1u);
ASSERT_EQ(p.y, 2u);
ASSERT_EQ(p.z, 3u);
}
}
TEST(GeometryTest, ColorPremultiply) {
{
Color a(1.0, 0.5, 0.2, 0.5);

View File

@ -68,6 +68,34 @@ struct Vector3 {
return v.x != x || v.y != y || v.z != z;
}
constexpr Vector3 operator+=(const Vector3& p) {
x += p.x;
y += p.y;
z += p.z;
return *this;
}
constexpr Vector3 operator-=(const Vector3& p) {
x -= p.x;
y -= p.y;
z -= p.z;
return *this;
}
constexpr Vector3 operator*=(const Vector3& p) {
x *= p.x;
y *= p.y;
z *= p.z;
return *this;
}
constexpr Vector3 operator/=(const Vector3& p) {
x /= p.x;
y /= p.y;
z /= p.z;
return *this;
}
constexpr Vector3 operator-() const { return Vector3(-x, -y, -z); }
constexpr Vector3 operator+(const Vector3& v) const {