Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/graphics/importer/model.h @ 7123

Last change on this file since 7123 was 7123, checked in by bensch, 18 years ago

orxonox/trunk: some cleanup before the new tag

  1. BaseObject isA was wrong… every subclass was detected as any other subclass
  2. Classes get unloaded again as they should
  3. some minor fixes (Material* → Material) and some other cleanups
File size: 3.1 KB
Line 
1/*
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
13   co-programmer:
14*/
15
16/*!
17 * @file model.h
18 *  Definition of an abstract model.
19 *  containing all needed for other models
20 */
21
22#ifndef _MODEL_H
23#define _MODEL_H
24
25#include "base_object.h"
26#include "vector.h"
27
28using namespace std;
29
30
31//! holds the information about a triangle
32typedef struct
33{
34  unsigned int   indexToVertices[3];   //!< index to the vertices of the triangle
35  unsigned int   indexToNormals[3];    //!< index to the normals of the triangle
36  unsigned int   indexToTexCoor[3];    //!< index to the texture coordinates
37} sTriangleExt;
38
39
40//! Model Information definitions
41typedef struct
42{
43  unsigned int     numVertices;          //!< number of Vertices in the Model
44  unsigned int     numTriangles;         //!< number of triangles in the Model
45  unsigned int     numNormals;           //!< how many Normals in the Model
46  unsigned int     numTexCoor;           //!< how many Texture Coordinates in the Model
47
48  const float*     pVertices;            //!< array of the Vertives
49  sTriangleExt*    pTriangles;           //!< array of all triangles
50  const float*     pNormals;             //!< array of the Normals
51  const float*     pTexCoor;             //!< array of the Texture Coordinates
52
53} modelInfo;
54
55
56//! This class defines the basic components of a model
57class Model : public BaseObject {
58
59  public:
60    virtual ~Model();
61
62    virtual void draw() const;
63
64    inline const modelInfo* getModelInfo() const { return &this->pModelInfo; }
65
66    /** @returns a Pointer to the Vertex-Array, if it was deleted it returns NULL */
67    inline const float* getVertexArray() const { return this->pModelInfo.pVertices; };
68    /** @returns the VertexCount of this Model */
69    inline unsigned int getVertexCount() const { return this->pModelInfo.numVertices; };
70
71    /** @returns a Pointer to the Normals-Array, if it was deleted it returns NULL */
72    inline const float* getNormalsArray() const { return this->pModelInfo.pNormals; };
73    /** @returns the NormalsCount of this Model */
74    inline unsigned int getNormalsCount() const { return this->pModelInfo.numNormals; };
75
76    /** @returns a Pointer to the TexCoord-Array, if it was deleted it returns NULL */
77    inline const float* getTexCoordArray() const { return this->pModelInfo.pTexCoor; };
78    /** @returns the TexCoord-Count of this Model */
79    inline unsigned int getTexCoordCount() const { return this->pModelInfo.numTexCoor; };
80
81    /** @returns the Array of triangles */
82    inline sTriangleExt* getTriangles() const { return this->pModelInfo.pTriangles; };
83    /** @returns the Count of Faces of this Model */
84    inline unsigned int getTriangleCount() const { return this->pModelInfo.numTriangles; };
85
86  protected:
87    Model();
88
89
90  protected:
91    modelInfo      pModelInfo;      //!< Reference to the modelInfo
92};
93
94#endif /* _MODEL_H */
Note: See TracBrowser for help on using the repository browser.