Public feed
#721816
if(local_info.WeaponHasHighDrop())
return GetAimVector(output);
if(!got_dir_dist) GetDistanceToTarget();
*output = direction_to_target;
return TRUE;
}
float TargetInformation::GetDistanceToTarget(void)
{
assert(player && good);
if(got_dir_dist) return distance_to_target;
D3DXVECTOR3 dir_vector;
D3DXVec3Subtract(&dir_vector, &base_aim, local_info.GetAimPos());
distance_to_target = D3DXVec3Length(&dir_vector);
D3DXVec3Normalize(&direction_to_target, &dir_vector);
got_dir_dist = TRUE;
return distance_to_target;
}
BOOL TargetInformation::IsGoodDistance(void)
{
assert(player && good);
CObject_Soldier* local_soldier = local_info.GetSoldier();
CTemplate_GenericFireArm* weapon_template =
(CTemplate_GenericFireArm*) local_info.GetWeapon()->object_template;
CTComponent_Fire* fire = (CTComponent_Fire*) weapon_template->GetComponent(COMPONENT_FIRE_ID);
if(!fire) return FALSE;
if(!got_dir_dist) GetDistanceToTarget();
float max_bullet_dist = D3DXVec3Dot(local_info.GetMovementSpeed(), local_info.GetAimDir())
+ weapon_template->fire_velocity * local_info.GetAmmoTemplate()->timeToLive_1;
if(distance_to_target > max_bullet_dist )
return FALSE;