blob: 598bca8d0cadd2b81f1fba3b41e752e996e71f03 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#include "Sdl2/SDL.h"
#include "Exceptions/Exception.h"
#include "Scripting/Luax.hpp"
#include "Application.h"
using namespace Luax;
namespace AsuraEngine
{
Application::Application()
{
}
Application::~Application()
{
}
bool Application::InitSubModules(uint flag)
{
// ʼģ
#define TryInitSubModule(module_name, func_name) \
if((flag&ASURA_MODULE_##module_name) && !Application::Init##func_name()) \
throw Exception("Asura init submodule %s failed.", #module_name);
TryInitSubModule(GRAPHICS, Graphics);
TryInitSubModule(AUDIO, Audio);
TryInitSubModule(FONT, Font);
TryInitSubModule(INPUT, Input);
TryInitSubModule(MATH, Math);
TryInitSubModule(PHYSICS, Physics);
TryInitSubModule(TIME, Time);
TryInitSubModule(WINDOW, Window);
}
void Application::PortToLua()
{
LuaxState state(mLuaState);
#define RegisterLuaFactory(T) state.RegisterFactory<T>();
state.SetToGlobalNamespace();
state.PushNamespace("AsuraEngine");
RegisterLuaFactory(AEGraphics::Image>);
#ifdef ASURA_AUTHOR
state.PushNamespace("Version");
state.PopNamespace(); // AsuraEngine.Version
#endif
state.PopNamespace(); // AsuraEngine
}
}
|