PxRigidStatic* PxCreateStatic(PxPhysics& sdk, 
							  const PxTransform& transform, 
							  PxShape& shape)
{
	PX_CHECK_AND_RETURN_NULL(transform.isValid(), "PxCreateStatic: transform is not valid.");

	PxRigidStatic* s = sdk.createRigidStatic(transform);
	if(s)
		s->attachShape(shape);
	return s;
}
void PhysxScene::AddCapsuleFromU3D(killer::proto::U3DPhysxCapsule& capsule) {
	if (capsule.raduis() <= 0.0f || capsule.height() <= 0.0f) {
        LOG_ERROR(0, 0, "capsule error|%s", capsule.ShortDebugString().c_str());
		return;
	}

	PxShape *shape = PhysxCommonSigleton::get_mutable_instance().GetPhysics().createShape(PxCapsuleGeometry(capsule.raduis(), capsule.height() * 0.5), *px_material_);
	PxTransform localTrans(PxVec3(PxReal(capsule.pos().x()), PxReal(capsule.pos().y()), PxReal(capsule.pos().z())));
	PxRigidStatic *actor = PhysxCommonSigleton::get_mutable_instance().GetPhysics().createRigidStatic(localTrans);

	actor->attachShape(*shape);
	px_scene_->addActor(*actor);

	shape->release();
}
void PhysxScene::AddBoxFromU3D(killer::proto::U3DPhysxBox& box) {
	if (box.x_extents() <= 0.0f || box.y_extents() <= 0.0f || box.z_extents() <= 0.0f) {
        LOG_ERROR(0, 0, "box error|%s", box.ShortDebugString().c_str());
		return;
	}

	PxShape *shape = PhysxCommonSigleton::get_mutable_instance().GetPhysics().createShape(PxBoxGeometry(box.x_extents() * 0.5f, box.y_extents() * 0.5f, box.z_extents() * 0.5), *px_material_);

	PxTransform localTrans(PxVec3(PxReal(box.pos().x()), PxReal(box.pos().y()), PxReal(box.pos().z())));
	PxRigidStatic *actor = PhysxCommonSigleton::get_mutable_instance().GetPhysics().createRigidStatic(localTrans);

	actor->attachShape(*shape);
	px_scene_->addActor(*actor);

	shape->release();
}