Forgot to follow the naming convention...

Rename everything like MY_VAR_SOMETHING to MyVarSomething.

Input

int WaterAdder::OnTimer(Universe u)
{
  const int MY_VAR_TYPE_ID = Universe::TYPE_ID_PLANETARY_SYSTEM;
  Universe::Object MY_VAR_SUN_TEMPLATE;
  this->InitializeTheSun(MY_VAR_SUN_TEMPLATE);

  // auto & MY_VAR_BRIGHT_STAR = ptheir_->StarClass("G2V");
  // Fails after some time passes in u:
  // Assert(Universe::IsElement(MY_VAR_SUN_TEMPLATE, MY_VAR_BRIGHT_STAR));

  // Just to doublecheck.
  Assert(MY_VARIANT(ptheir_->OTHER_GUYS_VAR).IsEqual(MY_VAR_SUN_TEMPLATE));

  // TODO: initialize MY_VAR_EARTH_TEMPLATE

  Universe::TYPE_ID_INFO::Type MY_VAR_SOLAR_SYSTEM_TEMPLATE();
  MY_VAR_SOLAR_SYSTEM_TEMPLATE.Add({MY_VAR_SUN_TEMPLATE,
    ptheir_->THEIR_VAR_MERCURY, ptheir_->THEIR_VAR_VENUS,
    MY_VAR_EARTH_TEMPLATE});

  Universe::TYPE_ID_INFO::Type *MY_VAR_SOLAR_SYSTEM =
    u.SearchByTemplate(MY_VAR_SOLAR_SYSTEM_TEMPLATE);
  Assert(MY_VARIABLE_CHECK(MY_VAR_SOLAR_SYSTEM));
  
  auto & MY_VAR_SUN = MY_VAR_SOLAR_SYSTEM->GetStar(0);
  auto MY_VAR_MASS = MY_VAR_SUN.GetMass();
  auto MY_VAR_DIST = Universe::Quantity::Meters(MY_VAR_MASS.InKg() * 1e-20);
  Universe::Quantity::VELOCITY_T::Type v;
  Assert(GeneralRelativity::GetOrbitalVelocity(u, MY_VAR_MASS,
    MY_VAR_DIST, &v));
  auto MY_VAR_VELOCITY = vector4::From3(
    GeneralRelativity::c, rnd.UnitVector3() * v);
  vector3 MY_VAR_POSITION = GeneralRelativity::RegularizedShift(u, 
    MY_VAR_SUN.GetPos(), rnd.UnitVector3(), MY_VAR_DIST);
  auto MY_VAR_WATER_MASS = std::max( MY_VAR_MASS * 4e-17,
    Universe::Quantity::Kg(63311*1.0e9));

  // Let the fun begin.
  WaterAdder::AddWater(u, MY_VAR_WATER_MASS, MY_VAR_POSITION, MY_VAR_VELOCITY);

  WaterAdder::SetTimer(Universe::Quantity::Second());
}
// TODO: Don't use long variable names like
// MY_VAR_SOLAR_SYSTEM_TEMPLATE_CHECKER_FOR_WATER_ADDER

Output

int WaterAdder::OnTimer(Universe u)
{
  const int MyVarTypeId = Universe::TYPE_ID_PLANETARY_SYSTEM;
  Universe::Object MyVarSunTemplate;
  this->InitializeTheSun(MyVarSunTemplate);

  // auto & MyVarBrightStar = ptheir_->StarClass("G2V");
  // Fails after some time passes in u:
  // Assert(Universe::IsElement(MyVarSunTemplate, MyVarBrightStar));

  // Just to doublecheck.
  Assert(MY_VARIANT(ptheir_->OTHER_GUYS_VAR).IsEqual(MyVarSunTemplate));

  // TODO: initialize MyVarEarthTemplate

  Universe::TYPE_ID_INFO::Type MyVarSolarSystemTemplate();
  MyVarSolarSystemTemplate.Add({MyVarSunTemplate,
    ptheir_->THEIR_VAR_MERCURY, ptheir_->THEIR_VAR_VENUS,
    MyVarEarthTemplate});

  Universe::TYPE_ID_INFO::Type *MyVarSolarSystem =
    u.SearchByTemplate(MyVarSolarSystemTemplate);
  Assert(MY_VARIABLE_CHECK(MyVarSolarSystem));
  
  auto & MyVarSun = MyVarSolarSystem->GetStar(0);
  auto MyVarMass = MyVarSun.GetMass();
  auto MyVarDist = Universe::Quantity::Meters(MyVarMass.InKg() * 1e-20);
  Universe::Quantity::VELOCITY_T::Type v;
  Assert(GeneralRelativity::GetOrbitalVelocity(u, MyVarMass,
    MyVarDist, &v));
  auto MyVarVelocity = vector4::From3(
    GeneralRelativity::c, rnd.UnitVector3() * v);
  vector3 MyVarPosition = GeneralRelativity::RegularizedShift(u, 
    MyVarSun.GetPos(), rnd.UnitVector3(), MyVarDist);
  auto MyVarWaterMass = std::max( MyVarMass * 4e-17,
    Universe::Quantity::Kg(63311*1.0e9));

  // Let the fun begin.
  WaterAdder::AddWater(u, MyVarWaterMass, MyVarPosition, MyVarVelocity);

  WaterAdder::SetTimer(Universe::Quantity::Second());
}
// TODO: Don't use long variable names like
// MyVarSolarSystemTemplateCheckerForWaterAdder