Files
lity3d/Engine/Core/engine.h
T
shuiyu1123 0669d102ce feat: major engine overhaul - scene demo with lighting, sphere, ground
- Scene Demo: cube + sphere + ground plane with proper lighting
- Audio: XAudio2 dynamic loading + WAV playback
- Physics: expanded collision system
- Renderer: improved pipeline with materials
- UI: extended widget system
- VisualScript: enhanced serializer + block interactions
- ASM: optimized math/memory/profiling routines
- Window: mouse input + scroll support
2026-07-12 08:21:07 +08:00

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 = "MiMo Engine ASM";
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);