是什么取代了BulletSharp.ContactAdded?

时间:2013-12-13 15:29:38

标签: c# bulletphysics

我最近将项目的物理库(BulletSharp)从2.80更新到2.82,我留下了一堆无效的调用(在调试抽屉中有大约20个构建错误)。除了碰撞检测电话之外,我几乎修复了所有这些。

来自CollisionReporter.cs:

PhysicsMain.PreSimulate += new PhysicsSimulateEvent(PreSimulate);
PhysicsMain.PostSimulate += new PhysicsSimulateEvent(PostSimulate);
PhysicsMain.ContactAdded += new ContactAdded(ManifoldPoint_ContactAdded);
LevelManager.OnLevelUnload += new LevelEvent(OnLevelUnload);

然后从PhysicsMain.cs中的CreateWorld()函数调用它:

ManifoldPoint.ContactAdded += new ContactAdded(ManifoldPoint_ContactAdded);

我的这条线也接近PhysicsMain.cs的顶部:

public static event ContactAdded ContactAdded;

我还应该指出ManifoldPoint_ContactAdded()是一个布尔值。

bool ManifoldPoint_ContactAdded(ManifoldPoint point, ... ) {

我遇到的问题是Bullet(BulletSharp无论如何)停止使用BulletSharp.ContentAdded打破了电话。该文档没有提供关于替代它们的内容的见解。

有人知道我必须使用什么代替BulletSharp.ContactAdded吗?

编辑:这似乎在PhysicsMain.cs中抛出了“no overload matches delegate”错误。

PhysicsMain.ContactMade += ContactMade;

我认为这是罪魁祸首:

public static event /*ContactAdded*/ ContactAddedEventHandler ContactMade;

1 个答案:

答案 0 :(得分:1)

ContactAdded委托was renamed到ContactAddedEventHandler以匹配.NET标准。您只需要编写处理程序方法的名称,因此这两个都是正确的:

ManifoldPoint.ContactAdded += new ContactAddedEventHandler(ManifoldPoint_ContactAdded);
ManifoldPoint.ContactAdded += ManifoldPoint_ContactAdded;

.NET中的事件通常不返回任何值,因为可以将多个方法连接到事件并返回不同的值。这与C ++不同,后者将单个方法设置为处理程序。由于Bullet当前不使用bool返回值,因此使用void。所以你的方法应该是无效的,不会返回任何值。

我认为BulletSharp最近才进入开发阶段,这种突破性变化可能被认为是一件坏事。对此感到抱歉。