IPhysicalWorld::SPWIParams

IPhysicalWorld::SPWIParams

#include

Public Attributes

void * pForeignData
int iForeignData
int(* OnEvent )(const EventPhysPWIResult *)
int itype
const primitives::primitive * pprim
Vec3 sweepDir
int entTypes
geom_contact ** ppcontact
int geomFlagsAll
int geomFlagsAny
intersection_params * pip
int nSkipEnts
IPhysicalEntity ** pSkipEnts
SCollisionClass collclass
WriteLockCond lockContacts

Detailed Description

PrimitiveWorldIntersection - similar to RayWorldIntersection, but does a primitive sweep (or overlap) check unlike RWI, it doesn't trace enitity cells along the path, but checks all of them in the swept volume's bounding box, so long PWIs are not recommended ppcontact - pointer to the pointer to the resulting contacts array, since it uses shared data it gets locked with lockContacts geomFlagsAll - flags that must all be present in an entity part geomFlagsAny - flags at least one of which must be present in an entity part pip - custom intersection parameters, overrides the sweepDir setting if any. if not specified, the function performs a simple true/false overlap check if sweepDir is 0, and a sweep check otherwise if specified and pip->bThreadSafe==false, lockContacts will keep the lock while in scope OnEvent - optional personal callback to be called instead of the global one returns distance to the first hit for sweep checks and the number of hits for intersection checks (as float) special note: if specified, **ppcontact has the collider entity id in iPrim[0], partid in iPrim[1], matid in id[1] special note #2: if nSkipEnts<0, pSkipEnts is used as a fixed list of entities to only test collisions against (the world is ignored) special note #3: if applicable, contacts stored in ppcontact will have their iNode[0] filled with the index to the feature's primitive. collclass is the collision filter for ignoring entities