Code: Select all
// Load mesh
_mesh = _scene->getMesh("../Assets/Barrel.3ds");
_node = _scene->addMeshSceneNode(_mesh);
_node->setMaterialFlag(EMF_LIGHTING, false);
_node->setParent(_scene->getRootSceneNode());
pos.Y += 10;
_node->setPosition(pos);
// Add selector
scene::ITriangleSelector* selector = _scene->createTriangleSelector(_mesh,_node);
_node->setTriangleSelector(selector);
_node->setName("wall");
// Add collision responder
const core::aabbox3d<f32>& box = _node->getBoundingBox();
core::vector3df radius = box.MaxEdge - box.getCenter();
scene::ISceneNodeAnimatorCollisionResponse* anim = _scene->createCollisionResponseAnimator(
selector, SContainer.MC->_node,radius); // idk, why this dont works: radius is (40,25,40), thus it must works properly
anim->setGravity(core::vector3df(0,0,0));
anim->setCollisionCallback(new CollisionBarrelAndActors());
SContainer.MC->_node->addAnimator(anim);
anim->drop();
selector->drop();
#ifdef SHOW_BOUNDING_BOXES
_node->setDebugDataVisible(scene::EDS_BBOX);
#endifSContainer.MC - player
Looking like players bounding ellipse is about (1,1,1).
While moving, part of the player moves incide the barrel, but then stops.
But debug shows that ellipse is large enough: (40,25,40)