private void DrawPlatform(Graphics g, PlatformData platform) { Vector2 pos = platform.GetPosition(Degree); Point canvasPos = MapPointOnCanvas(pos); Pen pen = editorState.SelectedPlatforms.Contains(platform) ? Pens.DarkRed : Pens.Black; if (editorState.SelectedPlatform == platform) pen = Pens.Red; Pen circlePen = new Pen(pen.Color, 4); if (!platform.Invisible) { foreach (XNAPoint point in platform.Segments) { DrawSegment(canvasPos, g, point); } } else { Color c = pen.Color; c = Color.FromArgb(100, c.R, c.G, c.B); pen = new Pen(c); circlePen = new Pen(c); } DrawPath(g, platform, pen); DrawSegue(g, platform.StartSegue, pen); List<PlatformSegue> segs = new List<PlatformSegue>(platform.segues); segs.Insert(0, platform.StartSegue); foreach (PlatformSegue segue in segs) { DrawSegue(g, segue, pen); } g.DrawEllipse(circlePen, new Rectangle(canvasPos.X - 25, canvasPos.Y - 25, 50, 50)); }
private void updatePlatformOffset(PlatformData platform, int degree, Vector2 pos) { //look for the closest position in the platform's path //to where the mouse is, then offset it so it's there now float desiredDegree = 0; float minDis = float.MaxValue; for (float deg = 0; deg < 360; deg += 0.1f) { float dis = (platform.GetPosition(deg) - pos).Length(); if (dis < minDis) { minDis = dis; desiredDegree = deg; } } platform.DegreeOffset += desiredDegree - degree; platform.DegreeOffset = (platform.DegreeOffset + 360) % 360; }