public override void Update(Flat6Engine engine) { _operationQueue.Clear(); foreach (var mesh in _meshes) { if (ShouldMeshSubdivide(mesh, engine.Camera)) { _operationQueue.Enqueue(new LodOperation(mesh, LodAction.Split)); } if (ShouldMeshMerge(mesh, engine.Camera)) { _operationQueue.Enqueue(new LodOperation(mesh, LodAction.Merge)); } } foreach (var op in _operationQueue) { switch (op.Action) { case LodAction.Split: Split(op.Mesh); break; case LodAction.Merge: Merge(op.Mesh); break; } } base.Update(engine); }
/// <inheritdoc /> public override void Render(Flat6Engine engine, Camera camera) { GL.ActiveTexture(TextureUnit.Texture0); GL.BindTexture(TextureTarget.Texture2D, Texture.Id); GL.ActiveTexture(TextureUnit.Texture3); GL.BindTexture(TextureTarget.Texture2D, _textureWater.Id); GL.ActiveTexture(TextureUnit.Texture4); GL.BindTexture(TextureTarget.Texture2D, _textureNormal.Id); GL.ActiveTexture(TextureUnit.Texture5); GL.BindTexture(TextureTarget.Texture2D, _textureLights.Id); GL.ActiveTexture(TextureUnit.Texture6); GL.BindTexture(TextureTarget.Texture2D, _textureClouds.Id); var mat = GetTransformation(); _shader.Uniforms.SetValue("m", mat); var outPos = -mat.ExtractTranslation(); _shader.Uniforms.SetValue("cameraPos", camera.Position); _shader.Uniforms.SetValue("lightPos", engine.LightPosition); _shader.Uniforms.SetValue("v", camera.GetTransformation()); _shader.Uniforms.SetValue("p", engine.ProjectionMatrix); _shader.Use(); Mesh.Render(outPos, camera); _shader.Release(); }
public override void Update(Flat6Engine engine) { var prediction = _satellite.Predict(); var pos = prediction.ToSphericalEcef(); pos /= 100; // 1 engine unit = 10 km LocalTransformation = Matrix4.CreateTranslation(pos.ToTk()); base.Update(engine); }
public virtual void Render(Flat6Engine engine, NvgContext context, FrameEventArgs e) { _fpsGraph.UpdateGraph((float)engine.Window.RenderTime); context.FillColor(NanoVg.Rgba(255, 255, 255, 255)); context.FontFace("engine_mono"); context.FontSize(18); context.TextAlign(NvgAlign.Top | NvgAlign.Left); _fpsGraph.RenderGraph(context, 3, 3); _tpsGraph.RenderGraph(context, 3, 45); }
public override void Update(Flat6Engine engine) { LocalTransformation = GetTranslationMatrix() * GetRotationMatrix(); var mv = (LocalTransformation * engine.ProjectionMatrix); mv.Transpose(); _frustum[0].Nums = mv.Row3 + mv.Row0; _frustum[1].Nums = mv.Row3 - mv.Row0; _frustum[2].Nums = mv.Row3 - mv.Row1; _frustum[3].Nums = mv.Row3 + mv.Row1; _frustum[4].Nums = mv.Row2; _frustum[5].Nums = mv.Row3 - mv.Row2; }
public override void Render(Flat6Engine engine, Camera camera) { var mat = GetTransformation(); _shader.Uniforms.SetValue("m", mat); var outPos = -mat.ExtractTranslation(); _shader.Uniforms.SetValue("cameraPos", camera.Position); _shader.Uniforms.SetValue("lightPos", engine.LightPosition); _shader.Uniforms.SetValue("v", camera.GetTransformation()); _shader.Uniforms.SetValue("p", engine.ProjectionMatrix); _shader.Use(); Mesh.Render(outPos, camera); _shader.Release(); }
public static void EnterSandbox(Flat6Engine engine, Camera camera) { GL.PushAttrib(ModifiedAttribs); GL.Disable(EnableCap.Texture2D); GL.LineWidth(LineWidth); GL.PointSize(PointRadius); GL.Color4(DrawColor); GL.PushMatrix(); GL.Color3(Color.White); GL.MatrixMode(MatrixMode.Projection); GL.LoadMatrix(ref engine.ProjectionMatrix); GL.MatrixMode(MatrixMode.Modelview); GL.LoadMatrix(ref camera.LocalTransformation); }
public override void Render(Flat6Engine engine, Camera camera) { var mat = GetTransformation(); engine.ShaderDefault.Uniforms.SetValue("m", mat); var outPos = -mat.ExtractTranslation(); GL.ActiveTexture(TextureUnit.Texture0); engine.ShaderDefault.Use(); foreach (var mesh in _meshes) { GL.BindTexture(TextureTarget.Texture2D, _textures[new LeveledTexturePointer(mesh.Level, mesh.Slice, mesh.Ring)].Id); mesh.Render(outPos, camera); } engine.ShaderDefault.Release(); }
public virtual void Render(Flat6Engine engine, Camera camera) { if (Mesh == null) { return; } GL.ActiveTexture(TextureUnit.Texture0); GL.BindTexture(TextureTarget.Texture2D, (Texture ?? engine.TextureDefault).Id); var mat = GetTransformation(); engine.ShaderDefault.Uniforms.SetValue("m", mat); var outPos = -mat.ExtractTranslation(); engine.ShaderDefault.Use(); Mesh.Render(outPos, camera); engine.ShaderDefault.Release(); }
public override void Update(Flat6Engine engine) { base.Update(engine); _points.Clear(); var t = DateTime.UtcNow; var xt = TimeSpan.FromMinutes(_satellite.Orbit.Period); var dt = TimeSpan.FromMinutes(_satellite.Orbit.Period / 75); for (var time = t; time < t + xt; time += dt) { if (_points.Count == 75) { break; } _points.Add(_satellite.Predict(time).ToSphericalEcef().ToTk() / 100); } var track = (MeshSatelliteTrack)Mesh; track.ComputePoints(Vector3.Zero, _points); }
public void Update(Flat6Engine engine, FrameEventArgs e) { }
public void Render(Flat6Engine engine, NvgContext context, FrameEventArgs e) { ProcessRenderEvent(engine, context); }
public virtual void Update(Flat6Engine engine) { var transform = GetTransformation().ExtractTranslation(); BoundingBox.CenterOn(transform); }
public void Update(Flat6Engine engine, FrameEventArgs e) { _tpsGraph.UpdateGraph((float)engine.Window.UpdateTime); }
public override void Update(Flat6Engine engine) { LocalTransformation = engine.Camera.GetTranslationMatrix().Inverted(); base.Update(engine); }
public virtual void Update(Flat6Engine engine) { }