Exemplo n.º 1
0
        public DrawingHost(Rect rect)
        {
            this.MouseDown += Host_MouseDown;
            this.MouseMove += Host_MouseMove;
            this.MouseUp   += Host_MouseUp;
            backingStore    = new DrawingGroup();

            triangleGrid = new TriangleGrid(rect);
            PixelHeight  = (int)((triangleGrid.Rows - 1) * SideLength) + 1;
            PixelWidth   = (int)((triangleGrid.Cols - 1) * SideLength) + 1;
            this.Rect    = new Rect(rect.Left, rect.Top, PixelWidth, PixelHeight);

            WriteableBitmap bitmap = new WriteableBitmap(PixelWidth, PixelHeight, DPI, DPI, MyPixelFormat, null);

            currentNormalMap = new byte[bitmap.PixelHeight * bitmap.BackBufferStride];
            background       = new Background(bitmap, triangleGrid.Grid, Rect, currentNormalMap);

            currentColor       = Colors.White;
            currentColorBitmap = GetScaledImage(DefaultImage);

            InitializeNormapBitmap(UseConstantVector ? null : DefaultNormalMap);
            if (UseConstantColor)
            {
                background.FillGrid(currentColor);
            }
            else
            {
                background.FillGrid(currentColorBitmap);
            }
        }
Exemplo n.º 2
0
        public static TriangleGrid CreateTriangleGrid(int size)
        {
            var width  = (2 * size) - 1;
            var height = size;

            if (size % 2 == 0)
            {
                height++;
            }

            var grid = new TriangleGrid(height, width);

            grid.Init();

            // Disable cells
            for (int row = 0; row < height; row++)
            {
                var end = height - 1 - row;

                for (int col = 0; col < end; col++)
                {
                    grid.SetCell(row, col, null);
                    grid.SetCell(row, width - col - 1, null);
                }
            }

            grid.ConfigureCells();

            return(grid);
        }
Exemplo n.º 3
0
        public static TriangleGrid CreateTriangleGrid(int rows, int columns)
        {
            var grid = new TriangleGrid(rows, columns);

            grid.Init();

            return(grid);
        }
Exemplo n.º 4
0
        private static void MakeTriangleDeltaMaze()
        {
            var grid = new TriangleGrid(11);

            RecursiveBacktracker.Maze(grid, startAt: null);
            var img = grid.ToImg();

            img.Save("triGrid.png");
            Process.Start("triGrid.png");
        }
Exemplo n.º 5
0
    // Use this for initialization
    void Awake()
    {
        attractionPoints = new System.Collections.Generic.List <Transform>();

        gridScript   = GameObject.FindGameObjectWithTag("GameManager").GetComponent <TriangleGrid>();
        centerPoints = new System.Collections.Generic.List <Transform>();

        for (int i = 0; i < transform.childCount; i++)
        {
            if (transform.GetChild(i).tag == "MiddleControlPoint")
            {
                centerPoints.Add(transform.GetChild(i));
            }
        }

        faceNormals[0] = Quaternion.Euler(new Vector3(0, 0, 60)) * transform.up;
        faceNormals[1] = Quaternion.Euler(new Vector3(0, 0, 120)) * faceNormals[0];
        faceNormals[2] = Quaternion.Euler(new Vector3(0, 0, 120)) * faceNormals[1];

        updateAttractionPoints();
    }
Exemplo n.º 6
0
            /// <summary>
            /// Initialise the data needed for colliding with height maps and fires the
            /// <c>HeightMapTerrainColliderCreation</c> event.
            /// </summary>
            void Start()
            {
                heightMapTerrain = GetComponent <HeightMapTerrain>();
                Width            = heightMapTerrain.sourceRect.width;
                Height           = heightMapTerrain.sourceRect.height;
                CellSize         = heightMapTerrain.cellSize;
                TriMesh          = GetComponent <MeshFilter>().sharedMesh;

                TriGrid = new TriangleGrid(
                    TriMesh.vertices,
                    TriMesh.triangles,
                    Width - 1,
                    Height - 1,
                    CellSize,
                    transform.localScale,
                    transform.position
                    );

                var args = new CollisionEvents.HeightMapColliderCreationEventArgs(this);

                CollisionEvents.FireEvent(CollisionEvents.EventType.HeightMapTerrainColliderCreation, gameObject, args);
            }
