This code teleports the sphere (it is the same loadDefaultSimulation() function, just with classes instead of manually setuping every component):
void PhysicsWorld::loadDefaultSimulation()
{
auto p1{ std::make_unique<PhysicsObject>(glm::vec3(0.0f, -1.0f, 0.0f), glm::quat(0.0f, 0.0f, 0.0f, 1.0f),
CollisionShapeType::PLANE, glm::vec3(0.0f, 1.0f, 0.0f), 0.0f, 0.0f, 0.8f) };
//p1.get()->setRestitution(0.8f);
addObjectToWorld(std::move(p1));
auto p2{ std::make_unique<PhysicsObject>(glm::vec3(0.0f, 50.0f, 0.0f), glm::quat(0.0f, 0.0f, 0.0f, 1.0f),
CollisionShapeType::SPHERE, glm::vec3(0.0f, 0.0f, 0.0f), 0.2f, 1.5f, 0.8f) };
addObjectToWorld(std::move(p2));
}
void PhysicsWorld::addObjectToWorld(std::unique_ptr<PhysicsObject> object)
{
mPhysicsObjects.push_back(std::move(object));
mDynamicsWorld->addRigidBody(mPhysicsObjects.back().get()->getRigidBody());
}