当前位置: 首页>>代码示例>>C++>>正文


C++ PhysicsBody::Init方法代码示例

本文整理汇总了C++中PhysicsBody::Init方法的典型用法代码示例。如果您正苦于以下问题:C++ PhysicsBody::Init方法的具体用法?C++ PhysicsBody::Init怎么用?C++ PhysicsBody::Init使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PhysicsBody的用法示例。


在下文中一共展示了PhysicsBody::Init方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: CreatePhysicsBody

PhysicsBody* PhysicsManager::CreatePhysicsBody(Entity* entity, PHYSICS_BODY_TYPE type, COLLIDER_TYPE colliderType, Vector3 position, float mass)
{
	PhysicsBody* body;

	switch(type)
	{
		case PARTICLE:
			body = new Particle(mass);
			break;

		case RIGID_BODY:
			body = new RigidBody(mass);
			break;

		default:
			return NULL;
			break;
	}

	Collider* collider;
	SphereCollider* tempSphere;
	PlaneCollider* tempPlane;
	BoxCollider* tempBox;
	Matrix inertiaTensor;
	float massFactor = 0;

	switch(colliderType)
	{
		case SPHERE:
			tempSphere = new SphereCollider();
			tempSphere->Radius = .5f;
			collider = tempSphere;

			massFactor = (2.0f / 5.0f) * mass;

			inertiaTensor.SetRow(1,massFactor * (.5f * .5f),0						,0				    	 ,0);
			inertiaTensor.SetRow(2,0				       ,massFactor * (.5f * .5f),0					     ,0);
			inertiaTensor.SetRow(3,0				       ,0				        ,massFactor * (.5f * .5f),0);
			inertiaTensor.SetRow(4,0				       ,0				        ,0				    	 ,1);
			break;

		case PLANE:
			tempPlane = new PlaneCollider();
			tempPlane->Normal = Vector3(0,1,0);
			tempPlane->PlaneOffset = 0;
			collider = tempPlane;
			break;

		case BOX:
			tempBox = new BoxCollider();
			tempBox->halfSize = Vector3(.5f, .5f, .5f);
			collider = tempBox;

			massFactor = (1.0f / 12.0f) * mass;

			inertiaTensor.SetRow(1,massFactor * (1 + 1),0					,0					 ,0);
			inertiaTensor.SetRow(2,0				   ,massFactor * (1 + 1),0					 ,0);
			inertiaTensor.SetRow(3,0				   ,0				    ,massFactor * (1 + 1),0);
			inertiaTensor.SetRow(4,0				   ,0				    ,0					 ,1);
			break;
	}

	body->Init(entity, collider);
	body->SetPosition(position);

	entity->SetPhysicsBody(body);
	entity->GetTransform()->SetPosition(position);

	mObjectsTracked.push_back(body);

	return body;
}
开发者ID:KyleMarchev,项目名称:LightningEngine,代码行数:72,代码来源:PhysicsManager.cpp


注:本文中的PhysicsBody::Init方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。