JMW
Aspiring Addon Developer
Hi Abdullah Radwan.
Appreciate your work for CameraMfd.
Here is an answer that is for way previous versions but might give you a start....
Part quote:
Appreciate your work for CameraMfd.
Here is an answer that is for way previous versions but might give you a start....
Part quote:
:tiphat:
SOURSE: Decompiling by IDA...
ANSWER: In the "device" night vision is realized by means of ambient_color change. Easily and simply . Only it is necessary to reach orbiter's call IDirect3DDevice7::SetRenderState function interception .
Substitution
Return of old valueCode:DWORD __stdcall fqSetRenderState (DWORD p,D3DRENDERSTATETYPE dwRenderStateType, DWORD dwRenderState) { if(dwRenderStateType == D3DRENDERSTATE_AMBIENT) { ISC.d3dcol_ambient_Save = dwRenderState; if(ISC.sToPoR && ISC.bSubstRwork && ISC.bStep2) if(ISC.d3dcol_ambient) dwRenderState =ISC.d3dcol_ambient; //0x0FF00FF00; } LPDIRECT3DDEVICE7 tr = (LPDIRECT3DDEVICE7)((DWORD*)p)[1]; return tr->SetRenderState(dwRenderStateType,dwRenderState); }
PS Core principle of work of the CameraMFD - interception DX calls.Code:DWORD __stdcall fqEndScene(DWORD p) { LPDIRECT3DDEVICE7 tr = (LPDIRECT3DDEVICE7)((DWORD*)p)[1]; LPDIRECT3DDEVICE7 fq = (LPDIRECT3DDEVICE7)p; if (ISC.sToPoR && ISC.bSubstRwork) { DWORD rez; rez = tr->EndScene(); fq->SetRenderTarget(ISC.CorePr_RenSurf,0); fq->SetViewport(&ISC.ViewPort_Save); tr->SetTransform(D3DTRANSFORMSTATE_VIEW,&ISC.ViewTransformMatrix_Save); tr->SetRenderState(D3DRENDERSTATE_AMBIENT,ISC.d3dcol_ambient_Save); return rez; } return tr->EndScene(); }