00001
00002
00003 #ifndef __AUX_SURFACE_H
00004 #define __AUX_SURFACE_H
00005
00006 #include <esg/geometry/Polygon.h>
00007 #include <esg/Leaf.h>
00008
00009 namespace esg {
00010
00023 class OGSCENE_EXPORT _Surface : public Polygon, public Leaf {
00024 friend class Surface;
00025
00026 protected:
00027 unsigned* _vindices;
00028 unsigned* _nindices;
00029 unsigned* _uvindices;
00030
00031 protected:
00032 virtual Mesh* _mesh (int ) const;
00033 virtual void _duplicate_attributes (const SceneGraphObject&);
00034 virtual void _duplicate_attributes (const Geometry&);
00035 virtual Vector3 _get_vertex (unsigned) const;
00036 virtual Vector3 _get_vert_normal (unsigned) const;
00037 virtual Vector2 _get_vert_uv_coord (unsigned) const;
00038
00039
00040
00041
00042 virtual void _rotateX (float );
00043 virtual void _rotateY (float );
00044 virtual void _rotateZ (float );
00045 virtual void _rotate (float , const Vector3& );
00046 virtual void _rotate (const Matrix3&);
00047 virtual void _translate (float , float , float );
00048 virtual void _transform (const Matrix4&);
00049 virtual void _scale (float);
00050
00051 _Surface ();
00052
00053 public:
00054 _Surface (Vector3 * ,
00055 Vector3 * ,
00056 Vector2 * ,
00057 unsigned ,
00058 const unsigned* ,
00059 const unsigned* ,
00060 const unsigned* ,
00061 const Vector3& ,
00062 bool );
00063
00064 _Surface (Vector3 * ,
00065 Vector3 * ,
00066 Vector2 * ,
00067 unsigned ,
00068 const unsigned* ,
00069 const unsigned* ,
00070 const unsigned* );
00071
00072 virtual ~_Surface();
00073
00074
00075
00076
00077 virtual void setSharedGeometry (AutoPtr<Geometry>*) {}
00078 virtual void setPrivateGeometry (Geometry*) {}
00079 virtual void setSharedEmittance (AutoPtr<Emittance>*) {}
00080 virtual void setPrivateEmittance (Emittance*) {}
00081 virtual void setSharedBRDF (AutoPtr<BRDF>*) {}
00082 virtual void setPrivateBRDF (BRDF*) {}
00083 virtual void setSharedTransformation (AutoPtr<Transform>*) {}
00084 virtual void setPrivateTransformation (Transform*) {}
00085
00086 virtual void appendSharedMaterial (AutoPtr<Material> *) {}
00087 virtual void appendPrivateMaterial (Material *) {}
00088 virtual void appendSharedAttribute (AutoPtr<SGAttribute> *) {}
00089 virtual void appendPrivateAttribute (SGAttribute *) {}
00090
00091 virtual Geometry* geometry (void) { return this; }
00092 virtual Emittance* emittance (void) { return NULL; }
00093 virtual BRDF* brdf (void) { return NULL; }
00094 virtual Transform* transformation (void) { return NULL; }
00095 virtual Texture* texture (void) { return NULL; }
00096
00097 virtual const Geometry* geometry (void) const { return this; }
00098 virtual const Emittance* emittance (void) const { return NULL; }
00099 virtual const BRDF* brdf (void) const { return NULL; }
00100 virtual const Transform* transformation (void) const { return NULL; }
00101 virtual const Texture* texture (void) const { return NULL; }
00102
00103 virtual SceneGraphObject* clone (void) const;
00104
00105
00106
00107
00108 virtual Geometry* clone (const Matrix4*) const;
00109 virtual void dump (const char* , const char* );
00110
00111 virtual Vector3 getVertex (unsigned) const;
00112 virtual Vector3 getVertNormal (unsigned) const;
00113 virtual Vector2 getVertUVCoord (unsigned) const;
00114 virtual bool haveVertNormals (void) const;
00115 virtual bool haveVertUVCoords (void) const;
00116
00117
00118 virtual void __debug (void);
00119 };
00120
00121 };
00122
00123 #endif // __AUX_SURFACE_H