Torque源代码解析(一)

来源:互联网 发布:gif动态软件 编辑:程序博客网 时间:2024/05/17 02:09

基本的控制流

因为不同的平台对应用程序有不同的main函数接口,Torque引擎的main()函数运行在特定的操作系统平台库。在windows操作系统中,它是在engine/platformWin32/winWindow.cc文件中,定义了main()和WinMain()。这些按顺序调用run()去调用Game->main(int argc, const char **argv)Game是一个参考GameInterface类的能够指向一个特定游戏动作的全局指针。

这个Torque例子程序主要的初始化发生在in engine/game/main.cc DemoGame::main()。这个函数初始化lib,初始化游戏函数,然后进入主要的游戏循环直到程序中止。这个主循环一般调用平台库函数(engine/platform/platform.h)去生成平台事件,然后驱动main

这个main.cc文件也有DemoGame函数优先于一些基本的事件进程函数:鼠标移动时间进程(发送鼠标移动事件到GUI),输入事件进程(其他输入相关的事件),时间事件进程基于模拟器的时间度量设置来计算时间。

1.    服务端的时间进程(engine/game/game.cc里的serverProcess()

2.    核对服务端的网络包发送(engine/game/netDispatch.cc里的serverNetProcess()

3.    提前模拟事件(engine/console/simmanager.cc里的Sim::advanceTime()

4.    客户端的时间进程(engine/game/game.cc里的clientProcess()

5.    核对客户端网络包发送(engine/game/netDispatch.cc里的clientNetProcess()

6.    渲染当前帧(engine/gui/guiCanvas.cc里的GuiCanvas::render()

7.    核对网络超时(engine/game/netDispatch.cc里的dispatchCheckTimeouts())

 

UDP网络包在DemoGame::processPacketReceiveEventengine/game/netDispatch.cc中定义)被处理

TCP连接数据或信息在DemoGame::processConnected*Event(engine/game/TCPObject.cc中定义)被处理。

原创粉丝点击