sculpto
application.h
Go to the documentation of this file.
1/*!****************************************************************//*!*
2 * \file application.h
3 * \brief
4 *
5 * \author Sabitov Kirill
6 * \date 18 June 2022
7 *********************************************************************/
8
9#pragma once
10
11#include "timer.h"
12#include "window.h"
13#include "layers_stack.h"
14#include "../events/events.h"
15#include "../gui/gui.h"
16
17/*!*
18 * Main programm function.
19 *
20 * \param argc - application run arguments count.
21 * \param argv - application run arguments array.
22 * \return system return code.
23 */
24int main(int argc, char *argv[]);
25
26namespace scl
27{
28 class application abstract
29 {
30 friend int ::main(int argc, char *argv[]);
31
32 private:
33 static application *Instance;
35 bool IsRunning { true };
36 unique<window> Window {};
38 public:
39 bool GuiEnabled { false };
41 public:
43 static application &Get() { return *Instance; }
45 const window &GetWindow() const { return *Window; }
46
47 private:
48 /*!*
49 * Per main application loop actions function.
50 *
51 * \param None.
52 * \return None.
53 */
54 void LoopIterationActions();
55
56 public:
57 /*!*
58 * Application initialisation virtual callback function.
59 *
60 * \param None.
61 * \return None.
62 */
63 virtual void OnInit() {}
64
65 /*!*
66 * Application deinitialisation virtual callback function.
67 *
68 * \param None.
69 * \return None.
70 */
71 virtual void OnClose() {}
72
73 /*!*
74 * Application update virtual callback function.
75 *
76 * \param DeltaTime - update inter frame delta time.
77 * \retunr None.
78 */
79 virtual void OnUpdate(float DeltaTime) {}
80
81 /*!*
82 * Application GUI update virtual callback function.
83 *
84 * \param None.
85 * \return None.
86 */
87 virtual void OnGuiUpdate() {}
88
89 public:
90 /*!*
91 * Default applicatino construcotr.
92 * Initialises all depended systems.
93 *
94 * \param Name - Application name. Will be shown in window title.
95 */
96 application(const std::string &Name);
97
99 virtual ~application();
100
101 /*!*
102 * Run application loop and show window function.
103 *
104 * \param None.
105 * \return None.
106 */
107 void Run();
108
109 /*!*
110 * Application shut down function.
111 *
112 * \param None.
113 * \return None.
114 */
115 void ShutDown();
116 };
117
118 extern application *CreateApplication();
119}
int main(int argc, char *argv[])
Definition: entry_point.h:22
virtual ~application()
const window & GetWindow() const
Definition: application.h:45
virtual void OnUpdate(float DeltaTime)
Definition: application.h:79
virtual void OnInit()
Definition: application.h:63
application(const std::string &Name)
virtual void OnClose()
Definition: application.h:71
static application & Get()
Definition: application.h:43
virtual void OnGuiUpdate()
Definition: application.h:87
Application layers stack class definition module.
Definition: base.h:33
application * CreateApplication()
std::unique_ptr< T > unique
Definition: smart_ptr.h:25
Timer, calculating interframe deltatime and fps class implementation module.
Abstract, platform independent class definition module.