00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef SHEEP_MESHIO_IMESHBUILDER_H
00024 #define SHEEP_MESHIO_IMESHBUILDER_H
00025
00026 #include "common/math/vector2.h"
00027 #include "common/math/vector3.h"
00028
00029 #include <string>
00030
00031 namespace sheep {
00032
00033 class IMeshBuilder {
00034 public:
00035 typedef int FeatureId;
00036
00037 class IGeometryBuilder {
00038 public:
00039
00040 virtual ~IGeometryBuilder() {}
00041
00042 virtual void BeginSubMesh(const std::string &name) {}
00043 virtual void EndSubMesh() {}
00044
00045 virtual FeatureId AppendVertex(const Vector3 &v) { return 0; }
00046 virtual FeatureId AppendNormal(const Vector3 &vn) { return 0; }
00047 virtual FeatureId AppendTexCoord(const Vector2 &vt) { return 0; }
00048 virtual FeatureId AppendFace(int n, const FeatureId *v) { return 0; }
00049
00050 virtual void SetFaceNormals(FeatureId face, int n, const FeatureId *vn) {}
00051 virtual void SetFaceTexCoords(FeatureId face, int n, const FeatureId *vt) {}
00052
00053 virtual void SetMaterial(FeatureId material) {}
00054 };
00055
00056 class IMaterialBuilder {
00057 public:
00058
00059 virtual ~IMaterialBuilder() {}
00060
00061 virtual FeatureId BeginMaterial(const std::string &name) { return 0; }
00062 virtual void EndMaterial() {}
00063
00064 virtual void SetAmbientColor(Real r, Real g, Real b) {}
00065 virtual void SetDiffuseColor(Real r, Real g, Real b) {}
00066 virtual void SetSpecularColor(Real r, Real g, Real b) {}
00067
00068
00069 virtual void SetTexture(int w, int h, const unsigned char *texels) {}
00070 };
00071
00072 virtual ~IMeshBuilder() {}
00073
00074 virtual IGeometryBuilder *GeometryBuilder() = 0;
00075 virtual IMaterialBuilder *MaterialBuilder() = 0;
00076 };
00077
00078 }
00079
00080 #endif // !SHEEP_MESHIO_IMESHBUILDER_H