- Learning Game AI Programming with Lua
- David Young
- 317字
- 2021-08-05 17:02:12
Extending the SandboxApplication class
Once your project has been set up, you need to create three blank files for Premake to discover.
Create the source and header files as follows:
src/my_sandbox/include/MySandbox.h src/my_sandbox/src/MySandbox.cpp src/my_sandbox/src/main.cpp
Now, it's time to regenerate the Visual Studio solution by executing vs2008.bat
, vs2010.bat
, vs2012.bat
, or vs2013.bat
. When you open the Visual Studio solution, you'll see your brand new My_Sandbox
project!
Each of the sandbox demos is set up to extend the base SandboxApplication
class and declare where to find the corresponding Lua script files for the executable.
Declaring your MySandbox
class follows the same pattern and looks as follows:
MySandbox.h
:
#include "demo_framework/include/SandboxApplication.h" class MySandbox : public SandboxApplication { public: MySandbox(void); virtual ~MySandbox(void); virtual void Initialize(); };
Inheriting from SandboxApplication
gives you a base to start with. For now, we're only going to override the default behavior of Initialize
in order to add the resource location for our Lua scripts.
Tip
Inheriting from the SandboxApplication
class also allows you to override other functions such as Update
and Cleanup
. Any special C++ code can be injected into the main application through these function hooks.
You should always call the SandboxApplication
class' original implementation of these functions if you override them, as they are responsible for cleaning, initializing, and updating the sandbox.
Creating the source file for the sandbox simply sets the resource location to find our sandbox Lua scripts and calls the parent class's initialization function.
MySandbox.cpp
:
#include "my_sandbox/include/MySandbox.h" MySandbox:: MySandbox () : SandboxApplication("My Sandbox") {} MySandbox::~ MySandbox () {} void MySandbox::Initialize() { SandboxApplication::Initialize(); // Relative location from the bin/x32/release/ or // bin/x32/debug folders AddResourceLocation("../../../src/my_sandbox/script"); }
Finally, you can add the small runner code to kick off your application from main.cpp
:
main.cpp
:
#include "my_sandbox/include/MySandbox.h" #include "ogre3d/include/OgreException.h" #define WIN32_LEAN_AND_MEAN #include "windows.h" int main() { MySandbox application; try { application.Run(); } catch(Ogre::Exception& error) { MessageBox( NULL, error.getFullDescription().c_str(), "An exception has occurred!", MB_OK | MB_ICONERROR | MB_TASKMODAL); } }
- Python數據分析入門:從數據獲取到可視化
- 醫療大數據挖掘與可視化
- Neural Network Programming with TensorFlow
- The Game Jam Survival Guide
- 算力經濟:從超級計算到云計算
- 云原生架構:從技術演進到最佳實踐
- 數據之美:一本書學會可視化設計
- 數據挖掘與數據化運營實戰:思路、方法、技巧與應用
- Access 2010數據庫應用技術教程(第二版)
- Flume日志收集與MapReduce模式
- GameMaker Game Programming with GML
- 數據時代的品牌智造
- Managing Software Requirements the Agile Way
- AutoCAD基礎與應用精品教程(2008版)
- Swift 2 By Example