Do you know what I might be doing wrong? Setting the Position causes it to not work; the WorldMatrix also doesn't work either.
It depends on what "doesn't work" means, but I suspect it is related to recentering again. Setting an entity's position moves the entity such that the center of mass is located at the new position. If the center of mass isn't where you expect on the object, then setting the position won't put the shape where you expect.
If you only need a rigid subset of affine transforms (position and orientation only), the Entity's Position and Orientation will do the trick. The values you set must take into account the recentering effect, though. Note that other properties like the WorldTransform and OrientationMatrix are convenience properties derived from the Position and Orientation properties.
The initial AffineTransform is just applied to the vertex data when building the shape. Recentering will occur on the post-transformed vertices to bring everything into local space so that the entity Position and Orientation will behave as expected.
It says it'll never evaluate to that type, but SpaceSphere extends Sphere extends Entity extends BEPUphysics.Collidables.MobileCollidables.EntityCollidable so I figured it would work, but it doesn't appear to when I run.
Sphere is a convenience prefab Entity type, and Entity does not inherit from EntityCollidable. Entity objects use EntityCollidables as collision proxies in the collision detection pipeline. The EntityCollidable associated with an Entity is returned by the entity.CollisionInformation property.
Further, I generally recommend not extending Entity classes or Collidable classes unless you plan on implementing and handling distinct custom collision behaviors.
All BroadPhaseEntry objects (which include Collidable objects, which include EntityCollidable objects) have a Tag property. So, you could set an Entity.CollisionInformation.Tag to some gameplay logic object. In the event, you can analyze the Tag to get your information. Also note that the Entity has its own Tag which is separate from the Entity.CollisionInformation.Tag, and that EntityCollidables have an Entity property which contains the entity they are associated with.
Also, is there scaling?
You can scale a MobileMeshShape when you construct it with the AffineTransform. All the shapes have various forms of sizing (radius for spheres, radius/length for capsules, etc.), though there is not a single universal scaling behavior. ConvexShapes can be nested within TransformableShapes to provide them with universal scaling, but this adds a tiny bit of overhead and wipes out any special case collision detection behavior that might exist (a BoxShape nested in a TransformableShape will not/can not use the box-box special case when colliding with another BoxShape).
Scaling after an object is created is possible for certain shapes, but it will require some recomputation to find the new physical data. Additionally, scaling objects is a form of nonphysical motion and collision response may not behave like you expect during periods of continuous scaling. (For example, if an object was scaled up such that it enclosed another object, they will be in penetration; they will separate over time according to the penetration resolution system.)