port EterLib/GrpLightManager.cpp verbatim, initialise CLightManager (unit B)
Replaces the platform_stub skeleton with the 40250 source and mirrors m_LightManager.Initialize() from 40250 PythonApplication.cpp:1263. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
5285ca85fd
commit
96ea03d0a0
@@ -558,3 +558,4 @@
|
||||
{"date": "2026-09-28T01:31:59+00:00", "unit": "GameLib/MapOutdoorRenderHTP.cpp + GameLib/MapOutdoorCharacterShadow.cpp", "action": "native 40250 render parity: terrain near/mid/far LOD/fog/splat cap, character shadow RTT CPU raster, per-draw depth/sampler states and two-light fixed-function shading", "evidence": "mt_native_render fake-server game 90 frames; 178 3D draws; shadow mem texture 205 nonwhite pixels; matched Windows screenshot pending"}
|
||||
{"date": "2026-09-28T01:35:06+00:00", "unit": "GameLib/MapOutdoorRenderHTP.cpp", "action": "match 40250 lighting state in terrain splat passes: unlit base textures, temporary lit shadow pass, white fog color only for shadow pass", "evidence": "reference MapOutdoorRenderHTP.cpp non-WORLD_EDITOR branch; native fake-server scene rerun pending"}
|
||||
{"date": "2026-09-28T03:54:13+00:00", "unit": "EterLib/GrpScreen.cpp + native D3D8 fixed-function emulation (RecordingDevice / native_render)", "action": "unit A: D3D8 texcoord generation + D3DTS_TEXTUREn in shader (CPU uv baking removed), 8-light D3D lighting (no attenuation clamp, spot theta/2 phi/2, emissive source, NORMALIZENORMALS, inverse-transpose normals), 8-bit alpha test, clears in draw order, dynamic D3D viewport + MinZ/MaxZ, black back-buffer clear, white default diffuse, alpha blend mirrors colour factors; removed sphere-map and multiplicative-shadow hacks; CScreen ms_clearDepth/ms_diffuseColor initialisers fixed to 40250 values; capture v8; --screenshot-out readback", "evidence": "ctest 35/35 (login_live excluded); mt_native_render fake-server 240/900-frame screenshots vs baseline: game frame mean abs diff 0.55/255, char select model now placed by introselect.py grp.SetViewport(270/w,...); Windows reference frame pending (NEEDS_LIVE)"}
|
||||
{"date": "2026-09-28T03:59:30+00:00", "unit": "EterLib/GrpLightManager.cpp", "action": "unit B: platform stub removed, 40250 GrpLightManager.cpp copied verbatim into port/ (port_copy.py); CPythonApplication::Create now calls m_LightManager.Initialize() (40250 :1263) so light IDs start at skip index 1; 40250 never calls FlushLight/RestoreLight, so no device-light change", "evidence": "ctest 35/35 (login_live excluded); fake-server frame 900 vs baseline mean abs diff 0.21/255"}
|
||||
|
||||
@@ -0,0 +1,196 @@
|
||||
{
|
||||
"reference": "EterLib/GrpLightManager.cpp",
|
||||
"reference_sha256": "673be49eac112ebf7650489db33a185dfbb7215b7b0fe7626f2302b422dc8261",
|
||||
"priority": "P4",
|
||||
"contracts": [],
|
||||
"functions": {
|
||||
"CLightManager::CLightManager": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLightManager::CLightManager"
|
||||
]
|
||||
},
|
||||
"CLightManager::~CLightManager": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLightManager::~CLightManager"
|
||||
]
|
||||
},
|
||||
"CLightManager::Destroy": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLightManager::Destroy"
|
||||
]
|
||||
},
|
||||
"CLightManager::Initialize": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLightManager::Initialize"
|
||||
]
|
||||
},
|
||||
"CLightManager::RegisterLight": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLightManager::RegisterLight"
|
||||
]
|
||||
},
|
||||
"CLightManager::DeleteLight": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLightManager::DeleteLight"
|
||||
]
|
||||
},
|
||||
"CLightManager::GetLight": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLightManager::GetLight"
|
||||
]
|
||||
},
|
||||
"CLightManager::SetCenterPosition": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLightManager::SetCenterPosition"
|
||||
]
|
||||
},
|
||||
"CLightManager::SetLimitLightCount": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLightManager::SetLimitLightCount"
|
||||
]
|
||||
},
|
||||
"CLightManager::SetSkipIndex": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLightManager::SetSkipIndex"
|
||||
]
|
||||
},
|
||||
"CLightManager::FlushLight": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLightManager::FlushLight"
|
||||
],
|
||||
"note": "40250 has no caller of FlushLight/RestoreLight; effect lights (SimpleLightInstance) are registered but never sent to the device in 40250 either"
|
||||
},
|
||||
"CLightManager::RestoreLight": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLightManager::RestoreLight"
|
||||
]
|
||||
},
|
||||
"CLightManager::NewLightID": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLightManager::NewLightID"
|
||||
]
|
||||
},
|
||||
"CLightManager::ReleaseLightID": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLightManager::ReleaseLightID"
|
||||
]
|
||||
},
|
||||
"CLightManager::Update": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLightManager::Update"
|
||||
]
|
||||
},
|
||||
"CLight::CLight": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLight::CLight"
|
||||
]
|
||||
},
|
||||
"CLight::~CLight": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLight::~CLight"
|
||||
]
|
||||
},
|
||||
"CLight::Initialize": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLight::Initialize"
|
||||
]
|
||||
},
|
||||
"CLight::Clear": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLight::Clear"
|
||||
]
|
||||
},
|
||||
"CLight::SetDeviceLight": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLight::SetDeviceLight"
|
||||
],
|
||||
"note": "m_isEdited is never cleared in 40250; kept"
|
||||
},
|
||||
"CLight::SetParameter": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLight::SetParameter"
|
||||
]
|
||||
},
|
||||
"CLight::SetDiffuseColor": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLight::SetDiffuseColor"
|
||||
]
|
||||
},
|
||||
"CLight::SetAmbientColor": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLight::SetAmbientColor"
|
||||
]
|
||||
},
|
||||
"CLight::SetRange": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLight::SetRange"
|
||||
]
|
||||
},
|
||||
"CLight::GetPosition": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLight::GetPosition"
|
||||
]
|
||||
},
|
||||
"CLight::SetPosition": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLight::SetPosition"
|
||||
]
|
||||
},
|
||||
"CLight::SetDistance": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLight::SetDistance"
|
||||
]
|
||||
},
|
||||
"CLight::BlendDiffuseColor": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLight::BlendDiffuseColor"
|
||||
]
|
||||
},
|
||||
"CLight::BlendAmbientColor": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLight::BlendAmbientColor"
|
||||
]
|
||||
},
|
||||
"CLight::BlendRange": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLight::BlendRange"
|
||||
]
|
||||
},
|
||||
"CLight::Update": {
|
||||
"status": "PORTED",
|
||||
"impl": [
|
||||
"extension/src/port/EterLib/GrpLightManager.cpp:CLight::Update"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -157,7 +157,7 @@
|
||||
"impl": [
|
||||
"extension/src/platform/UserInterface/PythonApplication.cpp:CPythonApplication::Create"
|
||||
],
|
||||
"note": "40250 CPythonApplication lifecycle and state adapted for platform host and singletons",
|
||||
"note": "40250 CPythonApplication lifecycle and state adapted for platform host and singletons; m_LightManager.Initialize() (40250 :1263) now called; Destroy() still empty (m_LightManager.Destroy at 40250 :1418 not yet mirrored)",
|
||||
"test": "extension/tests/port_login_flow_test.cpp"
|
||||
},
|
||||
"CPythonApplication::SetGlobalCenterPosition": {
|
||||
|
||||
Reference in New Issue
Block a user