| 556 | //---------------------------------------------------------------------------- |
| 557 | |
| 558 | void GameConnection::setControlObject(GameBase *obj) |
| 559 | { |
| 560 | if(mControlObject == obj) |
| 561 | return; |
| 562 | |
| 563 | if(mControlObject && mControlObject != mCameraObject) |
| 564 | mControlObject->setControllingClient(0); |
| 565 | |
| 566 | if(obj) |
| 567 | { |
| 568 | // Nothing else is permitted to control this object. |
| 569 | if (GameBase* coo = obj->getControllingObject()) |
| 570 | coo->setControlObject(0); |
| 571 | if (GameConnection *con = obj->getControllingClient()) |
| 572 | { |
| 573 | if(this != con) |
| 574 | { |
| 575 | // was it controlled via camera or control |
| 576 | if(con->getControlObject() == obj) |
| 577 | con->setControlObject(0); |
| 578 | else |
| 579 | con->setCameraObject(0); |
| 580 | } |
| 581 | } |
| 582 | |
| 583 | // We are now the controlling client of this object. |
| 584 | obj->setControllingClient(this); |
| 585 | |
| 586 | // Update the camera's FOV to match the new control object |
| 587 | //but only if we don't have a specific camera object |
| 588 | if (!mCameraObject) |
| 589 | setControlCameraFov(obj->getCameraFov()); |
| 590 | } |
| 591 | |
| 592 | // Okay, set our control object. |
| 593 | mControlObject = obj; |
| 594 | mControlForceMismatch = true; |
| 595 | |
| 596 | if(mCameraObject.isNull()) |
| 597 | setScopeObject(mControlObject); |
| 598 | } |
| 599 | |
| 600 | void GameConnection::setCameraObject(GameBase *obj) |
| 601 | { |
no test coverage detected