/
Zamar_Terrier
/
TigorEngine
Обзор
Документация
Войти
/
Zamar_Terrier
/
TigorEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
includes/Objects/gameObject3D.h
231 строка
10 KB
Zamar_Terrier
Офигенное обновление движка
31 июл 2026, 21:03
Верифицирован
31 июл 2026, 21:03
1682686
Код
Авторство
О чём код?
#ifndef GAMEOBJECT3D_H #define GAMEOBJECT3D_H #include "gameObject.h" #include "Core/graphicsObject.h" #include "Core/e_transform.h" #ifdef __cplusplus extern "C" { #endif /** * @defgroup GameObject3D 3D объект игры * @ingroup GameObject3D * @{ * @brief Для использования GameObject3D требуется определить её конечное использование. * Здесь описываются этапы определения трёхмерного объекта с дальнейшим его использованием. * @details Разница между GameObject2D и GameObject3D по большому счёту лишь в использовании плоскости. * В данном случае она трёхмерная и позволяет использовать три координаты X, Y, Z. */ /** * @brief Обновляет дескрипторы модели 3D объекта * @param go Указатель на объект GameObject3D * @param data Данные для видеокарты */ void GameObject3DDescriptorModelUpdate(GameObject3D* go, void *data); /** * @brief Обновляет дескрипторы освещения 3D объекта * @param go Указатель на объект GameObject3D * @param data Данные для видеокарты */ void GameObject3DDescriptorLightUpdate(GameObject3D* go, void *data); /** * @brief Устанавливает функцию обновления по умолчанию для 3D объекта * @param go Указатель на объект GameObject3D */ void GameObject3DDefaultUpdate(GameObject3D* go); /** * @brief Устанавливает функцию отрисовки по умолчанию для 3D объекта * @param go Указатель на объект GameObject3D */ void GameObject3DDefaultDraw(GameObject3D* go); /** * @brief Добавляет дескриптор для 3D объекта * @param go Указатель на объект GameObject3D * @param shader_indx Индекс шейдера * @param size Размер дескриптора * @param stage_bit Биты этапов шейдеров * @param Updater Указатель на функцию обновления дескриптора * @param layer_indx Индекс слоя */ void GameObject3DAddDescriptor(GameObject3D* go, uint32_t shader_indx, uint32_t size, uint32_t stage_bit, UpdateDescriptor Updater, uint32_t layer_indx); /** * @brief Добавляет текстурный дескриптор для 3D объекта * @param go Указатель на объект GameObject3D * @param shader_indx Индекс шейдера * @param stage_bit Биты этапов шейдеров * @param image Указатель на изображение объекта */ void GameObject3DAddDescriptorTexture(GameObject3D* go, uint32_t shader_indx, uint32_t stage_bit, GameObjectImage *image); /** * @brief Устанавливает функцию обновления дескриптора для 3D объекта * @param go Указатель на объект GameObject3D * @param shader_indx Индекс шейдера * @param bind_index Индекс привязки дескриптора * @param Updater Указатель на функцию обновления дескриптора */ void GameObject3DSetDescriptorUpdate(GameObject3D* go, uint32_t shader_indx, uint32_t bind_index, UpdateDescriptor Updater); /** * @brief Устанавливает текстурный дескриптор для 3D объекта * @param go Указатель на объект GameObject3D * @param shader_indx Индекс шейдера * @param bind_index Индекс привязки дескриптора * @param texture Указатель на текстуру */ void GameObject3DSetDescriptorTexture(GameObject3D* go, uint32_t shader_indx, uint32_t bind_index, Texture2D *texture); /** * @brief Создает текстурный дескриптор для 3D объекта * @param go Указатель на объект GameObject3D * @param shader_indx Индекс шейдера * @param bind_index Индекс привязки дескриптора * @param image Указатель на изображение объекта */ void *GameObject3DSetDescriptorTextureCreate(GameObject3D* go, uint32_t shader_indx, uint32_t bind_index, GameObjectImage *image); /** * @brief Создает массив текстурных дескрипторов для 3D объекта * @param go Указатель на объект GameObject3D * @param shader_indx Индекс шейдера * @param bind_index Индекс привязки дескриптора * @param image Указатель на изображение объекта * @param size Количество текстур в массиве */ void GameObject3DSetDescriptorTextureArrayCreate(GameObject3D* go, uint32_t shader_indx, uint32_t bind_index, GameObjectImage *image, uint32_t size); /** * @brief Устанавливает шейдеры для 3D объекта * @param go Указатель на объект GameObject3D * @param vert_path Путь к вершинному шейдеру * @param frag_path Путь к фрагментному шейдеру */ void GameObject3DSetShader(GameObject3D *go, char *vert_path, char *frag_path); /** * @brief Устанавливает простой шейдер для 3D объекта * @param go Указатель на объект GameObject3D * @param vert_path Путь к вершинному шейдеру * @param frag_path Путь к фрагментному шейдеру * @return Индекс шейдера */ uint32_t GameObject3DSetShaderSimple(GameObject3D *go, char *vert_path, char *frag_path); void GameObject3DSetGLSLShaderForMemory(GameObject3D *go,char *nameOfCache, char *vert_code, char *frag_code); uint32_t GameObject3DSetGLSLShaderForMemorySimple(GameObject3D *go, char *nameOfCache, char *vert_code, char *frag_code); void GameObject3DSetGLSLShader(GameObject3D *go, char *nameOfCache, char *vert_path, char *frag_path); uint32_t GameObject3DSetGLSLShaderSimple(GameObject3D *go, char *nameOfCache, char *vert_path, char *frag_path); /** * @brief Инициализирует отрисовку 3D объекта * @param go Указатель на объект GameObject3D */ void GameObject3DInitDraw(GameObject3D *go); /** * @brief Очищает ресурсы 3D объекта * @param go Указатель на объект GameObject3D */ void GameObject3DClean(GameObject3D* go); /** * @brief Пересоздает 3D объект * @param go Указатель на объект GameObject3D */ void GameObject3DRecreate(GameObject3D* go); /** * @brief Уничтожает 3D объект и освобождает ресурсы * @param go Указатель на объект GameObject3D */ void GameObject3DDestroy(GameObject3D* go); /** * @brief Инициализирует шейдеры по умолчанию для 3D объекта * @param go Указатель на объект GameObject3D */ void GameObject3DInitDefaultShader(GameObject3D *go); /** * @brief Добавляет экземпляр вершины для 3D объекта * @param go Указатель на объект GameObject3D * @param vertex Вершинный экземпляр */ void GameObject3DAddInstance(GameObject3D *go, VertexInstance3D vertex); /** * @brief Устанавливает экземпляр вершины для 3D объекта * @param go Указатель на объект GameObject3D * @param indx Индекс экземпляра * @param vertex Вершинный экземпляр */ void GameObject3DSetInstance(GameObject3D *go, uint32_t indx, VertexInstance3D vertex); /** * @brief Удаляет экземпляр вершины из 3D объекта * @param go Указатель на объект GameObject3D * @param indx Индекс экземпляра */ void GameObject3DRemoveInstance(GameObject3D* go, uint32_t indx); /** * @brief Инициализирует текстуры для 3D объекта * @param go Указатель на объект GameObject3D * @param dParam Параметры отрисовки * @return 0 при успехе, код ошибки в противном случае */ int GameObject3DInitTextures(GameObject3D *go, DrawParam *dParam); /** * @brief Устанавливает текстуру из рендера для 3D объекта * @param go Указатель на объект GameObject3D * @param render Указатель на объект рендера */ void GameObject3DTextureFromRender(GameObject3D *go, void *render); /** * @brief Инициализирует 3D объект * @param go Указатель на объект GameObject3D * @param type Тип объекта */ void GameObject3DInit(GameObject3D *go, GameObjectType type); /** * @brief Инициализирует экземпляры 3D объекта * @param go Указатель на объект GameObject3D */ void GameObject3DInitInstances(GameObject3D *go); /** * @brief Обновляет экземпляры 3D объекта * @param go Указатель на объект GameObject3D */ void GameObject3DUpdateInstances(GameObject3D *go); /** * @brief Устанавливает рендер для 3D объекта * @param go Указатель на объект GameObject3D * @param render Указатель на объект рендера */ void GameObject3DSetRender(GameObject3D *go, void *render); /** * @brief Включает/отключает освещение для 3D объекта * @param go Указатель на объект GameObject3D * @param enable true для включения, false для выключения */ void GameObject3DEnableLight(GameObject3D *go, bool enable); #ifdef __cplusplus } #endif #endif // GAMEOBJECT3D_H