Specify the replay buffer size as time value (i.e. how many seconds),
not how many frames.
This commit is contained in:
parent
6e3c766749
commit
020c129691
@ -60,17 +60,16 @@
|
||||
<!-- The title music. -->
|
||||
<music title="main_theme.music"/>
|
||||
|
||||
<!-- Mostly for debugging: maximum number of history entries -->
|
||||
<history max-frames="10000"/>
|
||||
|
||||
<!-- Replay related values, mostly concerned with saving less data
|
||||
and using interpolation instead.
|
||||
max-time: Maximum race time that can be saved in a replay/history file.
|
||||
delta-t Minumum time between saving consecutive transform events.
|
||||
delta-pos If the interpolated position is within this delta, a
|
||||
transform event is not generated.
|
||||
delta-angle If the interpolated angle is within this delta,
|
||||
a transform event is not generated. -->
|
||||
<replay delta-t="0.05" delta-pos="0.1" delta-angle="0.5" />
|
||||
<replay max-time="600" delta-t="0.05" delta-pos="0.1"
|
||||
delta-angle="0.5" />
|
||||
|
||||
<!-- Skidmark data: maximum number of skid marks, and
|
||||
time for skidmarks to fade out. -->
|
||||
|
@ -133,7 +133,6 @@ void STKConfig::load(const std::string &filename)
|
||||
CHECK_NEG(m_bubblegum_counter, "bubblegum disappear counter");
|
||||
CHECK_NEG(m_bubblegum_shield_time, "bubblegum shield-time" );
|
||||
CHECK_NEG(m_explosion_impulse_objects, "explosion-impulse-objects" );
|
||||
CHECK_NEG(m_max_history, "max-history" );
|
||||
CHECK_NEG(m_max_skidmarks, "max-skidmarks" );
|
||||
CHECK_NEG(m_min_kart_version, "<kart-version min...>" );
|
||||
CHECK_NEG(m_max_kart_version, "<kart-version max=...>" );
|
||||
@ -146,6 +145,7 @@ void STKConfig::load(const std::string &filename)
|
||||
CHECK_NEG(m_leader_time_per_kart, "leader time-per-kart" );
|
||||
CHECK_NEG(m_penalty_time, "penalty-time" );
|
||||
CHECK_NEG(m_max_display_news, "max-display-news" );
|
||||
CHECK_NEG(m_replay_max_time, "replay max-time" );
|
||||
CHECK_NEG(m_replay_delta_angle, "replay delta-angle" );
|
||||
CHECK_NEG(m_replay_delta_pos2, "replay delta-position" );
|
||||
CHECK_NEG(m_replay_dt, "replay delta-t" );
|
||||
@ -177,13 +177,13 @@ void STKConfig::init_defaults()
|
||||
m_bubblegum_shield_time = -100;
|
||||
m_shield_restrict_weapos = false;
|
||||
m_max_karts = -100;
|
||||
m_max_history = -100;
|
||||
m_max_skidmarks = -100;
|
||||
m_min_kart_version = -100;
|
||||
m_max_kart_version = -100;
|
||||
m_min_track_version = -100;
|
||||
m_max_track_version = -100;
|
||||
m_max_display_news = -100;
|
||||
m_replay_max_time = -100;
|
||||
m_replay_delta_angle = -100;
|
||||
m_replay_delta_pos2 = -100;
|
||||
m_replay_dt = -100;
|
||||
@ -286,9 +286,6 @@ void STKConfig::getAllData(const XMLNode * root)
|
||||
Log::error("StkConfig", "Cannot load title music : %s", title_music.c_str());
|
||||
}
|
||||
|
||||
if(const XMLNode *history_node = root->getNode("history"))
|
||||
history_node->get("max-frames", &m_max_history);
|
||||
|
||||
if(const XMLNode *skidmarks_node = root->getNode("skid-marks"))
|
||||
{
|
||||
skidmarks_node->get("max-number", &m_max_skidmarks );
|
||||
@ -376,6 +373,8 @@ void STKConfig::getAllData(const XMLNode * root)
|
||||
replay_node->get("delta-angle", &m_replay_delta_angle);
|
||||
replay_node->get("delta-pos", &m_replay_delta_pos2 );
|
||||
replay_node->get("delta-t", &m_replay_dt );
|
||||
replay_node->get("max-time", &m_replay_max_time );
|
||||
|
||||
}
|
||||
|
||||
// Get the default KartProperties
|
||||
|
@ -96,8 +96,6 @@ public:
|
||||
float m_music_credit_time; /**<Time the music credits are
|
||||
displayed. */
|
||||
int m_max_karts; /**<Maximum number of karts. */
|
||||
int m_max_history; /**<Maximum number of frames to save in
|
||||
a history files. */
|
||||
bool m_smooth_normals; /**< If normals for raycasts for wheels
|
||||
should be interpolated. */
|
||||
/** If the angle between a normal on a vertex and the normal of the
|
||||
@ -145,6 +143,9 @@ public:
|
||||
/** Filename of the title music to play.*/
|
||||
MusicInformation *m_title_music;
|
||||
|
||||
/** Maximum time of a replay. */
|
||||
int m_replay_max_time;
|
||||
|
||||
/** Minimum time between consecutive saved tranform events. */
|
||||
float m_replay_dt;
|
||||
|
||||
|
@ -52,7 +52,9 @@ void History::startReplay()
|
||||
*/
|
||||
void History::initRecording()
|
||||
{
|
||||
allocateMemory(stk_config->m_max_history);
|
||||
unsigned int max_frames = unsigned int( stk_config->m_replay_max_time
|
||||
/ stk_config->m_replay_dt );
|
||||
allocateMemory(max_frames);
|
||||
m_current = -1;
|
||||
m_wrapped = false;
|
||||
m_size = 0;
|
||||
|
@ -55,11 +55,13 @@ void ReplayRecorder::init()
|
||||
m_transform_events.resize(race_manager->getNumberOfKarts());
|
||||
m_skid_control.resize(race_manager->getNumberOfKarts());
|
||||
m_kart_replay_event.resize(race_manager->getNumberOfKarts());
|
||||
unsigned int max_frames = unsigned int( stk_config->m_replay_max_time
|
||||
/ stk_config->m_replay_dt);
|
||||
for(unsigned int i=0; i<race_manager->getNumberOfKarts(); i++)
|
||||
{
|
||||
m_transform_events[i].resize(stk_config->m_max_history);
|
||||
m_transform_events[i].resize(max_frames);
|
||||
// Rather arbitraritly sized, it will be added with push_back
|
||||
m_kart_replay_event[i].reserve(100);
|
||||
m_kart_replay_event[i].reserve(500);
|
||||
}
|
||||
m_count_transforms.clear();
|
||||
m_count_transforms.resize(race_manager->getNumberOfKarts(), 0);
|
||||
@ -124,7 +126,7 @@ void ReplayRecorder::update(float dt)
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
|
||||
m_last_saved_time[i] = time;
|
||||
m_count_transforms[i]++;
|
||||
if(m_count_transforms[i]>=m_transform_events[i].size())
|
||||
{
|
||||
@ -171,14 +173,15 @@ void ReplayRecorder::Save()
|
||||
fprintf(fd, "track: %s\n", world->getTrack()->getIdent().c_str());
|
||||
fprintf(fd, "Laps: %d\n", race_manager->getNumLaps());
|
||||
|
||||
unsigned int max_frames = unsigned int( stk_config->m_replay_max_time
|
||||
/ stk_config->m_replay_dt );
|
||||
for(unsigned int k=0; k<num_karts; k++)
|
||||
{
|
||||
fprintf(fd, "model: %s\n", world->getKart(k)->getIdent().c_str());
|
||||
fprintf(fd, "size: %d\n", m_count_transforms[k]);
|
||||
|
||||
unsigned int num_transforms =
|
||||
std::min((unsigned int)stk_config->m_max_history,
|
||||
m_count_transforms[k] );
|
||||
unsigned int num_transforms = std::min(max_frames,
|
||||
m_count_transforms[k]);
|
||||
for(unsigned int i=0; i<num_transforms; i++)
|
||||
{
|
||||
const TransformEvent *p=&(m_transform_events[k][i]);
|
||||
|
Loading…
x
Reference in New Issue
Block a user