isle-portable/extensions
Christian Semmler 3c1d6d36ef
Fix ROI name collision causing dangling pointers in NPC locomotion roiMaps
When ScenePlayer created cloned NPC ROIs for cooperative animations, it
renamed them to match the original character name and added them to the
ViewManager. This created a name collision: two ROIs with the same name.
The original game's AppendROIToScene searches by name and stops at the
first match, so if a locomotion BuildROIMap ran while the clone existed,
it could capture pointers to the clone's child ROIs. When the clone was
later destroyed (CleanupProps), those roiMap entries became dangling
pointers, crashing in AnimateWithTransform at roi.h:151 (SetVisibility).

Fix: use the alias mechanism (already supported by AnimUtils::BuildROIMap)
instead of renaming clones. Also unify all ROI name generation behind a
shared counter to prevent character manager key collisions.
2026-04-04 10:08:16 -07:00
..
docs/thirdpersoncamera Add multiplayer extension 2026-04-03 15:41:57 -07:00
include/extensions Allow spectator to play click animation during scene playback 2026-04-03 21:10:44 -07:00
src Fix ROI name collision causing dangling pointers in NPC locomotion roiMaps 2026-04-04 10:08:16 -07:00