Используйте массив bool animation[MAX]
вместо единственной логической переменной animation
и индексирующей переменной animationNumber
.
. При таком решении каждый объект имеет свое собственное состояние, которое указывает, является ли он "оживляющим" или стоит на месте.
bool animation[MAX] = {};
Изменение соответствующего состояния объекта в массиве при нажатии кнопки мыши:
if (button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN)
{
for (i=0; i<MAX; i++)
{
if (mx >= arr[i].xB + 0 && mx <= arr[i].xB + 130 &&
my <= arr[i].yB + 17 && my >= arr[i].yB + - 17)
{
animation[i] = !animation[i];
printf("TRUE\n");
}
}
}
Обход всех объектов в функции таймера и обновление позицийобъекты:
void onTimer( int v)
{
glutTimerFunc( TIMER_PERIOD, onTimer, 0) ;
for (i=0; i<MAX; i++)
{
if(animation[i])
{
arr[i].xB++;
if( arr[i].xB >= 640)
arr[i].xB -= 1410;
}
}
glutPostRedisplay();
}