MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / setGFXMatrices

Method setGFXMatrices

Engine/source/scene/reflector.cpp:748–784  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

746}
747
748void PlaneReflector::setGFXMatrices( const MatrixF &camTrans )
749{
750 if ( objectSpace )
751 {
752 // set up camera transform relative to object
753 MatrixF invObjTrans = mObject->getRenderTransform();
754 invObjTrans.inverse();
755 MatrixF relCamTrans = invObjTrans * camTrans;
756
757 MatrixF camReflectTrans = getCameraReflection( relCamTrans );
758 MatrixF objTrans = mObject->getRenderTransform() * camReflectTrans;
759 objTrans.inverse();
760
761 GFX->setWorldMatrix(objTrans);
762
763 // use relative reflect transform for modelview since clip plane is in object space
764 objTrans = camReflectTrans;
765 objTrans.inverse();
766
767 // set new projection matrix
768 gClientSceneGraph->setNonClipProjection( (MatrixF&) GFX->getProjectionMatrix() );
769 MatrixF clipProj = getFrustumClipProj(objTrans);
770 GFX->setProjectionMatrix( clipProj );
771 }
772 else
773 {
774 // set world mat from new camera view
775 MatrixF camReflectTrans = getCameraReflection( camTrans );
776 camReflectTrans.inverse();
777 GFX->setWorldMatrix( camReflectTrans );
778
779 // set new projection matrix
780 gClientSceneGraph->setNonClipProjection( (MatrixF&) GFX->getProjectionMatrix() );
781 MatrixF clipProj = getFrustumClipProj( camReflectTrans );
782 GFX->setProjectionMatrix( clipProj );
783 }
784}
785
786MatrixF PlaneReflector::getCameraReflection( const MatrixF &camTrans )
787{

Callers

nothing calls this directly

Calls 6

setNonClipProjectionMethod · 0.80
getProjectionMatrixMethod · 0.80
setProjectionMatrixMethod · 0.80
getRenderTransformMethod · 0.45
inverseMethod · 0.45
setWorldMatrixMethod · 0.45

Tested by

no test coverage detected