private Texture GeneratePlanetTexture(Vector2Dd texSize) { var imgSize = texSize; module = new Perlin(4, 0.5, NoiseQuality.Best, 5, 1.3, random.Next(0, 1024)); heightMapBuilder = new PlanarNoiseMapBuilder((uint)imgSize.X, (uint)imgSize.Y, 0, module, 2, 6, 1, 5, true); heightMap = heightMapBuilder.Build(); var texColors = new GradientColour(); texColors.AddGradientPoint(-1, System.Drawing.Color.DimGray); texColors.AddGradientPoint(-0.7, System.Drawing.Color.Olive); texColors.AddGradientPoint(0.0, System.Drawing.Color.SteelBlue); texColors.AddGradientPoint(0.8, System.Drawing.Color.Tan); texColors.AddGradientPoint(1, System.Drawing.Color.DarkKhaki); var renderer = new ImageBuilder(heightMap, texColors); System.Drawing.Image renderedImg = renderer.Render(); var img = new Bitmap(renderedImg); img.Save("planetTex.png", ImageFormat.Png); var returnTex = Driver.GetTexture("planetTex.png"); return(returnTex); }
static bool device_OnEvent(Event evnt) { if (evnt.Type == EventType.Mouse) { Dimension2Di s = device.VideoDriver.ScreenSize; if (evnt.Mouse.Type == MouseEventType.Wheel) { Rectd r = new Rectd(); if (evnt.Mouse.Wheel > 0) { // zoom in int x1 = evnt.Mouse.X - s.Width / 2 + (int)evnt.Mouse.Wheel * s.Width / 10; int y1 = evnt.Mouse.Y - s.Height / 2 + (int)evnt.Mouse.Wheel * s.Height / 10; r.UpperLeftCorner = fGen.GetWindowCoord(x1, y1); r.LowerRightCorner = fGen.GetWindowCoord(2 * evnt.Mouse.X - x1, 2 * evnt.Mouse.Y - y1); device.CursorControl.Position = new Vector2Di(s.Width / 2, s.Height / 2); } else { // zoom out int x1 = s.Width / 10; int y1 = s.Height / 10; r.UpperLeftCorner = fGen.GetWindowCoord(-x1, -y1); r.LowerRightCorner = fGen.GetWindowCoord(s.Width + x1, s.Height + y1); } fGen.Generate(r); return(true); } if (evnt.Mouse.Type == MouseEventType.LeftDown) { mouseMoveStart = new Vector2Di(evnt.Mouse.X, evnt.Mouse.Y); return(true); } if (evnt.Mouse.Type == MouseEventType.LeftUp) { Vector2Dd p1 = fGen.GetWindowCoord(evnt.Mouse.X, evnt.Mouse.Y); Vector2Dd p2 = fGen.GetWindowCoord(mouseMoveStart.X, mouseMoveStart.Y); Rectd r = fGen.GetWindow() + p2 - p1; fGen.Generate(r); mouseMoveStart = null; return(true); } } if (evnt.Type == EventType.Key) { if (evnt.Key.PressedDown) { if (evnt.Key.Key == KeyCode.Esc) { device.Close(); return(true); } if (evnt.Key.Key == KeyCode.F1) { showHelp = !showHelp; return(true); } switch (evnt.Key.Char) { case '+': fGen.Generate(fGen.GetMaxIterations() + 1); return(true); case '-': fGen.Generate(fGen.GetMaxIterations() - 1); return(true); case '*': fGen.Generate(fGen.GetMaxIterations() + 10); return(true); case '/': fGen.Generate(fGen.GetMaxIterations() - 10); return(true); } } if (evnt.Key.Key == KeyCode.PrintScreen) // PrintScreen never comes with "evnt.Key.PressedDown == true" so we process it without checking that { string n = "Screenshot-" + DateTime.Now.Ticks + ".png"; Image i = device.VideoDriver.CreateScreenShot(); device.VideoDriver.WriteImage(i, n); i.Drop(); device.Logger.Log("Screenshot saved as " + n); return(true); } } return(false); }