ODE Middleware

Ok, found it. Line 340 to 342 in odeWorldManager.

class DynamicObjectNoCCD(PhysicalObject):
	def __init__(self, map):
		StaticObject.__init__(self, map)

Seems like you’ve made a really big mess in inheritance when changing the names to capitalized :wink:. Ok, so this error should be obvious – you inherit from PhysicalObject, but you attempt to call init on StaticObject. This can’t work.

However, there’s more. You’ve generally changed the inheritance (probably because of attempting to change the names too quickly) and, unless you’ve made some real changes to the code itself (and it doesn’t seem so at the first glance) the code just won’t work.

The correct inheritance is as follows:

PhysicalObject(object)
StaticObject(PhysicalObject)
RayObject(PhysicalObject)
KinematicObject(StaticObject)
DynamicObjectNoCCD(StaticObject)
DynamicObjectCCD(DynamicObjectNoCCD)
Explosion(KinematicObject)

In your version kinematic and basic dynamic objects inherit from the PhysicalObject instead from the StaticObject, which is incorrect.

When changing that pay attention to the contents of init and all other methods which might contain calls to the parent classes with “self”.

Assuming one has access to source code tracking down errors of that kind is very simple. It all comes down to walking through inheritance top-to-bottom.