parameters
- Code: Select all
struct QuadFaceIndexStruct
{
int indices[4];
int material_index;
int normal_index;
int normals[4];
int diag_optimiz;
};
static float sajz = 16.0f;
static int test_count[1] = {4};
static QuadiFaceIndexStruct[1] test_index = {0,1,2,3,0,4,4,4,4,4,22};
static Ogre::Vector3[5] test_vertex = {Ogre::Vector3(0,1,0),Ogre::Vector3(sajz,1,0),Ogre::Vector3(sajz,1,sajz),Ogre::Vector3(0,1,sajz),Ogre::Vector3(0,1,0)};
This is create for usermesh collision.
- Code: Select all
dfVec3 vec_max(sajz,sajz,sajz);
dfVec3 vec_min(0,0,0);
NewtonCollision* col = NewtonCreateUserMeshCollision(world, &vec_min.x, &vec_max.x, this
, _usermeshCollideCallback
, _usermeshRayHitCallback
, _usermeshDestroyCallback
, _usermeshGetCollisionInfo
, _usermeshAABBTest
, _usermeshGetFacesInAABB
, _usermeshSerialize, 0);
m_body = new OgreNewt::Body(W, col, 0, position);
m_body->setUserData(new PhysicsUserDataProxy(m_body, this, this));
NewtonDestroyCollision(col);
usermesh collide callback
- Code: Select all
void TerrainPhysicalChunk::_collisionCollideCallback(NewtonUserMeshCollisionCollideDesc* const collideDescData)
{
collideDescData->m_faceCount = 1;
collideDescData->m_vertexStrideInBytes = sizeof(Ogre::Vector3);
collideDescData->m_faceIndexCount = (int*)test_count;
collideDescData->m_faceVertexIndex = (int*)test_index;
collideDescData->m_vertex = (float*)(test_vertex[0].ptr());
}