public IntPtr AddCharacterController(PxCapsuleController controller) { IntPtr controllerPtr = Physics.AddCharacterController(this.scenePtr, controller); this.Colliders.Add(controllerPtr, controller); return(controllerPtr); }
public void OnHitShape(IntPtr controllerPtr, IntPtr colliderPtr) { NLog.Log.Assert(this.Colliders.TryGetValue(controllerPtr, out PxCollider collider)); NLog.Log.Assert(this.Colliders.TryGetValue(colliderPtr, out PxCollider targetCollider)); PxCapsuleController controller = collider as PxCapsuleController; controller.HitReport.OnHitShape(targetCollider); }
public bool OnFilterWorld(IntPtr p1, IntPtr p2) { this.Colliders.TryGetValue(p1, out PxCollider collider1); this.Colliders.TryGetValue(p2, out PxCollider collider2); PxCapsuleController controller1 = collider1 as PxCapsuleController; if (controller1.IsFilterEnabled && controller1.Filter != null) { return(controller1.Filter.OnFilterWorld(collider2)); } return(true); }
public bool OnFilterController(IntPtr p1, IntPtr p2) { this.Colliders.TryGetValue(p1, out PxCollider collider1); this.Colliders.TryGetValue(p2, out PxCollider collider2); PxCapsuleController controller1 = collider1 as PxCapsuleController; PxCapsuleController controller2 = collider2 as PxCapsuleController; if (!controller2.CanQuery) { return(false); } if (controller1.IsFilterEnabled && controller1.Filter != null) { return(controller1.Filter.OnFilterController(controller2)); } return(true); }
public static IntPtr AddCharacterController(IntPtr scene, PxCapsuleController controller) { PhysXDll.OnFilterCallback filterWorld = null; PhysXDll.OnFilterCallback filterController = null; PhysXDll.OnHitCallback hitShape = null; PhysXDll.OnHitCallback hitController = null; if (controller.Filter != null) { filterWorld = onFilterWorld; filterController = onFilterController; } if (controller.HitReport != null) { hitShape = onHitShape; hitController = onHitController; } return(PhysXDll.AddCharacterController(scene, controller.ControllerData, filterWorld, filterController, hitShape, hitController)); }