std::deque<lagcomp_data> anim_records[64];
void lagcomp_data::run_second(c_cs_player* player, lagcomp_data* data, float yaw, int side) {
c_anim_state State;
auto animstate = player->get_anim_state();
if (player->get_spawn_time() != spawtime[player->get_index()]) {
animstate->reset();
spawtime[player->get_index()] = player->get_spawn_time();
}
anim_layer_t _layers[13];
memcpy(_layers, data->anim_overlay, sizeof(anim_layer_t) * 13);
memcpy(&State, animstate, sizeof(c_anim_state));
animstate->m_foot_yaw = normalize_yaw(data->eye_angles.y + yaw);
player->get_client_side_animation() = true;
player->update_client_side_animation();
player->get_client_side_animation() = false;
switch (side) {
case 1: {
player->invalidate_bone_cache();
player->setup_bones(data->zero_matrix, 128, BONE_FLAG_USED_BY_HITBOX, data->simtime);
memcpy(data->zero_layers, &player->get_anim_layers(), 13 * sizeof(anim_layer_t));
data->zero_yaw = player->get_anim_state()->m_foot_yaw;
}break;
case 2: {
player->invalidate_bone_cache();
player->setup_bones(data->right_matrix, 128, BONE_FLAG_USED_BY_HITBOX, data->simtime);
memcpy(data->right_layers, &player->get_anim_layers(), 13 * sizeof(anim_layer_t));
data->right_side = player->get_anim_state()->m_foot_yaw;
}break;
case 3: {
player->invalidate_bone_cache();
player->setup_bones(data->left_matrix, 128, BONE_FLAG_USED_BY_HITBOX, data->simtime);
memcpy(data->left_layers, &player->get_anim_layers(), 13 * sizeof(anim_layer_t));
data->left_side = player->get_anim_state()->m_foot_yaw;
}break;
case 4: {
player->invalidate_bone_cache();
player->setup_bones(data->low_left_matrix, 128, BONE_FLAG_USED_BY_HITBOX, data->simtime);
memcpy(data->low_left_layers, &player->get_anim_layers(), 13 * sizeof(anim_layer_t));
data->low_left_side = player->get_anim_state()->m_foot_yaw;
}break;
case 5: {
player->invalidate_bone_cache();
player->setup_bones(data->low_right_matrix, 128, BONE_FLAG_USED_BY_HITBOX, data->simtime);
memcpy(data->low_right_layers, &player->get_anim_layers(), 13 * sizeof(anim_layer_t));
data->low_right_side = player->get_anim_state()->m_foot_yaw;
}break;
}
memcpy(&player->get_anim_layers(), _layers, sizeof(anim_layer_t) * 13);
memcpy(animstate, &State, sizeof(c_anim_state));
}