Dokumentace k souboru b_coll.c

Popis souboru | Konstanty | Proměnné | Funkce

Popis souboru (1)

collision_detection (no ODE) +bounding box calculations

Konstanty (1)

JménoHodnotaDokumentace
MAX_CONTACTS43 by mozna stacily (dam 3 kdyz to bude pomaly)

Proměnné (3)

JménoTypPočáteční hodnotaDokumentace
flymodeint0ignoruje fakt, ze neni na zemi [EXT]
noclipint0ignoruje kolize [EXT]
num_jointsint?debugobvaci promenna, pocet jointu

Funkce (22)

ModifikátorJménoParametryDokumentace
voidaa_box(aa_bbox *result,bbox b)prevede orientovanou bounding-box na axis-aligned bounding-box
voidabox_enlarge(aa_bbox *a,const vector m)axis-aligned bounding box je zvetsena o vektor pohybu
intabox_intersect(const aa_bbox a,const aa_bbox b)test jestli se dve bounding boxy prekryvaji
voidb_applyaccel(object3d *p,bfloat fwd,bfloat right,bfloat up,bfloat last_tick_time)aplikuje akceleraci na objekt (hrace)
voidb_applyphysics(object3d *p,bfloat tick_time)na objekt aplikuje fyzikalni zakony (tick funkci, pohyb, rotace ...)
voidb_ode_nearcallback(worldspawn *w,dGeomID o1,dGeomID o2)callback funkce na ODE - kolize
voidb_ode_retreive_world(worldspawn *w)vezme z ODE pozice objektu a updatuje pozice ve worldspawnu
voidb_ode_retrieve_objectlist(objectlist o)vezme z ODE pozice objektu v updatuje podle nich dany objetlist
voidb_run_physics(worldspawn *world,bfloat tick_time)na kazdy objekt aplikuji fyzikalni zakony a osetrim kolize, atd ....
vectorboxv(aa_bbox *orig,int box,int num)vraci num-tou souradnici (1..4) box-teho polygonu (1..6) v bounding boxu
intcollision3d(aa_bbox *eabox,aa_bbox *abox,vertex move,vertex normal,vector *coll,vector *bounce,int nc,facecoord *facev,vector *vert)vraci true pokud doslo ke kolizi.
v tom pripade je v coll bod kolize a v bounce je bounce-off vektor (normalizovany)
eabox je move-extended bounding box objektu
abox je bounding box objektu
normal je nrormala facu, se kterym se dela test
nc je pocet souradnic polygonu se kterym se kliduje,
v facev jsou vertexy jeho facu (odkazy)
a vert je ukazatel na pole s vertexy
intcollision_q(vector *p,aa_bbox *abox,vector2 *move,aa_bbox *obox,vector *coll,vector *bounce)kolize dvou objektu (dvou aboxu)
bfloatmax_box(bfloat a,bfloat b,bfloat c)maximum z 0,a,b,c,a+b,a+c,b+c,a+b+c - nejvetsi vrchol krychle
bfloatmin_box(bfloat a,bfloat b,bfloat c)minimum z 0,a,b,c,a+b,a+c,b+c,a+b+c - nejmensi vrchol krychle
voidmove_with_collision(object3d *p,bfloat tick_time)presune objekt, s collision detection
aa_bboxobject_abox(object3d *o,int is_moved)vrati axis-aligned bounding box daneho objektu
pokud je is_moved!=0, tak vrati bounding box posunuty o pozici objektu
voidworld_collision_free(worldspawn *w)pred znicenim sveta uvolni kolizni data
voidworld_collision_init(worldspawn *w)po nahrani sveta spocte/nahraje kolizni data
voidworld_destroyobject(object3d *o)zlikviduje objekt v koliznim systemu, ale necha ho dosud v internich strukturach
voidworld_destroyobjectlist(objectlist o)zlikviduje objekt v koliznim systemu, ale necha ho dosud v internich strukturach
voidworld_updateobject(worldspawn *w,object3d *o)updatuje objekt do kolizniho systemu - vola se po externi zmene objektu (pozice, rotace, atd ....)
nebo pri vytvoreni
voidworld_updateobjectlist(worldspawn *w,objectlist o)updatuje seznam objektu do kolizniho systemu

Dokumentace z 12.09.2003 18:06:39