| [4794] | 1 | /* | 
|---|
| [4245] | 2 |    orxonox - the future of 3D-vertical-scrollers | 
|---|
 | 3 |  | 
|---|
 | 4 |    Copyright (C) 2004 orx | 
|---|
 | 5 |  | 
|---|
 | 6 |    This program is free software; you can redistribute it and/or modify | 
|---|
 | 7 |    it under the terms of the GNU General Public License as published by | 
|---|
 | 8 |    the Free Software Foundation; either version 2, or (at your option) | 
|---|
 | 9 |    any later version. | 
|---|
 | 10 |  | 
|---|
 | 11 |    ### File Specific: | 
|---|
 | 12 |    main-programmer: Patrick Boenzli | 
|---|
| [4794] | 13 |    co-programmer: | 
|---|
| [4245] | 14 | */ | 
|---|
 | 15 |  | 
|---|
| [4794] | 16 | /*! | 
|---|
| [6021] | 17 |  * @file model.h | 
|---|
 | 18 |  *  Definition of an abstract model. | 
|---|
 | 19 |  *  containing all needed for other models | 
|---|
| [5435] | 20 |  */ | 
|---|
| [4245] | 21 |  | 
|---|
| [6021] | 22 | #ifndef _MODEL_H | 
|---|
 | 23 | #define _MODEL_H | 
|---|
| [4245] | 24 |  | 
|---|
 | 25 | #include "base_object.h" | 
|---|
| [5672] | 26 | #include "vector.h" | 
|---|
| [4245] | 27 |  | 
|---|
 | 28 |  | 
|---|
 | 29 | //! holds the information about a triangle | 
|---|
 | 30 | typedef struct | 
|---|
 | 31 | { | 
|---|
| [6308] | 32 |   unsigned int   indexToVertices[3];   //!< index to the vertices of the triangle | 
|---|
| [4802] | 33 |   unsigned int   indexToNormals[3];    //!< index to the normals of the triangle | 
|---|
| [4794] | 34 |   unsigned int   indexToTexCoor[3];    //!< index to the texture coordinates | 
|---|
 | 35 | } sTriangleExt; | 
|---|
 | 36 |  | 
|---|
 | 37 |  | 
|---|
| [5430] | 38 | //! Model Information definitions | 
|---|
| [4804] | 39 | typedef struct | 
|---|
 | 40 | { | 
|---|
| [5430] | 41 |   unsigned int     numVertices;          //!< number of Vertices in the Model | 
|---|
 | 42 |   unsigned int     numTriangles;         //!< number of triangles in the Model | 
|---|
 | 43 |   unsigned int     numNormals;           //!< how many Normals in the Model | 
|---|
| [6008] | 44 |   unsigned int     numTexCoor;           //!< how many Texture Coordinates in the Model | 
|---|
| [4804] | 45 |  | 
|---|
| [7193] | 46 |   const float*     pVertices;            //!< array of the Vertices | 
|---|
| [5430] | 47 |   sTriangleExt*    pTriangles;           //!< array of all triangles | 
|---|
 | 48 |   const float*     pNormals;             //!< array of the Normals | 
|---|
 | 49 |   const float*     pTexCoor;             //!< array of the Texture Coordinates | 
|---|
| [4804] | 50 |  | 
|---|
 | 51 | } modelInfo; | 
|---|
 | 52 |  | 
|---|
 | 53 |  | 
|---|
| [4245] | 54 | //! This class defines the basic components of a model | 
|---|
| [7193] | 55 | class Model : virtual public BaseObject { | 
|---|
| [4245] | 56 |  | 
|---|
| [4806] | 57 |   public: | 
|---|
| [6021] | 58 |     virtual ~Model(); | 
|---|
| [4806] | 59 |  | 
|---|
| [6033] | 60 |     virtual void draw() const; | 
|---|
| [6021] | 61 |  | 
|---|
| [6008] | 62 |     inline const modelInfo* getModelInfo() const { return &this->pModelInfo; } | 
|---|
| [4806] | 63 |  | 
|---|
| [6008] | 64 |     /** @returns a Pointer to the Vertex-Array, if it was deleted it returns NULL */ | 
|---|
 | 65 |     inline const float* getVertexArray() const { return this->pModelInfo.pVertices; }; | 
|---|
 | 66 |     /** @returns the VertexCount of this Model */ | 
|---|
 | 67 |     inline unsigned int getVertexCount() const { return this->pModelInfo.numVertices; }; | 
|---|
| [4806] | 68 |  | 
|---|
| [6008] | 69 |     /** @returns a Pointer to the Normals-Array, if it was deleted it returns NULL */ | 
|---|
 | 70 |     inline const float* getNormalsArray() const { return this->pModelInfo.pNormals; }; | 
|---|
 | 71 |     /** @returns the NormalsCount of this Model */ | 
|---|
 | 72 |     inline unsigned int getNormalsCount() const { return this->pModelInfo.numNormals; }; | 
|---|
 | 73 |  | 
|---|
 | 74 |     /** @returns a Pointer to the TexCoord-Array, if it was deleted it returns NULL */ | 
|---|
 | 75 |     inline const float* getTexCoordArray() const { return this->pModelInfo.pTexCoor; }; | 
|---|
 | 76 |     /** @returns the TexCoord-Count of this Model */ | 
|---|
 | 77 |     inline unsigned int getTexCoordCount() const { return this->pModelInfo.numTexCoor; }; | 
|---|
 | 78 |  | 
|---|
 | 79 |     /** @returns the Array of triangles */ | 
|---|
 | 80 |     inline sTriangleExt* getTriangles() const { return this->pModelInfo.pTriangles; }; | 
|---|
 | 81 |     /** @returns the Count of Faces of this Model */ | 
|---|
| [6308] | 82 |     inline unsigned int getTriangleCount() const { return this->pModelInfo.numTriangles; }; | 
|---|
| [6008] | 83 |  | 
|---|
| [7123] | 84 |   protected: | 
|---|
 | 85 |     Model(); | 
|---|
| [6009] | 86 |  | 
|---|
| [7123] | 87 |  | 
|---|
| [4806] | 88 |   protected: | 
|---|
| [6008] | 89 |     modelInfo      pModelInfo;      //!< Reference to the modelInfo | 
|---|
| [4245] | 90 | }; | 
|---|
 | 91 |  | 
|---|
| [6021] | 92 | #endif /* _MODEL_H */ | 
|---|