Fix vehicle unseating on region crossings by ignoring outgoing sim kills - #398
Shadowolf7 wants to merge 1 commit into
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 SummarySummary by CodeRabbit
WalkthroughThe change updates ChangesSeated object protection
Priority: ➖ Normal Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix · Severity of issue fixed: Medium Merge Risk: ⚪ Minimal · up to The cross-region seated-object protection change has no unresolved merge-blocking risk. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. A rabbit guards the vehicle seat, Comment |
Problem
During region crossings, an avatar can be unexpectedly unseated from their vehicle or seat. This occurs when the departing (outgoing) simulator sends a
KillObjectmessage for the vehicle while the handoff to the new simulator is still in progress. The viewer processes this kill and callsmarkDead(), which forces the avatar to stand up before the new region has taken full ownership.Solution
process_kill_object, check if aKillObjectpacket originates from a non-active region (regionp != gAgent.getRegion()) while the avatar is seated on the object or its linkset.objectp->getRootEdit()in a local pointer to avoid redundant tree traversals.LL_INFOS) when the linkset root prim is targeted, preventing log spam for complex multi-prim linksets.