#include "Area.h" Direction opposite( Direction dir ) { switch( dir ) { case NORTH: return SOUTH; case EAST: return WEST; case SOUTH: return NORTH; case WEST: return EAST; case TOP: return BOTTOM; case BOTTOM: return TOP; default: return NO_DIRECTION; } } Directions getDirections( Framework::Vec3 currentPos, Framework::Vec3 otherPos ) { Directions result = NO_DIRECTION; if( currentPos.x < otherPos.x ) result |= EAST; if( currentPos.x > otherPos.x ) result |= WEST; if( currentPos.y < otherPos.y ) result |= SOUTH; if( currentPos.y > otherPos.y ) result |= NORTH; if( currentPos.z < otherPos.z ) result |= TOP; if( currentPos.z > otherPos.z ) result |= BOTTOM; return result; } Framework::Vec3 getDirection( Directions dir ) { Framework::Vec3 result( 0, 0, 0 ); if( ( dir | NORTH ) == dir ) --result.y; if( ( dir | EAST ) == dir ) ++result.x; if( ( dir | SOUTH ) == dir ) ++result.y; if( ( dir | WEST ) == dir ) --result.x; if( ( dir | TOP ) == dir ) ++result.z; if( ( dir | BOTTOM ) == dir ) --result.z; return result; }