port: FlyingData/Instance/ObjectManager/FlyTrace + effect/fly modules (batch 2 P1)

Verbatim copies of the 40250 flying-object units and the effect/fly
Python modules replace the pending CFlyingManager stand-in and the two
module stubs; initeffect/initfly run after initnet as in 40250 and the
flying manager gets the background as its map manager.
CMapManager::GetTerrainHeight is added over the native height tiles.
login_flow checks playersettingmodule registered the indexed fly data.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-24 00:12:19 +09:00
co-authored by Claude Opus 5.5
parent 05de621199
commit 9dcf34dffc
25 changed files with 2312 additions and 182 deletions
@@ -5,40 +5,76 @@
"contracts": [],
"functions": {
"CActorInstance::GetVirtualID": {
"status": "TODO"
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstanceData.cpp:CActorInstance::GetVirtualID"
]
},
"CActorInstance::SetVirtualID": {
"status": "TODO"
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstanceData.cpp:CActorInstance::SetVirtualID"
]
},
"CActorInstance::UpdateAttribute": {
"status": "TODO"
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstanceData.cpp:CActorInstance::UpdateAttribute"
]
},
"CActorInstance::__CreateAttributeInstance": {
"status": "TODO"
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstanceData.cpp:CActorInstance::__CreateAttributeInstance"
]
},
"CActorInstance::GetRace": {
"status": "TODO"
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstanceData.cpp:CActorInstance::GetRace"
]
},
"CActorInstance::SetRace": {
"status": "TODO"
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstanceData.cpp:CActorInstance::SetRace"
]
},
"CActorInstance::SetHair": {
"status": "TODO"
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstanceData.cpp:CActorInstance::SetHair"
]
},
"CActorInstance::SetShape": {
"status": "TODO"
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstanceData.cpp:CActorInstance::SetShape"
]
},
"CActorInstance::ChangeMaterial": {
"status": "TODO"
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstanceData.cpp:CActorInstance::ChangeMaterial"
]
},
"CActorInstance::GetPartItemID": {
"status": "TODO"
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstanceData.cpp:CActorInstance::GetPartItemID"
]
},
"CActorInstance::SetSpecularInfo": {
"status": "TODO"
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstanceData.cpp:CActorInstance::SetSpecularInfo"
]
},
"CActorInstance::SetSpecularInfoForce": {
"status": "TODO"
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/ActorInstanceData.cpp:CActorInstance::SetSpecularInfoForce"
]
}
}
}
+74
View File
@@ -0,0 +1,74 @@
{
"reference": "GameLib/FlyTrace.cpp",
"reference_sha256": "4ab3192d471aa6db4f96db5df73a0598e9f273fd9712ed1df6fa37f74517ffb4",
"priority": "P1",
"contracts": [],
"functions": {
"CFlyTrace::DestroySystem": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyTrace.cpp:CFlyTrace::DestroySystem"
]
},
"CFlyTrace::New": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyTrace.cpp:CFlyTrace::New"
]
},
"CFlyTrace::Delete": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyTrace.cpp:CFlyTrace::Delete"
]
},
"CFlyTrace::CFlyTrace": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyTrace.cpp:CFlyTrace::CFlyTrace"
]
},
"CFlyTrace::~CFlyTrace": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyTrace.cpp:CFlyTrace::~CFlyTrace"
]
},
"CFlyTrace::__Initialize": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyTrace.cpp:CFlyTrace::__Initialize"
]
},
"CFlyTrace::Destroy": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyTrace.cpp:CFlyTrace::Destroy"
]
},
"CFlyTrace::UpdateNewPosition": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyTrace.cpp:CFlyTrace::UpdateNewPosition"
]
},
"CFlyTrace::Create": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyTrace.cpp:CFlyTrace::Create"
]
},
"CFlyTrace::Update": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyTrace.cpp:CFlyTrace::Update"
]
},
"CFlyTrace::Render": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyTrace.cpp:CFlyTrace::Render"
]
}
}
}
@@ -0,0 +1,80 @@
{
"reference": "GameLib/FlyingData.cpp",
"reference_sha256": "2486eff11e613a658e4d5f3a1b212fe9933f1c092d3bc12f561923f181b81512",
"priority": "P4",
"contracts": [],
"functions": {
"CFlyingData::CFlyingData": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingData.cpp:CFlyingData::CFlyingData"
]
},
"CFlyingData::__Initialize": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingData.cpp:CFlyingData::__Initialize"
]
},
"CFlyingData::Destroy": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingData.cpp:CFlyingData::Destroy"
]
},
"CFlyingData::~CFlyingData": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingData.cpp:CFlyingData::~CFlyingData"
]
},
"CFlyingData::SetBombEffect": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingData.cpp:CFlyingData::SetBombEffect"
]
},
"CFlyingData::GetAttachDataReference": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingData.cpp:CFlyingData::GetAttachDataReference"
]
},
"CFlyingData::AttachFlyEffect": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingData.cpp:CFlyingData::AttachFlyEffect"
]
},
"CFlyingData::RemoveAttach": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingData.cpp:CFlyingData::RemoveAttach"
]
},
"CFlyingData::RemoveAllAttach": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingData.cpp:CFlyingData::RemoveAllAttach"
]
},
"CFlyingData::DuplicateAttach": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingData.cpp:CFlyingData::DuplicateAttach"
]
},
"CFlyingData::LoadScriptFile": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingData.cpp:CFlyingData::LoadScriptFile"
]
},
"CFlyingData::SaveScriptFile": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingData.cpp:CFlyingData::SaveScriptFile"
]
}
}
}
@@ -0,0 +1,128 @@
{
"reference": "GameLib/FlyingInstance.cpp",
"reference_sha256": "b58a421b74fa57b56710e5666728e7e8b16a2e2b073eeb2b349b3c20b8d00bff",
"priority": "P1",
"contracts": [],
"functions": {
"CFlyingInstance::CFlyingInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::CFlyingInstance"
]
},
"CFlyingInstance::~CFlyingInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::~CFlyingInstance"
]
},
"CFlyingInstance::__Initialize": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::__Initialize"
]
},
"CFlyingInstance::Clear": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::Clear"
]
},
"CFlyingInstance::Destroy": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::Destroy"
]
},
"CFlyingInstance::BuildAttachInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::BuildAttachInstance"
]
},
"CFlyingInstance::Create": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::Create"
]
},
"CFlyingInstance::__SetTargetDirection": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::__SetTargetDirection"
]
},
"CFlyingInstance::__SetTargetNormalizedDirection": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::__SetTargetNormalizedDirection"
]
},
"CFlyingInstance::SetFlyTarget": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::SetFlyTarget"
]
},
"CFlyingInstance::AdjustDirectionForHoming": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::AdjustDirectionForHoming"
]
},
"CFlyingInstance::UpdateAttachInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::UpdateAttachInstance"
]
},
"CFlyingInstance::Update": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::Update"
]
},
"CFlyingInstance::ClearAttachInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::ClearAttachInstance"
]
},
"CFlyingInstance::__Explode": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::__Explode"
]
},
"CFlyingInstance::__Bomb": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::__Bomb"
]
},
"CFlyingInstance::Render": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::Render"
]
},
"CFlyingInstance::RenderAttachInstance": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::RenderAttachInstance"
]
},
"CFlyingInstance::SetDataPointer": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::SetDataPointer"
]
},
"CFlyingInstance::__SetDataPointer": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingInstance.cpp:CFlyingInstance::__SetDataPointer"
]
}
}
}
@@ -0,0 +1,80 @@
{
"reference": "GameLib/FlyingObjectManager.cpp",
"reference_sha256": "9b6ce94579bd3b536d12bf163175c171214250e4f88abbd03f5ebe076416b4e6",
"priority": "P1",
"contracts": [],
"functions": {
"CFlyingManager::CFlyingManager": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingObjectManager.cpp:CFlyingManager::CFlyingManager"
]
},
"CFlyingManager::~CFlyingManager": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingObjectManager.cpp:CFlyingManager::~CFlyingManager"
]
},
"CFlyingManager::__DestroyFlyingInstanceList": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingObjectManager.cpp:CFlyingManager::__DestroyFlyingInstanceList"
]
},
"CFlyingManager::__DestroyFlyingDataMap": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingObjectManager.cpp:CFlyingManager::__DestroyFlyingDataMap"
]
},
"CFlyingManager::DeleteAllInstances": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingObjectManager.cpp:CFlyingManager::DeleteAllInstances"
]
},
"CFlyingManager::Destroy": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingObjectManager.cpp:CFlyingManager::Destroy"
]
},
"CFlyingManager::RegisterFlyingData": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingObjectManager.cpp:CFlyingManager::RegisterFlyingData"
]
},
"CFlyingManager::CreateFlyingInstanceFlyTarget": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingObjectManager.cpp:CFlyingManager::CreateFlyingInstanceFlyTarget"
]
},
"CFlyingManager::Update": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingObjectManager.cpp:CFlyingManager::Update"
]
},
"CFlyingManager::Render": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingObjectManager.cpp:CFlyingManager::Render"
]
},
"CFlyingManager::RegisterIndexedFlyData": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingObjectManager.cpp:CFlyingManager::RegisterIndexedFlyData"
]
},
"CFlyingManager::CreateIndexedFly": {
"status": "PORTED",
"impl": [
"extension/src/port/GameLib/FlyingObjectManager.cpp:CFlyingManager::CreateIndexedFly"
]
}
}
}
+6 -1
View File
@@ -104,7 +104,12 @@
"test": "project/python_game_render_test.gd"
},
"CMapManager::GetTerrainHeight": {
"status": "TODO"
"status": "ADAPTED",
"impl": [
"extension/src/platform/pending/GameLib/MapManager.cpp:CMapManager::GetTerrainHeight"
],
"note": "CMapOutdoor::GetTerrainHeight: 40250 terrain triangle interpolation on packed height.raw. GetHeight forwards here until map objects are registered (CMapOutdoor::GetHeight's object half).",
"test": "extension/tests/port_login_flow_test.cpp"
},
"CMapManager::GetWaterHeight": {
"status": "TODO"