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;
        }
Example #3
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);
 }
Example #8
0
 public Vector3i(Vector3i source)
 {
     x = source.X;
     y = source.Y;
     z = source.Z;
 }
Example #9
0
 public float DotProduct(Vector3i otherVector)
 {
     return this.X * otherVector.X + this.Y * otherVector.Y + this.Z * otherVector.Z;
 }
Example #10
0
        public float AngleBetween(Vector3i otherVector)
        {
            Vector3 thisNorm = GetNormalized();
            Vector3 otherNorm = otherVector.GetNormalized();
            float dot = GraphMath.Dot(thisNorm, otherNorm);

            return (float)Math.Acos(dot);
        }
Example #11
0
        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;
        }
Example #12
0
        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;
        }
Example #13
0
        public static Vector3i operator *(int number, Vector3i vector)
        {
            Vector3i scaledVector = new Vector3i(vector);

            scaledVector.X *= number;
            scaledVector.Y *= number;
            scaledVector.Z *= number;

            return scaledVector;
        }
Example #14
0
 public Block(Vector3i upperLeftTopPosition, BlockType blockType)
 {
     this.upperLeftTopPosition = upperLeftTopPosition;
     this.type = (byte)blockType;
 }