void CFunc_LiquidPortal::ComputeLinkMatrix( void ) { CFunc_LiquidPortal *pLinkedPortal = m_hLinkedPortal.Get(); if( pLinkedPortal ) { VMatrix matLocalToWorld, matLocalToWorldInv, matRemoteToWorld; matLocalToWorld = EntityToWorldTransform(); matRemoteToWorld = pLinkedPortal->EntityToWorldTransform(); MatrixInverseTR( matLocalToWorld, matLocalToWorldInv ); m_matrixThisToLinked = matRemoteToWorld * matLocalToWorldInv; MatrixInverseTR( m_matrixThisToLinked, pLinkedPortal->m_matrixThisToLinked ); } else { m_matrixThisToLinked.Identity(); } }
VMatrix VMatrix::InverseTR() const { VMatrix ret; MatrixInverseTR( *this, ret ); return ret; }
void VMatrix::InverseTR( VMatrix &ret ) const { MatrixInverseTR( *this, ret ); }
static int vmatrix_MatrixInverseTR (lua_State *L) { MatrixInverseTR(luaL_checkvmatrix(L, 1), luaL_checkvmatrix(L, 2)); return 0; }