#ifndef POINT3F_H
#define POINT3F_H
#include <memory>

#include "LSObject.h"
#include "ISXMr.h"


class Point3f {
public:
    explicit Point3f(const shared_ptr<LSObject> &obj) {
        x = *obj->GetMember("X")->Float64Ptr;
        y = *obj->GetMember("Y")->Float64Ptr;
        z = *obj->GetMember("Z")->Float64Ptr;
    }

    explicit Point3f(const float x, const float y, const float z) : x(x), y(y), z(z) {
    }

    float X() const { return this->x; }
    float Y() const { return this->y; }
    float Z() const { return this->z; }

    void setX(const float x) {
        this->x = x;
    }

    void setY(const float y) {
        this->y = y;
    }

    void setZ(const float z) {
        this->z = z;
    }

private:
    float x;
    float y;
    float z;
};


#endif //POINT3F_H
