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); } }