initial commit of the fluid simulator.
[blender.git] / intern / elbeem / intern / ntl_geometrymodel.h
1 /******************************************************************************
2  *
3  * El'Beem - Free Surface Fluid Simulation with the Lattice Boltzmann Method
4  * Copyright 2003,2004 Nils Thuerey
5  *
6  * A model laoded from Wavefront .obj file
7  *
8  *****************************************************************************/
9 #ifndef NTL_GEOMODEL_H
10 #define NTL_GEOMODEL_H
11
12 #include "ntl_geometryobject.h"
13
14 /*! A simple box object generatedd by 12 triangles */
15 class ntlGeometryObjModel : public ntlGeometryObject
16 {
17         public:
18                 /* Init constructor */
19                 ntlGeometryObjModel( void );
20                 /* Init constructor */
21                 //ntlGeometryObjModel( ntlVec3Gfx start, ntlVec3Gfx end );
22                 /* Destructor */
23                 virtual ~ntlGeometryObjModel( void );
24
25                 //! Return type id
26                 virtual int getTypeId() { return GEOCLASSTID_OBJMODEL; }
27
28                 /*! Filename setting etc. */
29                 virtual void initialize(ntlRenderGlobals *glob);
30
31
32                 /* create triangles from obj */
33                 virtual void getTriangles( vector<ntlTriangle> *triangles, 
34                                 vector<ntlVec3Gfx> *vertices, 
35                                 vector<ntlVec3Gfx> *normals, int objectId );
36
37                 /*! load model from .bobj file, returns !=0 upon error */
38                 int loadBobjModel(string filename);
39
40         private:
41
42                 /*! Start and end points of box */
43                 ntlVec3Gfx mvStart, mvEnd;
44
45                 /*! was the model loaded? */
46                 bool mLoaded;
47
48                 /*! filename of the obj file */
49                 string mFilename;
50
51                 /*! for bobj models */
52                 vector<int> mTriangles;
53                 vector<ntlVec3Gfx> mVertices;
54                 vector<ntlVec3Gfx> mNormals;
55
56         public:
57
58                 /* Access methods */
59                 /*! Access start vector */
60                 inline ntlVec3Gfx getStart( void ){ return mvStart; }
61                 inline void setStart( const ntlVec3Gfx &set ){ mvStart = set; }
62                 /*! Access end vector */
63                 inline ntlVec3Gfx getEnd( void ){ return mvEnd; }
64                 inline void setEnd( const ntlVec3Gfx &set ){ mvEnd = set; }
65
66                 /*! set data file name */
67                 inline void setFilename(string set) { mFilename = set; }
68 };
69
70 #endif
71