diff --git a/ksp_plugin/interface_flight_plan.cpp b/ksp_plugin/interface_flight_plan.cpp index de6f204c9e..ff98d60946 100644 --- a/ksp_plugin/interface_flight_plan.cpp +++ b/ksp_plugin/interface_flight_plan.cpp @@ -521,13 +521,21 @@ void __cdecl principia__FlightPlanRenderedApsides( GetFlightPlan(*plugin, vessel_guid).GetAllSegments(); DiscreteTrajectory rendered_apoapsides; DiscreteTrajectory rendered_periapsides; - plugin->ComputeAndRenderApsides(celestial_index, - flight_plan, - flight_plan.begin(), flight_plan.end(), - FromXYZ>(sun_world_position), - max_points, - rendered_apoapsides, - rendered_periapsides); + for (auto const& segment : flight_plan.segments()) { + DiscreteTrajectory segment_rendered_apoapsides; + DiscreteTrajectory segment_rendered_periapsides; + plugin->ComputeAndRenderApsides( + celestial_index, + flight_plan, + segment.begin(), + segment.end(), + FromXYZ>(sun_world_position), + max_points, + segment_rendered_apoapsides, + segment_rendered_periapsides); + rendered_apoapsides.Merge(std::move(segment_rendered_apoapsides)); + rendered_periapsides.Merge(std::move(segment_rendered_periapsides)); + } *apoapsides = new TypedIterator>( std::move(rendered_apoapsides), plugin); @@ -550,12 +558,18 @@ void __cdecl principia__FlightPlanRenderedClosestApproaches( auto const& flight_plan = GetFlightPlan(*plugin, vessel_guid).GetAllSegments(); DiscreteTrajectory rendered_closest_approaches; - plugin->ComputeAndRenderClosestApproaches( - flight_plan, - flight_plan.begin(), flight_plan.end(), - FromXYZ>(sun_world_position), - max_points, - rendered_closest_approaches); + for (auto const& segment : flight_plan.segments()) { + DiscreteTrajectory segment_rendered_closest_approaches; + plugin->ComputeAndRenderClosestApproaches( + flight_plan, + segment.begin(), + segment.end(), + FromXYZ>(sun_world_position), + max_points, + segment_rendered_closest_approaches); + rendered_closest_approaches.Merge( + std::move(segment_rendered_closest_approaches)); + } *closest_approaches = new TypedIterator>( std::move(rendered_closest_approaches), plugin); @@ -576,11 +590,18 @@ void __cdecl principia__FlightPlanRenderedNodes(Plugin const* const plugin, GetFlightPlan(*plugin, vessel_guid).GetAllSegments(); DiscreteTrajectory rendered_ascending; DiscreteTrajectory rendered_descending; - plugin->ComputeAndRenderNodes(flight_plan.begin(), flight_plan.end(), - FromXYZ>(sun_world_position), - max_points, - rendered_ascending, - rendered_descending); + for (auto const& segment : flight_plan.segments()) { + DiscreteTrajectory segment_rendered_ascending; + DiscreteTrajectory segment_rendered_descending; + plugin->ComputeAndRenderNodes(segment.begin(), + segment.end(), + FromXYZ>(sun_world_position), + max_points, + segment_rendered_ascending, + segment_rendered_descending); + rendered_ascending.Merge(std::move(segment_rendered_ascending)); + rendered_descending.Merge(std::move(segment_rendered_descending)); + } *ascending = new TypedIterator>( std::move(rendered_ascending), plugin); diff --git a/ksp_plugin_adapter_stub/ksp_plugin_adapter_stub.dll b/ksp_plugin_adapter_stub/ksp_plugin_adapter_stub.dll index f9798413cf..1da9a22838 100644 Binary files a/ksp_plugin_adapter_stub/ksp_plugin_adapter_stub.dll and b/ksp_plugin_adapter_stub/ksp_plugin_adapter_stub.dll differ diff --git a/ksp_plugin_adapter_stub/ksp_plugin_adapter_stub.pdb b/ksp_plugin_adapter_stub/ksp_plugin_adapter_stub.pdb index 706257f21b..6ba319fa2b 100644 Binary files a/ksp_plugin_adapter_stub/ksp_plugin_adapter_stub.pdb and b/ksp_plugin_adapter_stub/ksp_plugin_adapter_stub.pdb differ