/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ #include "Engine/StdH.h" #include #include #include #include CLastPositions::CLastPositions(const CLastPositions &lpOrg) { lp_avPositions = lpOrg.lp_avPositions ; lp_iLast = lpOrg.lp_iLast ; lp_ctUsed = lpOrg.lp_ctUsed ; lp_tmLastAdded = lpOrg.lp_tmLastAdded ; } // add a new position void CLastPositions::AddPosition(const FLOAT3D &vPos) { lp_iLast++; if (lp_iLast>=lp_avPositions.Count()) { lp_iLast=0; } lp_ctUsed = Min(INDEX(lp_ctUsed+1), lp_avPositions.Count()); lp_avPositions[lp_iLast] = vPos; lp_tmLastAdded = _pTimer->CurrentTick(); } // get a position const FLOAT3D &CLastPositions::GetPosition(INDEX iPre) { INDEX iPos = lp_iLast-iPre; if (iPos<0) { iPos+=lp_avPositions.Count(); } return lp_avPositions[iPos]; }