예제 #1
0
파일: TestTrace.cpp 프로젝트: Advi42/XCSoar
static bool
TestTrace(Path filename, unsigned ntrace, bool output=false)
{
  FileLineReaderA reader(filename);

  printf("# %d", ntrace);  
  Trace trace(1000, ntrace);

  IGCExtensions extensions;
  extensions.clear();

  char *line;
  int i = 0;
  for (; (line = reader.ReadLine()) != NULL; i++) {
    if (output && (i % 500 == 0)) {
      putchar('.');
      fflush(stdout);
    }

    IGCFix fix;
    if (!IGCParseFix(line, extensions, fix) || !fix.gps_valid)
      continue;

    OnAdvance(trace,
               fix.location,
               fix.gps_altitude,
               fix.time.GetSecondOfDay());
  }
  putchar('\n');
  printf("# samples %d\n", i);
  return true;
}
예제 #2
0
void Player::OnAdvanceChildren(Timeline* timeline)
{
	for (int i = 0; i < 65536; i++)
	{
		PlacedCharacter* placed = timeline->GetPlacedCharacterAtDepth(i);
		if (placed)
		{
		//	Character def = m_movie.GetCharacter(placed->m_CharacterID);
			Character* def = placed->m_character;

			Sprite* sprite = dynamic_cast<Sprite*>(def);
			if (sprite != NULL)
			{
			//	placed->m_currentFrame = 2;

				OnAdvance(sprite, placed);

				//	pSprite->m_DecodedFrameCount++;
				//	placed->m_currentFrame++;
				//	pSprite->m_DecodedFrameCount = placed->m_currentFrame;
			}
		}
	}

	Invalidate();
}
예제 #3
0
static bool
TestTrace(const char *filename, unsigned ntrace, bool output=false)
{
    FileLineReaderA reader(filename);
    if (reader.error()) {
        fprintf(stderr, "Failed to open %s\n", filename);
        return false;
    }

    printf("# %d", ntrace);
    Trace trace(1000, ntrace);

    char *line;
    int i = 0;
    for (; (line = reader.read()) != NULL; i++) {
        if (output && (i % 500 == 0)) {
            putchar('.');
            fflush(stdout);
        }

        IGCFix fix;
        if (!IGCParseFix(line, fix) || !fix.gps_valid)
            continue;

        OnAdvance(trace,
                  fix.location, fixed(30), Angle::Zero(),
                  fixed(fix.gps_altitude), fixed(fix.pressure_altitude),
                  fixed(fix.time.GetSecondOfDay()));
    }
    putchar('\n');
    printf("# samples %d\n", i);
    return true;
}
예제 #4
0
void Player::OnAdvance()
{
	if (m_placedMovie->m_currentFrame < m_movie->GetFrameCount()-1)
	{
		m_placedMovie->m_gotoFrame++;
		OnAdvance(m_movie, m_placedMovie);
	}
}
예제 #5
0
bool
DemoReplayGlue::Update()
{
  if (!enabled)
    return false;

  if (!UpdateTime())
    return true;

  fixed floor_alt = fixed_300;
  if (device_blackboard->Calculated().terrain_valid) {
    floor_alt += device_blackboard->Calculated().terrain_altitude;
  }

  ProtectedTaskManager::ExclusiveLease protected_task_manager(*task_manager);
  ProtectedTaskAccessor ta(protected_task_manager, floor_alt);
  bool retval = DemoReplay::Update(ta);

  const AircraftState s = aircraft.GetState();
  OnAdvance(s.location, s.ground_speed, s.track, s.altitude,
             s.altitude, s.time);

  return retval;
}