Esempio n. 1
0
void Replay::RecordFrame(unsigned carid, const std::vector <float> & inputs, CarDynamics & car)
{
	assert(carid < carstate.size());
	assert(unsigned(version_info.inputs_supported)== CarInput::INVALID);

	if (GetRecording())
	{
		// enforce a maximum recording time of about 92 days
		if (carstate[carid].frame > 2000000000)
			replaymode = IDLE;

		carstate[carid].RecordFrame(inputs, car);
	}
}
Esempio n. 2
0
void REPLAY::RecordFrame(unsigned carid, const std::vector <float> & inputs, CAR & car)
{
	assert(carid < carstate.size());
	assert(unsigned(version_info.inputs_supported)== CARINPUT::GAME_ONLY_INPUTS_START_HERE);

	if (GetRecording())
	{
		// enforce a maximum recording time of about 92 days
		if (carstate[carid].frame > 2000000000)
			replaymode = IDLE;

		carstate[carid].RecordFrame(inputs, car);
	}
}
Esempio n. 3
0
eOSState cMenuSearchResultsForRecs::Play(void)
{
   cMenuSearchResultsItem *ri = (cMenuSearchResultsItem*)Get(Current());
   if (ri)
   {
      cRecording *recording = GetRecording(ri);
      if (recording) {
#if APIVERSNUM < 10728
         cReplayControl::SetRecording(recording->FileName(), recording->Title());
#else
         cReplayControl::SetRecording(recording->FileName());
#endif
         return osReplay;
      }
   }
   return osContinue;
}
Esempio n. 4
0
void REPLAY::RecordFrame(const std::vector <float> & inputs, CAR & car)
{
	if (!GetRecording())
		return;

	if (frame > 2000000000) //enforce a maximum recording time of about 92 days
	{
		StopRecording("");
	}

	assert(inputbuffer.size() == CARINPUT::GAME_ONLY_INPUTS_START_HERE);
	assert((unsigned int) version_info.inputs_supported == CARINPUT::GAME_ONLY_INPUTS_START_HERE);

	//record inputs
	INPUTFRAME newinputframe(frame);

	for (unsigned i = 0; i < CARINPUT::GAME_ONLY_INPUTS_START_HERE; i++)
	{
		if (inputs[i] != inputbuffer[i])
		{
			inputbuffer[i] = inputs[i];
			newinputframe.AddInput(i, inputs[i]);
		}
	}

	if (newinputframe.GetNumInputs() > 0)
		inputframes.push_back(newinputframe);


	//record state
	int framespersecond = 1.0/version_info.framerate;
	if (frame % framespersecond == 0) //once per second
	{
		std::stringstream statestream;
		joeserialize::BinaryOutputSerializer serialize_output(statestream);
		car.Serialize(serialize_output);
		stateframes.push_back(STATEFRAME(frame));
		//stateframes.push_back(STATEFRAME(11189196)); //for debugging; in hex, 11189196 is AABBCC
		//cout << "Recording state size: " << statestream.str().length() << endl; //should be ~984
		stateframes.back().SetBinaryStateData(statestream.str());
		stateframes.back().SetInputSnapshot(inputs);
	}

	frame++;
}