Refactor; Optimize simulation
This commit is contained in:
parent
8581cf6fb8
commit
0ef5652cea
16 changed files with 508 additions and 651 deletions
|
|
@ -28,10 +28,29 @@ public class Universe
|
|||
return Sectors[x, y, z];
|
||||
}
|
||||
|
||||
public Sector GetNeighbouringSector(Sector sector, bool? x, bool? y, bool? z)
|
||||
{
|
||||
Vector3I coordinates = sector.Coordinates;
|
||||
|
||||
if (x == true) coordinates.X++;
|
||||
else if (x == false) coordinates.X--;
|
||||
|
||||
if (y == true) coordinates.Y++;
|
||||
else if (y == false) coordinates.Y--;
|
||||
|
||||
if (z == true) coordinates.Z++;
|
||||
else if (z == false) coordinates.Z--;
|
||||
|
||||
coordinates.X = Math.Clamp(coordinates.X, 0, Size.X);
|
||||
coordinates.Y = Math.Clamp(coordinates.Y, 0, Size.Y);
|
||||
coordinates.Z = Math.Clamp(coordinates.Z, 0, Size.Z);
|
||||
|
||||
return GetSector(coordinates);
|
||||
}
|
||||
|
||||
public bool IsInside(Vector3I sectorCoordinates, Vector3 localCoordinates)
|
||||
{
|
||||
Vector3 sectorSize = GameManager.Generator.GetSectorSize() / 2;
|
||||
Vector3I universeSize = GameManager.GameUniverse.Size;
|
||||
|
||||
if (
|
||||
sectorCoordinates.X == 0 && localCoordinates.X < -sectorSize.X ||
|
||||
|
|
@ -43,9 +62,9 @@ public class Universe
|
|||
}
|
||||
|
||||
if (
|
||||
sectorCoordinates.X == universeSize.X - 1 && localCoordinates.X >= sectorSize.X ||
|
||||
sectorCoordinates.Y == universeSize.Y - 1 && localCoordinates.Y >= sectorSize.Y ||
|
||||
sectorCoordinates.Z == universeSize.Z - 1 && localCoordinates.Z >= sectorSize.Z
|
||||
sectorCoordinates.X == Size.X - 1 && localCoordinates.X >= sectorSize.X ||
|
||||
sectorCoordinates.Y == Size.Y - 1 && localCoordinates.Y >= sectorSize.Y ||
|
||||
sectorCoordinates.Z == Size.Z - 1 && localCoordinates.Z >= sectorSize.Z
|
||||
)
|
||||
{
|
||||
return false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue