Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
31 lines
3.7 KiB
JSON
31 lines
3.7 KiB
JSON
{
|
|
"verdict": "No attributable recoil-camera cause from current evidence; ordinary installed camera path does not call the spherical random API.",
|
|
"log": "/home/jakub/devel/escapistsrereintroduced/docs/evidence/native-2026-10-03-mine-flanks-normal/console.log.txt",
|
|
"log_sha256": "fbda67071b3eca24033b7195b33072b4b27f806259893ec2f5969691800d51a8",
|
|
"error_time": "04:30:22.686",
|
|
"evidence": [
|
|
"SCR_RecoilCameraShakeProgress.Update lines157/169 calls GetRandomYawPitchRollImpulse()/GetRandomTranslation() without arguments. Both default onSphere=false and use RandomVector/RandomFloat, not GenerateRandomPointInRadius.",
|
|
"The single camera spherical call is SCR_RecoilCameraShakeParams.RandomVectorSphere(vector min, vector max, bool uniform=true), line160\u2013167, forwarding min.Length() and max.Length(). Both zero vectors would create the reported interval.",
|
|
"Attribute defaults translation min(0.0005,0.0005,0),max(0.006,0.006,0), impulse min(0.005,0.005,1),max(0.012,0.012,1.5) give valid nonzero unequal lengths. Extracted SVD override likewise nonzero unequal ranges.",
|
|
"No successor addon source/prefab/config override of recoil camera parameters or calls to these APIs found. External addon script/prefab closure was not fully re-extracted or proven absent.",
|
|
"Log has WORLD UpdateEntities/Frame context but no script/node/weapon stack; it cannot distinguish recoil from native AI/node/other callers."
|
|
],
|
|
"supported_diagnostic": {
|
|
"scope": "Opt-in WORKBENCH-only ordinary script override; not implemented or engine-compiled in this review.",
|
|
"class": "SCR_RecoilCameraShakeParams",
|
|
"method": "protected override vector RandomVectorSphere(vector min, vector max, bool uniform = true)",
|
|
"behavior": "Call super.RandomVectorSphere(min,max,uniform) exactly once and retain its result. After return, if both input vector lengths are zero and diagnostic scope enabled, emit capped16 global witness with type/this/input vectors and Debug.DumpStack(); return unchanged result. Do not clamp, skip native call, change RNG or invent owner accessors.",
|
|
"callstack_support": "Debug.DumpStack() is called by installed vanilla SCR_ScriptedWidgetComponent and SCR_WLibProgressBar. For BT methods only, Node.GetCallstackStr(out string val) and GetParentTreeName(out string val) are explicit native signatures; NodeError demonstrates usage but should not be invoked because it changes failure semantics.",
|
|
"limitations": "A silent recoil hook excludes only observed runs; it cannot identify a different caller. Params has no actor/weapon ownership accessor in this script. Native compatibility of a new override still needs parent-controlled engine compilation."
|
|
},
|
|
"source_sha256": {
|
|
"/tmp/erri-vanilla-stock/scripts/Game/Camera/Shake/SCR_RecoilCameraShakeParams.c": "81c78fd6de3e3d1f4031b589918b002fd0d4ef1673a6287ad7249b2c236aef8c",
|
|
"/tmp/erri-vanilla-stock/scripts/Game/Camera/Shake/SCR_RecoilCameraShakeProgress.c": "442f6c36f8c83e6206f438ed8b1950a3ea2fb0d15dab248f15ab3f2e45f88e91",
|
|
"/tmp/erri-vanilla-stock/scripts/Game/UI/Components/WidgetLibrary/SCR_ScriptedWidgetComponent.c": "e40552f9bf619e008a3796920c6e7ecbc8db68a5f914ab1988780a7ba90ea417",
|
|
"/tmp/erri-vanilla-stock/scripts/Game/generated/AI/Node.c": "d5d3eea4e72d8a8978257009f8b3408628c26c0dd7c406a1fe86fafdaaedc789",
|
|
"/tmp/erri-vanilla-stock/scripts/Game/AI/Utils/NodeError.c": "75a2aade91d8216d7038279d0ac384a7ecd494bb29a2de36f62214368feed22c",
|
|
"/tmp/erri-vanilla-stock/Prefabs/Weapons/Rifles/SVD/Rifle_SVD_base.et": "6e70d726155044eb1a68d5d6f7a65d0b9b12d43499fbf0e6e73612c65b769711"
|
|
},
|
|
"operations": "Read-only source/log inspection. No implementation, compiler/native/process/UI actions."
|
|
}
|