public Vector3i GetNextPosition() { if(tillDirectionChange == 0) { if(currentDirection == Direction.Right) { currentDirection = Direction.Down; tillDirectionChange = currentLevel * 2; } else if(currentDirection == Direction.Down) { currentDirection = Direction.Left; tillDirectionChange = currentLevel * 2; } else if(currentDirection == Direction.Left) { currentDirection = Direction.Up; tillDirectionChange = currentLevel * 2 + 1; } else if(currentDirection == Direction.Up) { currentLevel++; currentDirection = Direction.Right; tillDirectionChange = currentLevel * 2 - 1; } } currentPosition += GetMoveFromDirection(currentDirection); tillDirectionChange--; return currentPosition; }
public void NewSpiral(Vector3i startingPosition, Direction startingDirection) { this.currentPosition = startingPosition; this.currentDirection = startingDirection; tillDirectionChange = 1; currentLevel = 0; }
public void BeginGame(Vector3i regionSize, int entityCellSize) { this.regionSize = regionSize; this.entityCellSize = entityCellSize; entityManager = new WarlordEntityManager(entityCellSize); stateMachine.ChangeState(new DebugPlayingState(this, 10, regionSize)); }
public PerlinNoiseSettings3D(PerlinNoiseSettings3D settings) { size = new Vector3i(settings.size); startingPoint = new Vector3i(settings.startingPoint); frequencyMulti = settings.frequencyMulti; persistence = settings.persistence; zoom = settings.zoom; octaves = settings.octaves; seed = settings.seed; }
public PerlinNoiseSettings3D() { rng = new Random(); size = new Vector3i(100, 100, 100); startingPoint = Vector3i.Zero; frequencyMulti = 2; persistence = 0.5f; zoom = 40; octaves = 6; seed = 0; GenerateNewSeed(); }
public static void Init() { adjacencyOffsets[0] = new Vector3i(0, 0, 1); adjacencyOffsets[1] = new Vector3i(0, 1, 0); adjacencyOffsets[2] = new Vector3i(1, 0, 0); adjacencyOffsets[3] = new Vector3i(0, 0, -1); adjacencyOffsets[4] = new Vector3i(0, -1, 0); adjacencyOffsets[5] = new Vector3i(-1, 0, 0); facingList[0] = BlockFaceField.ZIncreasing; facingList[1] = BlockFaceField.YIncreasing; facingList[2] = BlockFaceField.XIncreasing; facingList[3] = BlockFaceField.ZDecreasing; facingList[4] = BlockFaceField.YDecreasing; facingList[5] = BlockFaceField.XDecreasing; }
public SpiralProducer(Vector3i startingPosition, Direction startingDirection) { NewSpiral(startingPosition, startingDirection); }
public Vector3i(Vector3i source) { x = source.X; y = source.Y; z = source.Z; }
public float DotProduct(Vector3i otherVector) { return this.X * otherVector.X + this.Y * otherVector.Y + this.Z * otherVector.Z; }
public float AngleBetween(Vector3i otherVector) { Vector3 thisNorm = GetNormalized(); Vector3 otherNorm = otherVector.GetNormalized(); float dot = GraphMath.Dot(thisNorm, otherNorm); return (float)Math.Acos(dot); }
public static Vector3i operator -(Vector3i leftVector, Vector3i rightVector) { Vector3i differenceVector = new Vector3i(leftVector); differenceVector.X -= rightVector.X; differenceVector.Y -= rightVector.Y; differenceVector.Z -= rightVector.Z; return differenceVector; }
public static Vector3i operator +(Vector3i leftVector, Vector3i rightVector) { Vector3i sumVector = new Vector3i(leftVector); sumVector.X += rightVector.X; sumVector.Y += rightVector.Y; sumVector.Z += rightVector.Z; return sumVector; }
public static Vector3i operator *(int number, Vector3i vector) { Vector3i scaledVector = new Vector3i(vector); scaledVector.X *= number; scaledVector.Y *= number; scaledVector.Z *= number; return scaledVector; }
public Block(Vector3i upperLeftTopPosition, BlockType blockType) { this.upperLeftTopPosition = upperLeftTopPosition; this.type = (byte)blockType; }