Fix vehicle tracking: ejection seats, disappeared vehicles, parachute lifetime#48
Fix vehicle tracking: ejection seats, disappeared vehicles, parachute lifetime#48
Conversation
… lifetime - Classify ejection seats (e.g. RHS K36D-5) as "parachute" instead of "car" by checking displayName before the Car isKindOf check - Detect vehicles deleted by scripts/garbage collection and send a final dead state using stored last-known position (via HashMap + isNull check) - Stop tracking parachutes/ejection seats after crew exits by sending a final dead state and excluding from further capture
Summary of ChangesHello @fank, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly enhances the accuracy and efficiency of vehicle tracking within the recording system. It addresses several issues where vehicles were either misclassified, not correctly marked as dead upon despawning, or tracked beyond their relevant lifetime. The changes ensure that recorded vehicle states are more precise, reflecting their actual status in the game world, and optimize the tracking process by properly terminating tracking for irrelevant objects. Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces several important fixes for vehicle tracking, including correctly classifying ejection seats, handling disappeared vehicles, and managing parachute lifetimes. The changes are logical and well-implemented. I've added a couple of suggestions to improve the data accuracy for disappeared vehicles by storing and using more of their last-known state, which will prevent the use of incorrect placeholder values in the recording.
Use actual last-known side, vectorDir, vectorUp instead of placeholders when sending the final dead state for deleted vehicles.
Summary
Fixes three vehicle tracking issues identified from recording analysis (FLO_20260213_004801):
Ejection seats classified as "car": RHS K36D-5 ejection seats matched
isKindOf "Car"before reaching theParachuteBasecheck. Added displayName-based detection for "ejection" before the Car check infnc_getClass.sqf, classifying them as"parachute".Destroyed/despawned vehicles not marked dead: 23 of 24 planes were deleted by mission scripts (CAS despawning) without transitioning to
alive=0. Added atrackedVehiclesHashMap storing object references with last-known position. After each vehicle loop,isNulldetects deleted objects and sends a final dead state. O(1) per check, no per-frame array comparisons.Parachutes/ejection seats tracked forever: Ejection seats persisted with
alive=1and empty crew for thousands of frames. Now, parachute-class vehicles with no crew get a finalalive=0state and are excluded from further tracking.Note: Projectile markers staying forever (endFrame=-1) is an extension bug — the SQF correctly sends 119
:DELETE:MARKER:calls which the extension acknowledges but does not apply. Not addressed in this PR.Test plan