private void UpdatePointReached() { int currentPointNumber = bezier.GetPointNumber(usePercentage); if (currentPointNumber != atPointNumber) { //we've hit a point CameraPathBezierControlPoint atPoint; if (!isReversed) { atPoint = bezier.controlPoints[currentPointNumber]; } else { atPoint = bezier.controlPoints[atPointNumber]; } if (AnimationPointReached != null) { AnimationPointReached(); } if (!isReversed) { if (AnimationPointReachedWithNumber != null) { AnimationPointReachedWithNumber(currentPointNumber); } else if (AnimationPointReachedWithNumber != null) { AnimationPointReachedWithNumber(atPointNumber); } } switch (atPoint.delayMode) { case CameraPathBezierControlPoint.DELAY_MODES.none: //do nothing extra break; case CameraPathBezierControlPoint.DELAY_MODES.indefinite: Pause(); break; case CameraPathBezierControlPoint.DELAY_MODES.timed: Pause(); Invoke("Play", atPoint.delayTime); break; } } atPointNumber = currentPointNumber; }