/
Zamar_Terrier
/
TigorEngineWeb
Обзор
Документация
Войти
/
Zamar_Terrier
/
TigorEngineWeb
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
includes/engine_includes.h
298 строк
6 KB
Ilia Zamaruev
make new type of instanced
20 фев 2026, 13:13
20 фев 2026, 13:13
671bf6f
Код
Авторство
О чём код?
#ifndef ENGINEINCLUDES_H #define ENGINEINCLUDES_H #include <stdint.h> #include <stdbool.h> #include <emscripten/emscripten.h> #include <GLES3/gl3.h> #include <SDL.h> #define GL_GLEXT_PROTOTYPES #define EGL_EGLEXT_PROTOTYPES #include "e_math.h" #include "key_defines.h" #define MAX_FONTS 32 #define MAX_IMAGES 32 #define MAX_SHAPES 32 #define MAX_GUI_CALLBACKS 32 #define START_DRAW_OBJECTS 32 typedef void (*EngineDrawFunc)(); typedef void (*EngineUpdateFunc)(float deltaTime); typedef void (*e_charCallback)(void *, uint32_t); typedef void (*e_keyCallback)(void *, int , int , int , int ); typedef void (*e_mouseKeyCallback)(void *, int , int , int ); typedef void (*e_fingerKeyCallback)(void *, int , int ); typedef enum{ TIGOR_VERTEX_TYPE_NONE, TIGOR_VERTEX_TYPE_2D_OBJECT, TIGOR_VERTEX_TYPE_3D_OBJECT, TIGOR_VERTEX_TYPE_3D_INSTANCE, TIGOR_VERTEX_TYPE_TREE_INSTANCE, TIGOR_VERTEX_TYPE_MODEL_OBJECT, TIGOR_VERTEX_TYPE_2D_PARTICLE, TIGOR_VERTEX_TYPE_3D_PARTICLE, TIGOR_VERTEX_TYPE_TERRAIN, } VertexType; typedef enum{ TIGOR_CHILD_STACK_FLAG_IS_HEAD = 0x1 } ChildStackFlags; typedef struct ChildStack{ struct ChildStack* next; struct ChildStack* before; void (*destroyer)(void *); void *node; char *name; char flags; } ChildStack; typedef struct CustomVector{ void *ptr; uint32_t elem_size; uint32_t curr_size; uint32_t array_size; void (*destroyer)(void *); char *name[64]; } CustomVector; typedef struct{ char *path; char *buffer; int size; int imgWidth; int imgHeight; uint32_t img_type; uint32_t texture_id; } GameObjectImage; typedef struct{ struct RenderTexture *objects[START_DRAW_OBJECTS]; uint32_t size; } EngineRenderItems; typedef struct FontCache{ char path[256]; void *cdata; void *info; void *texture; } FontCache; typedef struct{ uint32_t v_index; uint32_t i_index; } VertextIterator; typedef struct{ char *diffuse; char *specular; char *normal; char font[256]; char topology; char flags; } DrawParam; typedef enum{ TIGOR_DEVICE_TYPE_MOBILE = 0x1, TIGOR_DEVICE_TYPE_DESKTOP = 0x2, } TEngineDeviceType; typedef struct{ char app_name[256]; int width; int height; void* cam2D; void* cam3D; vec2 viewSize; vec2 diffSize; struct TWindow_T *window; struct TDevice_T *device; struct TSwapChain_T *swapchain; EngineRenderItems renders; EngineDrawFunc Drawer; EngineUpdateFunc Updater; struct{ void (*DrawFunc)(void); void (*RecreateFunc)(void); e_charCallback *charCallbacks; int charCallbackSize; e_keyCallback *keyCallbacks; int keyCallbackSize; e_mouseKeyCallback *mouseKeyCallbacks; int mouseKeyCallbackSize; e_fingerKeyCallback *fingerKeyCallbacks; int fingerKeyCallbackSize; } func; void *e_var_current_entry; void *main_render; void *current_render; size_t currentFrame; uint32_t imageIndex; uint32_t extensionCount; uint32_t imagesCount; uint32_t wManagerExtensionCount; bool framebufferResized; bool framebufferwasResized; bool activeRender; void* debugMessenger; bool present; uint32_t MAX_FRAMES_IN_FLIGHT; void *gl_context; struct DataR{ char *font_path; void *e_var_images; int e_var_num_images; FontCache *e_var_fonts[MAX_FONTS]; uint32_t e_var_num_fonts; int define_font_loaded; } DataR; TEngineDeviceType device_type; } TEngine; typedef struct{ uint32_t FindLetter; uint16_t IndexLetter; } FontIndexes; typedef struct{ vec2 position; vec2 positionOrig; float rotation; vec2 scale; vec2 scaleOrig; struct{ vec2 offset; vec2 scale; float rotation; }img; mat4 model; } Transform2D; typedef struct{ vec3 position; vec3 rotation; vec3 scale; struct{ vec2 offset; vec2 scale; }img; mat4 model; } Transform3D; typedef struct{ char vertShader[256]; char fragShader[256]; } aboutShader; typedef struct{ uint32_t buffer; uint32_t attribute; void* vertices; uint32_t count; uint32_t size; } vertexParam; typedef struct{ uint32_t buffer; uint32_t count; uint32_t* indices; uint32_t size; } indexParam; typedef struct{ uint32_t VAO; indexParam iParam; vertexParam vParam; uint32_t countBind; uint32_t countAttr; uint32_t type; bool init; } Shape; typedef struct{ aboutShader aShader; bool lock; Shape shapes[MAX_SHAPES]; uint32_t num_shapes; } GraphicsObject; typedef struct GameObject{ void (*InitPoint)(struct GameObject* go); void (*UpdatePoint)(struct GameObject* go); void (*DrawPoint)(struct GameObject* go); void (*CleanPoint)(struct GameObject* go); void (*RecreatePoint)(struct GameObject* go); void (*DestroyPoint)(struct GameObject* go); void (*ShaderInitPoint)(struct GameObject* go); uint32_t shaderProgram; uint32_t obj_type; uint32_t flags; void *vert; void *frag; } GameObject; typedef struct { vec2 position; vec2 uv; } InstanceObj; typedef struct{ GameObject self; GraphicsObject graphObj; Transform2D transform; GameObjectImage *image; uint32_t num_images; char name[256]; int instanceBuffer; InstanceObj instanced[1024]; uint32_t num_instanced; } GameObject2D; typedef struct{ GameObject self; GraphicsObject graphObj; Transform3D transform; GameObjectImage *image; uint32_t num_images; char name[256]; } GameObject3D; #endif //ENGINEINCLUDES_H