- Timestamp:
- Jun 13, 2005, 1:26:25 AM (19 years ago)
- Location:
- orxonox/trunk/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
orxonox/trunk/src/lib/collision_detection/cd_engine.cc
r4551 r4615 1 /* 1 /* 2 2 orxonox - the future of 3D-vertical-scrollers 3 3 … … 19 19 #include "obb_tree.h" 20 20 #include "debug.h" 21 #include "abstract_model.h" 21 22 22 23 using namespace std; … … 26 27 \brief standard constructor 27 28 */ 28 CDEngine::CDEngine () 29 CDEngine::CDEngine () 29 30 { 30 31 this->setClassName("CDEngine"); 31 this->setClassID(CL_CD_ENGINE, "CDEngine"); 32 this->setClassID(CL_CD_ENGINE, "CDEngine"); 32 33 33 34 /* testing purposes only: */ … … 44 45 45 46 */ 46 CDEngine::~CDEngine () 47 CDEngine::~CDEngine () 47 48 { 48 49 CDEngine::singletonRef = NULL; … … 74 75 this->rootTree->debug(); 75 76 PRINT(0)("= CDEngine: Spawning Tree: Finished\n"); 76 PRINT(0)("=======================================================\n"); 77 PRINT(0)("=======================================================\n"); 77 78 78 79 } 80 81 void CDEngine::debugSpawnTree(int depth, sVec3D* vertices, int numVertices) 82 { 83 this->rootTree->spawnBVTree(depth, vertices, numVertices); 84 } -
orxonox/trunk/src/lib/collision_detection/cd_engine.h
r4551 r4615 1 /*! 1 /*! 2 2 \file cd_engine.h 3 3 \brief Definition of the collision detection engine 4 4 5 5 */ 6 6 … … 10 10 #include "base_object.h" 11 11 #include "collision_defs.h" 12 #include "abstract_model.h" 12 13 13 14 template<class T> class tList; … … 50 51 51 52 void debug(); 53 void debugSpawnTree(int depth, sVec3D* vertices, int numVertices); 52 54 53 55 private: -
orxonox/trunk/src/lib/collision_detection/obb_tree.cc
r4612 r4615 107 107 } 108 108 109 this->spawnBVTree( 1, vertList, length);109 this->spawnBVTree(2, vertList, length); 110 110 111 111 PRINT(0)("= Spawning Tree: Finished\n"); -
orxonox/trunk/src/lib/collision_detection/obb_tree_node.cc
r4614 r4615 389 389 void OBBTreeNode::drawBV(int currentDepth, const int depth) const 390 390 { 391 glBegin(GL_LINE_LOOP);392 glColor3f(1.0, 1.0, 1.0);393 for(int i = 0; i < this->bvElement->numOfVertices; ++i)394 {395 glVertex3f(this->bvElement->vertices[i][0], this->bvElement->vertices[i][1], this->bvElement->vertices[i][2]);396 //printf("v(%f, %f, %f)\n", this->vertices[i][0], this->vertices[i][1], this->vertices[i][2]);397 }398 glEnd();391 // glBegin(GL_LINE_LOOP); 392 // glColor3f(1.0, 1.0, 1.0); 393 // for(int i = 0; i < this->bvElement->numOfVertices; ++i) 394 // { 395 // glVertex3f(this->bvElement->vertices[i][0], this->bvElement->vertices[i][1], this->bvElement->vertices[i][2]); 396 // //printf("v(%f, %f, %f)\n", this->vertices[i][0], this->vertices[i][1], this->vertices[i][2]); 397 // } 398 // glEnd(); 399 399 } 400 400 -
orxonox/trunk/src/lib/graphics/importer/md2Model.h
r4488 r4615 1 /*! 1 /*! 2 2 \file md2Model.h 3 3 \brief Definition of an MD2 Model, a model format invented by ID Software. 4 4 5 5 We are deeply thankfull for all the wunderfull things id software made for us gamers! 6 6 7 7 The md2 file format is structured in a very simple way: it contains animations which are made out of 8 8 frames (so called keyframes). Each frame is a complete draweable model in a specific position. 9 9 A frame is a collection of vertex and its compagnions (normals, texture coordinates). 10 11 A typical model has about 200 frames, the maximum frame count is fixed by MD2_MAX_FRAMES to currently 10 11 A typical model has about 200 frames, the maximum frame count is fixed by MD2_MAX_FRAMES to currently 12 12 512 frames. The maximal vetices count is set to 2048 verteces, not enough? 13 13 You just have to change the MD2_MAX_* values if it doesn't fit your purposes... 14 14 15 15 Surface Culling is fully implemented in md2 models: quake2 uses front face culling. 16 16 */ … … 27 27 #define MD2_IDENT (('2'<<24) + ('P'<<16) + ('D'<<8) + 'I') //!< the md2 identifier tag in the bin file 28 28 #define MD2_VERSION 8 //!< the md2 version in the header 29 #define MD2_MAX_TRIANGLES 30 #define MD2_MAX_VERTICES 31 #define MD2_MAX_TEXCOORDS 32 #define MD2_MAX_FRAMES 33 #define MD2_MAX_SKINS 34 #define MD2_MAX_FRAMESIZE 29 #define MD2_MAX_TRIANGLES 4096 //!< maximal triangles count 30 #define MD2_MAX_VERTICES 2048 //!< maximal vertices count 31 #define MD2_MAX_TEXCOORDS 2048 //!< maximal tex coordinates 32 #define MD2_MAX_FRAMES 512 //!< maximal frames 33 #define MD2_MAX_SKINS 32 //!< maximal skins 34 #define MD2_MAX_FRAMESIZE (MD2_MAX_VERTICES * 4 + 128) //!< maximal framesize 35 35 36 36 #define NUM_VERTEX_NORMALS 162 //!< number of vertex normals … … 38 38 39 39 //! This stores the speed of the animation between each key frame - currently conflicting with the animation framework 40 #define kAnimationSpeed 40 #define kAnimationSpeed 12.0f //!< animation speed 41 41 42 42 //! This holds the header information that is read in at the beginning of the file: id software definition 43 43 struct MD2Header 44 { 45 int ident; 46 int version; 47 48 int skinWidth; 49 int skinHeight; 50 int frameSize; 51 52 int numSkins; 53 int numVertices; 54 int numTexCoords; 55 int numTriangles; 56 int numGlCommands; 57 int numFrames; 58 59 int offsetSkins; 60 int offsetTexCoords; 61 int offsetTriangles; 62 int offsetFrames; 63 int offsetGlCommands; 64 int offsetEnd; 44 { 45 int ident; //!< This is used to identify the file 46 int version; //!< The version number of the file (Must be 8) 47 48 int skinWidth; //!< The skin width in pixels 49 int skinHeight; //!< The skin height in pixels 50 int frameSize; //!< The size in bytes the frames are 51 52 int numSkins; //!< The number of skins associated with the model 53 int numVertices; //!< The number of vertices (constant for each frame) 54 int numTexCoords; //!< The number of texture coordinates 55 int numTriangles; //!< The number of faces (polygons) 56 int numGlCommands; //!< The number of gl commands 57 int numFrames; //!< The number of animation frames 58 59 int offsetSkins; //!< The offset in the file for the skin data 60 int offsetTexCoords; //!< The offset in the file for the texture data 61 int offsetTriangles; //!< The offset in the file for the face data 62 int offsetFrames; //!< The offset in the file for the frames data 63 int offsetGlCommands; //!< The offset in the file for the gl commands data 64 int offsetEnd; //!< The end of the file offset 65 65 }; 66 66 … … 85 85 CROUCH_ATTACK, 86 86 CROUCH_PAIN, 87 CROUCH_DEATH, 87 CROUCH_DEATH, 88 88 DEATH_FALLBACK, 89 89 DEATH_FALLFORWARD, 90 90 DEATH_FALLBACKSLOW, 91 91 BOOM, 92 92 93 93 MAX_ANIMATIONS 94 94 }; … … 113 113 114 114 public: 115 int numFrames; //!< number of frames 115 int numFrames; //!< number of frames 116 116 int numVertices; //!< number of vertices 117 117 int numTriangles; //!< number of triangles … … 125 125 int* pLightNormals; //!< pointer to the light normals 126 126 127 Material* material; //!< pointer to the material 127 Material* material; //!< pointer to the material 128 128 float scaleFactor; //!< the scale factor of the model, (global) 129 129 }; … … 136 136 MD2Model(const char* modelFileName, const char* skinFileName = NULL); 137 137 virtual ~MD2Model(); 138 138 139 139 void draw(); 140 140 141 141 void setAnim(int type); 142 142 /** 143 \brief scales the current model 143 \brief scales the current model 144 144 \param scaleFactor: the factor [0..1] to use for scaling 145 145 */ … … 151 151 152 152 private: 153 void animate(); 153 void animate(); 154 154 void processLighting(); 155 155 void interpolate(sVec3D* verticesList); … … 162 162 static sAnim animationList[21]; //!< the anomation list 163 163 164 private:165 164 MD2Data* data; //!< the md2 data pointer 166 165 166 private: 167 167 float scaleFactor; //!< the scale factor (individual) 168 168 sAnimState animationState; //!< animation state of the model -
orxonox/trunk/src/subprojects/collision_detection/Makefile.am
r4612 r4615 13 13 $(MAINSRCDIR)/lib/newmat/libnewmat.a \ 14 14 $(GTK2_LIBS) $(GTHREAD_LIBS) $(CURL_LIBS) \ 15 15 -lpthread 16 16 17 17 collision_CPPFLAGS = -DGUI_MODULE \ 18 18 $(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS) 19 19 20 20 collision_SOURCES= ../framework.cc \ 21 collision_detection.cc \ 22 $(MAINSRCDIR)/util/loading/load_param.cc \ 23 $(MAINSRCDIR)/lib/util/substring.cc \ 24 $(MAINSRCDIR)/lib/util/ini_parser.cc \ 25 $(MAINSRCDIR)/lib/graphics/light.cc \ 26 $(MAINSRCDIR)/util/state.cc \ 27 $(MAINSRCDIR)/world_entities/camera.cc \ 28 $(MAINSRCDIR)/lib/graphics/graphics_engine.cc \ 29 $(MAINSRCDIR)/lib/lang/base_object.cc \ 30 $(MAINSRCDIR)/lib/math/vector.cc \ 31 $(MAINSRCDIR)/util/resource_manager.cc \ 32 $(MAINSRCDIR)/lib/graphics/text_engine.cc \ 33 $(MAINSRCDIR)/lib/coord/p_node.cc \ 34 $(MAINSRCDIR)/lib/coord/null_parent.cc \ 35 $(MAINSRCDIR)/lib/gui/gui_gtk.cc \ 36 $(MAINSRCDIR)/lib/newmat/include.h \ 37 $(MAINSRCDIR)/lib/newmat/newmat.h \ 38 $(MAINSRCDIR)/lib/newmat/newmatap.h \ 39 $(MAINSRCDIR)/lib/newmatio.h 21 collision_detection.cc \ 22 $(MAINSRCDIR)/util/loading/load_param.cc \ 23 $(MAINSRCDIR)/lib/util/substring.cc \ 24 $(MAINSRCDIR)/lib/util/ini_parser.cc \ 25 $(MAINSRCDIR)/lib/graphics/light.cc \ 26 $(MAINSRCDIR)/lib/graphics/importer/md2Model.cc \ 27 $(MAINSRCDIR)/util/state.cc \ 28 $(MAINSRCDIR)/world_entities/camera.cc \ 29 $(MAINSRCDIR)/lib/graphics/graphics_engine.cc \ 30 $(MAINSRCDIR)/lib/lang/base_object.cc \ 31 $(MAINSRCDIR)/lib/math/vector.cc \ 32 $(MAINSRCDIR)/util/resource_manager.cc \ 33 $(MAINSRCDIR)/lib/graphics/text_engine.cc \ 34 $(MAINSRCDIR)/lib/coord/p_node.cc \ 35 $(MAINSRCDIR)/lib/coord/null_parent.cc \ 36 $(MAINSRCDIR)/lib/gui/gui_gtk.cc \ 37 $(MAINSRCDIR)/lib/newmat/include.h \ 38 $(MAINSRCDIR)/lib/newmat/newmat.h \ 39 $(MAINSRCDIR)/lib/newmat/newmatap.h \ 40 $(MAINSRCDIR)/lib/newmatio.h -
orxonox/trunk/src/subprojects/collision_detection/Makefile.in
r4612 r4615 55 55 collision-load_param.$(OBJEXT) collision-substring.$(OBJEXT) \ 56 56 collision-ini_parser.$(OBJEXT) collision-light.$(OBJEXT) \ 57 collision- state.$(OBJEXT) collision-camera.$(OBJEXT) \58 collision- graphics_engine.$(OBJEXT) \57 collision-md2Model.$(OBJEXT) collision-state.$(OBJEXT) \ 58 collision-camera.$(OBJEXT) collision-graphics_engine.$(OBJEXT) \ 59 59 collision-base_object.$(OBJEXT) collision-vector.$(OBJEXT) \ 60 60 collision-resource_manager.$(OBJEXT) \ … … 83 83 @AMDEP_TRUE@ ./$(DEPDIR)/collision-light.Po \ 84 84 @AMDEP_TRUE@ ./$(DEPDIR)/collision-load_param.Po \ 85 @AMDEP_TRUE@ ./$(DEPDIR)/collision-md2Model.Po \ 85 86 @AMDEP_TRUE@ ./$(DEPDIR)/collision-null_parent.Po \ 86 87 @AMDEP_TRUE@ ./$(DEPDIR)/collision-p_node.Po \ … … 221 222 $(MAINSRCDIR)/lib/newmat/libnewmat.a \ 222 223 $(GTK2_LIBS) $(GTHREAD_LIBS) $(CURL_LIBS) \ 223 224 -lpthread 224 225 225 226 collision_CPPFLAGS = -DGUI_MODULE \ 226 227 $(GTK2_CFLAGS) $(GTHREAD_CFLAGS) $(CURL_CFLAGS) $(MSBITFIELDS) 227 228 228 229 collision_SOURCES = ../framework.cc \ 229 collision_detection.cc \ 230 $(MAINSRCDIR)/util/loading/load_param.cc \ 231 $(MAINSRCDIR)/lib/util/substring.cc \ 232 $(MAINSRCDIR)/lib/util/ini_parser.cc \ 233 $(MAINSRCDIR)/lib/graphics/light.cc \ 234 $(MAINSRCDIR)/util/state.cc \ 235 $(MAINSRCDIR)/world_entities/camera.cc \ 236 $(MAINSRCDIR)/lib/graphics/graphics_engine.cc \ 237 $(MAINSRCDIR)/lib/lang/base_object.cc \ 238 $(MAINSRCDIR)/lib/math/vector.cc \ 239 $(MAINSRCDIR)/util/resource_manager.cc \ 240 $(MAINSRCDIR)/lib/graphics/text_engine.cc \ 241 $(MAINSRCDIR)/lib/coord/p_node.cc \ 242 $(MAINSRCDIR)/lib/coord/null_parent.cc \ 243 $(MAINSRCDIR)/lib/gui/gui_gtk.cc \ 244 $(MAINSRCDIR)/lib/newmat/include.h \ 245 $(MAINSRCDIR)/lib/newmat/newmat.h \ 246 $(MAINSRCDIR)/lib/newmat/newmatap.h \ 247 $(MAINSRCDIR)/lib/newmatio.h 230 collision_detection.cc \ 231 $(MAINSRCDIR)/util/loading/load_param.cc \ 232 $(MAINSRCDIR)/lib/util/substring.cc \ 233 $(MAINSRCDIR)/lib/util/ini_parser.cc \ 234 $(MAINSRCDIR)/lib/graphics/light.cc \ 235 $(MAINSRCDIR)/lib/graphics/importer/md2Model.cc \ 236 $(MAINSRCDIR)/util/state.cc \ 237 $(MAINSRCDIR)/world_entities/camera.cc \ 238 $(MAINSRCDIR)/lib/graphics/graphics_engine.cc \ 239 $(MAINSRCDIR)/lib/lang/base_object.cc \ 240 $(MAINSRCDIR)/lib/math/vector.cc \ 241 $(MAINSRCDIR)/util/resource_manager.cc \ 242 $(MAINSRCDIR)/lib/graphics/text_engine.cc \ 243 $(MAINSRCDIR)/lib/coord/p_node.cc \ 244 $(MAINSRCDIR)/lib/coord/null_parent.cc \ 245 $(MAINSRCDIR)/lib/gui/gui_gtk.cc \ 246 $(MAINSRCDIR)/lib/newmat/include.h \ 247 $(MAINSRCDIR)/lib/newmat/newmat.h \ 248 $(MAINSRCDIR)/lib/newmat/newmatap.h \ 249 $(MAINSRCDIR)/lib/newmatio.h 248 250 249 251 all: all-am … … 322 324 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-light.Po@am__quote@ 323 325 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-load_param.Po@am__quote@ 326 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-md2Model.Po@am__quote@ 324 327 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-null_parent.Po@am__quote@ 325 328 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collision-p_node.Po@am__quote@ … … 441 444 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 442 445 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-light.obj `if test -f '$(MAINSRCDIR)/lib/graphics/light.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/light.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/light.cc'; fi` 446 447 collision-md2Model.o: $(MAINSRCDIR)/lib/graphics/importer/md2Model.cc 448 @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-md2Model.o -MD -MP -MF "$(DEPDIR)/collision-md2Model.Tpo" -c -o collision-md2Model.o `test -f '$(MAINSRCDIR)/lib/graphics/importer/md2Model.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/importer/md2Model.cc; \ 449 @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/collision-md2Model.Tpo" "$(DEPDIR)/collision-md2Model.Po"; else rm -f "$(DEPDIR)/collision-md2Model.Tpo"; exit 1; fi 450 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(MAINSRCDIR)/lib/graphics/importer/md2Model.cc' object='collision-md2Model.o' libtool=no @AMDEPBACKSLASH@ 451 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/collision-md2Model.Po' tmpdepfile='$(DEPDIR)/collision-md2Model.TPo' @AMDEPBACKSLASH@ 452 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 453 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-md2Model.o `test -f '$(MAINSRCDIR)/lib/graphics/importer/md2Model.cc' || echo '$(srcdir)/'`$(MAINSRCDIR)/lib/graphics/importer/md2Model.cc 454 455 collision-md2Model.obj: $(MAINSRCDIR)/lib/graphics/importer/md2Model.cc 456 @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT collision-md2Model.obj -MD -MP -MF "$(DEPDIR)/collision-md2Model.Tpo" -c -o collision-md2Model.obj `if test -f '$(MAINSRCDIR)/lib/graphics/importer/md2Model.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/importer/md2Model.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/importer/md2Model.cc'; fi`; \ 457 @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/collision-md2Model.Tpo" "$(DEPDIR)/collision-md2Model.Po"; else rm -f "$(DEPDIR)/collision-md2Model.Tpo"; exit 1; fi 458 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(MAINSRCDIR)/lib/graphics/importer/md2Model.cc' object='collision-md2Model.obj' libtool=no @AMDEPBACKSLASH@ 459 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/collision-md2Model.Po' tmpdepfile='$(DEPDIR)/collision-md2Model.TPo' @AMDEPBACKSLASH@ 460 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ 461 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(collision_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o collision-md2Model.obj `if test -f '$(MAINSRCDIR)/lib/graphics/importer/md2Model.cc'; then $(CYGPATH_W) '$(MAINSRCDIR)/lib/graphics/importer/md2Model.cc'; else $(CYGPATH_W) '$(srcdir)/$(MAINSRCDIR)/lib/graphics/importer/md2Model.cc'; fi` 443 462 444 463 collision-state.o: $(MAINSRCDIR)/util/state.cc -
orxonox/trunk/src/subprojects/collision_detection/collision_detection.cc
r4552 r4615 1 /* 1 /* 2 2 orxonox - the future of 3D-vertical-scrollers 3 3 … … 24 24 #include "cd_engine.h" 25 25 26 #include "md2Model.h" 27 28 MD2Model* model; 29 26 30 void Framework::moduleInit(int argc, char** argv) 27 31 { 28 32 CDEngine::getInstance(); 29 CDEngine::getInstance()->debug(); 30 33 //CDEngine::getInstance()->debug(); 31 34 35 model = new MD2Model("models/tris.md2", "models/tris.pcx"); 36 model->tick(0.1f); 37 CDEngine::getInstance()->debugSpawnTree(1, model->data->pVertices, model->data->numVertices); 32 38 33 39 LightManager* lightMan = LightManager::getInstance(); … … 45 51 case SDL_KEYDOWN: 46 52 switch (event->key.keysym.sym) 47 48 49 50 53 { 54 case SDLK_i: 55 break; 56 } 51 57 } 52 58 } … … 63 69 64 70 LightManager::getInstance()->draw(); 71 72 model->draw(); 65 73 } 66 74 … … 77 85 { 78 86 Window* guiMainWindow = NULL; 79 87 80 88 initGUI(0, NULL); 81 89 82 90 guiMainWindow = new Window("Collision_detection"); 83 91 {
Note: See TracChangeset
for help on using the changeset viewer.