/
Zamar_Terrier
/
TigorEngine
Обзор
Документация
Войти
/
Zamar_Terrier
/
TigorEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
includes/Objects/primitiveObject.h
114 строк
4 KB
Zamar_Terrier
Офигенное обновление движка
31 июл 2026, 21:03
Верифицирован
31 июл 2026, 21:03
1682686
Код
Авторство
О чём код?
#ifndef PRIMITIVEOBJECT_H #define PRIMITIVEOBJECT_H #include "Variabels/engine_includes.h" #include "gameObject3D.h" #ifdef __cplusplus extern "C" { #endif /** * @brief Типы примитивных объектов */ enum PrimitiveObjectType{ TIGOR_PRIMITIVE3D_LINE, ///< Линия TIGOR_PRIMITIVE3D_TRIANGLE, ///< Треугольник TIGOR_PRIMITIVE3D_QUAD, ///< Квадрат TIGOR_PRIMITIVE3D_PLANE, ///< Плоскость TIGOR_PRIMITIVE3D_CUBE, ///< Куб TIGOR_PRIMITIVE3D_CUBESPHERE, ///< Кубическая сфера TIGOR_PRIMITIVE3D_ICOSPHERE, ///< Икосаэдральная сфера TIGOR_PRIMITIVE3D_SPHERE, ///< Сфера TIGOR_PRIMITIVE3D_CAPSULE, ///< Капсула TIGOR_PRIMITIVE3D_CONE, ///< Конус TIGOR_PRIMITIVE3D_CYLINDER, ///< Цилиндр TIGOR_PRIMITIVE3D_HOLLOW_CYLINDER, ///< Полый цилиндр TIGOR_PRIMITIVE3D_SKYBOX ///< Небо (skybox) }; /** * @brief Структура объекта-примитива * * Содержит базовый 3D объект и параметры примитива */ typedef struct{ GameObject3D go; ///< Базовый 3D объект void *params; ///< Указатель на параметры примитива uint32_t type; ///< Тип примитива } PrimitiveObject; /** * @brief Параметры сферы */ typedef struct{ float radius; ///< Радиус сферы int sectorCount; ///< Количество секторов int stackCount; ///< Количество стеков } SphereParam; /** * @brief Параметры кубической сферы */ typedef struct{ float radius; ///< Радиус сферы int verperrow; ///< Вершин на строку } CubeSphereParam; /** * @brief Параметры плоскости */ typedef struct{ int sectorCount; ///< Количество секторов int stackCount; ///< Количество стеков uint32_t texture_width; ///< Ширина текстуры uint32_t texture_height; ///< Высота текстуры } PlaneParam; /** * @brief Параметры конуса */ typedef struct{ float height; ///< Высота конуса int sectorCount; ///< Количество секторов int stackCount; ///< Количество стеков } ConeParam; /** * @brief Параметры полого цилиндра */ typedef struct{ float height; ///< Высота цилиндра float outerRadius; ///< Внешний радиус float innerRadius; ///< Внутренний радиус int sectorCount; ///< Количество секторов int stackCount; ///< Количество стеков } HollowCylinderParam; /** * @brief Инициализирует пользовательный примитив * @param po Указатель на объект-примитив * @param dParam Параметры отрисовки * @param vParam Параметры вершин * @param iParam Параметры индексов * @return 0 при успехе, код ошибки в противном случае */ int PrimitiveObjectInitCustom(PrimitiveObject *po, DrawParam *dParam, VertexParam *vParam, IndexParam *iParam); /** * @brief Инициализация объекта-примитива * @param po Указатель на объект-примитив * @param dParam Параметры для рендера * @param type Тип примитива * @param params Указатель на параметры примитива * @return true при успехе, false в противном случае */ int PrimitiveObjectInit(PrimitiveObject *po, DrawParam *dParam, char type, void *params); #ifdef __cplusplus } #endif #endif // PRIMITIVEOBJECT_H