diff options
| author | SushiTee <weichel.sascha@xxx.xx> | 2011-12-01 18:36:51 +0100 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2011-12-04 13:15:24 +0100 |
| commit | e411d8f5917ac3b47f6b5f10432d045dda62e814 (patch) | |
| tree | d84e5588a726f412915be1825bc84a579db1a405 /src | |
| parent | f26365d097f274ab98bc936177f102dfc01d79f3 (diff) | |
| download | zcatch-e411d8f5917ac3b47f6b5f10432d045dda62e814.tar.gz zcatch-e411d8f5917ac3b47f6b5f10432d045dda62e814.zip | |
made envelope rendering more smooth
Diffstat (limited to 'src')
| -rw-r--r-- | src/game/client/components/maplayers.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/game/client/components/maplayers.cpp b/src/game/client/components/maplayers.cpp index 096f9cc5..3d9c42e7 100644 --- a/src/game/client/components/maplayers.cpp +++ b/src/game/client/components/maplayers.cpp @@ -67,19 +67,30 @@ void CMapLayers::EnvelopeEval(float TimeOffset, int Env, float *pChannels, void if(pThis->Client()->State() == IClient::STATE_DEMOPLAYBACK) { const IDemoPlayer::CInfo *pInfo = pThis->DemoPlayer()->BaseInfo(); + static int CurrentLocalTick = pInfo->m_CurrentTick; static int LastLocalTick = pInfo->m_CurrentTick; if(!pInfo->m_Paused) - Time += (pInfo->m_CurrentTick-LastLocalTick) / (float)pThis->Client()->GameTickSpeed() * pInfo->m_Speed; + { + if(CurrentLocalTick != pInfo->m_CurrentTick) + { + LastLocalTick = CurrentLocalTick; + CurrentLocalTick = pInfo->m_CurrentTick; + } - pThis->RenderTools()->RenderEvalEnvelope(pPoints+pItem->m_StartPoint, pItem->m_NumPoints, 4, Time+TimeOffset, pChannels); + Time = mix(LastLocalTick / (float)pThis->Client()->GameTickSpeed(), + CurrentLocalTick / (float)pThis->Client()->GameTickSpeed(), + pThis->Client()->IntraGameTick()); + } - LastLocalTick = pInfo->m_CurrentTick; + pThis->RenderTools()->RenderEvalEnvelope(pPoints+pItem->m_StartPoint, pItem->m_NumPoints, 4, Time+TimeOffset, pChannels); } else { if(pThis->m_pClient->m_Snap.m_pGameInfoObj) - Time = (pThis->Client()->GameTick()-pThis->m_pClient->m_Snap.m_pGameInfoObj->m_RoundStartTick) / (float)pThis->Client()->GameTickSpeed(); + Time = mix((pThis->Client()->PrevGameTick()-pThis->m_pClient->m_Snap.m_pGameInfoObj->m_RoundStartTick) / (float)pThis->Client()->GameTickSpeed(), + (pThis->Client()->GameTick()-pThis->m_pClient->m_Snap.m_pGameInfoObj->m_RoundStartTick) / (float)pThis->Client()->GameTickSpeed(), + pThis->Client()->IntraGameTick()); pThis->RenderTools()->RenderEvalEnvelope(pPoints+pItem->m_StartPoint, pItem->m_NumPoints, 4, Time+TimeOffset, pChannels); } } |