diff options
| author | navewindre <boneyaard@gmail.com> | 2018-11-21 18:45:39 +0100 |
|---|---|---|
| committer | navewindre <boneyaard@gmail.com> | 2018-11-21 18:45:39 +0100 |
| commit | 0bc63d4dbbfe4fb74b4114f0ae11bfe8c87d5cc9 (patch) | |
| tree | c549a36b0daaa27d7463a7236b9e90223161f88e /internal_rewrite/c_base_player.cpp | |
| parent | 83237c211f21b83959f234b58f44980423864f02 (diff) | |
d
Diffstat (limited to 'internal_rewrite/c_base_player.cpp')
| -rw-r--r-- | internal_rewrite/c_base_player.cpp | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/internal_rewrite/c_base_player.cpp b/internal_rewrite/c_base_player.cpp index 957aa2a..a4cdb7e 100644 --- a/internal_rewrite/c_base_player.cpp +++ b/internal_rewrite/c_base_player.cpp @@ -890,16 +890,33 @@ void c_base_player::fix_animations( bool reset, bool resolver_change ) { float prev_cycle = m_AnimOverlay( ).GetElements( )[ 6 ].m_flPrevCycle;
float prev_rate = m_AnimOverlay( ).GetElements( )[ 6 ].m_flPlaybackRate;
- /*needs testing but seems to work*/
if( !reset ) {
- auto& layer = m_AnimOverlay( ).GetElements( )[ 3 ];
+ auto fraction = get_animstate( )->m_flStopToFullRunningFraction;
+ bool stopping = sm_animdata[ idx ].m_is_stopping;
- int sequence = get_seq_activity( layer.m_nSequence );
+ if( fraction > 0.1f && fraction < 1.f ) {
+ float delta_2x = get_animstate( )->m_flLastUpdateDelta * 2.f;
- if( sequence == 979 ) {
- //if( sm_animdata[ idx ].m_adjust_cycle + sm_animdata[ idx ].m_adjust_rate >= 1.f )
- // eye_angles.y = m_flLowerBodyYawTarget( );
+ if( stopping )
+ fraction -= delta_2x;
+ else
+ fraction += delta_2x;
+
+ fraction = std::clamp( fraction, 0.f, 1.f );
+ }
+
+ auto speed = get_anim_velocity( ).length2d( );
+
+ if( speed > 135.2f && stopping ) {
+ sm_animdata[ idx ].m_is_stopping = false;
+ fraction = std::max( fraction, 0.0099999998f );
+ }
+ if( speed < 135.2f && !stopping ) {
+ sm_animdata[ idx ].m_is_stopping = true;
+ fraction = std::min( fraction, 0.99000001f );
}
+
+ get_animstate( )->m_flStopToFullRunningFraction = fraction;
}
get_animstate( )->update( eye_angles.y, eye_angles.x );
|
