я пытаюсь сделать размер мира в моей игре динамичным, и куски не добавляются в правильном месте, когда я прохожу край
checkrenderdistance ():
void CheckRenderDistance()
{
if (player.Position.X > CurrentWorldSize * Chunk.Size)
{
Vector3i chpos = ChunkInWorld((int)player.Position.X, (int)player.Position.Y, (int)player.Position.Z) * Chunk.Size;
Vector3i pos = new Vector3i((int)player.Position.X * (CurrentWorldSize * Chunk.Size), 0, (int)player.Position.Y * (CurrentWorldSize * Chunk.Size));
GenerateChunkRegion(pos * chpos);
Debug.Log("f");
}
}
generatechunkregion ():
public void GenerateChunkRegion(Vector3i pos = null)
{
if(pos == null)
{
pos = new Vector3i(0, 0, 0);
}
for(int x = 0;x<Chunk.Size * renderdistance; x++)
{
for(int y = 0 ;y < 256; y++)
{
for(int z = 0;z<Chunk.Size * renderdistance; z++)
{
SetVoxel(x + pos.X, y + pos.Y, z + pos.Z, GetVoxelP(x + (pos.X * Chunk.Size),y + (pos.Y * Chunk.Size),z + (pos.Z * Chunk.Size)));
}
}
}
CurrentWorldSize += renderdistance;
Debug.Log("Current World Size:" + CurrentWorldSize + " Current Voxel Count:" + (CurrentWorldSize * Chunk.ChunkVoxelCount));
}
chunkinworld ():
public static Vector3i ChunkInWorld(int x, int y, int z) => new Vector3i
(
x < 0 ? (x + 1) / Chunk.Size - 1 : x / Chunk.Size,
y < 0 ? (y + 1) / Chunk.Size - 1 : y / Chunk.Size,
z < 1 ? (z + 1) / Chunk.Size - 1 : z / Chunk.Size
);