最原始的代码是sunstar1989大佬写的C++源码,我这里是用了MOGRE+MyGUI+Physx Candy Wrapper做的一个.NET版本的转换,目前代码托管在GitHub上:
GitHub - cookgreen/BilliardGame: Open Source Billiard Game
关于这个游戏,我只想说两点:
第一点:NxOgre和Physx Candy Wrapper之间有很多不一样的地方
NxOgre是英国人betajean做的一个Physx的封装,相当于是对原本的Physx API进行OO化(也就是对象化),他里面封装了很多的东西,比如Trigger,Volume什么的,这在原来的Physx API是没有的。
而Physx Candy Wrapper是Ageia写的一个关于Physx SDK的.NET的封装,虽然表面上使用了OO设计思想,但是基本上仍然是对Physx API的封装而没有OO化,更没有对Physx进行二次封装,因此在寻找两者关联的时候费了不少劲儿。
这就需要我们有一定的阅读源代码的能力,我查了好多NxOgre的源码,然后再加上对Physx SDK的研究,才总算摸索出一条调用之路。
比如挂钩Physx场景碰撞事件的时候,在C#代码需要你的类实现三个接口:
第一个是IUserNotify
第二个是IUserContactReport
第三个是IUserTriggerReportÿ