public void Draw(Graphics g, ProjectedPositionCalculator ppCalc, RectangleF screen) { if (Math.Abs(_angle.Degree - targetAngle.Degree) > 0.1) { var aCalc2 = new AngularCalculator((float)targetAngle.Degree * -1, Location); DrawRocketAtAngle(g, ppCalc, aCalc2, 100); } var aCalc = new AngularCalculator((float)_angle.Degree * -1, Location); DrawRocketAtAngle(g, ppCalc, aCalc); if (_engineRunning) { DrawFlames(g, ppCalc, aCalc); } }
private void DrawFlames(Graphics g, ProjectedPositionCalculator ppCalc, AngularCalculator aCalc) { foreach (var thrustArea in _rocketInf.ThrustAreas) { var width = (thrustArea.Stop.X - Math.Abs(thrustArea.Start.X)); var points = new List <PointF> { ppCalc.ProjectPoint(aCalc.Turn(new PointD((decimal)Location.X + (decimal)thrustArea.Start.X, (decimal)Location.Y + (decimal)thrustArea.Stop.Y))), ppCalc.ProjectPoint(aCalc.Turn(new PointD((decimal)Location.X + (decimal)thrustArea.Stop.X, (decimal)Location.Y + (decimal)thrustArea.Stop.Y))), ppCalc.ProjectPoint(aCalc.Turn(new PointD((decimal)Location.X + (decimal)width / 2, (decimal)Location.Y + (decimal)thrustArea.Stop.Y - Math.Abs((decimal)thrustArea.Stop.X - (decimal)thrustArea.Start.X) * (decimal)_thrustPercentage * (decimal)GetRandomNumber(3.5, 6)))) }; g.FillPolygon(new SolidBrush(Color.OrangeRed), points.ToArray()); } }
private void DrawAllObjects(ProjectedPositionCalculator ppCalc) { foreach (var planet in _objects.Terrains) { planet.DrawSimple(_graphicsBuffer.Graphics, ppCalc); } var mainObject = _objects.MainObject; var loc = mainObject.Location; var point1 = ppCalc.ProjectPoint(loc); var aCalc = new AngularCalculator((float)mainObject._angle.Degree, point1); var point2 = aCalc.Turn(new PointF(point1.X, point1.Y - 10)); var point3 = aCalc.Turn(new PointF(point1.X + 5, point1.Y + 5)); var point4 = aCalc.Turn(new PointF(point1.X - 5, point1.Y + 5)); var polygon = new List <PointF> { point2, point3, point4 }; _graphicsBuffer.Graphics.FillPolygon(new SolidBrush(Color.LightGray), polygon.ToArray()); }
private static PointF TurnAndProject(decimal x, decimal y, ProjectedPositionCalculator p, AngularCalculator aCalc) { return(p.ProjectPoint(aCalc.Turn(x, y))); }
private static PointF TurnAndProject(float x, float y, ProjectedPositionCalculator p, AngularCalculator aCalc) { return(p.ProjectPoint(aCalc.Turn(new PointF(x, y)))); }
public RectangleF GetBounds(PointF pos, AngularCalculator aCalc) { var points = GetBoundPointsList(pos, aCalc); return(BoundsCalculator.CalculateBounds(points)); }
public List <RocketSpritePiece> CalculatePolygons(PointF pos, ProjectedPositionCalculator ppCalc, AngularCalculator aCalc) { var spritePieces = new List <RocketSpritePiece>(); foreach (var spritePiece in _spritePieces) { var calculatedSpritePieces = new List <PointF>(); foreach (var spritePiecePoint in spritePiece.Points) { var x = (decimal)pos.X + (decimal)spritePiecePoint.X; var y = (decimal)pos.Y + (decimal)spritePiecePoint.Y; calculatedSpritePieces.Add(TurnAndProject(x, y, ppCalc, aCalc)); } spritePieces.Add(new RocketSpritePiece(calculatedSpritePieces, spritePiece.Brush)); } return(spritePieces); }
private void DrawRocketAtAngle(Graphics g, ProjectedPositionCalculator ppCalc, AngularCalculator aCalc, int alpha = 255) { var spritePieces2 = _sprite.CalculatePolygons(Location, ppCalc, aCalc); foreach (var piece in spritePieces2) { var brush = new SolidBrush(Color.FromArgb(alpha, piece.Brush.Color.R, piece.Brush.Color.G, piece.Brush.Color.B)); g.FillPolygon(brush, piece.Points.ToArray()); } }