bool Enemy::isCloseForPlayerToAttack(M3DVector3f &player_pos, float PlayerDistSqrd) { M3DVector3f enemyPos; GetOrigin(enemyPos); float dist = m3dGetDistanceSquared3(player_pos,enemyPos); return PlayerDistSqrd >= dist; }
// ditto above... but with floats float m3dClosestPointOnRay(M3DVector3f vPointOnRay, const M3DVector3f vRayOrigin, const M3DVector3f vUnitRayDir, const M3DVector3f vPointInSpace) { M3DVector3f v; m3dSubtractVectors3(v, vPointInSpace, vRayOrigin); float t = m3dDotProduct3(vUnitRayDir, v); // This is the point on the ray vPointOnRay[0] = vRayOrigin[0] + (t * vUnitRayDir[0]); vPointOnRay[1] = vRayOrigin[1] + (t * vUnitRayDir[1]); vPointOnRay[2] = vRayOrigin[2] + (t * vUnitRayDir[2]); return m3dGetDistanceSquared3(vPointOnRay, vPointInSpace); }