46 lines
1.6 KiB
Lua
46 lines
1.6 KiB
Lua
---@class AutoMarkMod:DMFMod
|
|
local mod = get_mod("AutoMark")
|
|
local context = mod.context
|
|
|
|
-- Global Cache
|
|
local HEALTH_ALIVE = HEALTH_ALIVE
|
|
|
|
local SMART_TARGETING_TEMPLATE = {
|
|
precision_target = {
|
|
max_range = 100,
|
|
min_range = 1,
|
|
smart_tagging = true,
|
|
},
|
|
}
|
|
|
|
local SMART_TARGETING_PRECISION_TEMPLATE = {
|
|
only_direct_hit = true,
|
|
precision_target = {
|
|
max_range = 100,
|
|
min_range = 1,
|
|
smart_tagging = true,
|
|
},
|
|
}
|
|
|
|
-- Find Target Unit For Mark System
|
|
function mod:find_target_unit(only_direct_hit)
|
|
local smart_targeting_extension = context.smart_targeting_extension
|
|
if not smart_targeting_extension then
|
|
return nil
|
|
end
|
|
|
|
local ray_origin, forward, right, up = smart_targeting_extension:_targeting_parameters()
|
|
smart_targeting_extension._precision_target_aim_assist:update_precision_target(
|
|
smart_targeting_extension._unit,
|
|
only_direct_hit and SMART_TARGETING_PRECISION_TEMPLATE or SMART_TARGETING_TEMPLATE,
|
|
ray_origin, forward, right, up,
|
|
smart_targeting_extension._smart_tag_targeting_data,
|
|
smart_targeting_extension._latest_fixed_frame,
|
|
smart_targeting_extension._visibility_cache,
|
|
smart_targeting_extension._visibility_check_frame
|
|
)
|
|
local targeting_data = smart_targeting_extension:smart_tag_targeting_data()
|
|
local target_unit = targeting_data and targeting_data.unit
|
|
return HEALTH_ALIVE[target_unit] and target_unit
|
|
end
|