Exemplo n.º 7
0
 private void DrawMaze(object sender, EventArgs e)
 {
     if (cbAlgorithm.SelectedItem != null)
     {
         Image img;
         var   grid = new Grid(MazeSize, MazeSize);
         if (pbMask.Image != null)
         {
             var mask = Mask.FromBitmap((Bitmap)pbMask.Image);
             grid = new MaskedGrid(mask);
         }
         else if (_mode == MazeStyle.Polar)
         {
             grid = new PolarGrid(MazeSize);
         }
         else if (_mode == MazeStyle.Hex)
         {
             grid = new HexGrid(MazeSize, MazeSize * 3 / 2);
         }
         else if (_mode == MazeStyle.Triangle)
         {
             grid = new TriangleGrid(MazeSize, MazeSize * 2);
         }
         else if (_mode == MazeStyle.Upsilon)
         {
             grid = new UpsilonGrid(MazeSize, MazeSize);
         }
         else if (_mode == MazeStyle.Weave)
         {
             grid = new WeaveGrid(MazeSize, MazeSize);
         }
         if (!CreateSelectedMaze(grid))
         {
             return;
         }
         img          = grid.ToImg(GridSize, (float)nudInset.Value);
         pbMaze.Image = img;
     }
 }
Exemplo n.º 8
0
    IEnumerator PunchHoles()
    {
        const int SIZE        = 5;
        const int SQUARE_SIZE = SIZE * SIZE;

        Color empty = TriangleGrid.CreateColor(Color.black, TileType.EMPTY);

        while (true)
        {
            int centerX = Random.Range(0, width);
            int centerY = Random.Range(0, height);

            int minX = Mathf.Max(centerX - SIZE, 0);
            int minY = Mathf.Max(centerY - SIZE, 0);

            int maxX = Mathf.Min(centerX + SIZE, width);
            int maxY = Mathf.Min(centerY + SIZE, height);

            for (int i = minX; i < maxX; i++)
            {
                for (int j = minY; j < maxY; j++)
                {
                    int dx = i - centerX;
                    int dy = j - centerY;

                    if (dx * dx + dy * dy < SQUARE_SIZE)
                    {
                        triangleGrid.Set(i, j, empty);
                    }
                }
            }

            triangleGrid.Apply();

            yield return(null);
            //yield return new WaitForSeconds(0.5f);
        }
    }
Exemplo n.º 9
0
        static void Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;

            // var m = Mask.FromText(@"C:\maze\code\mask.txt");
            //var m = Mask.FromImage(@"c:\maze\code\maze_text.png");
            //var s = new Stopwatch();
            //s.Start();
            var grid = new TriangleGrid(10,17);
            var swd = new RecursiveBackTracker();
            swd.On(grid);
            //s.Stop();
            //Console.WriteLine(s.Elapsed);
            //Console.WriteLine($"Deadends {grid.DeadEnds().Count}");
            ////  var start = grid[grid.Rows / 2, grid.Columns / 2];

            ////   grid.Distances = start.CellDistances();
            //// Console.WriteLine(grid);
            grid.SaveToPng();

            // DeadEndCounts();
            Console.ReadLine();
        }
Exemplo n.º 10
0
    // Use this for initialization
    void Awake()
    {
        attractionPoints = new System.Collections.Generic.List<Transform>();

        gridScript = GameObject.FindGameObjectWithTag("GameManager").GetComponent<TriangleGrid>();
        centerPoints = new System.Collections.Generic.List<Transform>();

        for(int i=0; i< transform.childCount; i++)
        {
            if(transform.GetChild(i).tag == "MiddleControlPoint")
            {
                centerPoints.Add(transform.GetChild(i));
            }
        }

        faceNormals[0] = Quaternion.Euler( new Vector3(0, 0, 60)) * transform.up;
        faceNormals[1] = Quaternion.Euler( new Vector3(0, 0, 120)) * faceNormals[0];
        faceNormals[2] = Quaternion.Euler( new Vector3(0, 0, 120)) * faceNormals[1];

        updateAttractionPoints();
    }
Exemplo n.º 11
0
 public void Setup()
 {
     // when
     _grid = new TriangleGrid(_rows, _columns);
 }