Программирование стратегических игр с DirectX 9.0
bda5893f

Функция C3DAnimation::vReset()


Функция vReset() вызывается для установки содержимого объекта анимации в исходное состояние. Она полезна, когда требуется загрузить новую анимацию поверх существующего объекта. Также она используется при уничтожении объекта анимации. Вот ее код:

void C3DAnimation::vReset(void) { int i, j;

// Освобождение объектов for(i = 0; i < m_iNumObjects; i++) { if(m_objObject[i]) { delete m_objObject[i]; m_objObject[i] = NULL; } }

// Освобождение данных ключевых кадров for(i = 0; i < m_iNumObjects; i++) { for(j = 0; j < m_iNumFrames; j++) { if(m_keyFrames[i][j]) { delete m_keyFrames[i][j]; m_keyFrames[i][j] = NULL; } } }

// Установка количества объектов m_iNumObjects = 0; // Установка количества кадров m_iNumFrames = 0; // Установка начального состояния анимации m_iCurFrame = 0; m_lCurTime = 0;

// Инициализация объектов, имен и информации о ключах for(i = 0; i < g_iMaxObjects; i++) { // Объекты m_objObject[i] = NULL; // Имена strcpy(&m_szObjectName[i][0], ""); // Ключи for(j = 0; j < g_iMaxKeys; j++) { m_keyFrames[i][j] = NULL; } } }

В первой части функции я перебираю объекты сцены и удаляю их, если они существуют. Цикл выполняет работу по освобождению всей памяти выделенной для хранения созданных или загруженных трехмерных объектов.

Следующий цикл перебирает все кадры и удаляет их. Здесь освобождается память, выделенная для новых или загруженных кадров.

Затем обнуляется количество объектов, количество кадров, номер текущего кадра и счетчик времени. Этот код должен быть понятен без дополнительных комментариев.

Заключительный цикл очищает строки с именами трехмерных объектов.



Содержание раздела