ciao.
Ho implementato il pattern decorator su di una classe DrawableNode che renderizza una mesh quando è chiamata la funzione Draw.
L'idea è quella di creare un decorator per eventuali effetti tipo la selezione , disegno quote e misure, ecc.. e aggiungere/rimuovere i decorator dinamicamente
Per adesso ho creato il BoundingBoxDecorator che renderizza un box 3d attorno alla mesh del DrawableNode.
Posto il codice:
DrawableNode:
codice:
class DrawableNode : public Node
{
public:
DrawableNode(){;}
virtual ~DrawableNode();
virtual void DrawNode(Renderer* pRenderer);
void Selected(bool flag);// add boundingboxdecorator
TriMeshPtr m_pMesh;
};
Decorator
codice:
class Decorator : public DrawableNode
{
public:
Decorator(){};
Decorator(DrawableNodePtr pComponent);
virtual ~Decorator();
void DrawNode(Renderer* pRenderer);
protected:
DrawableNodePtr m_pComponent;
};
DecoratorBoundingBox
codice:
class DecoratorBoundingBox : public Decorator
{
public:
DecoratorBoundingBox();
DecoratorBoundingBox(DrawableNodePtr pComponent);
virtual ~DecoratorBoundingBox();
virtual void DrawNode(Renderer* pRenderer);
void DrawBoundingBox();
};
il mio problema è questo:
è possibile aggiungere il decorator DecoratorBoundingBox dall' interno della DrawableNode?
ad es per selezionare la mesh dall esterno basta fare:
DrawableNode pNode = new DrawableNode
.
.
.
pNode = new DecoratorBoundingBox(pNode);
ma per fare la stessa cosa dall interno della classe DrawableNode , come faccio?
vorrei fare :
void DrawableNode::Select()
{
this = new DecoratorBoundingBox(this);
}
ma mi da un errore.
grazie.