public void Reset(Track track, bool placeByIndex) { if (placeByIndex) { PathPoint pp; var p = track.PathPosToPoint(-Index * 5, out pp); LookAt = pp.Dir.Normalized(); Pos = p + LookAt.Rotate90() * 2 * (Index % 2 == 0 ? 1 : -1); CapturedPoint = pp; } else { Pos = track.Points[0].Point; LookAt = track.Points[0].Dir.Normalized(); CapturedPoint = track.Points[0]; } TotalCapturedLength = 0; Adhesion = track.Adhesion; IsAlive = true; IsOutOfTrack = false; IsOnGround = true; Penalty = 0; }