MCPcopy Create free account
hub / github.com/DaedalusX64/daedalus / SetWorldView

Method SetWorldView

Source/HLEGraphics/BaseRenderer.cpp:2099–2148  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2097//
2098
2099void BaseRenderer::SetWorldView(const u32 address, bool bPush, bool bReplace)
2100{
2101 // ModelView
2102 if (bPush && (mModelViewTop < mMatStackSize))
2103 {
2104 ++mModelViewTop;
2105
2106 // We should store the current projection matrix...
2107 if (bReplace)
2108 {
2109 // Load ModelView matrix
2110 MatrixFromN64FixedPoint( mModelViewStack[mModelViewTop], address);
2111 //Hack to make GEX games work, need to multiply all elements with 2.0 //Corn
2112 if( g_ROM.GameHacks == GEX_GECKO ) for(u32 i=0;i<16;i++) mModelViewStack[mModelViewTop].mRaw[i] += mModelViewStack[mModelViewTop].mRaw[i];
2113 }
2114 else // Multiply ModelView matrix
2115 {
2116 MatrixFromN64FixedPoint( mTempMat, address);
2117 MatrixMultiplyAligned( &mModelViewStack[mModelViewTop], &mTempMat, &mModelViewStack[mModelViewTop-1] );
2118 }
2119 }
2120 else // NoPush
2121 {
2122 if (bReplace)
2123 {
2124 // Load ModelView matrix
2125 MatrixFromN64FixedPoint( mModelViewStack[mModelViewTop], address);
2126 }
2127 else
2128 {
2129 // Multiply ModelView matrix
2130 MatrixFromN64FixedPoint( mTempMat, address);
2131 MatrixMultiplyAligned( &mModelViewStack[mModelViewTop], &mTempMat, &mModelViewStack[mModelViewTop] );
2132 }
2133 }
2134
2135 mWorldProjectValid = false;
2136#ifdef DAEDALUS_DEBUG_DISPLAYLIST
2137 DL_PF(" Level = %d\n"
2138 " %#+12.5f %#+12.5f %#+12.5f %#+12.5f\n"
2139 " %#+12.5f %#+12.5f %#+12.5f %#+12.5f\n"
2140 " %#+12.5f %#+12.5f %#+12.5f %#+12.5f\n"
2141 " %#+12.5f %#+12.5f %#+12.5f %#+12.5f\n",
2142 mModelViewTop,
2143 mModelViewStack[mModelViewTop].m[0][0], mModelViewStack[mModelViewTop].m[0][1], mModelViewStack[mModelViewTop].m[0][2], mModelViewStack[mModelViewTop].m[0][3],
2144 mModelViewStack[mModelViewTop].m[1][0], mModelViewStack[mModelViewTop].m[1][1], mModelViewStack[mModelViewTop].m[1][2], mModelViewStack[mModelViewTop].m[1][3],
2145 mModelViewStack[mModelViewTop].m[2][0], mModelViewStack[mModelViewTop].m[2][1], mModelViewStack[mModelViewTop].m[2][2], mModelViewStack[mModelViewTop].m[2][3],
2146 mModelViewStack[mModelViewTop].m[3][0], mModelViewStack[mModelViewTop].m[3][1], mModelViewStack[mModelViewTop].m[3][2], mModelViewStack[mModelViewTop].m[3][3]);
2147#endif
2148}
2149
2150
2151//

Callers 4

DLParser_GBI1_MtxFunction · 0.80
DLParser_GBI2_MtxFunction · 0.80
DLParser_GBI1_MtxFunction · 0.80
DLParser_GBI2_MtxFunction · 0.80

Calls 2

MatrixFromN64FixedPointFunction · 0.85
MatrixMultiplyAlignedFunction · 0.85

Tested by

no test coverage detected