- Статус
- Оффлайн
- Регистрация
- 22 Сен 2025
- Сообщения
- 19
- Реакции
- 1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
void c_anim_sync::solve_move( lag_record_t* const record, lag_record_t* const previous )
{
record->m_updated_anim_resolver = false;
if ( previous
&& record->m_flags & FL_ONGROUND
&& previous->m_flags & FL_ONGROUND
&& !record->m_shot )
{
auto update_solved_anim_side{};
auto update_anim_resolver{};
const auto speed_2d = record->m_velocity.length_2d( );
if ( speed_2d <= 20.f )
goto LABEL_29;
if ( std::abs(
math::to_deg(
std::atan2(
record->m_velocity.y, record->m_velocity.x
)
)
) >= 1 )
goto LABEL_29;
record->m_can_solve_move = false;
if ( record->m_layers.at( 12u ).m_weight * 1000.f )
record->m_can_solve_move = static_cast< int >( record->m_layers.at( 6u ).m_weight * 1000.f ) == static_cast< int >( previous->m_layers.at( 6u ).m_weight * 1000.f );
if ( record->m_velocity_in_processing >= 3
|| record->m_can_solve_move )
{
const auto server_playback_rate = record->m_layers.at( 6u ).m_playback_rate;
const auto delta_left = std::abs( server_playback_rate - record->m_anim_sides.at( ANIM_SIDE_LEFT ) );
const auto delta_right = std::abs( server_playback_rate - record->m_anim_sides.at( ANIM_SIDE_RIGHT ) );
const auto delta_low_left = std::abs( server_playback_rate - record->m_anim_sides.at( ANIM_SIDE_LOW_LEFT ) );
const auto delta_center = std::abs( record->m_layers.at( 6u ).m_playback_rate - record->m_anim_sides.at( ANIM_SIDE_CENTER ) );
if ( ( delta_center * 1000.f ) )
update_anim_resolver = true;
update_solved_anim_side = 0;
auto best_delta = std::abs( record->m_layers.at( 6u ).m_playback_rate - record->m_anim_sides.at( ANIM_SIDE_CENTER ) );
if ( ( delta_low_left * 1000.f )
|| delta_center < delta_low_left )
record->m_updated_anim_resolver = update_anim_resolver;
else
{
update_anim_resolver = true;
update_solved_anim_side = 3;
best_delta = delta_low_left;
}
if ( !( delta_left * 1000.f )
&& best_delta >= delta_left )
{
update_anim_resolver = true;
update_solved_anim_side = 1;
best_delta = delta_left;
}
if ( !( delta_right * 1000.f )
&& best_delta >= delta_right )
{
record->m_updated_anim_resolver = true;
record->m_anim_side = 2;
return;
}
}
else
{
LABEL_29:
update_anim_resolver = false;
}
record->m_updated_anim_resolver = update_anim_resolver;
record->m_anim_side = update_solved_anim_side;
}
}