ezEngine  Milestone 7
Application.h
Go to the documentation of this file.
1 
2 #pragma once
3 
5 
6 #include <Foundation/Utilities/CommandLineUtils.h>
7 #include <Core/Basics.h>
8 #include <Core/Application/Implementation/ApplicationEntryPoint.h>
9 
10 class ezApplication;
11 
15 EZ_CORE_DLL void ezRun(ezApplication* pApplicationInstance);
16 
54 class EZ_CORE_DLL ezApplication
55 {
56 public:
57 
60  {
62  Quit,
63  };
64 
67  m_iReturnCode(0),
68  m_uiArgumentCount(0),
69  m_ppArguments(nullptr),
70  m_bReportMemoryLeaks(true)
71  {
72  }
73 
75  virtual ~ezApplication()
76  {
77  }
78 
84  virtual void BeforeEngineInit()
85  {
86  }
87 
93  virtual void AfterEngineInit()
94  {
95  }
96 
102  virtual void BeforeEngineShutdown()
103  {
104  }
105 
109  virtual void AfterEngineShutdown()
110  {
111  }
112 
119  virtual void BeforeEnterBackground()
120  {
121  }
122 
128  virtual void BeforeEnterForeground()
129  {
130  }
131 
135  virtual ApplicationExecution Run() = 0;
136 
140  inline void SetReturnCode(ezInt32 iReturnCode)
141  {
142  m_iReturnCode = iReturnCode;
143  }
144 
146  inline ezInt32 GetReturnCode() const
147  {
148  return m_iReturnCode;
149  }
150 
153  inline void SetCommandLineArguments(ezUInt32 uiArgumentCount, const char** ppArguments)
154  {
155  m_uiArgumentCount = uiArgumentCount;
156  m_ppArguments = ppArguments;
157  ezCommandLineUtils::GetInstance()->SetCommandLine(uiArgumentCount, ppArguments);
158  }
159 
161  static ezApplication* GetApplicationInstance()
162  {
163  return s_pApplicationInstance;
164  }
165 
169  ezUInt32 GetArgumentCount() const
170  {
171  return m_uiArgumentCount;
172  }
173 
175  const char* GetArgument(ezUInt32 uiArgument) const
176  {
177  EZ_ASSERT_DEV(uiArgument < m_uiArgumentCount, "There are only %i arguments, cannot access argument %i.", m_uiArgumentCount, uiArgument);
178 
179  return m_ppArguments[uiArgument];
180  }
181 
183  const char** GetArgumentsArray() const
184  {
185  return m_ppArguments;
186  }
187 
188  void EnableMemoryLeakReporting(bool bEnable)
189  {
190  m_bReportMemoryLeaks = bEnable;
191  }
192 
193 private:
194 
195  ezInt32 m_iReturnCode;
196 
197  ezUInt32 m_uiArgumentCount;
198 
199  const char** m_ppArguments;
200 
201  bool m_bReportMemoryLeaks;
202 
203  static ezApplication* s_pApplicationInstance;
204 
205  friend EZ_CORE_DLL void ezRun(ezApplication* pApplicationInstance);
206  };
207