- Engine core: improved initialization and lifecycle - Renderer: camera and rendering pipeline updates - Editor: updated editor code - Window: improved window handling - Demo/main.c: scene demo with AssetManager + scene loading - build.bat: updated build script - 11 files modified from user's manual edits
74 lines
2.3 KiB
C
74 lines
2.3 KiB
C
#pragma once
|
|
|
|
// ============================================================================
|
|
// engine.h - 引擎核心
|
|
// ============================================================================
|
|
|
|
#include <stdint.h>
|
|
|
|
// 前向声明
|
|
typedef struct Window Window;
|
|
typedef struct GraphicsDevice GraphicsDevice;
|
|
typedef struct Renderer Renderer;
|
|
|
|
// 引擎配置
|
|
typedef struct {
|
|
const char* app_name;
|
|
int window_width;
|
|
int window_height;
|
|
int fullscreen;
|
|
int vsync;
|
|
} EngineConfig;
|
|
|
|
// 引擎状态
|
|
typedef struct {
|
|
int running;
|
|
int initialized;
|
|
EngineConfig config;
|
|
Window* window;
|
|
void* renderer;
|
|
GraphicsDevice* graphics_device;
|
|
double delta_time;
|
|
double total_time;
|
|
int fps;
|
|
uint64_t frame_count;
|
|
} Engine;
|
|
|
|
// 初始化默认配置
|
|
static inline EngineConfig engine_default_config(void) {
|
|
EngineConfig config;
|
|
config.app_name = "Lity3D Engine";
|
|
config.window_width = 1280;
|
|
config.window_height = 720;
|
|
config.fullscreen = 0;
|
|
config.vsync = 1;
|
|
return config;
|
|
}
|
|
|
|
// 引擎函数
|
|
Engine* engine_create(void);
|
|
void engine_destroy(Engine* engine);
|
|
int engine_init(Engine* engine, const EngineConfig* config);
|
|
void engine_run(Engine* engine);
|
|
void engine_shutdown(Engine* engine);
|
|
void engine_request_quit(Engine* engine);
|
|
|
|
// 回调
|
|
typedef void (*EngineUpdateCallback)(Engine* engine, double delta_time);
|
|
typedef void (*EngineRenderCallback)(Engine* engine);
|
|
typedef void (*EngineKeyCallback)(Engine* engine, int key);
|
|
typedef void (*EngineResizeCallback)(Engine* engine, int width, int height);
|
|
typedef void (*EngineMouseMoveCallback)(Engine* engine, int x, int y);
|
|
typedef void (*EngineMouseButtonCallback)(Engine* engine, int button, int pressed);
|
|
|
|
void engine_set_update_callback(Engine* engine, EngineUpdateCallback callback);
|
|
void engine_set_render_callback(Engine* engine, EngineRenderCallback callback);
|
|
void engine_set_key_callback(Engine* engine, EngineKeyCallback callback);
|
|
void engine_set_resize_callback(Engine* engine, EngineResizeCallback callback);
|
|
void engine_set_mouse_move_callback(Engine* engine, EngineMouseMoveCallback callback);
|
|
void engine_set_mouse_button_callback(Engine* engine, EngineMouseButtonCallback callback);
|
|
|
|
// 子系统访问
|
|
GraphicsDevice* engine_get_graphics_device(Engine* engine);
|
|
Renderer* engine_get_renderer(Engine* engine);
|