33#ifndef DVD_CORE_KERNEL_H_
34#define DVD_CORE_KERNEL_H_
53class SceneRenderState;
54class RenderPassManager;
69 class KernelApplication;
70 class KernelWindowManager;
71 class KernelDebugInterface;
94 void idle(
bool fast,
U64 deltaTimeUSGame,
U64 deltaTimeUSApp );
123 PROPERTY_R(std::unique_ptr<RenderPassManager>, renderPassManager);
214 return kernel._timingData;
Class that provides an interface between our framework and the OS (start/stop, display support,...
static void onResolutionChange(Kernel *kernel, const SizeChangeParams ¶ms)
static ErrorCode initialize(Kernel *kernel, const string &entryPoint)
static void onLoop(Kernel *kernel)
static void shutdown(Kernel *kernel)
static void onWindowSizeChange(Kernel *kernel, const SizeChangeParams ¶ms)
static void warmup(Kernel *kernel)
static const LoopTimingData & timingData(const Kernel &kernel) noexcept
The kernel is the main system that connects all of our various systems: windows, gfx,...
bool joystickAddRemove(const Input::JoystickEvent &arg) override
bool joystickAxisMoved(const Input::JoystickEvent &arg) override
Joystick axis change.
PROPERTY_R(std::unique_ptr< ProjectManager >, projectManager)
ErrorCode initialize(const string &entryPoint)
FORCE_INLINE PlatformContext & platformContext() noexcept
PROPERTY_R(std::unique_ptr< RenderPassManager >, renderPassManager)
Time::ProfileTimer & _frameTimer
Time::ProfileTimer & _postRenderTimer
bool onTextEvent(const Input::TextEvent &arg) override
Generated by text events (e.g. for SDL: SDL_TEXTEDITING and SDL_TEXTINPUT)
bool mouseButtonReleased(const Input::MouseButtonEvent &arg) override
Mouse button released.
bool joystickRemap(const Input::JoystickEvent &arg) override
bool mouseMoved(const Input::MouseMoveEvent &arg) override
Mouse moved.
Time::ProfileTimer & _sceneUpdateLoopTimer
bool joystickPovMoved(const Input::JoystickEvent &arg) override
Joystick direction change.
bool onKeyUp(const Input::KeyEvent &key) override
Key released.
void onWindowSizeChange(const SizeChangeParams ¶ms)
Time::ProfileTimer & _sceneUpdateTimer
bool presentToScreen(FrameEvent &evt)
Time::ProfileTimer & _appScenePass
static size_t TotalThreadCount(TaskPoolType type) noexcept
bool onKeyDown(const Input::KeyEvent &key) override
Key pressed.
Time::ProfileTimer & _cameraMgrTimer
friend class Attorney::KernelWindowManager
bool joystickButtonPressed(const Input::JoystickEvent &arg) override
Joystick button pressed.
Time::ProfileTimer & _appIdleTimer
Time::ProfileTimer & _appLoopTimerInternal
void onLoop()
Our main application rendering loop: Call input requests, physics calculations, pre-rendering,...
PROPERTY_R(PlatformContext, platformContext)
std::array< InputAggregatorInterface *, to_base(InputConsumerType::COUNT)> _inputConsumers
PROPERTY_R(FrameListenerManager, frameListenerMgr)
bool mouseButtonPressed(const Input::MouseButtonEvent &arg) override
Mouse button pressed.
void remapAbsolutePosition(Input::MouseEvent &eventInOut) const noexcept
bool joystickButtonReleased(const Input::JoystickEvent &arg) override
Joystick button released.
Time::ProfileTimer & _flushToScreenTimer
Time::ProfileTimer & _preRenderTimer
std::unique_ptr< GUISplash > _splashScreen
PROPERTY_RW(LoopTimingData, timingData)
PROPERTY_RW(bool, keepAlive, true)
bool mainLoopScene(FrameEvent &evt)
FORCE_INLINE FrameListenerManager & frameListenerMgr() noexcept
Time::ProfileTimer & _appLoopTimerMain
bool joystickBallMoved(const Input::JoystickEvent &arg) override
void idle(bool fast, U64 deltaTimeUSGame, U64 deltaTimeUSApp)
vector< Rect< I32 > > _targetViewports
void onResolutionChange(const SizeChangeParams ¶ms)
vector< Time::ProfileTimer * > _renderTimer
std::atomic_bool _splashScreenUpdating
Rect< I32 > _prevViewport
Handle console commands that start with a forward slash.
eastl::vector< Type > vector
constexpr auto to_base(const Type value) -> Type