/
Zamar_Terrier
/
TEngineEditor
Обзор
Документация
Войти
/
Zamar_Terrier
/
TEngineEditor
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/object.h
119 строк
3 KB
Zamar_Terrier
checkpoint
23 июл 2026, 18:41
23 июл 2026, 18:41
10276a6
Код
Авторство
О чём код?
#pragma once #include <TigorEngine.h> #include <Objects/primitiveObject.h> #include <Objects/shape_object.h> #include <Tools/e_math.h> // Типы объектов typedef enum { OBJECT_TYPE_NONE = 0, OBJECT_TYPE_2D_QUAD, OBJECT_TYPE_3D_CUBE, OBJECT_TYPE_3D_SPHERE, OBJECT_TYPE_3D_PLANE, OBJECT_TYPE_3D_CYLINDER, OBJECT_TYPE_3D_CONE, OBJECT_TYPE_3D_CAPSULE } ObjectType; // Трансформация объекта typedef struct { vec3 position; vec3 rotation; vec3 scale; } Transform; // Структуры параметров примитивов typedef struct { float width; float height; float depth; } PrimitiveCubeParams; typedef struct { float radius; int segmentsWidth; int segmentsHeight; } PrimitiveSphereParams; typedef struct { float radiusBottom; float radiusTop; float height; int segmentsRadial; int segmentsHeight; } PrimitiveCylinderParams; typedef struct { float radiusBottom; float radiusTop; float height; int segments; } PrimitiveConeParams; typedef struct { float radius; float cylinderHeight; int segmentsRadial; int segmentsHeight; } PrimitiveCapsuleParams; // Объединение для хранения параметров разных примитивов typedef union { PrimitiveCubeParams cube; PrimitiveSphereParams sphere; PrimitiveCylinderParams cylinder; PrimitiveConeParams cone; PrimitiveCapsuleParams capsule; } PrimitiveParams; // Структура объекта сцены typedef struct SceneObject { char name[64]; ObjectType type; Transform transform; // Указатели на объекты движка union { PrimitiveObject* primitive; ShapeObject* shape; } render_object; // Параметры примитива (только для примитивных объектов) PrimitiveParams* primitiveParams; struct SceneObject* next; struct SceneObject* prev; } SceneObject; // Структура сцены typedef struct { SceneObject* first_object; SceneObject* selected_object; int object_count; char name[64]; } Scene; // Функции для работы с SceneObject SceneObject* SceneObjectCreate(const char* name, ObjectType type); void SceneObjectDestroy(SceneObject* object); void SceneObjectUpdateTransform(SceneObject* object, Transform* transform); Transform* SceneObjectGetTransform(SceneObject* object); void SceneObjectSetName(SceneObject* object, const char* name); const char* SceneObjectGetName(SceneObject* object); // Функции для работы с параметрами примитивов void SceneObjectSetPrimitiveParams(SceneObject* object, const PrimitiveParams* params); const PrimitiveParams* SceneObjectGetPrimitiveParams(SceneObject* object); void SceneObjectUpdatePrimitiveParams(SceneObject* object); // Функции для работы с Scene (с префиксом SObj_ для избежания конфликтов) void SObjSceneInit(Scene* scene); void SObjSceneCleanUp(Scene* scene); SceneObject* SObjSceneAddObject(Scene* scene, const char* name, ObjectType type); void SObjSceneRemoveObject(Scene* scene, SceneObject* object); SceneObject* SObjSceneGetSelectedObject(Scene* scene); void SObjSceneSelectObject(Scene* scene, SceneObject* object); void SObjSceneUpdate(Scene* scene, float dTime); void SObjSceneDraw(Scene* scene);