_Surface.h

Go to the documentation of this file.
00001 /* $Id: _Surface.h,v 1.3 2002/11/05 14:31:15 anonymous Exp $ */
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 /* not used */) 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         // Geometric transformations
00040         // ATTENTION: Only local variables are really transformed.
00041         //            Vertices in global arrays keeps unchanged.
00042         virtual void _rotateX   (float /* angle */);
00043         virtual void _rotateY   (float /* angle */);
00044         virtual void _rotateZ   (float /* angle */);
00045         virtual void _rotate    (float /* angle */, const Vector3& /* axis */);
00046         virtual void _rotate    (const Matrix3&);
00047         virtual void _translate (float /* x */, float /* y */, float /* z */);
00048         virtual void _transform (const Matrix4&);
00049         virtual void _scale     (float);
00050     
00051         _Surface ();
00052         
00053 public:
00054     _Surface (Vector3 *        /* global array of vertices */,
00055               Vector3 *        /* global array of vertex normals */,
00056               Vector2 *        /* global array of UV vertex coordinates */,
00057               unsigned         /* number of polygon vertices */,
00058               const unsigned*  /* array of vertex indices */,
00059               const unsigned*  /* array of normals indices */,
00060               const unsigned*  /* array of uv coord. indices */,
00061               const Vector3&   /* surface normal */,
00062               bool             /* does is the surface normal oriented? */);
00063 
00064     _Surface (Vector3 *        /* global array of vertices */,
00065               Vector3 *        /* global array of vertex normals */,
00066               Vector2 *        /* global array of UV vertex coordinates */,
00067               unsigned         /* num. of polygon vertices  */,
00068               const unsigned*  /* array of vertex indices */,
00069               const unsigned*  /* array of normals indices */,
00070               const unsigned*  /* array of uv coord. indices */);
00071   
00072     virtual ~_Surface();
00073 
00074     /*
00075      * virtual methods of SceneGraphObject
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      * virtual methods of Polygon
00107      */
00108     virtual Geometry* clone (const Matrix4*) const;
00109     virtual void      dump  (const char* /* intent */, const char* /* tab */);
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     // for debugging purposes only:
00118     virtual void __debug (void);
00119 };
00120 
00121 }; // namespace
00122 
00123 #endif // __AUX_SURFACE_H

Generated on Wed Jun 28 12:24:28 2006 for esg by  doxygen 1.4.6