Ciao,
Ho Sto creando un importatore da un formato di descrizione
di mesh 3d (COLLADA).
l'importatore segue un "percorso" a seconda dei parametri
del tipo di file che trova:
Un file collada ad es puo' essere a triangoli o a poligoni.
Se il file che trova è di tipo triangoli eseguirà alcune
funzioni , se è di tipo poligoni ne eseguirà altre, ma
l'importante secondo me è che il resto delle funzioni non
cambiano.
Ho pensato quindi di partire da una classe generica di
importazione CBaseCollada , divisa per sezioni:
class CBaseCollada
{
CImporterTypeBase m_import;
void importVertex();
void importFace();
void importNormals();
void importMaterials();
}
ecc....
class CImporterTypeBase
{
virtual void GetVertex() {}
}
class CImporterTriangle:CImporterTypeBase
{
void getVertex()
{
COLLADA::Triangles.Get(
ecc....
}
}
class CImporterPoly:CImporterTypeBase
{
void getVertex()
{
COLLADA::Polys.Get(
ecc....
}
}
ImportVertex()
{
m_import->GetVertex(.....
}
m_import puo' essere di tipo triangle o poly a seconda
del tipo di file che si trova ,quindi per polimorfismo
runtime l'importatore eseguirà la funzione relativa.
Pensavo che pero' il file puo' essere di tipo diverso anche
a seconda del tipo di normali che trova:
quindi potro' avere un file del tipo:
1)Triangolare , normali Vertex
2)Triangolare , normali Face
3)Poly , normali Vertex
4)Poly , normali Face
e cosi' via con un esponenziale crescita del tipo di file.
Vorrei creare un metodo di composizione , tipo mattoncini
della classe di importazione , la prima cosa che mi
viene in mente è di utilizzare qualcosa del tipo:
CImporterTypeBaseVertex m_importVertex // puo' essere poly o triangular;
CImporterTypeBaseNormals m_importNormals;//puo' essere vertex o face
e cosi via ,e di andare a incapsulare la classe relativa
leggendo le proprietà del tipo di file.
In modo da comporre l'importatore.
VOi cosa mi consigliate?