Changeset 8894 in orxonox.OLD for trunk/src/lib/graphics/importer
- Timestamp:
- Jun 29, 2006, 12:19:48 AM (19 years ago)
- Location:
- trunk/src/lib/graphics/importer
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/graphics/importer/bsp_file.cc
r8490 r8894 214 214 bspFile.read(this->visData, size); 215 215 216 PRINTF( 0)("BSP FILE: VisDataSize: %i Bytes. \n", size);217 PRINTF( 0)("BSP FILE: NumVisData: %i. \n", size /1 - 8);218 PRINTF( 0)("BSP FILE: Remainder: %i. \n", size % 1);219 PRINTF( 0)("BSP FILE: VisDataOffset: %i. \n", offset);216 PRINTF(4)("BSP FILE: VisDataSize: %i Bytes. \n", size); 217 PRINTF(4)("BSP FILE: NumVisData: %i. \n", size /1 - 8); 218 PRINTF(4)("BSP FILE: Remainder: %i. \n", size % 1); 219 PRINTF(4)("BSP FILE: VisDataOffset: %i. \n", offset); 220 220 221 221 // Get the Textures … … 298 298 this->VertexArrayModels = new VertexArrayModel*[this->numPatches]; 299 299 300 PRINTF( 0)("BSP FILE:NumberOfPatches: %i . \n", numPatches);300 PRINTF(4)("BSP FILE:NumberOfPatches: %i . \n", numPatches); 301 301 302 302 this->swapAllBspCoordinates(); … … 308 308 } 309 309 310 PRINTF( 0)("BSP FILE:PatchOffset: %i . \n", this->patchOffset);310 PRINTF(4)("BSP FILE:PatchOffset: %i . \n", this->patchOffset); 311 311 312 312 return 1; 313 313 } else { 314 PRINTF( 0)("BSP FILE: Datei nicht gefunden. \n");314 PRINTF(4)("BSP FILE: Datei nicht gefunden. \n"); 315 315 return -1; 316 316 } … … 323 323 { 324 324 325 PRINTF( 0)("BSP FILE:\n");326 PRINTF( 0)("BSP FILE: Building Tree...\n");325 PRINTF(4)("BSP FILE:\n"); 326 PRINTF(4)("BSP FILE: Building Tree...\n"); 327 327 root = this->build_tree_rec(0); 328 PRINTF( 0)("BSP FILE: ...done. \n");329 PRINTF( 0)("BSP FILE: \n");330 PRINTF( 0)("BSP FILE: Node #0: \n");331 PRINTF( 0)("BSP FILE: x: %f \n",root->plane.x);332 PRINTF( 0)("BSP FILE: y: %f\n",root->plane.y);333 PRINTF( 0)("BSP FILE: z: %f\n",root->plane.z);328 PRINTF(4)("BSP FILE: ...done. \n"); 329 PRINTF(4)("BSP FILE: \n"); 330 PRINTF(4)("BSP FILE: Node #0: \n"); 331 PRINTF(4)("BSP FILE: x: %f \n",root->plane.x); 332 PRINTF(4)("BSP FILE: y: %f\n",root->plane.y); 333 PRINTF(4)("BSP FILE: z: %f\n",root->plane.z); 334 334 } 335 335 … … 400 400 this->Materials = new AMat[this->numTextures]; 401 401 for(int i = 0 ; i < this->numTextures; i++) { 402 PRINTF( 0)("BSP FILE: Texture : %s. \n", &this->textures[8+ 72*i]);402 PRINTF(4)("BSP FILE: Texture : %s. \n", &this->textures[8+ 72*i]); 403 403 404 404 … … 429 429 strncat (fileName, ext, strlen(fileName) ); 430 430 431 PRINTF( 0)("BSP FILE: Name %s . \n", fileName);431 PRINTF(4)("BSP FILE: Name %s . \n", fileName); 432 432 433 433 absFileName = ResourceManager::getFullName(fileName); 434 434 435 435 if(File(absFileName).exists()) { 436 PRINTF( 0)("BSP FILE: gefunden . \n");436 PRINTF(4)("BSP FILE: gefunden . \n"); 437 437 this->Materials[i] = this->loadAVI(fileName); 438 438 continue; … … 449 449 450 450 if(File(absFileName).exists()) { 451 PRINTF( 0)("BSP FILE: gefunden . \n");451 PRINTF(4)("BSP FILE: gefunden . \n"); 452 452 this->Materials[i] = this->loadAVI(fileName); 453 453 continue; … … 479 479 480 480 if(File(absFileName).exists()) { 481 PRINTF( 0)("BSP FILE: gefunden . \n");481 PRINTF(4)("BSP FILE: gefunden . \n"); 482 482 this->Materials[i] = this->loadMat(fileName); 483 483 continue; … … 492 492 493 493 if(File(absFileName).exists()/*stat( absFileName.c_str() , &results) == 0*/) { 494 PRINTF( 0)("BSP FILE: gefunden . \n");494 PRINTF(4)("BSP FILE: gefunden . \n"); 495 495 this->Materials[i] = this->loadMat(fileName); 496 496 continue; … … 504 504 absFileName = ResourceManager::getFullName(fileName); 505 505 if(File(absFileName).exists()) { 506 PRINTF( 0)("BSP FILE: gefunden . \n");506 PRINTF(4)("BSP FILE: gefunden . \n"); 507 507 this->Materials[i] =this->loadMat(fileName); 508 508 continue; … … 518 518 absFileName = ResourceManager::getFullName(fileName); 519 519 if(File(absFileName).exists()) { 520 PRINTF( 0)("BSP FILE: gefunden . \n");520 PRINTF(4)("BSP FILE: gefunden . \n"); 521 521 this->Materials[i] =this->loadMat(fileName); 522 522 continue; … … 534 534 535 535 if(File(absFileName).exists()) { 536 PRINTF( 0)("BSP FILE: gefunden . \n");536 PRINTF(4)("BSP FILE: gefunden . \n"); 537 537 this->Materials[i] =this->loadMat(fileName); 538 538 continue; … … 548 548 549 549 if(File(absFileName).exists()) { 550 PRINTF( 0)("BSP FILE: gefunden . \n");550 PRINTF(4)("BSP FILE: gefunden . \n"); 551 551 this->Materials[i] = this->loadMat(fileName); 552 552 continue; 553 553 } 554 554 555 555 PRINTF(0)("BSP FILE: Textur %s nicht gefunden . \n", &this->textures[8+72*i]); 556 556 // Default Material 557 557 this->Materials[i].mat = new Material(); … … 1012 1012 Face->meshvert = patchOffset -sz; //3*(patchOffset-sz)*level1*level1; 1013 1013 Face->n_meshverts = sz; 1014 PRINTF( 0)("BSP FILE: sz: %i. \n", sz);1015 PRINTF( 0)("BSP FILE: Face->meshvert %i . \n", Face->meshvert);1014 PRINTF(4)("BSP FILE: sz: %i. \n", sz); 1015 PRINTF(4)("BSP FILE: Face->meshvert %i . \n", Face->meshvert); 1016 1016 1017 1017 //Face->n_meshverts = sz; -
trunk/src/lib/graphics/importer/bsp_manager.cc
r8796 r8894 45 45 46 46 #include "aabb.h" 47 47 #include "cr_defs.h" 48 48 49 49 … … 912 912 { 913 913 leaf& curLeaf = this->bspFile->leaves[node->leafIndex]; 914 for(int i = 0; i < curLeaf.n_leaffaces ; i++) { 915 } 914 for(int i = 0; i < curLeaf.n_leaffaces ; i++) {} 916 915 return 10.0f; 917 916 } 918 917 919 918 void BspManager::checkCollisionBox(void) 920 { 921 } 922 ; 919 {} 920 923 921 924 922 void BspManager::TraceBox( Vector& inputStart, Vector& inputEnd, … … 954 952 955 953 956 Vector forwardDir = worldEntity->getAbsDirX(); 957 958 959 Vector upDir = worldEntity->getAbsDirY(); 960 upDir.x = 0.0; 961 upDir.y = 1.0; 962 upDir.z = 0.0; 963 Vector dest; 964 965 966 Vector position = worldEntity->getAbsCoor(); //+ upDir*10.0f ; 967 dest = worldEntity->getAbsCoor() - upDir*40.0f; // 968 Vector out = dest; 969 970 954 Vector forwardDir = Vector(0.0,0.0,1.0); 955 Vector upDir = Vector(0.0,1.0,0.0); 956 Vector position = worldEntity->getAbsCoor(); 957 958 bool SolidFlag = false; 971 959 bool collision = false; 972 960 Vector position1 = position; 973 961 Vector position2 = position + Vector(0.0,1.0,0.0); 962 Vector dest = worldEntity->getAbsCoor() - upDir*40.0f; // 974 963 Vector dest1 = position + forwardDir*4.0f; 975 964 Vector dest2 = position2 + forwardDir; 976 965 dest = position - Vector(0.0, 40.0,0.0); 966 Vector out = dest; 977 967 Vector out1; 978 968 Vector out2; 979 969 980 970 981 971 982 972 float height = 40; 983 984 985 if( box != NULL) 986 { 973 974 975 if( box != NULL) { 987 976 position = worldEntity->getAbsCoor() + box->center; // + box->axis[1] * box->halfLength[1]; 988 977 dest = worldEntity->getAbsCoor() + box->center - box->axis[1] * box->halfLength[1] * 40.0; 989 978 990 979 position1 = worldEntity->getAbsCoor() + box->center + box->axis[0] * box->halfLength[0] * 2.0f; 991 980 dest1 = worldEntity->getAbsCoor() + box->center - box->axis[0] * box->halfLength[0] *2.0f; 992 993 981 982 994 983 position2 = worldEntity->getAbsCoor() + box->center + box->axis[2] * box->halfLength[2] * 2.0f; 995 984 dest2 = worldEntity->getAbsCoor() + box->center - box->axis[2] * box->halfLength[2] * 2.0f; 996 997 } 998 else 999 { 1000 1001 } 1002 1003 1004 1005 // 985 986 } else { 987 // Init positions and destinations to anything useful! 988 989 } 990 991 992 993 // 1st Ray 1006 994 this->inputStart = position; 1007 995 this->inputEnd = dest; … … 1025 1013 this->collPlane->z = 0.0f; 1026 1014 collision = true; 1027 } else 1015 SolidFlag = true; 1016 } else 1028 1017 collision = false; 1029 1030 1031 1032 1018 1019 1020 out = dest; 1021 1033 1022 } else { 1034 1023 collision = true; … … 1046 1035 plane* testPlane = this->collPlane; 1047 1036 1048 1049 // 2nd Collision Detection 1050 this->outputStartsOut = true; 1051 this->outputAllSolid = false; 1052 this->outputFraction = 1.0f; 1053 this->inputStart = position1; 1054 this->inputEnd = dest1; 1055 this->checkCollisionRayN(this->root,0.0f,1.0f, &position1, &dest1 ); 1056 out.x = this->outputFraction; 1057 //out.z = this->outputFraction; 1058 1059 1060 // 3rd Collision Detection 1061 this->outputStartsOut = true; 1062 this->outputAllSolid = false; 1063 this->outputFraction = 1.0f; 1064 this->inputStart = position2; 1065 this->inputEnd = dest2; 1066 this->checkCollisionRayN(this->root,0.0f,1.0f, &position2, &dest2 ); 1067 //out.x = this->outputFraction; 1068 out.z = this->outputFraction; 1069 1070 1037 1038 bool xCollision = false; 1039 bool zCollision = false; 1040 if(!SolidFlag) { 1041 1042 // 2nd Collision Detection 1043 this->outputStartsOut = true; 1044 this->outputAllSolid = false; 1045 this->outputFraction = 1.0f; 1046 this->inputStart = position1; 1047 this->inputEnd = dest1; 1048 this->checkCollisionRayN(this->root,0.0f,1.0f, &position1, &dest1 ); 1049 1050 if(!this->outputAllSolid != 1.0f) { 1051 out.x = dest1.x + (dest1.x -position1.x) * this->outputFraction; 1052 xCollision = true; 1053 testPlane = this->collPlane; 1054 } 1055 if(this->outputAllSolid) { 1056 SolidFlag = true; 1057 xCollision = true; 1058 } 1059 //out.z = this->outputFraction; 1060 1061 if(!SolidFlag) { 1062 1063 // 3rd Collision Detection 1064 this->outputStartsOut = true; 1065 this->outputAllSolid = false; 1066 this->outputFraction = 1.0f; 1067 this->inputStart = position2; 1068 this->inputEnd = dest2; 1069 this->checkCollisionRayN(this->root,0.0f,1.0f, &position2, &dest2 ); 1070 //out.x = this->outputFraction; 1071 1072 if(this->outputFraction != 1.0f ) { 1073 out.z = out.z = dest2.z + (dest2.z -position2.z) * this->outputFraction; 1074 zCollision = true; 1075 testPlane = this->collPlane; 1076 1077 } 1078 if(this->outputAllSolid) { 1079 SolidFlag = true; 1080 zCollision = true; 1081 } 1082 } 1083 }//end if 1071 1084 /* 1072 1085 This is how you would calculate the Coordinates where worldEntity Collided with the BSP world. … … 1077 1090 1078 1091 // Return the normal here: Normal's stored in this->collPlane; 1079 if( collision) 1080 { 1092 if( collision) { 1081 1093 PRINTF(5)("We got a collision!! Are you sure: outputFraction = %f\n", this->outputFraction); 1082 worldEntity->registerCollision(this->parent, worldEntity, Vector(testPlane->x, testPlane->y, testPlane->z), out); 1083 } 1084 else worldEntity->registerCollision(this->parent, worldEntity, Vector(0.0, 2.0, 0.0), dest); 1094 worldEntity->registerCollision(COLLISION_TYPE_AXIS_Y || (xCollision ? COLLISION_TYPE_AXIS_X :0) | (zCollision ? COLLISION_TYPE_AXIS_Z :0), this->parent, worldEntity, Vector(testPlane->x, testPlane->y, testPlane->z), out, SolidFlag); 1095 } else { 1096 if(xCollision || zCollision) { 1097 1098 worldEntity->registerCollision((xCollision ? COLLISION_TYPE_AXIS_X :0) | (zCollision ? COLLISION_TYPE_AXIS_Z :0) , this->parent, worldEntity, Vector(testPlane->x, testPlane->y, testPlane->z), out, SolidFlag); 1099 } 1100 1101 } 1102 //else worldEntity->registerCollision(COLLISION_TYPE_AXIS_Y, this->parent, worldEntity, Vector(0.0, 2.0, 0.0), dest, false); 1085 1103 1086 1104 } -
trunk/src/lib/graphics/importer/interactive_model.h
r8724 r8894 37 37 38 38 virtual void setAnimation(int animNum, int playbackMode = 0) = 0; 39 virtual void setAnimation(int firstFrame, int lastFrame, int fps, int bStoppable, int animPlayback) {} 39 40 virtual int getAnimation() = 0; 41 42 virtual void setAnimationSpeed(float speed) {} 40 43 }; 41 44 -
trunk/src/lib/graphics/importer/md2/md2Model.cc
r8490 r8894 103 103 this->pModelInfo.pTexCoor = (float*)this->data->pTexCoor; 104 104 105 this->animationSpeed = 1.0f; 106 105 107 // triangle conversion 106 108 this->pModelInfo.pTriangles = new sTriangleExt[this->data->numTriangles]; … … 159 161 160 162 /** 163 * sets the animation type 164 * @param firstFrame: index of the first frame 165 * @param lastFrame: index of the last frame 166 * @param fps: frames per second 167 * @param bStoppable: is 1 if so, 0 else 168 */ 169 void MD2Model::setAnimation(int firstFrame, int lastFrame, int fps, int bStoppable, int animPlayback) 170 { 171 this->animationState.startFrame = firstFrame; 172 this->animationState.endFrame = lastFrame; 173 this->animationState.nextFrame = firstFrame + 1; 174 this->animationState.fps = fps; 175 this->animationState.type = 0; 176 this->animationState.numPlays = 0; 177 this->animationState.animPlaybackMode = animPlayback; 178 179 this->animationState.interpolationState = 0.0f; 180 this->animationState.localTime = 0.0f; 181 this->animationState.lastTime = 0.0f; 182 this->animationState.currentFrame = firstFrame; 183 } 184 185 /** 161 186 \brief sets the animation type 162 187 * @param type: animation type … … 196 221 void MD2Model::tick(float time) 197 222 { 198 this->animate(time );223 this->animate(time * this->animationSpeed); 199 224 this->processLighting(); 200 225 this->interpolate(/*this->verticesList*/); -
trunk/src/lib/graphics/importer/md2/md2Model.h
r8724 r8894 69 69 70 70 //! animation names enumeration 71 typedef enum animType71 typedef enum MD2animType 72 72 { 73 73 STAND, //0 … … 156 156 void renderFrameTriangles() const; 157 157 158 159 158 virtual void setAnimation(int type, int animPlayback = MD2_ANIM_LOOP); 159 virtual void setAnimation(int firstFrame, int lastFrame, int fps, int bStoppable, int animPlayback); 160 160 /** returns the current animation @returns animation type */ 161 161 inline int MD2Model::getAnimation() { return this->animationState.type; } 162 virtual void setAnimationSpeed(float speed) { this->animationSpeed = speed; } 162 163 /** scales the current model @param scaleFactor: the factor [0..1] to use for scaling */ 163 164 void scaleModel(float scaleFactor) { this->scaleFactor = scaleFactor;} … … 186 187 private: 187 188 float scaleFactor; //!< the scale factor (individual) 189 float animationSpeed; //!< the speed of the animation (factor for the time) 188 190 sAnimState animationState; //!< animation state of the model 189 191 sVec3D verticesList[MD2_MAX_VERTICES]; //!< place to temp sav the vert
Note: See TracChangeset
for help on using the changeset viewer.