public Location(int x, int y)
    {
        world = new World_Location(x, y);
        chunk = new Chunk_Location();

        if (world.x >= 0)
        {
            chunk.i = Mathf.FloorToInt(world.x / chunkTileWidth);
            chunk.x = world.x - chunk.i * chunkTileWidth;
        }
        else
        {
            chunk.i = Mathf.CeilToInt((world.x + 1) / chunkTileWidth) - 1;
            chunk.x = (chunkTileWidth - 1) + (world.x + 1) - (chunk.i + 1) * chunkTileWidth;
        }

        if (world.y >= 0)
        {
            chunk.j = Mathf.FloorToInt(world.y / chunkTileWidth);
            chunk.y = world.y - chunk.j * chunkTileWidth;
        }
        else
        {
            chunk.j = Mathf.CeilToInt((world.y + 1) / chunkTileWidth) - 1;
            chunk.y = (chunkTileWidth - 1) + (world.y + 1) - (chunk.j + 1) * chunkTileWidth;
        }
    }
    public Location(int i, int j, int x, int y)
    {
        world = new World_Location();
        chunk = new Chunk_Location(i, j, x, y);

        if (chunk.i >= 0)
        {
            world.x = chunk.i * chunkTileWidth + chunk.x;
        }
        else
        {
            world.x = ((chunk.i + 1) * chunkTileWidth) + (chunk.x - chunkTileWidth);
        }

        if (chunk.j >= 0)
        {
            world.y = chunk.j * chunkTileWidth + chunk.y;
        }
        else
        {
            world.y = ((chunk.j + 1) * chunkTileWidth) + (chunk.y - chunkTileWidth);
        }
    }