Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: mockingbirdnest/Principia
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 9e87d81b8be2
Choose a base ref
...
head repository: mockingbirdnest/Principia
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 52a243d3c30d
Choose a head ref
  • 4 commits
  • 10 files changed
  • 1 contributor

Commits on May 19, 2017

  1. Split out rendering.

    pleroy committed May 19, 2017
    Copy the full SHA
    71415a1 View commit details
  2. One test that got lost.

    pleroy committed May 19, 2017
    Copy the full SHA
    5695bfc View commit details

Commits on May 20, 2017

  1. Merge.

    pleroy committed May 20, 2017
    Copy the full SHA
    397373c View commit details
  2. Merge pull request #1386 from pleroy/InterfaceTestSplit2

    Split the rendering-related code out of the main interface and test code
    pleroy authored May 20, 2017
    Copy the full SHA
    52a243d View commit details
146 changes: 0 additions & 146 deletions ksp_plugin/interface.cpp
Original file line number Diff line number Diff line change
@@ -229,13 +229,6 @@ QP principia__CelestialWorldDegreesOfFreedom(Plugin const* const plugin,
ToQP(plugin->CelestialWorldDegreesOfFreedom(index, part_at_origin)));
}

void principia__ClearTargetVessel(Plugin* const plugin) {
journal::Method<journal::ClearTargetVessel> m({plugin});
CHECK_NOTNULL(plugin);
plugin->ClearTargetVessel();
return m.Return();
}

double principia__CurrentTime(Plugin const* const plugin) {
journal::Method<journal::CurrentTime> m({plugin});
CHECK_NOTNULL(plugin);
@@ -370,13 +363,6 @@ QP principia__GetPartActualDegreesOfFreedom(Plugin const* const plugin,
ToQP(plugin->GetPartActualDegreesOfFreedom(part_id, part_at_origin)));
}

// Returns the frame last set by |plugin->SetPlottingFrame|. No transfer of
// ownership. The returned pointer is never null.
NavigationFrame const* principia__GetPlottingFrame(Plugin const* const plugin) {
journal::Method<journal::GetPlottingFrame> m({plugin});
return m.Return(CHECK_NOTNULL(plugin)->GetPlottingFrame());
}

