MCPcopy Create free account
hub / github.com/RavEngine/RavEngine / run

Method run

src/RavEngine_App.cpp:11–83  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9using namespace RavEngine;
10
11int App::run(int argc, char** argv) {
12
13 //invoke startup hook
14 OnStartup(argc, argv);
15
16 int width = 0; int height = 0;
17 auto& inputManager = GameplayStatics::inputManager;
18
19 bool exit = false;
20 SDL_Event event;
21 while (!exit) {
22 auto windowflags = SDL_GetWindowFlags(RenderEngine::GetWindow());
23 while (SDL_PollEvent(&event)) {
24
25 switch (event.type) {
26 case SDL_QUIT:
27 exit = true;
28 break;
29
30 case SDL_WINDOWEVENT: {
31 const SDL_WindowEvent& wev = event.window;
32 switch (wev.event) {
33 case SDL_WINDOWEVENT_RESIZED:
34 case SDL_WINDOWEVENT_SIZE_CHANGED:
35 SDL_GetWindowSize(RenderEngine::GetWindow(), &width, &height);
36 GameplayStatics::currentWorld->resize();
37 break;
38
39 case SDL_WINDOWEVENT_CLOSE:
40 exit = true;
41 break;
42 }
43 } break;
44
45 case SDL_KEYDOWN:
46 case SDL_KEYUP:
47 inputManager->SDL_key(event.key.state, event.key.keysym.scancode);
48 break;
49 case SDL_MOUSEMOTION:
50 if (windowflags & SDL_WINDOW_INPUT_FOCUS) {
51 inputManager->SDL_mousemove((float)event.motion.x / width, (float)event.motion.y / height, event.motion.xrel, event.motion.yrel);
52 }
53 break;
54 case SDL_MOUSEBUTTONDOWN:
55 case SDL_MOUSEBUTTONUP:
56 if (windowflags & SDL_WINDOW_INPUT_FOCUS) {
57 inputManager->SDL_mousekey(event.button.state, event.button.button);
58 }
59 break;
60 case SDL_CONTROLLERAXISMOTION:
61 case SDL_CONTROLLER_AXIS_LEFTX:
62 case SDL_CONTROLLER_AXIS_LEFTY:
63 inputManager->SDL_ControllerAxis(event.caxis.axis + Special::CONTROLLER_AXIS_OFFSET, (event.caxis.value) / ((float)SHRT_MAX));
64 break;
65 case SDL_CONTROLLERBUTTONDOWN:
66 case SDL_CONTROLLERBUTTONUP:
67 inputManager->SDL_mousekey(event.cbutton.state + Special::CONTROLLER_BUTTON_OFFSET, event.cbutton.button);
68 break;

Callers

nothing calls this directly

Calls 10

SDL_GetWindowFlagsFunction · 0.85
GetWindowFunction · 0.85
SDL_PollEventFunction · 0.85
SDL_GetWindowSizeFunction · 0.85
SDL_keyMethod · 0.80
SDL_mousemoveMethod · 0.80
SDL_mousekeyMethod · 0.80
SDL_ControllerAxisMethod · 0.80
resizeMethod · 0.45
tickMethod · 0.45

Tested by

no test coverage detected