#pragma once

#include "Point.h"

class Transform
{
public:
    Transform(const Point& location = {}, double scaleX = 1.0, double scaleY = 1.0, double scaleZ = 1.0);

    const Point& getLocation() const
    {
        return mLocation;
    }

    double getScaleX() const
    {
        return mScaleX;
    }

    double getScaleY() const
    {
        return mScaleY;
    }

    double getScaleZ() const
    {
        return mScaleZ;
    }

    bool operator==(const Transform& rhs) const
    {
       return (mLocation == rhs.mLocation)
       && (mScaleX == rhs.mScaleX)
       && (mScaleY == rhs.mScaleY)
       && (mScaleZ == rhs.mScaleZ);
    }
    bool operator!=(const Transform& rhs) const
    {
      return !operator==(rhs);
    }

private:
    Point mLocation;
    double mScaleX{1};
    double mScaleY{1};
    double mScaleZ{1};
};
