- Timestamp:
- Jan 25, 2006, 9:29:45 PM (19 years ago)
- Location:
- trunk/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/network/converter.cc
r6634 r6737 88 88 * @remarks: The int is stored in big-endian 89 89 * @param x: The int which is to convert 90 * @return: A byte-array that accords the given int value90 * @return: The number of written bytes 91 91 */ 92 92 int Converter::intToByteArray(int x, byte* a, int length) … … 124 124 * Converts a byte-array into an int 125 125 * @param a: The byte-array which is to convert 126 * @return: An int that accords the given byte-array 126 * @param x: The place where the result is stored 127 * @return: The number of read bytes 127 128 */ 128 129 int Converter::byteArrayToInt(const byte* a, int* x) … … 150 151 /*! 151 152 * Converts a float into a string containing its binary representation 153 * @param x: The float which is to convert 154 * @return: A string containing the float's binary representation 152 155 */ 153 156 char* Converter::floatToBinString(float x) … … 331 334 * Converts a float value into a byte-array and stores the result into a given byte-array 332 335 * @param x: The float which is to convert 333 * @return: A byte-array which accords the given float 334 */ 335 int Converter::_floatToByteArray(float x, byte* a, int length) 336 * @param a: The byte array where the result is to store 337 * @param length: The length of the array a 338 * @return: The number of written bytes 339 */ 340 int Converter::floatToByteArray(float x, byte* a, int length) 336 341 { 337 342 if (length < FLOATSIZE) … … 398 403 399 404 400 if (mantisse != 0)401 {405 //if (mantisse != 0) 406 //{ 402 407 while (mantisse < expmult) 403 408 { … … 406 411 } 407 412 408 mantisse -= expmult; 409 } 413 if (exponent >= 0) 414 mantisse -= expmult; 415 else 416 { 417 //Denormalized 418 while (exponent < 0) 419 { 420 mantisse /= 2; 421 exponent++; 422 } 423 printf("Conv: Denorm"); 424 } 425 //} 410 426 } 411 427 … … 414 430 415 431 int hx = mantisse + expmult * exponent; 416 int result = intToByteArray(hx, a, length); 432 //int result = intToByteArray(hx, a, length); 433 intToByteArray(hx, a, length); 417 434 if (sgn == -1) 418 435 a[3] += sgnadd; … … 424 441 // result[3] += sgnadd; 425 442 426 return result; 443 //return result; 444 return FLOATSIZE; 427 445 } 428 446 … … 431 449 * Converts a byte-array into a float value 432 450 * @param a: The byte-array which is to convert 433 * @return: A float value which accords the given byte-array 434 */ 435 int Converter::_byteArrayToFloat(const byte* a, float* x) 451 * @param x: The place where the result is to store 452 * @return: The number of read bytes 453 */ 454 int Converter::byteArrayToFloat(const byte* a, float* x) 436 455 { 437 456 //handle 0 … … 459 478 return FLOATSIZE; 460 479 } 461 462 mantisse += expmult; 463 exponent -= 128; 464 480 else if (exponent == 0 && mantisse != 0) 481 { 482 exponent = -126; 483 printf("ReConv: Denorm"); 484 } 485 else 486 { 487 mantisse += expmult; 488 exponent -= 128; 489 } 465 490 466 491 int sgn; … … 498 523 * Converts a float value into a byte-array 499 524 * @param x: The float which is to convert 500 * @return: A byte-array which accords the given float 501 */ 502 int Converter::floatToByteArray(float x, byte* a, int length) 503 { 504 if ( length<4 ) 525 * @param a: The array where the result is to store 526 * @param length: The length of the array a 527 * @return: The number of written bytes 528 */ 529 int Converter::_floatToByteArray(float x, byte* a, int length) 530 { 531 if ( length< FLOATSIZE ) 505 532 { 506 533 PRINTF(1)("Byte Array to small\n"); … … 511 538 for (int i = 0; i < 4; i++) 512 539 a[i] = p[i]; 513 return 4; 540 541 return FLOATSIZE; 514 542 } 515 543 … … 518 546 * Converts a byte-array into a float value 519 547 * @param a: The byte-array which is to convert 520 * @return: A float value which accords the given byte-array 521 */ 522 int Converter::byteArrayToFloat(const byte* a, float* x) 548 * @param x: The place where the result is to store 549 * @return: The number of read bytes 550 */ 551 int Converter::_byteArrayToFloat(const byte* a, float* x) 523 552 { 524 553 *x = *((float*)a); 525 554 526 return 4; 527 } 555 return FLOATSIZE; 556 } 557 558 559 560 561 562 563 564 565 528 566 529 567 /** … … 627 665 } 628 666 667 void Converter::ArrayfloatTest(float x) 668 { 669 //float x = 8.0f; 670 //float x = numeric_limits<float>::infinity(); 671 672 printf("To Convert: %e\n", x); 673 byte* res = new byte[4]; 674 675 int wr = floatToByteArray(x, res, 4); 676 for (int i = 0; i < 4; i++) 677 printf("%i ", res[i]); 678 printf(" written bytes: %i \n", wr); 679 680 float y; 681 int rd = byteArrayToFloat(res, &y); 682 printf("ReConvert: %e\n", y); 683 printf("Read bytes: %i -> ", rd); 684 685 if (x == y) 686 printf("equal\n"); 687 else 688 printf("different\n"); 689 } 690 629 691 void Converter::debug() 630 692 { 631 693 printf("We rulez\n"); 632 694 633 //Denormalized? 634 //floatTest(-9.87624e-38f); 635 //floatTest(-9.87624e-37f); 636 //floatTest(-9.87624e-36f); 637 //floatTest(-9.87624e-35f); 638 639 /* 640 floatTest(14.7f); 641 floatTest(12.07e15f); 642 floatTest(0.0f); 643 floatTest(5.67e-15f); 644 */ 695 ArrayfloatTest(0.125f); 696 ArrayfloatTest(64.0f); 697 ArrayfloatTest(0.0f); 698 ArrayfloatTest(5.00091e-29f); 645 699 646 700 //floatTest(-18.0098f); … … 648 702 //floatTest(-0.0f); 649 703 //floatTest(-5.67e-29f); 650 floatTest(-45.7e-32f); 651 floatTest(45.7e-33f); 652 floatTest(-45.7e-34f); 653 floatTest(45.7e-35f); 654 } 704 705 706 //floatTest(-45.7e-32f); 707 //floatTest(45.7e-33f); 708 //floatTest(-45.7e-34f); 709 //floatTest(45.7e-35f); 710 } -
trunk/src/lib/network/converter.h
r6634 r6737 50 50 static void debug(); 51 51 static void floatTest(float x); 52 static void ArrayfloatTest(float x); 52 53 static float getDenormConst(); 53 54 -
trunk/src/lib/network/network_game_manager.cc
r6695 r6737 32 32 #include "network_manager.h" 33 33 34 #include "class_list.h" 34 35 35 36 /* include your own header */ … … 462 463 463 464 465 466 bool NetworkGameManager::signalLeftPlayer(int userID) 467 { 468 const std::list<BaseObject*>* playableList = ClassList::getList(CL_PLAYABLE); 469 std::list<BaseObject*>::const_iterator it = playableList->begin(); 470 471 for(; it != playableList->end(); it++) 472 { 473 if( dynamic_cast<Synchronizeable*>(*it)->getOwner() == userID ) 474 { 475 PRINTF(0)("remove playable from %i\n", userID); 476 this->removeEntity(dynamic_cast<Synchronizeable*>(*it)->getUniqueID()); 477 return true; 478 } 479 } 480 return false; 481 } 482 483 464 484 /** 465 485 * Creates a buffer for user n … … 527 547 PNode *p = dynamic_cast<PNode*>(b); 528 548 p->setAbsCoor(pos); 529 //p->updateNode(0);549 p->updateNode(0); 530 550 pos += Vector(1000.0, 1000.0, 1000.0); 531 551 } -
trunk/src/lib/network/network_game_manager.h
r6695 r6737 95 95 void sendEntityList(int userID); 96 96 97 bool signalNewPlayer(int userId); 98 bool signalLeftPlayer(int userID); 99 97 100 98 101 private: … … 133 136 bool canCreateEntity(ClassID classID); 134 137 135 bool signalNewPlayer(int userId);136 137 138 void resizeBufferVector(int n); 138 139 -
trunk/src/lib/network/network_stream.cc
r6695 r6737 390 390 handshakes[i] = NULL; 391 391 392 393 NetworkGameManager::getInstance()->signalLeftPlayer(i); 394 392 395 if ( i == networkSockets.size()-1 ) 393 396 { -
trunk/src/world_entities/space_ships/space_ship.cc
r6724 r6737 289 289 this->weaponAction(); 290 290 291 if( xMouse != 0 || yMouse != 0)291 if( ( xMouse != 0 || yMouse != 0 ) && this->getOwner()==this->getHostID() ) 292 292 { 293 293 if (xMouse > controlVelocityX) xMouse = controlVelocityX; … … 532 532 533 533 byte b; 534 SYNCHELP_READ_BYTE( b ); 535 536 if ( b == DATA_state /*&& (this->getHostID()!=this->getOwner() || sender==0)*/ ) 537 { 538 PRINTF(0)("GOT STATE %d\n", this->getUniqueID()); 539 setRequestedSync( false ); 540 setIsOutOfSync( false ); 541 SYNCHELP_READ_FKT( WorldEntity::writeState ); 542 //SYNCHELP_READ_FLOAT( cycle ); 543 544 return SYNCHELP_READ_N; 545 } 546 547 548 if ( b == DATA_flags /*&& this->getHostID()!=this->getOwner()*/ ) 549 { 550 int flags = 0; 551 SYNCHELP_READ_INT( flags ); 552 553 bUp = (flags & MASK_bUp) != 0; 554 bDown = (flags & MASK_bDown) != 0; 555 bLeft = (flags & MASK_bLeft) != 0; 556 bRight = (flags & MASK_bRight) != 0; 557 bAscend = (flags & MASK_bAscend) != 0; 558 bDescend = (flags & MASK_bDescend) != 0; 559 bFire = (flags & MASK_bFire) != 0; 560 bRollL = (flags & MASK_bRollL) != 0; 561 bRollR = (flags & MASK_bRollR) != 0; 562 563 } 534 535 do 536 { 537 SYNCHELP_READ_BYTE( b ); 538 539 if ( b == DATA_state /*&& (this->getHostID()!=this->getOwner() || sender==0)*/ ) 540 { 541 PRINTF(0)("GOT STATE %d\n", this->getUniqueID()); 542 setRequestedSync( false ); 543 setIsOutOfSync( false ); 544 SYNCHELP_READ_FKT( WorldEntity::writeState ); 545 //SYNCHELP_READ_FLOAT( cycle ); 546 547 return SYNCHELP_READ_N; 548 } 549 550 551 //TODO: do not recieve data if you are the owner 552 if ( b == DATA_flags /*&& this->getHostID()!=this->getOwner()*/ ) 553 { 554 int flags = 0; 555 SYNCHELP_READ_INT( flags ); 556 557 //bUp = (flags & MASK_bUp) != 0; 558 //bDown = (flags & MASK_bDown) != 0; 559 //bLeft = (flags & MASK_bLeft) != 0; 560 //bRight = (flags & MASK_bRight) != 0; 561 //bAscend = (flags & MASK_bAscend) != 0; 562 //bDescend = (flags & MASK_bDescend) != 0; 563 //bFire = (flags & MASK_bFire) != 0; 564 //bRollL = (flags & MASK_bRollL) != 0; 565 //bRollR = (flags & MASK_bRollR) != 0; 566 567 } 568 569 //TODO: do not recieve data if you are the owner 570 if ( b == DATA_mouse /*&& this->getHostID()!=this->getOwner()*/ ) 571 { 572 float asdf; 573 SYNCHELP_READ_FLOAT( asdf ); 574 SYNCHELP_READ_FLOAT( asdf ); 575 SYNCHELP_READ_FLOAT( asdf ); 576 SYNCHELP_READ_FLOAT( asdf ); 577 //SYNCHELP_READ_FLOAT( mouseDir.w ); 578 //SYNCHELP_READ_FLOAT( mouseDir.v.x ); 579 //SYNCHELP_READ_FLOAT( mouseDir.v.y ); 580 //SYNCHELP_READ_FLOAT( mouseDir.v.z ); 581 } 582 } while( b != 0 ); 564 583 565 584 /*if ( b == DATA_mouse && this->getHostID()!=this->getOwner() ) … … 638 657 SYNCHELP_WRITE_INT( mask ); 639 658 } 640 else 641 { 642 SYNCHELP_WRITE_BYTE( 0 ); 643 } 644 645 /*if ( oldxMouse != xMouse || oldyMouse != yMouse ) 646 { 647 oldxMouse = xMouse; 648 oldyMouse = yMouse; 659 #define __OFFSET_ROT 0.05 660 if ( fabs( oldMouseDir.w - mouseDir.w ) > __OFFSET_ROT || 661 fabs( oldMouseDir.v.x - mouseDir.v.x ) > __OFFSET_ROT || 662 fabs( oldMouseDir.v.y - mouseDir.v.y ) > __OFFSET_ROT || 663 fabs( oldMouseDir.v.z - mouseDir.v.z ) > __OFFSET_ROT ) 664 { 665 oldMouseDir = mouseDir; 666 649 667 SYNCHELP_WRITE_BYTE( DATA_mouse ); 650 SYNCHELP_WRITE_FLOAT( xMouse);651 SYNCHELP_WRITE_FLOAT( yMouse);652 SYNCHELP_WRITE_FLOAT( mouse Sensitivity );653 SYNCHELP_WRITE_FLOAT( cycle);654 } */655 } 656 else657 { 658 659 } 668 SYNCHELP_WRITE_FLOAT( mouseDir.w ); 669 SYNCHELP_WRITE_FLOAT( mouseDir.v.x ); 670 SYNCHELP_WRITE_FLOAT( mouseDir.v.y ); 671 SYNCHELP_WRITE_FLOAT( mouseDir.v.z ); 672 } 673 674 } 675 676 SYNCHELP_WRITE_BYTE( 0 ); 677 660 678 661 679 if ( this->getOwner() == this->getHostID() ) -
trunk/src/world_entities/space_ships/space_ship.h
r6637 r6737 72 72 Vector velocity; //!< the velocity of the player. 73 73 Quaternion mouseDir; //!< the direction where the player wants to fly 74 Quaternion oldMouseDir; //!< the direction where the player wanted to fly 74 75 float shipInertia; //!< the inertia of the ship(how fast the ship reacts to a mouse input) 75 76 Quaternion rotQuat; -
trunk/src/world_entities/weapons/weapon_manager.cc
r6736 r6737 217 217 bool WeaponManager::addWeapon(Weapon* weapon, int configID, int slotID) 218 218 { 219 assert(weapon != NULL); 219 //if ( weapon == NULL ) 220 return false; 220 221 221 222 if (unlikely(configID >= WM_MAX_CONFIGS || slotID >= (int)this->slotCount))
Note: See TracChangeset
for help on using the changeset viewer.