Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

FrontierMesh.h

Go to the documentation of this file.
00001 
00002 /*
00003     TSGL - Teddy Space Game Library
00004     Copyright (C) 2002 Timo Suoranta
00005     tksuoran@cc.helsinki.fi
00006 
00007     This library is free software; you can redistribute it and/or
00008     modify it under the terms of the GNU Lesser General Public
00009     License as published by the Free Software Foundation; either
00010     version 2.1 of the License, or (at your option) any later version.
00011 
00012     This library is distributed in the hope that it will be useful,
00013     but WITHOUT ANY WARRANTY; without even the implied warranty of
00014     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015     Lesser General Public License for more details.
00016 
00017     You should have received a copy of the GNU Lesser General Public
00018     License along with this library; if not, write to the Free Software
00019     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00020 
00021     $Id: FrontierMesh.h,v 1.1 2002/01/08 20:47:05 tksuoran Exp $
00022 */
00023 
00024 
00025 #ifndef TEDDY__SPACE_GAME__FRONTIER_MESH_H
00026 #define TEDDY__SPACE_GAME__FRONTIER_MESH_H
00027 
00028 
00029 #include "Teddy/Models/Mesh.h"
00030 #include "Teddy/Models/Face.h"
00031 #include "Teddy/SysSupport/StdMap.h"
00032 using namespace Teddy::Models;
00033 
00034 
00035 namespace Teddy     {
00036 namespace SpaceGame {
00037 
00038 
00039 typedef map<int, Vertex *, less<int> > int_to_Vertex;
00040 
00041 
00042 class FrontierFile;
00043 
00044 
00046 class FrontierMesh : public Mesh {
00047 public:
00048     FrontierMesh( FrontierFile *f, int ob_id, const char *name );
00049 
00050     virtual void  debug     ( Uint32 command, void *data );
00051 
00052 protected:
00053     void    faceBegin       ();
00054     void    faceInsertVertex( int index );
00055     void    faceInsertSpline( int p1, int p2, int c1, int c2 );
00056     void    faceClose       ( int normal_index = -1 );
00057     void    makeVertex      ( Vertex &v1, Vertex &v2 );
00058     void    parseObject     ( const int object_index );
00059     void    parseVertices   ();
00060     void    parseNormals    ();
00061     void    parseSpecs      ();
00062     void    parseElements   ();
00063 
00064     void    printVertices   ();
00065 
00066     //  Object struct
00067     char     *mesh_pointer;
00068     char     *vertex_pointer;
00069     Sint32    vertex_count;
00070     char     *normal_pointer;
00071     Uint32    normal_count;
00072     Uint32    unknown_2;
00073     Uint32    unknown_3;
00074     Uint32    radius;
00075     Sint32    primitive_count;
00076     Uint32    unknown_4;
00077     Uint32    unknown_5;
00078     Uint32    unknown_6;
00079     Uint32    unknown_7;
00080     char     *collision_pointer;
00081     char     *spec_pointer;
00082     Uint32    unknown_8;
00083     Uint32    unknown_9;
00084 
00085     FrontierFile                   *f;
00086     Face                           *face;
00087     bool                            face_open;
00088     bool                            face_good;
00089     int                             face_num_vertices;
00090     int                             last_vertex_index;
00091     int_to_Vertex                   vertices;
00092     int_to_Vertex                   normals;
00093     list<Element*>::const_iterator  debug_selected_element_it;
00094 };
00095 
00096 
00097 };  //  namespace SpaceGame
00098 };  //  namespace Teddy
00099 
00100 
00101 #endif  //  TEDDY__SPACE_GAME__FRONTIER_MESH_H
00102