| 453 | //----------------------------------------------------------------------------- |
| 454 | |
| 455 | void GuiTSCtrl::onRender(Point2I offset, const RectI &updateRect) |
| 456 | { |
| 457 | // Save the current transforms so we can restore |
| 458 | // it for child control rendering below. |
| 459 | GFXTransformSaver saver; |
| 460 | bool renderingToTarget = false; |
| 461 | |
| 462 | mLastCameraQuery.displayDevice = NULL; |
| 463 | |
| 464 | if (!processCameraQuery(&mLastCameraQuery)) |
| 465 | { |
| 466 | // We have no camera, but render the GUI children |
| 467 | // anyway. This makes editing GuiTSCtrl derived |
| 468 | // controls easier in the GuiEditor. |
| 469 | renderChildControls(offset, updateRect); |
| 470 | return; |
| 471 | } |
| 472 | |
| 473 | // jamesu - currently a little bit of a hack. Ideally we need to ditch the viewports in the query data and just rely on the display device |
| 474 | if (mLastCameraQuery.displayDevice) |
| 475 | { |
| 476 | if (mRenderStyle == RenderStyleStereoSideBySide) |
| 477 | { |
| 478 | mLastCameraQuery.displayDevice->setDrawMode(GFXDevice::RS_StereoSideBySide); |
| 479 | } |
| 480 | else if (mRenderStyle == RenderStyleStereoSeparate) |
| 481 | { |
| 482 | mLastCameraQuery.displayDevice->setDrawMode(GFXDevice::RS_StereoSeparate); |
| 483 | } |
| 484 | else |
| 485 | { |
| 486 | mLastCameraQuery.displayDevice->setDrawMode(GFXDevice::RS_Standard); |
| 487 | } |
| 488 | |
| 489 | // The connection's display device may want to set the eye offset |
| 490 | if (mLastCameraQuery.displayDevice->providesEyeOffsets()) |
| 491 | { |
| 492 | mLastCameraQuery.displayDevice->getEyeOffsets(mLastCameraQuery.eyeOffset); |
| 493 | } |
| 494 | |
| 495 | // Grab field of view for both eyes |
| 496 | if (mLastCameraQuery.displayDevice->providesFovPorts()) |
| 497 | { |
| 498 | mLastCameraQuery.displayDevice->getFovPorts(mLastCameraQuery.fovPort); |
| 499 | mLastCameraQuery.hasFovPort = true; |
| 500 | } |
| 501 | |
| 502 | mLastCameraQuery.displayDevice->getStereoViewports(mLastCameraQuery.stereoViewports); |
| 503 | mLastCameraQuery.displayDevice->getStereoTargets(mLastCameraQuery.stereoTargets); |
| 504 | |
| 505 | mLastCameraQuery.hasStereoTargets = mLastCameraQuery.stereoTargets[0]; |
| 506 | } |
| 507 | |
| 508 | GFXTargetRef origTarget = GFX->getActiveRenderTarget(); |
| 509 | U32 origStyle = GFX->getCurrentRenderStyle(); |
| 510 | |
| 511 | // Set up the appropriate render style |
| 512 | Point2I renderSize = getExtent(); |
nothing calls this directly
no test coverage detected