If they didn't need to interact, setting them all to IsActive = false would be okay. Depending on the type of interaction you need, there could be a few different approaches.
If all the unselected objects are supposed to be unmovable even when interacted with, you could try calling BecomeKinematic on all dynamic entities. The 'unpause' wouldn't be very fast, though, since it would try to recalculate inertia tensors when BecomeDynamic is called. v0.15.0 allows you to specify a custom inertia tensor and prevent it from recalculating anything which would speed it up a lot.
There's also the option of saving the state of the moving entities and then zeroing out their velocity and disabling gravity, possibly with setting IsActive = false as well. On unpause, the saved state of the moving entities would be reincorporated into the simulation (while still maintaining the changes made during the pause).
Yet another option is to create some sort of ghost-space that your selected object is simulated in. Proxy entities would exist in that space to match the collision geometry of the 'real' space.
Norbo wrote:If they didn't need to interact, setting them all to IsActive = false would be okay.
This is what I originally tried. If I then move the object with the GrabSpring class found in the BEPU demos then other objects will still interact with the moving object but the resultant movement is strange.
How can I just move one object and keep the others static by using IsActive?
I'm not really sure what kind of 'strange' you're seeing, but I'd assume it's related to the fact that it gets frozen with some velocity, and when the grabspring wakes it up, it jumps and eventually resettles.
Using IsActive = false alone can't be used to make the world static while still responding to collisions properly. It just stops the entity from updating, so things that interact with it will either have to wake it up or deal with it in some other way. If the rest of the world has to interact in some way with the active object, then you'll have to resort to some more complicated approaches that I mentioned.
Here's another approach that's fairly similar to the velocity-based approach I mentioned earlier, too. You don't have to manage any IsActive stuff, you just save the velocity states of the objects in the simulation. Then, set the entity velocities to zero, disable gravity, and (here's the new part) increase their damping substantially (close to 1) for the duration of the freeze. You could either set the AngularDamping and LinearDamping directly, or use the ModifyLinearDamping/AngularDamping methods to do it on a per-frame basis without changing the base damping values. The object you 'select' would not be subject to the extra freeze damping. When the simulation unpauses, restore the velocities of all entities.
That approach would be pretty fast and would avoid awkward activity management and dynamic/kinematic conversion. Dynamic entities which get impacted by your selected object could still be pushed around a little (as if they were in an extremely viscous fluid).