Use working UnitGUID path for Outline tracking
This commit is contained in:
+20
-12
@@ -213,32 +213,36 @@ pub fn scanObjects() void {
|
|||||||
if (wow.isInGame()) debug_in_world_seen = true;
|
if (wow.isInGame()) debug_in_world_seen = true;
|
||||||
if (wow.hasObjectManager()) debug_object_manager_seen = true;
|
if (wow.hasObjectManager()) debug_object_manager_seen = true;
|
||||||
|
|
||||||
// Diagnose player GUID and object resolution separately. The local player
|
// Keep the legacy paths only as diagnostics.
|
||||||
// is useful for occlusion/dead-friendly tracking, but it is NOT required
|
const legacy_player_guid = wow.getPlayerGUID();
|
||||||
// for outlining the current target. Never abort target tracking just
|
if (legacy_player_guid != 0) debug_player_guid_seen = true;
|
||||||
// because the player object cannot be resolved.
|
|
||||||
const player_guid = wow.getPlayerGUID();
|
const legacy_target_guid = wow.getTargetGUID();
|
||||||
if (player_guid != 0) debug_player_guid_seen = true;
|
if (legacy_target_guid != 0) debug_target_guid_seen = true;
|
||||||
|
|
||||||
|
// Working path on this client: GetGUIDFromName("player"/"target").
|
||||||
|
// unitGUID() uses the verified ECX ABI and does not leak stack space.
|
||||||
|
const player_guid = wow.unitGUID("player");
|
||||||
|
if (player_guid != 0) debug_unit_player_guid_seen = true;
|
||||||
|
|
||||||
const local_player = if (player_guid != 0) wow.getObjectByGUID(player_guid) else 0;
|
const local_player = if (player_guid != 0) wow.getObjectByGUID(player_guid) else 0;
|
||||||
if (local_player != 0) {
|
if (local_player != 0) {
|
||||||
|
debug_unit_player_object_seen = true;
|
||||||
debug_local_player_seen = true;
|
debug_local_player_seen = true;
|
||||||
|
|
||||||
// Local player renders before outline targets (occludes outlines) unless
|
|
||||||
// the local player IS an outline target.
|
|
||||||
if (game_obj_ptr_count < MAX_TRACKED_OBJS) {
|
if (game_obj_ptr_count < MAX_TRACKED_OBJS) {
|
||||||
game_obj_ptrs[game_obj_ptr_count] = local_player;
|
game_obj_ptrs[game_obj_ptr_count] = local_player;
|
||||||
game_obj_ptr_count += 1;
|
game_obj_ptr_count += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resolve the selected target independently of local-player resolution.
|
// Resolve the selected target through the same working UnitGUID path.
|
||||||
// This must run even when player/object-manager legacy paths are unavailable.
|
const target_guid = wow.unitGUID("target");
|
||||||
const target_guid = wow.getTargetGUID();
|
|
||||||
if (target_guid != 0) {
|
if (target_guid != 0) {
|
||||||
debug_target_guid_seen = true;
|
debug_unit_target_guid_seen = true;
|
||||||
const target_obj = wow.getObjectByGUID(target_guid);
|
const target_obj = wow.getObjectByGUID(target_guid);
|
||||||
if (target_obj != 0) {
|
if (target_obj != 0) {
|
||||||
|
debug_unit_target_object_seen = true;
|
||||||
debug_target_object_seen = true;
|
debug_target_object_seen = true;
|
||||||
addTrackedObj(target_obj, .target, 0);
|
addTrackedObj(target_obj, .target, 0);
|
||||||
}
|
}
|
||||||
@@ -343,8 +347,12 @@ pub var debug_in_world_seen: bool = false;
|
|||||||
pub var debug_object_manager_seen: bool = false;
|
pub var debug_object_manager_seen: bool = false;
|
||||||
pub var debug_player_guid_seen: bool = false;
|
pub var debug_player_guid_seen: bool = false;
|
||||||
pub var debug_local_player_seen: bool = false;
|
pub var debug_local_player_seen: bool = false;
|
||||||
|
pub var debug_unit_player_guid_seen: bool = false;
|
||||||
|
pub var debug_unit_player_object_seen: bool = false;
|
||||||
pub var debug_target_guid_seen: bool = false;
|
pub var debug_target_guid_seen: bool = false;
|
||||||
pub var debug_target_object_seen: bool = false;
|
pub var debug_target_object_seen: bool = false;
|
||||||
|
pub var debug_unit_target_guid_seen: bool = false;
|
||||||
|
pub var debug_unit_target_object_seen: bool = false;
|
||||||
pub var debug_object_scan_seen: bool = false;
|
pub var debug_object_scan_seen: bool = false;
|
||||||
pub var debug_target_seen: bool = false;
|
pub var debug_target_seen: bool = false;
|
||||||
pub var debug_target_model_seen: bool = false;
|
pub var debug_target_model_seen: bool = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user