#pragma once

#include <Vec3.h>

struct Area
{
    int startX;
    int startY;
    int endX;
    int endY;
    int dimensionId;
};

enum Direction : char
{
    NO_DIRECTION = 0,
    NORTH = 1,
    EAST = 2,
    SOUTH = 4,
    WEST = 8,
    TOP = 16,
    BOTTOM = 32,
    INSIDE = 64
};

typedef char Directions;

#define ANY_DIRECTION NORTH | EAST | SOUTH | WEST | TOP | BOTTOM

Framework::Vec3<int> getDirection(Directions dir);
int getDirectionIndex(Direction dir);
Direction getOppositeDirection(Direction dir);
Direction getDirectionFromIndex(int index);
Directions getDirectionsFromVector(Framework::Vec3<float> dir);
Framework::Vec3<float> getRotation(Direction source, Direction target);
