669 {
670 f32 xTemp, yTemp, zTemp;
671 f32 enemyX, enemyY, enemyZ;
672 f32 kooperX;
673 f32 kooperZ;
674 f32 enemyCollHeight;
675 f32 kooperY;
676 f32 kooperCollHeight;
677 f32 enemyCollRadius;
678 f32 kooperCollRadius;
679 f32 angleToEnemy;
680 f32 distToEnemy;
681
683 enemyX = enemy->
pos.
x;
684 enemyY = enemy->
pos.
y;
685 enemyZ = enemy->
pos.
z;
686
687 kooperX = kooper->
pos.
x;
688 kooperY = kooper->
pos.
y;
689 kooperZ = kooper->
pos.
z;
690
693
696
697 angleToEnemy =
atan2(enemyX, enemyZ, kooperX, kooperZ);
698 distToEnemy =
dist2D(enemyX, enemyZ, kooperX, kooperZ);
699
700 xTemp = kooper->
pos.
x;
701 yTemp = kooper->
pos.
y;
702 zTemp = kooper->
pos.
z;
703
705 kooperCollHeight, kooperCollRadius + enemyCollRadius)
706 ) {
707 return FALSE;
708 }
709
710 if (kooperY > enemyY + enemyCollHeight) {
711 return FALSE;
712 }
713
714 if (enemyY > kooperY + kooperCollHeight) {
715 return FALSE;
716 }
717
718 kooperX = enemyX - kooperX;
719 kooperZ = enemyZ - kooperZ;
720 distToEnemy =
SQ(kooperX) +
SQ(kooperZ);
721
722 if (!(
SQ(kooperCollRadius) +
SQ(enemyCollRadius) <= distToEnemy)) {
724 return TRUE;
725 }
726 }
727 return FALSE;
728}
f32 dist2D(f32 ax, f32 ay, f32 bx, f32 by)
b32 npc_test_move_taller_with_slipping(s32, f32 *, f32 *, f32 *, f32, f32, f32, f32)