public bool Update(SimTime t) { var dt = t.WallTimeElapsed; var err = _end - _current; var derr = (err - _lastError) / dt; _ierr += err * dt; var p = Proportional * dt; var i = Integral * dt; var d = Differential * dt; var change = err * p + derr * d + _ierr * i; if (err.Length > 1E-05) { _current += change; _lastError = err; return(true); } else { return(false); } }
public void Update(SimTime t) { if (_lookAtAnim != null) { if (_lookAtAnim.Update(t)) { LookAt = _lookAtAnim.Value; LookAt3d = LookAt.ToPositionAboveSeaLeveld(0); Dirty = true; } else { _lookAtAnim = null; } } if (_posAnim != null) { if (_posAnim.Update(t)) { Pos3d = _posAnim.Value; Dirty = true; } else { _posAnim = null; } } }
public void Draw(Camera cam, SimTime t) { GL.Disable(All.DepthTest); GL.Enable(All.Texture2D); _textures.BeginFrame(); _geometries.BeginFrame(); if (MissingTileTexture == 0) { using (var img = UIImage.FromFile("MissingTile.png")) { MissingTileTexture = img.ToGLTexture(); } } GL.EnableClientState(All.TextureCoordArray); GL.EnableClientState(All.NormalArray); var zoom = cam.Zoom; if (_lastZoom < 0) { _lastZoom = zoom; } if (zoom != _lastZoom) { _prevZoom = _lastZoom; _lastZoomFadeTime = t.WallTime; } var fadeTime = t.WallTime - _lastZoomFadeTime; var shouldFade = fadeTime.TotalSeconds < FadeSecs; var fade = shouldFade ? (float)(fadeTime.TotalSeconds / FadeSecs) : 1.0f; _lastZoom = zoom; var centerTile1 = TileName.FromLocation(cam.LookAt, _prevZoom); var centerTile = TileName.FromLocation(cam.LookAt, zoom); // // Draw the tiles // if (shouldFade) { DrawTiles(cam, centerTile1, 1.0f); } DrawTiles(cam, centerTile, fade); GL.DisableClientState(All.TextureCoordArray); GL.DisableClientState(All.NormalArray); GL.Disable(All.Texture2D); GL.Enable(All.DepthTest); }
public bool Update(SimTime t) { if (_accTime > _duration) { return(false); } else { _accTime += t.WallTimeElapsed; var a = _accTime / _duration; if (a > 1) { a = 1; } a *= a; //a = 1 - a; _current = _start.LocationAway(_start.VectorTo(_end) * (float)a); return(true); } }
public bool Update(SimTime t) { if (_accTime > _duration) { return(false); } else { _accTime += t.WallTimeElapsed; var a = _accTime / _duration; if (a > 1) { a = 1; } //a *= a; //a = 1 - a; _current = _start + (_end - _start) * a; return(true); } }
protected override void OnRenderFrame(FrameEventArgs e) { base.OnRenderFrame (e); var sz = new Size((int)Frame.Width, (int)Frame.Height); if (sz.Width != Size.Width) { Size = sz; } MakeCurrent (); // // Initialize drawables // foreach (var d in _drawablesNeedingLoad) { d.LoadContent (); } _drawablesNeedingLoad.Clear (); // // Determine the current sim time // var t = new NSDate().SecondsSinceReferenceDate; var wallNow = DateTime.UtcNow; var time = new SimTime() { Time = wallNow, WallTime = wallNow, TimeElapsed = t - _lastT, WallTimeElapsed = t - _lastT }; _lastT = t; //Console.WriteLine ("FPS {0:0}", 1.0 / time.WallTimeElapsed); GL.Viewport (0, 0, Size.Width, Size.Height); GL.ClearColor (158/255.0f, 207/255.0f, 237/255.0f, 1.0f); GL.Clear((int)(All.DepthBufferBit | All.ColorBufferBit)); // // Set the common OpenGL state // GL.Enable(All.Blend); GL.BlendFunc(All.SrcAlpha, All.OneMinusSrcAlpha); GL.Enable(All.DepthTest); GL.EnableClientState(All.VertexArray); // // Render the background // _background.Render(); // // Setup the 3D camera // Camera.SetViewport(Size.Width, Size.Height); CameraMan.Update(time); Camera.Execute(CameraMan); // // Enable the sun // if (ShowSun) { GL.Enable(All.Lighting); GL.Enable(All.ColorMaterial); GL.Enable(All.Light0); var sp = _sunLoc.ToPositionAboveSeaLevel(150000000); GL.Light(All.Light0, All.Position, new float[]{sp.X,sp.Y,sp.Z,1}); } // // Draw all the layers // foreach (var d in _drawables) { d.Draw(Camera, time); } if (ShowSun) { GL.Disable(All.Lighting); GL.Disable(All.ColorMaterial); } SwapBuffers(); frameCount++; }
protected override void OnRenderFrame(FrameEventArgs e) { base.OnRenderFrame (e); var sz = new Size((int)Frame.Width, (int)Frame.Height); if (sz.Width != Size.Width) { Size = sz; } MakeCurrent(); GL.Viewport (0, 0, Size.Width, Size.Height); var t = new NSDate().SecondsSinceReferenceDate; var wallNow = DateTime.UtcNow; var time = new SimTime() { Time = wallNow, WallTime = wallNow, TimeElapsed = t - _lastT, WallTimeElapsed = t - _lastT }; _lastT = t; //Console.WriteLine ("FPS {0:0}", 1.0 / time.WallTimeElapsed); GL.ClearColor (158/255.0f, 207/255.0f, 237/255.0f, 1.0f); GL.Clear((int)(All.DepthBufferBit | All.ColorBufferBit)); // // Set the common OpenGL state // GL.Enable(All.Blend); GL.BlendFunc(All.SrcAlpha, All.OneMinusSrcAlpha); GL.Enable(All.DepthTest); GL.EnableClientState(All.VertexArray); // // Render the background // _background.Render(); // // Setup the 3D camera // Camera.SetViewport(Size.Width, Size.Height); CameraMan.Update(time); Camera.Execute(CameraMan); // // Enable the sun // if (ShowSun) { GL.Enable(All.Lighting); GL.Enable(All.ColorMaterial); GL.Enable(All.Light0); var sp = _sunLoc.ToPositionAboveSeaLevel(150000000); GL.Light(All.Light0, All.Position, new float[]{sp.X,sp.Y,sp.Z,1}); } // // Draw all the layers // foreach (var d in _draws) { d.Draw(Camera, time); } if (ShowSun) { GL.Disable(All.Lighting); GL.Disable(All.ColorMaterial); // if (_gesture == WorldView3d.GestureType.Rotating) { // var verts = new Vector3[2]; // var ppp = Location.SunLocation(DateTime.UtcNow.AddHours(-12)); // verts[0] = ppp.ToPositionAboveSeaLevel(0); // verts[1] = ppp.ToPositionAboveSeaLevel(1000); // GL.Color4(0, 1.0f, 0, 1.0f); // GL.VertexPointer(3, All.Float, 0, verts); // GL.DrawArrays(All.Lines, 0, 2); // Console.WriteLine (Camera.LookAt); // Console.WriteLine (ppp); // } } SwapBuffers(); }
public void Draw (Camera cam, SimTime t) { GL.Disable(All.DepthTest); GL.Enable(All.Texture2D); _textures.BeginFrame(); _geometries.BeginFrame(); GL.EnableClientState(All.TextureCoordArray); GL.EnableClientState(All.NormalArray); var zoom = cam.Zoom; if (_lastZoom < 0) _lastZoom = zoom; if (zoom != _lastZoom) { _prevZoom = _lastZoom; _lastZoomFadeTime = t.WallTime; } var fadeTime = t.WallTime - _lastZoomFadeTime; var shouldFade = fadeTime.TotalSeconds < FadeSecs; var fade = shouldFade ? (float)(fadeTime.TotalSeconds/FadeSecs) : 1.0f; _lastZoom = zoom; var centerTile1 = TileName.FromLocation(cam.LookAt, _prevZoom); var centerTile = TileName.FromLocation(cam.LookAt, zoom); // // Draw the tiles // if (shouldFade) { DrawTiles(cam, centerTile1, 1.0f); } DrawTiles(cam, centerTile, fade); GL.DisableClientState(All.TextureCoordArray); GL.DisableClientState(All.NormalArray); GL.Disable(All.Texture2D); GL.Enable(All.DepthTest); }
public void Update (SimTime t) { }
protected override void OnRenderFrame(FrameEventArgs e) { base.OnRenderFrame(e); var sz = new Size((int)Frame.Width, (int)Frame.Height); if (sz.Width != Size.Width) { Size = sz; } MakeCurrent(); // // Initialize drawables // foreach (var d in _drawablesNeedingLoad) { d.LoadContent(); } _drawablesNeedingLoad.Clear(); // // Determine the current sim time // var t = new NSDate().SecondsSinceReferenceDate; var wallNow = DateTime.UtcNow; var time = new SimTime() { Time = wallNow, WallTime = wallNow, TimeElapsed = t - _lastT, WallTimeElapsed = t - _lastT }; _lastT = t; //Console.WriteLine ("FPS {0:0}", 1.0 / time.WallTimeElapsed); GL.Viewport(0, 0, Size.Width, Size.Height); GL.ClearColor(158 / 255.0f, 207 / 255.0f, 237 / 255.0f, 1.0f); GL.Clear((int)(All.DepthBufferBit | All.ColorBufferBit)); // // Set the common OpenGL state // GL.Enable(All.Blend); GL.BlendFunc(All.SrcAlpha, All.OneMinusSrcAlpha); GL.Enable(All.DepthTest); GL.EnableClientState(All.VertexArray); // // Render the background // _background.Render(); // // Setup the 3D camera // Camera.SetViewport(Size.Width, Size.Height); CameraMan.Update(time); Camera.Execute(CameraMan); // // Enable the sun // if (ShowSun) { GL.Enable(All.Lighting); GL.Enable(All.ColorMaterial); GL.Enable(All.Light0); var sp = _sunLoc.ToPositionAboveSeaLevel(150000000); GL.Light(All.Light0, All.Position, new float[] { sp.X, sp.Y, sp.Z, 1 }); } // // Draw all the layers // foreach (var d in _drawables) { d.Draw(Camera, time); } if (ShowSun) { GL.Disable(All.Lighting); GL.Disable(All.ColorMaterial); } SwapBuffers(); frameCount++; }
public void Update(SimTime t) { }
public bool Update(SimTime t) { var dt = t.WallTimeElapsed; var err = _end - _current; var derr = (err - _lastError) / dt; _ierr += err * dt; var p = Proportional * dt; var i = Integral * dt; var d = Differential * dt; var change = err * p + derr * d + _ierr * i; if (err.Length > 1E-05) { _current += change; _lastError = err; return true; } else { return false; } }
public bool Update(SimTime t) { if (_accTime > _duration) { return false; } else { _accTime += t.WallTimeElapsed; var a = _accTime / _duration; if (a > 1) a = 1; //a *= a; //a = 1 - a; _current = _start + (_end - _start) * a; return true; } }
public bool Update(SimTime t) { if (_accTime > _duration) { return false; } else { _accTime += t.WallTimeElapsed; var a = _accTime / _duration; if (a > 1) a = 1; a *= a; //a = 1 - a; _current = _start.LocationAway (_start.VectorTo (_end) * (float)a); return true; } }
public void Update(SimTime t) { if (_lookAtAnim != null) { if (_lookAtAnim.Update (t)) { LookAt = _lookAtAnim.Value; LookAt3d = LookAt.ToPositionAboveSeaLeveld (0); Dirty = true; } else { _lookAtAnim = null; } } if (_posAnim != null) { if (_posAnim.Update (t)) { Pos3d = _posAnim.Value; Dirty = true; } else { _posAnim = null; } } }
protected override void OnRenderFrame(FrameEventArgs e) { base.OnRenderFrame(e); var sz = new Size((int)Frame.Width, (int)Frame.Height); if (sz.Width != Size.Width) { Size = sz; } MakeCurrent(); GL.Viewport(0, 0, Size.Width, Size.Height); var t = new NSDate().SecondsSinceReferenceDate; var wallNow = DateTime.UtcNow; var time = new SimTime() { Time = wallNow, WallTime = wallNow, TimeElapsed = t - _lastT, WallTimeElapsed = t - _lastT }; _lastT = t; //Console.WriteLine ("FPS {0:0}", 1.0 / time.WallTimeElapsed); GL.ClearColor(158 / 255.0f, 207 / 255.0f, 237 / 255.0f, 1.0f); GL.Clear((int)(All.DepthBufferBit | All.ColorBufferBit)); // // Set the common OpenGL state // GL.Enable(All.Blend); GL.BlendFunc(All.SrcAlpha, All.OneMinusSrcAlpha); GL.Enable(All.DepthTest); GL.EnableClientState(All.VertexArray); // // Render the background // _background.Render(); // // Setup the 3D camera // Camera.SetViewport(Size.Width, Size.Height); CameraMan.Update(time); Camera.Execute(CameraMan); // // Enable the sun // if (ShowSun) { GL.Enable(All.Lighting); GL.Enable(All.ColorMaterial); GL.Enable(All.Light0); var sp = _sunLoc.ToPositionAboveSeaLevel(150000000); GL.Light(All.Light0, All.Position, new float[] { sp.X, sp.Y, sp.Z, 1 }); } // // Draw all the layers // foreach (var d in _draws) { d.Draw(Camera, time); } if (ShowSun) { GL.Disable(All.Lighting); GL.Disable(All.ColorMaterial); // if (_gesture == WorldView3d.GestureType.Rotating) { // var verts = new Vector3[2]; // var ppp = Location.SunLocation(DateTime.UtcNow.AddHours(-12)); // verts[0] = ppp.ToPositionAboveSeaLevel(0); // verts[1] = ppp.ToPositionAboveSeaLevel(1000); // GL.Color4(0, 1.0f, 0, 1.0f); // GL.VertexPointer(3, All.Float, 0, verts); // GL.DrawArrays(All.Lines, 0, 2); // Console.WriteLine (Camera.LookAt); // Console.WriteLine (ppp); // } } SwapBuffers(); }