| 409 | } |
| 410 | |
| 411 | bool Unit::IsWithinCombatDist(Unit *obj, float dist2compare) const |
| 412 | { |
| 413 | if (!obj || !IsInMap(obj)) return false; |
| 414 | |
| 415 | float dx = GetPositionX() - obj->GetPositionX(); |
| 416 | float dy = GetPositionY() - obj->GetPositionY(); |
| 417 | float dz = GetPositionZ() - obj->GetPositionZ(); |
| 418 | float distsq = dx*dx + dy*dy + dz*dz; |
| 419 | //not sure here, or combatreach + combatreach? |
| 420 | float sizefactor = GetObjectSize() + obj->GetFloatValue(UNIT_FIELD_COMBATREACH); |
| 421 | float maxdist = dist2compare + sizefactor; |
| 422 | |
| 423 | return distsq < maxdist * maxdist; |