Raw File
SimBox.cpp
#include "SimBox.h"

cSimBox::tParams::tParams()
{
	mType = eTypeDynamic;
	mMass = 1;
	mFriction = 0.9;
	mPos = tVector(0, 0, 0, 0);
	mSize = tVector(1, 1, 1, 0);
	mAxis = tVector(0, 0, 1, 1);
	mVel.setZero();
	mTheta = 0;
}

cSimBox::cSimBox()
{
}

cSimBox::~cSimBox()
{
}

void cSimBox::Init(std::shared_ptr<cWorld> world, const tParams& params)
{
	mType = params.mType;
	btScalar mass = (params.mType == eTypeDynamic) ? static_cast<btScalar>(params.mMass) : 0;

	mShape = world->BuildBoxShape(params.mSize);

	btVector3 inertia(0, 0, 0);
	mShape->calculateLocalInertia(mass, inertia);
	btRigidBody::btRigidBodyConstructionInfo cons_info(mass, this, mShape.get(), inertia);
	mBody = std::unique_ptr<btRigidBody>(new btRigidBody(cons_info));
	mBody->setFriction(static_cast<btScalar>(params.mFriction));
	
	cSimObj::Init(world);
	SetPos(params.mPos);
	SetLinearVelocity(params.mVel);
	SetRotation(params.mAxis, params.mTheta);
}

tVector cSimBox::GetSize() const
{
	return mWorld->GetBoxSize(this);
}

cSimBox::eShape cSimBox::GetShape() const
{
	return eShapeBox;
}
back to top