First of all, great work on Bepu. It's great to have properly robust 3D physics on Windows Phone devices
Thanks
Now my question is, what is the basic actor/body class in Bepu? That is to say, if I made three dynamic boxes, a static triangle mesh, and say a sphere what would their common base class be?
Between those, ISpaceObject would be the common base. The ISpaceObject is a very high level interface that defines something that can be added to a space. However, you won't have access to much from that high up.
"Entity" is the superclass of mobile rigid bodies (Box, Sphere, Cone, CompoundBody, etc.). These can be dynamic (with mass/inertia) or kinematic (infinite mass/inertia). All entities can have linear/angular velocity, but only dynamic entities will respond to collisions and bounce around. Kinematic entities, having infinite mass/inertia, will happily smash through anything in their way.
An Entity has a CollisionInformation property which returns the Collidable used by that entity. A Collidable is a proxy for the entity in the collision detection pipeline which is used to collect contact points.
StaticMesh, InstancedMesh, and Terrain are all Collidables, but they are not owned by any Entity since they don't need any of Entity's systems. These objects are static and cannot move using velocity.
How can I set if it is static or not ?
When an entity is constructed, there are multiple constructors- some with mass properties, some without. If one with mass properties is used, the object is dynamic. If one without mass properties is used, the object is kinematic.
If you later want to change the dynamic/kinematicness of the object, you can call entity.BecomeDynamic or entity.BecomeKinematic.
Also is there a way to set userdata for entities?
Yes; the entity.Tag property. ISpaceObject does not currently expose a Tag; this may change shortly.