Character Controller ignore collision

A place to discuss everything related to Newton Dynamics.

Moderators: Sascha Willems, walaber

Re: Character Controller ignore collision

Postby duncan » Sun Apr 24, 2011 10:56 pm

Because i am lack of time... I really do hard code.. This might give some ideas for some newbies like me. :mrgreen:

i added PrefilterMaterialID[8] which is static so all controller bodies would not collide with them.

Code: Select all
unsigned CustomPlayerController::ConvexAllBodyCastPrefilter(const NewtonBody* body, const NewtonCollision* collision, void* userData)
{
   CastFilterData* filterData;

   filterData = (CastFilterData*) userData;
   for (int i =1; i < 8;i ++)
      filterData->materialID[i] = PrefilterMaterialID[i];
   for (int i =0; i < 8;i ++){
      if (NewtonBodyGetMaterialGroupID(body) == filterData->materialID[i])
         return 0;
   }
   for (int i =0; i < filterData->m_count;i ++){
      if (filterData->m_filter[i] == body )  {
         return 0;
      }
   }
   return 1;
}

void CustomPlayerController::addPrefilterMaterialID(const NewtonBody* body,int index )
{
   PrefilterMaterialID[index] = NewtonBodyGetMaterialGroupID(body);
}


In ogrenewt, i also added a similiar function for calling newton function.

Code: Select all
   void PlayerController::addPrefilterMaterialID(OgreNewt::Body * body,int index){
      CustomPlayerController* joint = (CustomPlayerController*) m_joint;
      joint->addPrefilterMaterialID(body->getNewtonBody(),index);
   }
duncan
 
Posts: 8
Joined: Sat Mar 26, 2011 4:19 am

Previous

Return to General Discussion

Who is online

Users browsing this forum: No registered users and 1 guest

cron