render parity unit J: 40250 automatic sight range in CPythonApplication::Process

Process now runs 40250's render-time / face-count block and sets view
distance set 0 each frame (25600 under 5000 faces, else scaled by render
time, or the forced range). SetForceSightRange and SkipRenderBuffering are
ported from stubs; the invented SetCursorPosition in UpdateGame is removed.
Port-map boilerplate notes replaced; Destroy recorded as DIVERGENT.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-28 14:22:41 +09:00
co-authored by Claude Opus 5.5
parent 0e8a1574cb
commit dda885a17a
3 changed files with 115 additions and 19 deletions
@@ -25,8 +25,8 @@
"impl": [
"extension/src/platform/UserInterface/PythonApplication.cpp:CPythonApplication::SetMinFog"
],
"note": "40250 CPythonApplication lifecycle and state adapted for platform host and singletons",
"test": "extension/tests/port_login_flow_test.cpp"
"test": "extension/tests/port_login_flow_test.cpp",
"note": "40250 body verbatim in the platform layer."
},
"CPythonApplication::SetFrameSkip": {
"status": "ADAPTED",
@@ -73,32 +73,32 @@
"impl": [
"extension/src/platform/UserInterface/PythonApplication.cpp:CPythonApplication::RenderGame"
],
"note": "40250 CPythonApplication lifecycle and state adapted for platform host and singletons",
"test": "extension/tests/port_login_flow_test.cpp"
"test": "extension/tests/port_login_flow_test.cpp",
"note": "40250's !PERF_CHECKER_RENDER_GAME branch line for line, members reached through their singletons; the perf-timing branch (PERF_CHECKER_RENDER_GAME is FALSE) is left out."
},
"CPythonApplication::UpdateGame": {
"status": "ADAPTED",
"impl": [
"extension/src/platform/UserInterface/PythonApplication.cpp:CPythonApplication::UpdateGame"
],
"note": "40250 CPythonApplication lifecycle and state adapted for platform host and singletons",
"test": "extension/tests/port_login_flow_test.cpp"
"test": "extension/tests/port_login_flow_test.cpp",
"note": "40250 body through the singletons, minus the __PERFORMANCE_CHECK__/PERF_CHECKER timing. An invented CScreen::SetCursorPosition in the perspective block was removed (unit J): as in 40250 the pick ray comes from RenderGame's SetCursorPosition."
},
"CPythonApplication::SkipRenderBuffering": {
"status": "ADAPTED",
"impl": [
"extension/src/platform/UserInterface/PythonApplication.cpp:CPythonApplication::SkipRenderBuffering"
],
"note": "40250 CPythonApplication lifecycle and state adapted for platform host and singletons",
"test": "extension/tests/port_login_flow_test.cpp"
"test": "extension/tests/port_login_flow_test.cpp",
"note": "40250 body verbatim in the platform layer."
},
"CPythonApplication::Process": {
"status": "ADAPTED",
"impl": [
"extension/src/platform/UserInterface/PythonApplication.cpp:CPythonApplication::Process"
],
"note": "40250 CPythonApplication lifecycle and state adapted for platform host and singletons",
"test": "extension/tests/port_login_flow_test.cpp"
"test": "extension/tests/port_login_flow_test.cpp",
"note": "Frame order as 40250 (network, account connector, camera, resource, mouse/UI update, specular, culling, Begin/UI/mouse render/End). Left out: guild mark up/download (not ported), lost-device restore, ClearDepthBuffer/Show (host presents), frame-skip timing/Sleep (host paces frames), FPS counters, and the !IsActive() SkipRenderBuffering(3000) (CMSWindow::IsActive is a stub). Unit J restored 40250:741-842: render time, face count, frame buffering average and the automatic sight range (SetViewDistanceSet(0, ...): 25600 under 5000 faces, else MIN_FOG..25600 scaled by render time, or the forced range), with a PORT guard on the face-speed division. Fog/far-clip effect NEEDS_LIVE against the reference frame."
},
"CPythonApplication::UpdateClientRect": {
"status": "ADAPTED",
@@ -285,7 +285,7 @@
"impl": [
"extension/src/platform/UserInterface/PythonApplication.cpp:CPythonApplication::SetForceSightRange"
],
"note": "40250 CPythonApplication lifecycle and state adapted for platform host and singletons",
"note": "40250 body verbatim in the platform layer. m_iForceSightRange lives in the file-static s_iForceSightRange (initial -1 as the 40250 constructor sets) until the application object exists.",
"test": "extension/tests/port_login_flow_test.cpp"
},
"CPythonApplication::Clear": {
@@ -297,12 +297,11 @@
"test": "extension/tests/port_login_flow_test.cpp"
},
"CPythonApplication::Destroy": {
"status": "ADAPTED",
"status": "DIVERGENT",
"impl": [
"extension/src/platform/UserInterface/PythonApplication.cpp:CPythonApplication::Destroy"
],
"note": "40250 CPythonApplication lifecycle and state adapted for platform host and singletons",
"test": "extension/tests/port_login_flow_test.cpp"
"note": "Empty and never called: the host tears down through the singleton resets in PythonBoot::Stop, not 40250 Main's app->Destroy(). 40250's body (window manager, SaveConfig/SaveInterfaceStatus writing into the client dir, managers incl. m_LightManager.Destroy(), device) is not run; porting it needs Stop to call it with config writes redirected out of the 40250 client dir."
}
}
}