Inherit from CollisionNode

If you don’t manage the TypedObject interface, then myObject->get_type() will return CollisionNode instead of MyObject. You won’t be able to ask node->is_of_type(MyObject::get_class_type()). You won’t be able to use DCAST(MyObject, node) to perform a type-safe cast to MyObject.

This probably won’t bother you though, if you don’t actually care to use those interfaces. Nothing within Panda will care.

I cannot possible answer your second question; there is no “best” solution for such a broad question. My personal preference would generally be to create the game structures in my own code, and have pointers into the PandaNodes they reference, rather than tying it so intimately into the scene graph; but there are pros and cons of both approaches, and subclassing is sometimes the right answer.

David