collision_detection (no ODE) +bounding box calculations |
Jméno | Hodnota | Dokumentace |
MAX_CONTACTS | 4 | 3 by mozna stacily (dam 3 kdyz to bude pomaly) |
Jméno | Typ | Počáteční hodnota | Dokumentace |
flymode | int | 0 | ignoruje fakt, ze neni na zemi [EXT] |
noclip | int | 0 | ignoruje kolize [EXT] |
num_joints | int | ? | debugobvaci promenna, pocet jointu |
Modifikátor | Jméno | Parametry | Dokumentace |
void | aa_box | (aa_bbox *result,bbox b) | prevede orientovanou bounding-box na axis-aligned bounding-box |
void | abox_enlarge | (aa_bbox *a,const vector m) | axis-aligned bounding box je zvetsena o vektor pohybu |
int | abox_intersect | (const aa_bbox a,const aa_bbox b) | test jestli se dve bounding boxy prekryvaji |
void | b_applyaccel | (object3d *p,bfloat fwd,bfloat right,bfloat up,bfloat last_tick_time) | aplikuje akceleraci na objekt (hrace) |
void | b_applyphysics | (object3d *p,bfloat tick_time) | na objekt aplikuje fyzikalni zakony (tick funkci, pohyb, rotace ...) |
void | b_ode_nearcallback | (worldspawn *w,dGeomID o1,dGeomID o2) | callback funkce na ODE - kolize |
void | b_ode_retreive_world | (worldspawn *w) | vezme z ODE pozice objektu a updatuje pozice ve worldspawnu |
void | b_ode_retrieve_objectlist | (objectlist o) | vezme z ODE pozice objektu v updatuje podle nich dany objetlist |
void | b_run_physics | (worldspawn *world,bfloat tick_time) | na kazdy objekt aplikuji fyzikalni zakony a osetrim kolize, atd .... |
vector | boxv | (aa_bbox *orig,int box,int num) | vraci num-tou souradnici (1..4) box-teho polygonu (1..6) v bounding boxu |
int | collision3d | (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 |
int | collision_q | (vector *p,aa_bbox *abox,vector2 *move,aa_bbox *obox,vector *coll,vector *bounce) | kolize dvou objektu (dvou aboxu) |
bfloat | max_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 |
bfloat | min_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 |
void | move_with_collision | (object3d *p,bfloat tick_time) | presune objekt, s collision detection |
aa_bbox | object_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 |
void | world_collision_free | (worldspawn *w) | pred znicenim sveta uvolni kolizni data |
void | world_collision_init | (worldspawn *w) | po nahrani sveta spocte/nahraje kolizni data |
void | world_destroyobject | (object3d *o) | zlikviduje objekt v koliznim systemu, ale necha ho dosud v internich strukturach |
void | world_destroyobjectlist | (objectlist o) | zlikviduje objekt v koliznim systemu, ale necha ho dosud v internich strukturach |
void | world_updateobject | (worldspawn *w,object3d *o) | updatuje objekt do kolizniho systemu - vola se po externi zmene objektu (pozice, rotace, atd ....) nebo pri vytvoreni |
void | world_updateobjectlist | (worldspawn *w,objectlist o) | updatuje seznam objektu do kolizniho systemu |