Everything worked fine in earlier versions, but in 4.16 our movable objects can no longer be moved after their first collision with another object. If something was changed that impacts the way that movable objects/collision works between the older versions and this version please let me know what that is so we at least know where to start.
We have three actors: the Controller blueprint, the Vive Controller Blueprint actor, and the table static mesh actor. Initially, the static mesh actor is set to not simulate physics, but does have collision enable and overlaps with the object type “DynamicActor”. The Vive BP has a sphere collision component that is set to overlap with the table’s object type of “Movable_Object”. On overlap, that controller sets a PU_Object variable that now contains the instance of the static mesh actor, sets a boolean “Pickup Possible” variable to true, and it changes the color of the controller indicating pickup is possible to the player. On overlap exit, the “Pickup Possible” bool is set to false, and the color reverts to normal. The Controller blueprint has a routine that checks for trigger presses and runs the “pickup object” function. It then accesses the instance of the controller to determine if pickup is possible (using the boolean from before). If that returns true, it will do a quick check to make sure that object isn’t already being held (by the other controller), and if it is, it’ll switch the object to the other controller. If it is not, then we attach the table actor to the vive controller actor using the “Attach actor to actor” function. We also set “simulate physics” to false on the table. When the trigger on the controller is released, the same function is run, only this time with “drop” as the goal. The Controller detaches the actors, and sets the table’s simulate physics to true. From then on, that table will simulate physics. All of this appears to be working as-expected, and physics is being simulated as-expect, right up until it hits the floor. The floor is a simple collision box (we disable collision on the actual floor object, opting instead for an invisible field), and it is only set to block “Movable_Object” object types. This was working prior to 4.16 as-is, and has not been changed in any way since the update.
Re-importing the geometry solved the problem for us.
How are your moving that object?