#pragma once

#include "GeometryNode.h"

class AbstractGeometricItem;
class AbstractMesh;

class CircleNode : public GeometryNode
{
public:
    CircleNode(const Transform& transform, double radius);

    virtual ~CircleNode();

    Type getType() override;
    double getRadius() const;

    void setMinorRadius(double radius);
    void setRadius(double radius);
private:
    void createOrUpdateGeometry(SceneInfo* sceneInfo) override;

    std::unique_ptr<AbstractGeometricItem> createGeometryPrimitive() const;
    std::unique_ptr<AbstractMesh> createMeshPrimitive() const;

    double mRadius{1.0};
    double mMinorRadius{ 1.0 };
};
