private float MoveShape(ShapePipePair pair, float dt) { GameShape shape = pair.Shape; GamePipe pipe = pair.AttachedPipe; float distanceTravelled = dt * shape.Speed; float percentualTravelled = shape.PercentualTraveled + distanceTravelled; Vector3 newPosition = pipe.GetPositionFromPercentual(percentualTravelled); shape.UpdatePosition(percentualTravelled, newPosition); return(percentualTravelled); }