本文整理汇总了C++中OBB::HalfSize方法的典型用法代码示例。如果您正苦于以下问题:C++ OBB::HalfSize方法的具体用法?C++ OBB::HalfSize怎么用?C++ OBB::HalfSize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OBB
的用法示例。
在下文中一共展示了OBB::HalfSize方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ObbCollisionQuery
EntityList PhysicsWorld::ObbCollisionQuery(const OBB &obb, int collisionGroup, int collisionMask)
{
PROFILE(PhysicsWorld_ObbCollisionQuery);
std::set<btCollisionObjectWrapper*> objects;
EntityList entities;
btBoxShape box(obb.HalfSize()); // Note: Bullet uses box halfsize
float3x3 m(obb.axis[0], obb.axis[1], obb.axis[2]);
btTransform t1(m.ToQuat(), obb.CenterPoint());
#include "DisableMemoryLeakCheck.h"
btRigidBody* tempRigidBody = new btRigidBody(1.0f, 0, &box);
#include "EnableMemoryLeakCheck.h"
tempRigidBody->setWorldTransform(t1);
world_->addRigidBody(tempRigidBody, collisionGroup, collisionMask);
tempRigidBody->activate(); // To make sure we get collision results from static sleeping rigidbodies, activate the temp rigid body
ObbCallback resultCallback(objects);
world_->contactTest(tempRigidBody, resultCallback);
for (std::set<btCollisionObjectWrapper*>::iterator i = objects.begin(); i != objects.end(); ++i)
{
EC_RigidBody* body = static_cast<EC_RigidBody*>((*i)->getCollisionObject()->getUserPointer());
if (body && body->ParentEntity())
entities.push_back(body->ParentEntity()->shared_from_this());
}
world_->removeRigidBody(tempRigidBody);
delete tempRigidBody;
return entities;
}