-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ку
C++:
void c_animation_system::calculate_velocity( /*c_cs_player* player,*/ c_lag_record* record, c_lag_record* previous_record ) {
// ай похуй на previous velocity мы не нищие что бы такое юзать
// спасибо линею за этот парт лол
if ( record->anim_layers[ 11 ].m_cycle > previous_record->anim_layers[ 11 ].m_cycle ) {
// ну тут мои знания заканчиваются хотя не я ща чет придумаю
// какулируем велосити ( доверьтесь мне это правильный велосити фикс взян из игры лол )
record->velocity = ( record->origin - previous_record->origin ) * ( 1.f / record->animated_ticks_choked );
// хуйня какая то хз
if ( !record->velocity.is_zero( ) && !previous_record->velocity.is_zero( ) ) {
// доделайте за меня тут должно быть average_velocity, real_velocity, fix x,y velocity
}
}
}
void c_animation_system::fix_player_crouch( c_cs_player* player ) {
// This is a glorious hack to find free space when you've crouched into some solid space
// Our crouching collisions do not work correctly for some reason and this is easier
// than fixing the problem :(
trace_t trace;
// Move up as many as 18 pixels if the player is crouch.
int index;
vec3_t org = player->get_origin( );
for ( index = 0; i < 18; index++ ) {
UTIL_TraceHull( player->get_origin( ), player->get_origin( ),
VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX, MASK_PLAYERSOLID, player, COLLISION_GROUP_PLAYER_MOVEMENT, &trace );
if ( trace.start_solid )
{
Vector origin = player->get_origin( );
origin.z += 1.0f;
player->set_origin( origin );
}
else
return;
}
// set origin.
player->set_origin( org );
for ( index = 0; i < 18; index++ )
{
UTIL_TraceHull( player->get_origin( ), player->get_origin( ),
VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX, MASK_PLAYERSOLID, player, COLLISION_GROUP_PLAYER_MOVEMENT, &trace );
if ( trace.start_solid )
{
Vector origin = player->get_origin( );
origin.z -= 1.0f;
player->set_origin( origin );
}
else
return;
}
}
Последнее редактирование: