-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
void c_base_player::modify_eye_position( c_anim_state* state, vec3_t eye_pos ) {
if ( !state->m_base_entity )
return;
if ( state->m_landing && state->duck_amount == 0.f )
return;
auto v114 = state->m_base_entity->lookup_bone( "head_0" );
vec3_t v115;
state->m_base_entity->get_bone_position( v114, v115 );
auto head_weight = v115 + 1.7f;
if ( head_weight < eye_pos.z ) {
auto v116 = std::clamp( ( std::fabsf( eye_pos.z - head_weight ) - 4.0f) * ( 1.0f / 6.0f ), 0.0f, 1.0f );
vecEyePos.z += ( ( head_weight - eye_pos.z ) * ( ( powf( v116, 2 ) * 3.0f) - ( ( powf( v116, 2 ) * 2.0f ) * v116 ) ) );
}
}
vec3_t c_base_player::get_eye_pos( c_anim_state* state ) {
auto eye_pos = get_origin( ) + vec_view_offset( );
if ( state ) {
modify_eye_position( state, eye_pos );
}
return eye_pos;
}
Последнее редактирование: