private static unsafe PhyFilterFlag _PxSimulationFilterShader(//IntPtr self, UInt32 attributes0, PhyFilterData *filterData0, UInt32 attributes1, PhyFilterData *filterData1, PhyPairFlag *pairFlags, IntPtr constantBlock, UInt32 constantBlockSize) { if (PxFilterObjectIsTrigger(attributes0) || PxFilterObjectIsTrigger(attributes1)) { *pairFlags = PhyPairFlag.eTRIGGER_DEFAULT; return(PhyFilterFlag.eDEFAULT); } PhyPairFlag retFlags; retFlags = PhyPairFlag.eCONTACT_DEFAULT | PhyPairFlag.eNOTIFY_TOUCH_FOUND; *pairFlags = retFlags; if ((filterData0->word0 & filterData1->word1) == filterData0->word0 && (filterData1->word0 & filterData0->word1) == filterData1->word0) { return(PhyFilterFlag.eDEFAULT); } else { return(PhyFilterFlag.eKILL); } //return PhyFilterFlag.eDEFAULT; }
private extern static unsafe void SDK_PhyShape_SetQueryFilterData(NativePointer self, PhyFilterData *filterData);
private extern static unsafe void SDK_PhyControllerDesc_SetQueryFilterData(NativePointer self, PhyFilterData *filterData);
private extern static unsafe PhyControllerCollisionFlag SDK_PhyController_Move(NativePointer self, Vector3 *disp, float minDist, float elapsedTime, PhyFilterData *filterData, PhyQueryFlag filterFlags);