Code:
bool:IsEntityInsideBox( const iEntity, const Float:vBoxCenter[ 3 ], const Float:vBoxMins[ 3 ], const Float:vBoxMaxs[ 3 ] )
{
static Float:vOrigin[ 3 ];
entity_get_vector( iEntity, EV_VEC_origin, vOrigin );
static Float:vMins[ 3 ], Float:vMaxs[ 3 ];
entity_get_vector( iEntity, EV_VEC_mins, vMins );
entity_get_vector( iEntity, EV_VEC_maxs, vMaxs );
static Float:vBoxMinCorner[ 3 ], Float:vBoxMaxCorner[ 3 ];
xs_vec_add( vBoxCenter, vBoxMins, vBoxMinCorner );
xs_vec_add( vBoxCenter, vBoxMaxs, vBoxMaxCorner );
static Float:vEntityCorner[ 3 ];
for( new i = 0; i < 8; i++ )
{
xs_vec_copy( vOrigin, vEntityCorner );
switch( i )
{
case 0:
{
// top -- left -- front
vEntityCorner[ 0 ] += vMins[ 0 ];
vEntityCorner[ 1 ] += vMaxs[ 1 ];
vEntityCorner[ 2 ] += vMaxs[ 2 ];
}
case 1:
{
// top -- right -- front
vEntityCorner[ 0 ] += vMaxs[ 0 ];
vEntityCorner[ 1 ] += vMaxs[ 1 ];
vEntityCorner[ 2 ] += vMaxs[ 2 ];
}
case 2:
{
// top -- left -- back
vEntityCorner[ 0 ] += vMins[ 0 ];
vEntityCorner[ 1 ] += vMins[ 1 ];
vEntityCorner[ 2 ] += vMaxs[ 2 ];
}
case 3:
{
// top -- right -- front
vEntityCorner[ 0 ] += vMaxs[ 0 ];
vEntityCorner[ 1 ] += vMaxs[ 1 ];
vEntityCorner[ 2 ] += vMaxs[ 2 ];
}
case 4:
{
// bottom -- left -- front
vEntityCorner[ 0 ] += vMins[ 0 ];
vEntityCorner[ 1 ] += vMaxs[ 1 ];
vEntityCorner[ 2 ] += vMins[ 2 ];
}
case 5:
{
// bottom -- right -- front
vEntityCorner[ 0 ] += vMaxs[ 0 ];
vEntityCorner[ 1 ] += vMaxs[ 1 ];
vEntityCorner[ 2 ] += vMins[ 2 ];
}
case 6:
{
// bottom -- left -- back
vEntityCorner[ 0 ] += vMins[ 0 ];
vEntityCorner[ 1 ] += vMins[ 1 ];
vEntityCorner[ 2 ] += vMins[ 2 ];
}
case 7:
{
// bottom -- right -- front
vEntityCorner[ 0 ] += vMaxs[ 0 ];
vEntityCorner[ 1 ] += vMaxs[ 1 ];
vEntityCorner[ 2 ] += vMins[ 2 ];
}
}
if( vBoxMinCorner[ 0 ] <= vEntityCorner[ 0 ] <= vBoxMaxCorner[ 0 ]
&& vBoxMinCorner[ 1 ] <= vEntityCorner[ 1 ] <= vBoxMaxCorner[ 1 ]
&& vBoxMinCorner[ 2 ] <= vEntityCorner[ 2 ] <= vBoxMaxCorner[ 2 ] )
{
return true;
}
}
return false;
}
__________________