int principia__GetStderrLogging() {
journal::Method<journal::GetStderrLogging> m;
return m.Return(FLAGS_stderrthreshold);
@@ -711,116 +697,6 @@ void principia__PrepareToReportCollisions(Plugin* const plugin) {
return m.Return();
}

Iterator* principia__RenderedPrediction(Plugin* const plugin,
char const* const vessel_guid,
XYZ const sun_world_position) {
journal::Method<journal::RenderedPrediction> m({plugin,
vessel_guid,
sun_world_position});
CHECK_NOTNULL(plugin);
auto const& prediction = plugin->GetVessel(vessel_guid)->prediction();
auto rendered_trajectory = plugin->RenderBarycentricTrajectoryInWorld(
prediction.Begin(),
prediction.End(),
FromXYZ<Position<World>>(sun_world_position));
return m.Return(new TypedIterator<DiscreteTrajectory<World>>(
std::move(rendered_trajectory),
plugin));
}

void principia__RenderedPredictionApsides(Plugin const* const plugin,
char const* const vessel_guid,
int const celestial_index,
XYZ const sun_world_position,
Iterator** const apoapsides,
Iterator** const periapsides) {
journal::Method<journal::RenderedPredictionApsides> m(
{plugin, vessel_guid, celestial_index, sun_world_position},
{apoapsides, periapsides});
CHECK_NOTNULL(plugin);
auto const& prediction = plugin->GetVessel(vessel_guid)->prediction();
std::unique_ptr<DiscreteTrajectory<World>> rendered_apoapsides;
std::unique_ptr<DiscreteTrajectory<World>> rendered_periapsides;
plugin->ComputeAndRenderApsides(celestial_index,
prediction.Begin(),
prediction.End(),
FromXYZ<Position<World>>(sun_world_position),
rendered_apoapsides,
rendered_periapsides);
*apoapsides = new TypedIterator<DiscreteTrajectory<World>>(
check_not_null(std::move(rendered_apoapsides)),
plugin);
*periapsides = new TypedIterator<DiscreteTrajectory<World>>(
check_not_null(std::move(rendered_periapsides)),
plugin);
return m.Return();
}

void principia__RenderedPredictionClosestApproaches(
Plugin const* const plugin,
char const* const vessel_guid,
XYZ const sun_world_position,
Iterator** const closest_approaches) {
journal::Method<journal::RenderedPredictionClosestApproaches> m(
{plugin, vessel_guid, sun_world_position},
{closest_approaches});
CHECK_NOTNULL(plugin);
auto const& prediction = plugin->GetVessel(vessel_guid)->prediction();
std::unique_ptr<DiscreteTrajectory<World>> rendered_closest_approaches;
plugin->ComputeAndRenderClosestApproaches(
prediction.Begin(),
prediction.End(),
FromXYZ<Position<World>>(sun_world_position),
rendered_closest_approaches);
*closest_approaches = new TypedIterator<DiscreteTrajectory<World>>(
check_not_null(std::move(rendered_closest_approaches)),
plugin);
return m.Return();
}

void principia__RenderedPredictionNodes(Plugin const* const plugin,
char const* const vessel_guid,
XYZ const sun_world_position,
Iterator** const ascending,
Iterator** const descending) {
journal::Method<journal::RenderedPredictionNodes> m(
{plugin, vessel_guid, sun_world_position},
{ascending, descending});
CHECK_NOTNULL(plugin);
auto const& prediction = plugin->GetVessel(vessel_guid)->prediction();
std::unique_ptr<DiscreteTrajectory<World>> rendered_ascending;
std::unique_ptr<DiscreteTrajectory<World>> rendered_descending;
plugin->ComputeAndRenderNodes(prediction.Begin(),
prediction.End(),
FromXYZ<Position<World>>(sun_world_position),
rendered_ascending,
rendered_descending);
*ascending = new TypedIterator<DiscreteTrajectory<World>>(
check_not_null(std::move(rendered_ascending)),
plugin);
*descending = new TypedIterator<DiscreteTrajectory<World>>(
check_not_null(std::move(rendered_descending)),
plugin);
return m.Return();
}

Iterator* principia__RenderedVesselTrajectory(Plugin const* const plugin,
char const* const vessel_guid,
XYZ const sun_world_position) {
journal::Method<journal::RenderedVesselTrajectory> m({plugin,
vessel_guid,
sun_world_position});
CHECK_NOTNULL(plugin);
auto const& psychohistory = plugin->GetVessel(vessel_guid)->psychohistory();
auto rendered_trajectory = plugin->RenderBarycentricTrajectoryInWorld(
psychohistory.Begin(),
psychohistory.End(),
FromXYZ<Position<World>>(sun_world_position));
return m.Return(new TypedIterator<DiscreteTrajectory<World>>(
std::move(rendered_trajectory),
plugin));
}

void principia__ReportCollision(Plugin const* const plugin,
PartId const part1_id,
PartId const part2_id) {
@@ -909,18 +785,6 @@ void principia__SetPartApparentDegreesOfFreedom(Plugin* const plugin,
return m.Return();
}

// |navigation_frame| must not be null. No transfer of ownership of
// |*navigation_frame|, takes ownership of |**navigation_frame|, nulls
// |*navigation_frame|.
void principia__SetPlottingFrame(Plugin* const plugin,
NavigationFrame** const navigation_frame) {
journal::Method<journal::SetPlottingFrame> m({plugin, navigation_frame},
{navigation_frame});
CHECK_NOTNULL(plugin);
plugin->SetPlottingFrame(TakeOwnership(navigation_frame));
return m.Return();
}

void principia__SetPredictionLength(Plugin* const plugin,
double const t) {
journal::Method<journal::SetPredictionLength> m({plugin, t});
@@ -929,16 +793,6 @@ void principia__SetPredictionLength(Plugin* const plugin,
return m.Return();
}

void principia__SetTargetVessel(Plugin* const plugin,
char const* const vessel_guid,
int const reference_body_index) {
journal::Method<journal::SetTargetVessel> m(
{plugin, vessel_guid, reference_body_index});
CHECK_NOTNULL(plugin);
plugin->SetTargetVessel(vessel_guid, reference_body_index);
return m.Return();
}

// Make it so that all log messages of at least |min_severity| are logged to
// stderr (in addition to logging to the usual log file(s)).
void principia__SetStderrLogging(int const min_severity) {
158 changes: 158 additions & 0 deletions ksp_plugin/interface_renderer.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@

#include "ksp_plugin/interface.hpp"

#include "journal/method.hpp"
#include "journal/profiles.hpp"
#include "ksp_plugin/plugin.hpp"

namespace principia {
namespace interface {

void principia__ClearTargetVessel(Plugin* const plugin) {
journal::Method<journal::ClearTargetVessel> m({plugin});
CHECK_NOTNULL(plugin);
plugin->ClearTargetVessel();
return m.Return();
}

// Returns the frame last set by |plugin->SetPlottingFrame|. No transfer of
// ownership. The returned pointer is never null.
NavigationFrame const* principia__GetPlottingFrame(Plugin const* const plugin) {
journal::Method<journal::GetPlottingFrame> m({plugin});
return m.Return(CHECK_NOTNULL(plugin)->GetPlottingFrame());
}

Iterator* principia__RenderedPrediction(Plugin* const plugin,
char const* const vessel_guid,
XYZ const sun_world_position) {
journal::Method<journal::RenderedPrediction> m({plugin,
vessel_guid,
sun_world_position});
CHECK_NOTNULL(plugin);
auto const& prediction = plugin->GetVessel(vessel_guid)->prediction();
auto rendered_trajectory = plugin->RenderBarycentricTrajectoryInWorld(
prediction.Begin(),
prediction.End(),
FromXYZ<Position<World>>(sun_world_position));
return m.Return(new TypedIterator<DiscreteTrajectory<World>>(
std::move(rendered_trajectory),
plugin));
}

void principia__RenderedPredictionApsides(Plugin const* const plugin,
char const* const vessel_guid,
int const celestial_index,
XYZ const sun_world_position,
Iterator** const apoapsides,
Iterator** const periapsides) {
journal::Method<journal::RenderedPredictionApsides> m(
{plugin, vessel_guid, celestial_index, sun_world_position},
{apoapsides, periapsides});
CHECK_NOTNULL(plugin);
auto const& prediction = plugin->GetVessel(vessel_guid)->prediction();
std::unique_ptr<DiscreteTrajectory<World>> rendered_apoapsides;
std::unique_ptr<DiscreteTrajectory<World>> rendered_periapsides;
plugin->ComputeAndRenderApsides(celestial_index,
prediction.Begin(),
prediction.End(),
FromXYZ<Position<World>>(sun_world_position),
rendered_apoapsides,
rendered_periapsides);
*apoapsides = new TypedIterator<DiscreteTrajectory<World>>(
check_not_null(std::move(rendered_apoapsides)),
plugin);
*periapsides = new TypedIterator<DiscreteTrajectory<World>>(
check_not_null(std::move(rendered_periapsides)),
plugin);
return m.Return();
}

void principia__RenderedPredictionClosestApproaches(
Plugin const* const plugin,
char const* const vessel_guid,
XYZ const sun_world_position,
Iterator** const closest_approaches) {
journal::Method<journal::RenderedPredictionClosestApproaches> m(
{plugin, vessel_guid, sun_world_position},
{closest_approaches});
CHECK_NOTNULL(plugin);
auto const& prediction = plugin->GetVessel(vessel_guid)->prediction();
std::unique_ptr<DiscreteTrajectory<World>> rendered_closest_approaches;
plugin->ComputeAndRenderClosestApproaches(
prediction.Begin(),
prediction.End(),
FromXYZ<Position<World>>(sun_world_position),
rendered_closest_approaches);
*closest_approaches = new TypedIterator<DiscreteTrajectory<World>>(
check_not_null(std::move(rendered_closest_approaches)),
plugin);
return m.Return();
}

void principia__RenderedPredictionNodes(Plugin const* const plugin,
char const* const vessel_guid,
XYZ const sun_world_position,
Iterator** const ascending,
Iterator** const descending) {
journal::Method<journal::RenderedPredictionNodes> m(
{plugin, vessel_guid, sun_world_position},
{ascending, descending});
CHECK_NOTNULL(plugin);
auto const& prediction = plugin->GetVessel(vessel_guid)->prediction();
std::unique_ptr<DiscreteTrajectory<World>> rendered_ascending;
std::unique_ptr<DiscreteTrajectory<World>> rendered_descending;
plugin->ComputeAndRenderNodes(prediction.Begin(),
prediction.End(),
FromXYZ<Position<World>>(sun_world_position),
rendered_ascending,
rendered_descending);
*ascending = new TypedIterator<DiscreteTrajectory<World>>(
check_not_null(std::move(rendered_ascending)),
plugin);
*descending = new TypedIterator<DiscreteTrajectory<World>>(
check_not_null(std::move(rendered_descending)),
plugin);
return m.Return();
}

Iterator* principia__RenderedVesselTrajectory(Plugin const* const plugin,
char const* const vessel_guid,
XYZ const sun_world_position) {
journal::Method<journal::RenderedVesselTrajectory> m({plugin,
vessel_guid,
sun_world_position});
CHECK_NOTNULL(plugin);
auto const& psychohistory = plugin->GetVessel(vessel_guid)->psychohistory();
auto rendered_trajectory = plugin->RenderBarycentricTrajectoryInWorld(
psychohistory.Begin(),
psychohistory.End(),
FromXYZ<Position<World>>(sun_world_position));
return m.Return(new TypedIterator<DiscreteTrajectory<World>>(
std::move(rendered_trajectory),
plugin));
}

// |navigation_frame| must not be null. No transfer of ownership of
// |*navigation_frame|, takes ownership of |**navigation_frame|, nulls
// |*navigation_frame|.
void principia__SetPlottingFrame(Plugin* const plugin,
NavigationFrame** const navigation_frame) {
journal::Method<journal::SetPlottingFrame> m({plugin, navigation_frame},
{navigation_frame});
CHECK_NOTNULL(plugin);
plugin->SetPlottingFrame(TakeOwnership(navigation_frame));
return m.Return();
}

void principia__SetTargetVessel(Plugin* const plugin,
char const* const vessel_guid,
int const reference_body_index) {
journal::Method<journal::SetTargetVessel> m(
{plugin, vessel_guid, reference_body_index});
CHECK_NOTNULL(plugin);
plugin->SetTargetVessel(vessel_guid, reference_body_index);
return m.Return();
}

} // namespace interface
} // namespace principia
1 change: 1 addition & 0 deletions ksp_plugin/ksp_plugin.vcxproj
Original file line number Diff line number Diff line change
@@ -365,6 +365,7 @@ copy /Y "$(OutDir)$(TargetName).pdb" "$(SolutionDir)$(Configuration)\GameData\Pr
<ClCompile Include="interface.cpp" />
<ClCompile Include="interface_flight_plan.cpp" />
<ClCompile Include="interface_iterator.cpp" />
<ClCompile Include="interface_renderer.cpp" />
<ClCompile Include="interface_vessel.cpp" />
<ClCompile Include="part.cpp" />
<ClCompile Include="part_subsets.cpp" />
3 changes: 3 additions & 0 deletions ksp_plugin/ksp_plugin.vcxproj.filters
Original file line number Diff line number Diff line change
@@ -115,6 +115,9 @@
<ClCompile Include="..\base\version.generated.cc">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="interface_renderer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\serialization\journal.proto" />
Loading