/
Zamar_Terrier
/
TigorEngine
Обзор
Документация
Войти
/
Zamar_Terrier
/
TigorEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
includes/Objects/models.h
138 строк
5 KB
Zamar_Terrier
Офигенное обновление движка
31 июл 2026, 21:03
Верифицирован
31 июл 2026, 21:03
1682686
Код
Авторство
О чём код?
#ifndef MODELS_H #define MODELS_H #include "Variabels/engine_includes.h" #include "Variabels/model_include.h" #include "Objects/gameObject.h" #include "Objects/gameObject3D.h" #include "Core/graphicsObject.h" #include "Core/e_transform.h" /** * @brief Типы моделей */ typedef enum{ TIGOR_MODEL_NONE, ///< Без модели TIGOR_MODEL_TYPE_GLTF, ///< glTF модель TIGOR_MODEL_TYPE_FBX, ///< FBX модель TIGOR_MODEL_TYPE_OBJ ///< OBJ модель } ModelType; /** * @brief Узел модели * * Содержит данные для одного узла модели (меша) */ typedef struct{ GameObject3D *models; ///< Массив объектов модели uint32_t num_models; ///< Количество моделей в узле uint32_t id_node; ///< Идентификатор узла mat4 model; ///< Матрица модели (локальное преобразование) } ModelNode; /** * @brief Объект 3D модели * * Управляет загрузкой, анимацией и отрисовкой 3D моделей */ typedef struct{ GameObject self; ///< Базовый объект игры Transform3D transform; ///< Трансформация модели ModelNode *nodes; ///< Массив узлов модели uint32_t num_draw_nodes; ///< Количество отрисовываемых узлов mat4 join_mats[MAX_BONES]; ///< Матрицы сочленений для скелетной анимации void *obj; ///< Указатель на внутренний объект модели uint32_t obj_size; ///< Размер объекта модели ModelType type; ///< Тип модели char name[64]; ///< Имя модели } ModelObject3D; /** * @brief Обновляет дескриптор освещения для узла модели * @param mo Указатель на объект модели * @param indx_node Индекс узла * @param data Данные для видеокарты */ void ModelLightDescriptorUpdate(ModelObject3D* mo, uint32_t indx_node, void *data); /** * @brief Переход к следующему кадру анимации * @param mo Указатель на объект модели * @param time Время симуляции * @param num_animation Номер анимации */ void ModelNextFrame(ModelObject3D *mo, double time, int num_animation); /** * @brief Инициализирует модель по умолчанию * @param mo Указатель на объект модели * @param type Тип объекта */ void ModelDefaultInit(ModelObject3D *mo, GameObjectType type); /** * @brief Обновляет модель по умолчанию * @param mo Указатель на объект модели */ void ModelDefaultUpdate(ModelObject3D* mo); /** * @brief Отрисовывает модель по умолчанию * @param mo Указатель на объект модели * @param command Буфер команд Vulkan */ void ModelDefaultDraw(ModelObject3D* mo, void *command); /** * @brief Очищает ресурсы модели * @param mo Указатель на объект модели */ void ModelClean(ModelObject3D* mo); /** * @brief Пересоздает модель * @param mo Указатель на объект модели */ void ModelRecreate(ModelObject3D* mo); /** * @brief Уничтожает модель и освобождает ресурсы * @param mo Указатель на объект модели */ void ModelDestroy(ModelObject3D* mo); /** * @brief Включает/выключает освещение для модели * @param obj Указатель на объект модели * @param enable true для включения, false для выключения */ void ModelSetLightEnable(void *obj, bool enable); /** * @brief Включает/выключает собственную камеру для модели * @param obj Указатель на объект модели * @param enable true для включения, false для выключения */ void ModelSetSelCameraEnable(void *obj, bool enable); /** * @brief Устанавливает область просмотра (viewport) для модели * @param mo Указатель на объект модели * @param x Координата X области просмотра * @param y Координата Y области просмотра * @param height Высота области просмотра * @param width Ширина области просмотра */ void ModelSetSomeViewport(ModelObject3D* mo, float x, float y, float height, float width); #ifdef __cplusplus } #endif #endif // MODELS_H