#pragma once

#include "AbstractFace.h"

class Edge;

class TriFace : public AbstractFace
{
public:
    TriFace(Edge* edge0, Edge* edge1, Edge* edge2, unsigned id=0);

    ~TriFace();

    static std::unique_ptr<TriFace> Create(Edge* edge0, Edge* edge1, Edge* edge2, unsigned id=0);

    void associateWidthEdges() override;

    std::vector<unsigned> getNodeIds() const override;

    unsigned getNumNodes() const override;

    void replaceEdge(Edge* original, Edge* replacement);

    unsigned getEdge0Id () const;
    unsigned getEdge1Id () const;
    unsigned getEdge2Id () const;
    std::vector<unsigned> getEdgeIds() const override;

private:
    Edge* mEdge0{nullptr};
    Edge* mEdge1{nullptr};
    Edge* mEdge2{nullptr};
};
