Example #1
0
        //Load a tile's heightmap (here uses the sin function)
        private void LoadTileHeightmap2(MapTile TileToLoad)
        {
            //return;
            //We don't use the debug sinus code
            if (TileToLoad != null)
            {
                //TimeSpan Start1 = System.Diagnostics.Process.GetCurrentProcess().TotalProcessorTime;
                MTV3D65.CONST_TV_LANDSCAPE_PRECISION precision = TileToLoad.Landscape.GetPrecision();
                int     Vertices     = (256 / GlobalVars.getTVPrecisionDivider(precision)) * TileToLoad.Landscape.GetLandWidth();
                float[] Height_Array = new float[(Vertices + 1) * (Vertices + 1)];
                for (int j = 0; j <= Vertices; j++)
                {
                    for (int i = 0; i <= Vertices; i++)
                    {
                        if ((TileToLoad.TilePosition.TileX == -1) && (TileToLoad.TilePosition.TileZ == 0) && (j == Vertices - 1) && (i == Vertices - 1))
                        {
                            Debug.WriteLine("debug");
                        }

                        int realx = i + TileToLoad.TilePosition.TileX * Vertices;
                        int realz = j + TileToLoad.TilePosition.TileZ * Vertices;

                        //Sinus-like thing... Yeah, it's useless but it looks good (well, for a demo... okay, I'm not that inspired I think !)
                        Height_Array[j * (Vertices + 1) + i] = (float)(Math.Sin(Math.Sqrt(Math.Pow(realx, 2) + Math.Pow(realz, 2)) / 25) * 100);
                    }
                }
                TileToLoad.Landscape.SetHeightArray(0, 0, Vertices + 1, Vertices + 1, Height_Array); //This is 100 TIMES FASTER than setting every point one by one! (which is not that surprising)

                //double Total1 = (System.Diagnostics.Process.GetCurrentProcess().TotalProcessorTime - Start1).TotalMilliseconds;

                //TimeSpan Start2 = System.Diagnostics.Process.GetCurrentProcess().TotalProcessorTime;

                /*for (int i = TileToLoad.TilePosition.TileX * 256 * MapTile.TileSize; i <= TileToLoad.TilePosition.TileX * 256 * MapTile.TileSize + 256 * MapTile.TileSize; i += 2)
                 * {
                 *  for (int j = TileToLoad.TilePosition.TileZ * 256 * MapTile.TileSize; j <= TileToLoad.TilePosition.TileZ * 256 * MapTile.TileSize + 256 * MapTile.TileSize; j = j + 1)
                 *  {
                 *      TileToLoad.Landscape.SetHeight(i, j, (float)Math.Sin(Math.Sqrt(i * i + j * j) / 25) * 10);
                 *  }
                 * }*/
                //double Total2 = (System.Diagnostics.Process.GetCurrentProcess().TotalProcessorTime - Start2).TotalMilliseconds;

                //Debug.WriteLine("Method 1 : " + Total1 + "ms; Method 2 : " + Total2 + "ms");
                //Method 1 : 31,2002ms; Method 2 : 3120,02ms

                //TileToLoad.Landscape.FlushHeightChanges();
            }
        }
Example #2
0
        //Load a tile's heightmap (here uses the sin function)
        private void LoadTileHeightmap2(MapTile TileToLoad)
        {
            //return;
            //We don't use the debug sinus code
            if (TileToLoad != null)
            {
                //TimeSpan Start1 = System.Diagnostics.Process.GetCurrentProcess().TotalProcessorTime;
                MTV3D65.CONST_TV_LANDSCAPE_PRECISION precision = TileToLoad.Landscape.GetPrecision();
                int     Vertices     = (256 / GlobalVars.getTVPrecisionDivider(precision)) * TileToLoad.Landscape.GetLandWidth();
                float[] Height_Array = new float[Vertices * Vertices];
                for (int i = 0; i < Vertices; i++)
                {
                    for (int j = 0; j < Vertices; j++)
                    {
                        Height_Array[i * Vertices + j] = (float)Math.Sin(Math.Sqrt(Math.Pow(i * 2, 2) + Math.Pow(j * 2, 2)) / 25) * 10;
                    }
                }
                TileToLoad.Landscape.SetHeightArray(0, 0, Vertices, Vertices, Height_Array);
                //double Total1 = (System.Diagnostics.Process.GetCurrentProcess().TotalProcessorTime - Start1).TotalMilliseconds;

                //TimeSpan Start2 = System.Diagnostics.Process.GetCurrentProcess().TotalProcessorTime;

                /*for (int i = TileToLoad.TilePosition.TileX * 256 * MapTile.TileSize; i <= TileToLoad.TilePosition.TileX * 256 * MapTile.TileSize + 256 * MapTile.TileSize; i += 2)
                 * {
                 *  for (int j = TileToLoad.TilePosition.TileZ * 256 * MapTile.TileSize; j <= TileToLoad.TilePosition.TileZ * 256 * MapTile.TileSize + 256 * MapTile.TileSize; j = j + 1)
                 *  {
                 *      TileToLoad.Landscape.SetHeight(i, j, (float)Math.Sin(Math.Sqrt(i * i + j * j) / 25) * 10);
                 *  }
                 * }*/
                //double Total2 = (System.Diagnostics.Process.GetCurrentProcess().TotalProcessorTime - Start2).TotalMilliseconds;

                //Debug.WriteLine("Method 1 " + Total1 + "ms; Method 2 " + Total2 + "ms");
                //Method 1 31,2002ms; Method 2 3120,02ms

                TileToLoad.Landscape.FlushHeightChanges();
            }
        }