Changeset 8894 in orxonox.OLD for trunk/src/lib
- Timestamp:
- Jun 29, 2006, 12:19:48 AM (18 years ago)
- Location:
- trunk/src/lib
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/collision_detection/cd_engine.cc
r8490 r8894 84 84 if( likely((*entity2) != this->terrain)) 85 85 { 86 PRINTF( 4)("checking object %s against %s\n", (*entity1)->getName(), (*entity2)->getName());86 PRINTF(5)("checking object %s (%s) against %s (%s)\n", (*entity1)->getClassName(), (*entity1)->getName(), (*entity2)->getClassName(), (*entity2)->getName()); 87 87 tree = (*entity1)->getOBBTree(); 88 88 if( likely(tree != NULL) && (*entity2)->getOBBTree() != NULL) -
trunk/src/lib/collision_reaction/collision_event.h
r8490 r8894 9 9 #include "vector.h" 10 10 11 #include "cr_defs.h" 12 13 11 14 class WorldEntity; 12 15 class BoundingVolume; 13 16 class Plane; 17 14 18 15 19 … … 22 26 23 27 /** collides two WorldEntities @param entityA world entity A, @param entityB world entity B, @param bvA volume A @param bvB volumeB */ 24 inline void collide( WorldEntity* entityA, WorldEntity* entityB, BoundingVolume* bvA, BoundingVolume* bvB)25 { this-> entityA = entityA; this->entityB = entityB; this->bvA = bvA; this->bvB = bvB; }28 inline void collide(int type, WorldEntity* entityA, WorldEntity* entityB, BoundingVolume* bvA, BoundingVolume* bvB) 29 { this->collisionType = type; this->entityA = entityA; this->entityB = entityB; this->bvA = bvA; this->bvB = bvB; } 26 30 /** collides two WorldEntities @param entity world entity , @param ground ground plane, @param position position on the ground */ 27 inline void collide( WorldEntity* entity, WorldEntity* groundEntity, Vector normal, Vector position)28 { this-> entityA = entity; this->entityB = groundEntity, this->groundNormal = normal; this->position = position; }31 inline void collide(int type, WorldEntity* entity, WorldEntity* groundEntity, Vector normal, Vector position, bool bInWall) 32 { this->collisionType = type; this->entityA = entity; this->entityB = groundEntity, this->groundNormal = normal; this->position = position; this->bInWall = bInWall; } 29 33 30 34 … … 44 48 inline Vector getCollisionPosition() { return this->position; } 45 49 50 /** @return the type of the collision */ 51 inline int getType() { return this->collisionType; } 52 53 /** @return true if the entity is in the wall */ 54 inline bool isInWall() { return this->bInWall; } 55 56 46 57 private: 47 58 WorldEntity* entityA; //!< the collision body A … … 53 64 Vector groundNormal; //!< the ground plane with which it collides (only for bsp-model collisions 54 65 Vector position; //!< position of the collision on the ground plane 66 67 bool bInWall; //!< true if is in wall 68 int collisionType; //!< collision type 55 69 }; 56 70 -
trunk/src/lib/collision_reaction/cr_defs.h
r8190 r8894 28 28 29 29 30 //!< the collision axis x collision event 31 #define COLLISION_TYPE_AXIS_X 1 32 //!< the collision axis y collision event 33 #define COLLISION_TYPE_AXIS_Y 2 34 //!< the collision axis z collision event 35 #define COLLISION_TYPE_AXIS_Z 4 36 //!< the collision is a obb collision 37 #define COLLISION_TYPE_OBB 8 38 30 39 31 40 #endif /* _NETWORK_MANAGER */ -
trunk/src/lib/collision_reaction/cr_physics_ground_walk.cc
r8796 r8894 1 1 /* 2 2 orxonox - the future of 3D-vertical-scrollers 3 3 4 4 Copyright (C) 2004 orx 5 5 6 6 This program is free software; you can redistribute it and/or modify 7 7 it under the terms of the GNU General Public License as published by 8 8 the Free Software Foundation; either version 2, or (at your option) 9 9 any later version. 10 10 11 11 ### File Specific: 12 12 main-programmer: Patrick Boenzli … … 26 26 #include <vector> 27 27 28 #include "debug.h" 29 28 30 #include "aabb.h" 31 32 #include "cr_defs.h" 29 33 30 34 using namespace std; … … 64 68 // collision->getEntityB()->getAbsCoor().debug(); 65 69 66 Vectorheight;70 float height; 67 71 AABB* box = collision->getEntityB()->getModelAABB(); 68 69 70 71 if(box!=NULL) 72 WorldEntity* entity = collision->getEntityB(); 73 74 // collision position maths 75 Vector collPos = collision->getEntityB()->getAbsCoor() + box->center - ce->getCollisionPosition(); 76 77 float CR_MAX_WALK_HEIGHT = 2.0f; 78 float CR_THRESHOLD = 0.2f; 79 80 if( box == NULL) 81 { 82 PRINTF(2)("this model has no aabb box so there is no correct collision reaction implemented. skipping\n"); 83 return; 84 } 85 86 87 switch( ce->getType()) 88 { 89 case COLLISION_TYPE_AXIS_Y: 90 91 height = collPos.y - box->halfLength[1]; 92 // PRINTF(0)("height: %f , model height: %f\n", height, box->halfLength[1]); 93 // PRINTF(0)(" ground normal: %f, %f, %f\n", normal.x, normal.y, normal.z); 94 95 // object is beneath the plane (ground) 96 if( height <= 0.0f ) 97 { 98 entity->shiftCoor(Vector(0, -height, 0)); 99 } 100 // object is already in the wall 101 else if( ce->isInWall()) 102 { 103 entity->setAbsCoor(entity->getLastAbsCoor()); 104 } 105 break; 106 107 108 case COLLISION_TYPE_AXIS_X: 109 case COLLISION_TYPE_AXIS_Z: 110 break; 111 112 } 113 114 115 116 117 118 119 120 121 #if 0 122 if( box != NULL) 72 123 height = ( ce->getCollisionPosition() - collision->getEntityB()->getAbsCoor() )*(-1.0f) ; 73 124 else 74 125 height = ce->getCollisionPosition() - collision->getEntityB()->getAbsCoor() ; 75 126 76 if(box!=NULL) { 127 128 if( box != NULL) { 77 129 78 130 … … 90 142 return; 91 143 } 92 93 144 145 94 146 if(ce->getGroundNormal().len() >= 1.4f) { 95 147 downspeed++; … … 101 153 if(height.y > box->halfLength[1] + 0.0f ) // Above ground 102 154 { 103 if(height.y < box->halfLength[1] + 1.3f) // Snap in155 if(height.y < box->halfLength[1] + 2.3f) // Snap in 104 156 { 105 157 downspeed = 0; … … 116 168 { 117 169 //if(downspeed <= 0) downspeed =1; 118 collision->getEntityB()->setAbsCoor(collision->getEntityB()->getAbsCoor() + Vector(0.0, -height.y + box->halfLength[1] + 2.0f /* 0.00001 *//*height.y+3.500005 + 10.0*/,0.0));170 collision->getEntityB()->setAbsCoor(collision->getEntityB()->getAbsCoor() + Vector(0.0, -height.y + box->halfLength[1] + 2.0f,0.0)); 119 171 //collision->getEntityB()->setVelocity(Vector(0.0,0.0,0.0)); 120 172 downspeed = 0; … … 124 176 125 177 }// if(box!= NULL) 178 #endif 126 179 /* 127 180 PRINTF(0)("Collision with Ground: \n"); … … 131 184 132 185 */ 186 133 187 } 134 188 … … 141 195 void CRPhysicsGroundWalk::update(WorldEntity* owner) 142 196 { 143 for( int i = 9; i > 0; i--) { 144 this->lastPositions[i] = this->lastPositions[i-1]; 145 // PRINTF(0)("lastPosition[%i]: %f, %f, %f\n", i, lastPositions[i].x, lastPositions[i].y, lastPositions[i].z); 146 } 147 this->lastPositions[0] = owner->getAbsCoor(); 197 148 198 } 149 199 -
trunk/src/lib/collision_reaction/cr_physics_ground_walk.h
r8724 r8894 23 23 virtual void update(WorldEntity* entity); 24 24 25 25 26 private: 26 Vector lastPosition; //!< vector with the last valid position27 Vector afterLastPosition; //!< vector for the after last28 Quaternion lastDirection; //!< quat with the last valid direction29 30 Vector lastPositions[10]; //!< last 10 positions31 27 float downspeed; 32 28 }; -
trunk/src/lib/event/event_handler.cc
r8743 r8894 357 357 else 358 358 { 359 SDL_WM_GrabInput(SDL_GRAB_ON);360 SDL_ShowCursor(SDL_DISABLE);359 // SDL_WM_GrabInput(SDL_GRAB_ON); 360 // SDL_ShowCursor(SDL_DISABLE); 361 361 } 362 362 } -
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 -
trunk/src/lib/math/quaternion.h
r8802 r8894 51 51 inline bool operator== (const Quaternion& q) const { return (unlikely(this->v==q.v&&this->w==q.w))?true:false; }; 52 52 /** @param q: the Quaternion to compare with this one. @returns true if the Quaternions are the same, false otherwise */ 53 inline bool operator!= (const Quaternion& q) const { return (unlikely(this->v!=q.v &&this->w!=q.w))?true:false; };53 inline bool operator!= (const Quaternion& q) const { return (unlikely(this->v!=q.v||this->w!=q.w))?true:false; }; 54 54 /** @param f: a real value @return a Quaternion containing the quotient */ 55 55 inline Quaternion operator/ (const float& f) const { return (unlikely(f==0.0)) ? Quaternion() : Quaternion(this->v/f, this->w/f); }; -
trunk/src/lib/math/vector.h
r8490 r8894 47 47 inline bool operator== (const Vector& v) const { return (this->x==v.x&&this->y==v.y&&this->z==v.z)?true:false; }; 48 48 /** @param v: the Vecor to compare with this one @returns true, if the Vecors are different, false otherwise */ 49 inline bool operator!= (const Vector& v) const { return (this->x!=v.x &&this->y!=v.y&&this->z!=v.z)?true:false; };49 inline bool operator!= (const Vector& v) const { return (this->x!=v.x||this->y!=v.y||this->z!=v.z)?true:false; }; 50 50 /** @param index The index of the "array" @returns the x/y/z coordinate */ 51 51 inline float operator[] (float index) const {if( index == 0) return this->x; if( index == 1) return this->y; if( index == 2) return this->z; } -
trunk/src/lib/script_engine/script_manager.h
r8711 r8894 1 1 /*! 2 * @file scrip _manager.h2 * @file script_manager.h 3 3 * manages the scripts 4 4 */ -
trunk/src/lib/shell/shell_command.cc
r8350 r8894 373 373 else 374 374 { 375 delete this->completors[parameter]; 375 if(this->completors[parameter] == NULL) 376 //delete this->completors[parameter]; 376 377 this->completors[parameter] = completorPlugin.clone(); 377 378 } -
trunk/src/lib/util/executor/executor.cc
r7742 r8894 31 31 const MultiType& param2, 32 32 const MultiType& param3, 33 const MultiType& param4) 33 const MultiType& param4, 34 const MultiType& param5, 35 const MultiType& param6) 34 36 { 35 37 this->setClassID(CL_EXECUTOR, "Executor"); … … 41 43 this->defaultValue[3] = param3; 42 44 this->defaultValue[4] = param4; 45 this->defaultValue[5] = param5; 46 this->defaultValue[6] = param6; 43 47 44 48 this->paramCount = 0; … … 83 87 const MultiType& value2, 84 88 const MultiType& value3, 85 const MultiType& value4) 89 const MultiType& value4, 90 const MultiType& value5, 91 const MultiType& value6) 86 92 { 87 93 if (this == NULL) … … 94 100 value[3] = &value3; 95 101 value[4] = &value4; 96 102 value[5] = &value5; 103 value[6] = &value6; 97 104 for (unsigned int i = 0; i < this->paramCount; i++) 98 105 { -
trunk/src/lib/util/executor/executor.h
r8408 r8894 47 47 Executor* defaultValues(const MultiType& value0 = MT_NULL, const MultiType& value1 = MT_NULL, 48 48 const MultiType& value2 = MT_NULL, const MultiType& value3 = MT_NULL, 49 const MultiType& value4 = MT_NULL); 49 const MultiType& value4 = MT_NULL, const MultiType& param5 = MT_NULL, 50 const MultiType& param6 = MT_NULL); 50 51 /** @param i the i'th defaultValue, @returns reference to the MultiType */ 51 52 inline MultiType& getDefaultValue(unsigned int i) { return defaultValue[i]; }; … … 68 69 Executor(const MultiType& param0 = MT_NULL, const MultiType& param1 = MT_NULL, 69 70 const MultiType& param2 = MT_NULL, const MultiType& param3 = MT_NULL, 70 const MultiType& param4 = MT_NULL); 71 const MultiType& param4 = MT_NULL, const MultiType& param5 = MT_NULL, 72 const MultiType& param6 = MT_NULL); 71 73 72 74 void cloning(Executor* executor) const; … … 75 77 short functorType; //!< The type of Function we've got (either static or objective). 76 78 unsigned int paramCount; //!< the count of parameters. 77 MultiType defaultValue[ 5]; //!< Default Values.79 MultiType defaultValue[7]; //!< Default Values. 78 80 }; 79 81 -
trunk/src/lib/util/executor/executor_functional.cc
r8408 r8894 15 15 16 16 #include "executor.h" 17 std::string ExecutorFunctional_returningString_from[ 5];17 std::string ExecutorFunctional_returningString_from[7]; 18 18 19 19 -
trunk/src/lib/util/executor/executor_lua.cc
r8527 r8894 20 20 #include "lunar.h" 21 21 22 std::string temp[ 5];22 std::string temp[7]; 23 23 24 24 template<typename type> type fromLua(lua_State* state, int index) { type *obj = Lunar<type>::check(state, 1); lua_remove(state, 1); return obj;}; -
trunk/src/lib/util/executor/executor_lua.h
r8711 r8894 233 233 234 234 235 /////////// 236 //// 4 //// 237 /////////// 238 //! Executes a Function with a lua_State* parameter. 239 template<class T, typename type0, typename type1, typename type2, typename type3> class ExecutorLua4 : public Executor 240 { 241 public: 242 /** 243 * @brief Constructor of a ExecutorXML 244 * @param function a Function to call 245 */ 246 ExecutorLua4(void(T::*function)(type0, type1, type2, type3)) 247 : Executor(ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), ExecutorParamType<type3>()) 248 { 249 this->functionPointer = function; 250 this->functorType = Executor_Objective | Executor_NoLoadString; 251 } 252 253 /** 254 * @brief executes the Command on BaseObject 255 * @param object the BaseObject to execute this Executor on 256 * @param loadString ignored in this case 257 */ 258 virtual void operator()(BaseObject* object, const SubString& = SubString()) const 259 { 260 PRINTF(1)("no usefull executor\n"); 261 } 262 263 virtual void operator()(BaseObject* object, int& count, void* values) const 264 { 265 lua_State* state = (lua_State*)values; 266 count = 0; 267 268 (dynamic_cast<T*>(object)->*(functionPointer))( 269 fromLua<type0>(state, 1), 270 fromLua<type1>(state, 2), 271 fromLua<type2>(state, 3), 272 fromLua<type3>(state, 4) ); 273 } 274 275 /** 276 * @returns a _new_ Copy of this Executor 277 */ 278 virtual Executor* clone () const 279 { 280 return new ExecutorLua4<T, type0, type1, type2, type3>(this->functionPointer); 281 } 282 private: 283 void (T::*functionPointer)(type0, type1, type2, type3); 284 }; 235 285 236 286 … … 388 438 }; 389 439 440 441 /////////// 442 //// 3 //// 443 /////////// 444 //! Executes a Function with a lua_State* parameter. 445 template<class T, typename ret, typename type0, typename type1, typename type2> class ExecutorLua3ret : public Executor 446 { 447 public: 448 /** 449 * @brief Constructor of a ExecutorXML 450 * @param function a Function to call 451 */ 452 ExecutorLua3ret(ret (T::*function)(type0, type1, type2)) 453 : Executor(ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>()) 454 { 455 this->functionPointer = function; 456 this->functorType = Executor_Objective | Executor_NoLoadString; 457 } 458 459 /** 460 * @brief executes the Command on BaseObject 461 * @param object the BaseObject to execute this Executor on 462 * @param loadString ignored in this case 463 */ 464 virtual void operator()(BaseObject* object, const SubString& = SubString()) const 465 { 466 PRINTF(1)("no usefull executor\n"); 467 } 468 469 virtual void operator()(BaseObject* object, int& count, void* values) const 470 { 471 lua_State* state = (lua_State*)values; 472 count = 1; 473 474 toLua<ret>(state, (dynamic_cast<T*>(object)->*(functionPointer))( 475 fromLua<type0>(state, 1), 476 fromLua<type1>(state, 2), 477 fromLua<type2>(state, 3) )); 478 } 479 480 /** 481 * @returns a _new_ Copy of this Executor 482 */ 483 virtual Executor* clone () const 484 { 485 return new ExecutorLua3ret<T, ret, type0, type1, type2>(this->functionPointer); 486 } 487 private: 488 ret (T::*functionPointer)(type0, type1, type2); 489 }; 490 491 492 /////////// 493 //// 4 //// 494 /////////// 495 //! Executes a Function with a lua_State* parameter. 496 template<class T, typename ret, typename type0, typename type1, typename type2, typename type3> class ExecutorLua4ret : public Executor 497 { 498 public: 499 /** 500 * @brief Constructor of a ExecutorXML 501 * @param function a Function to call 502 */ 503 ExecutorLua4ret(ret (T::*function)(type0, type1, type2, type3)) 504 : Executor(ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), ExecutorParamType<type3>()) 505 { 506 this->functionPointer = function; 507 this->functorType = Executor_Objective | Executor_NoLoadString; 508 } 509 510 /** 511 * @brief executes the Command on BaseObject 512 * @param object the BaseObject to execute this Executor on 513 * @param loadString ignored in this case 514 */ 515 virtual void operator()(BaseObject* object, const SubString& = SubString()) const 516 { 517 PRINTF(1)("no usefull executor\n"); 518 } 519 520 virtual void operator()(BaseObject* object, int& count, void* values) const 521 { 522 lua_State* state = (lua_State*)values; 523 count = 1; 524 525 toLua<ret>(state, (dynamic_cast<T*>(object)->*(functionPointer))( 526 fromLua<type0>(state, 1), 527 fromLua<type1>(state, 2), 528 fromLua<type2>(state, 3), 529 fromLua<type3>(state, 4) )); 530 } 531 532 /** 533 * @returns a _new_ Copy of this Executor 534 */ 535 virtual Executor* clone () const 536 { 537 return new ExecutorLua4ret<T, ret, type0, type1, type2, type3>(this->functionPointer); 538 } 539 private: 540 ret (T::*functionPointer)(type0, type1, type2, type3); 541 }; 542 543 /////////// 544 //// 5 //// 545 /////////// 546 //! Executes a Function with a lua_State* parameter. 547 template<class T, typename ret, typename type0, typename type1, typename type2, typename type3, typename type4> class ExecutorLua5ret : public Executor 548 { 549 public: 550 /** 551 * @brief Constructor of a ExecutorXML 552 * @param function a Function to call 553 */ 554 ExecutorLua5ret(ret (T::*function)(type0, type1, type2, type3, type4)) 555 : Executor(ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), ExecutorParamType<type3>(), ExecutorParamType<type4>()) 556 { 557 this->functionPointer = function; 558 this->functorType = Executor_Objective | Executor_NoLoadString; 559 } 560 561 /** 562 * @brief executes the Command on BaseObject 563 * @param object the BaseObject to execute this Executor on 564 * @param loadString ignored in this case 565 */ 566 virtual void operator()(BaseObject* object, const SubString& = SubString()) const 567 { 568 PRINTF(1)("no usefull executor\n"); 569 } 570 571 virtual void operator()(BaseObject* object, int& count, void* values) const 572 { 573 lua_State* state = (lua_State*)values; 574 count = 1; 575 576 toLua<ret>(state, (dynamic_cast<T*>(object)->*(functionPointer))( 577 fromLua<type0>(state, 1), 578 fromLua<type1>(state, 2), 579 fromLua<type2>(state, 3), 580 fromLua<type3>(state, 4), 581 fromLua<type4>(state, 5) )); 582 } 583 584 /** 585 * @returns a _new_ Copy of this Executor 586 */ 587 virtual Executor* clone () const 588 { 589 return new ExecutorLua5ret<T, ret, type0, type1, type2, type3, type4>(this->functionPointer); 590 } 591 private: 592 ret (T::*functionPointer)(type0, type1, type2, type3, type4); 593 }; 594 595 /////////// 596 //// 6 //// 597 /////////// 598 //! Executes a Function with a lua_State* parameter. 599 template<class T, typename ret, typename type0, typename type1, typename type2, typename type3, typename type4, typename type5> class ExecutorLua6ret : public Executor 600 { 601 public: 602 /** 603 * @brief Constructor of a ExecutorXML 604 * @param function a Function to call 605 */ 606 ExecutorLua6ret(ret (T::*function)(type0, type1, type2, type3, type4, type5)) 607 : Executor(ExecutorParamType<type0>(), ExecutorParamType<type1>(), 608 ExecutorParamType<type2>(), ExecutorParamType<type3>(), 609 ExecutorParamType<type4>(), ExecutorParamType<type5>()) 610 { 611 this->functionPointer = function; 612 this->functorType = Executor_Objective | Executor_NoLoadString; 613 } 614 615 /** 616 * @brief executes the Command on BaseObject 617 * @param object the BaseObject to execute this Executor on 618 * @param loadString ignored in this case 619 */ 620 virtual void operator()(BaseObject* object, const SubString& = SubString()) const 621 { 622 PRINTF(1)("no usefull executor\n"); 623 } 624 625 virtual void operator()(BaseObject* object, int& count, void* values) const 626 { 627 lua_State* state = (lua_State*)values; 628 count = 1; 629 630 toLua<ret>(state, (dynamic_cast<T*>(object)->*(functionPointer))( 631 fromLua<type0>(state, 1), 632 fromLua<type1>(state, 2), 633 fromLua<type2>(state, 3), 634 fromLua<type3>(state, 4), 635 fromLua<type4>(state, 5), 636 fromLua<type5>(state, 6) )); 637 } 638 639 /** 640 * @returns a _new_ Copy of this Executor 641 */ 642 virtual Executor* clone () const 643 { 644 return new ExecutorLua6ret<T, ret, type0, type1, type2, type3, type4, type5>(this->functionPointer); 645 } 646 private: 647 ret (T::*functionPointer)(type0, type1, type2, type3, type4, type5); 648 }; 649 650 /////////// 651 //// 7 //// 652 /////////// 653 //! Executes a Function with a lua_State* parameter. 654 template<class T, typename ret, typename type0, typename type1, typename type2, typename type3, typename type4, typename type5, typename type6> class ExecutorLua7ret : public Executor 655 { 656 public: 657 /** 658 * @brief Constructor of a ExecutorXML 659 * @param function a Function to call 660 */ 661 ExecutorLua7ret(ret (T::*function)(type0, type1, type2, type3, type4, type5, type6)) 662 : Executor(ExecutorParamType<type0>(), ExecutorParamType<type1>(), 663 ExecutorParamType<type2>(), ExecutorParamType<type3>(), 664 ExecutorParamType<type4>(), ExecutorParamType<type5>(), 665 ExecutorParamType<type6>()) 666 { 667 this->functionPointer = function; 668 this->functorType = Executor_Objective | Executor_NoLoadString; 669 } 670 671 /** 672 * @brief executes the Command on BaseObject 673 * @param object the BaseObject to execute this Executor on 674 * @param loadString ignored in this case 675 */ 676 virtual void operator()(BaseObject* object, const SubString& = SubString()) const 677 { 678 PRINTF(1)("no usefull executor\n"); 679 } 680 681 virtual void operator()(BaseObject* object, int& count, void* values) const 682 { 683 lua_State* state = (lua_State*)values; 684 count = 1; 685 686 toLua<ret>(state, (dynamic_cast<T*>(object)->*(functionPointer))( 687 fromLua<type0>(state, 1), 688 fromLua<type1>(state, 2), 689 fromLua<type2>(state, 3), 690 fromLua<type3>(state, 4), 691 fromLua<type4>(state, 5), 692 fromLua<type5>(state, 6), 693 fromLua<type6>(state, 7) )); 694 } 695 696 /** 697 * @returns a _new_ Copy of this Executor 698 */ 699 virtual Executor* clone () const 700 { 701 return new ExecutorLua7ret<T, ret, type0, type1, type2, type3, type4, type5, type6>(this->functionPointer); 702 } 703 private: 704 ret (T::*functionPointer)(type0, type1, type2, type3, type4, type5, type6); 705 }; 706 707 390 708 #endif /* _EXECUTOR_LUA_H */ -
trunk/src/lib/util/executor/functor_list.h
r8619 r8894 29 29 30 30 //! defines the maximum count of arguments function pointers might have 31 #define FUNCTOR_MAX_ARGUMENTS 531 #define FUNCTOR_MAX_ARGUMENTS 7 32 32 #include "multi_type.h" 33 33
Note: See TracChangeset
for help on using the changeset viewer.