private void Draw(WorldStateChange change) { _worldState = change.Perform(WorldStateChangeAware.Instance)(_worldState); var world = _worldBuilder.BuildWorld(_worldState); _renderer.Render(world, _backBuffer); pictureBox1.Image = _backBuffer; var exchange = _backBuffer; _backBuffer = _frontBuffer; _frontBuffer = exchange; }
private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Left) { return; } switch (_mouseMode) { case MouseMode.RotateLight: Draw(WorldStateChange.ChangeLightPosition(e.X, e.Y)); break; case MouseMode.RotateModel: var x = ((float)ViewportWidth / 2 - e.X) / ((float)ViewportWidth / 2) * (float)Math.PI / 2; var y = ((float)ViewportHeight / 2 - e.Y) / ((float)ViewportHeight / 2) * (float)Math.PI / 2; Draw(WorldStateChange.ChangeModelRotation(x, y)); break; } }
private void textureRadioButton_CheckedChanged(object sender, EventArgs e) { Draw(WorldStateChange.ChangeFillMode(FillMode.Texture)); }
private void normalMappingRadioButton_CheckedChanged(object sender, EventArgs e) { Draw(WorldStateChange.ChangeLightMode(LightMode.NormalMapping)); }
private void solidColorRadioButton_CheckedChanged(object sender, EventArgs e) { Draw(WorldStateChange.ChangeFillMode(FillMode.SolidColor)); }
private void gouraudRadioButton_CheckedChanged(object sender, EventArgs e) { Draw(WorldStateChange.ChangeLightMode(LightMode.Gouraud)); }
private void simpleRadioButton_CheckedChanged(object sender, EventArgs e) { Draw(WorldStateChange.ChangeLightMode(LightMode.Simple)); }
private void bordersAndFillRadioButton_CheckedChanged(object sender, EventArgs e) { Draw(WorldStateChange.ChangeRenderMode(RenderMode.BordersAndFill)); }
private void checkBox3_CheckedChanged(object sender, EventArgs e) { var perspectiveProjection = perspectiveProjectionCheckBox.Checked; Draw(WorldStateChange.ChangePerspectiveProjection(perspectiveProjection)); }
private void CameraZPositionHandler(object sender, EventArgs e) { var viewportScale = (float)viewportScaleNumericUpDown.Value; Draw(WorldStateChange.ChangeViewportScale(viewportScale)); }