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); } }
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); } }
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; }
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++; }