Browse Source

Send the right RefMsg, please...

So this is interesting. If you disable Planar Reflections and visit an age with a DCM, you will crash after a few minutes. This is because plDynamicCamMap is sending the wrong plRefMsg to the plLayer. This does nothing (aside from waste time), so we keep sending the ref again and again and again and again until we get some weird heap corruption and KABLOOOOOOOOOOOEY!
Adam Johnson 11 years ago
parent
commit
b421e75040
  1. 4
      Sources/Plasma/PubUtilLib/plPipeline/plDynamicEnvMap.cpp

4
Sources/Plasma/PubUtilLib/plPipeline/plDynamicEnvMap.cpp

@ -753,13 +753,13 @@ void plDynamicCamMap::IPrepTextureLayers()
{ {
fMatLayers[i]->SetUVWSrc(plLayerInterface::kUVWPosition); fMatLayers[i]->SetUVWSrc(plLayerInterface::kUVWPosition);
fMatLayers[i]->SetMiscFlags(hsGMatState::kMiscCam2Screen | hsGMatState::kMiscPerspProjection); fMatLayers[i]->SetMiscFlags(hsGMatState::kMiscCam2Screen | hsGMatState::kMiscPerspProjection);
hsgResMgr::ResMgr()->SendRef(GetKey(), new plGenRefMsg(fMatLayers[i]->GetKey(), plRefMsg::kOnRequest, 0, plLayRefMsg::kTexture), plRefFlags::kActiveRef); hsgResMgr::ResMgr()->SendRef(GetKey(), new plLayRefMsg(fMatLayers[i]->GetKey(), plRefMsg::kOnRequest, 0, plLayRefMsg::kTexture), plRefFlags::kActiveRef);
} }
else else
{ {
fMatLayers[i]->SetUVWSrc(0); fMatLayers[i]->SetUVWSrc(0);
fMatLayers[i]->SetMiscFlags(0); fMatLayers[i]->SetMiscFlags(0);
hsgResMgr::ResMgr()->SendRef(fDisableTexture->GetKey(), new plGenRefMsg(fMatLayers[i]->GetKey(), plRefMsg::kOnRequest, 0, plLayRefMsg::kTexture), plRefFlags::kActiveRef); hsgResMgr::ResMgr()->SendRef(fDisableTexture->GetKey(), new plLayRefMsg(fMatLayers[i]->GetKey(), plRefMsg::kOnRequest, 0, plLayRefMsg::kTexture), plRefFlags::kActiveRef);
} }
} }
} }

Loading…
Cancel
Save