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:
Decoratorcodice:class DrawableNode : public Node { public: DrawableNode(){;} virtual ~DrawableNode(); virtual void DrawNode(Renderer* pRenderer); void Selected(bool flag);// add boundingboxdecorator TriMeshPtr m_pMesh; };
DecoratorBoundingBoxcodice:class Decorator : public DrawableNode { public: Decorator(){}; Decorator(DrawableNodePtr pComponent); virtual ~Decorator(); void DrawNode(Renderer* pRenderer); protected: DrawableNodePtr m_pComponent; };
il mio problema č questo:codice:class DecoratorBoundingBox : public Decorator { public: DecoratorBoundingBox(); DecoratorBoundingBox(DrawableNodePtr pComponent); virtual ~DecoratorBoundingBox(); virtual void DrawNode(Renderer* pRenderer); void DrawBoundingBox(); };
č 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.

Rispondi quotando