Dokumentace k souboru b_model3d.c

Popis souboru | Proměnné | Funkce

Popis souboru (1)

funkce pro praci s 3d modely nahravani modelu vytvareni modelu dealokace pameti manipulace s bounding boxy ruzne jine funkce

Proměnné (3)

JménoTypPočáteční hodnotaDokumentace
failsafemodel*model3d?model pouzity pokud neni zadany model k dispozici (muze byt i NULL)
fatal_loading_errorint?pokud je 0, vse je v poradku, jinak to znamena ze pri nahravani neceho (typicky mapy) doslo k chybe...[EXT]
model_tree*tree?strom s nahranymi modely [EXT]

Funkce (52)

ModifikátorJménoParametryDokumentace
void_model_flush(char *name,model *t,l_list **l)vnitri callback funkce model_flush (pridani do seznamu)
voidabox_addvertex(aa_bbox *a,vertex v)prida vertex do bounding boxu
voidabox_inf(aa_bbox *b)nastavi na axis-aligned bounding boxu do souradni + a - nekonecno
aa_bboxabox_move(aa_bbox *a,const vector p)vrati axis-aligned bounding box posunutou o vektor polohy
voidabox_move_v(aa_bbox *a,const vector p)axis-aligned bounding box je posunuta o vektor polohy
voidabox_null(aa_bbox *b)vynujuje axis-aligned bounding box
voidabox_scale(aa_bbox *a,const bfloat scale)axis-aligned bounding box je vynasobena o konstantu scale
voidabox_scale_v(aa_bbox *a,const vector scale)axis-aligned bounding box je vynasobena o vektor scale
aa_bboxabox_x(bfloat x)vrati aa-bbox dane velikosti (<-x -x -x> - <+x +x +x>)
model3d *b_loadmodel(const char *name)zavola b_loadmodel_internal a nezvysi usage counter
model *b_loadmodel_internal(const char *name)nahraje model s danym jmenem a zaradi ho do seznamu nahranych modelu
Pokud je v pameti tak misto nahravani rovnou vrati pointer.
Muze vratit i null (prazdny model)
model3d *b_loadmodel_r(const char *name)zavola b_loadmodel_internal a zvysi usage counter
model3d *b_loadmodel_r_trans(const char *name,bfloat tx,bfloat ty,bfloat tz,bfloat sx,bfloat sy,bfloat sz)quick hack - nahraje model a pak ho scaluje a posunuje - nyni neni pouzivano
voidb_unloadmodel(const char *name)podiva se po modelu s danym jmenem v pameti a pokud tam je, tak ho odstrani
intb_unloadmodel_r(const char *name)podiva se po modelu s danym jmenem v pameti a pokud tam je, tak ji snizi reference count. Pokud je 0, tak je odstranen z pameti
vraci: 1 - model odstranen
0 - model neni v pameti
matlist *dupmatlist(matlist *t)zduplikuje texture list
voidfreel_list(l_list *t)odalokuje v pameti linked list
voidfreematlist(matlist *t)odalokuje v pameti material list
voidfreemodel(model3d *m)odalokuje v pameti model - pokud na nej nejsou reference
voidfreemodel_real(model3d *m)odalokuje v pameti model
voidfreeobject(object3d *o)odalokuje objekt vcetne podrazenych stuktur a child objektu. Neodalokuje ale parent
voidfreeobjectclass(objectclass *c)odalokuje v pameti object class
(zde pouze snizi pocet referenci, k skutecne odalokaci dojde pozdeji,
az pri zavolani garbage collectoru - typicky po nahrani dalsiho levelu
se odstani ty veci co v tom levelu nejsou. Tohle bude chtit jeste doresit)
voidfreeobjectlist(objectlist o)odalokuje seznam objektu (jeden po druhem
voidfreeproperties(properties *p)odalokuje v pameti properties
voidfreeworld(worldspawn *w)odalokuje cely svet
model *fs_loadmodel(const char *name)Nahraje model z disku do pameti, typ modelu se vezme dle pripony
voidfs_unloadmodel(model *ou)Uvolni nahrany model z pameti
voidl_list_add(l_list **m,void *tex)prida tex do linked listu
material *mat_create(byte r,byte g,byte b,byte alpha,texture *texture1)vytvori material s danymi parametry a nastavi reference count na 1
voidmat_free(material *m)odalokuje material, pokud uz na nej nikde nic neukazuje
voidmat_list_addmaterial(matlist **m,material *tex)prida material do seznamu
voidmaterial_list_use(matlist *t,int r)projde texturelist a u kazde textury v nem zvysi refcount (pocet pouziti) o r
model *model_addtomanager(model3d *m,const char *name_as)Nahraje model z v pameti do model manageru
intmodel_addvertex(tmpmodel *m,bfloat x1,bfloat y1,bfloat z1,int check_if_already_exist)prida vertex do modelu (pokud tam uz neni), vrati jeho cislo. Cisla tvori posloupnost, pocinaje nulou
tmpmodel *model_begin(void)vytvori docasny (pametove neefektivni, ale rychly) model
voidmodel_calculate_abox(model3d *mo)spocita bounding box modelu
voidmodel_clear(tmpmodel *m)vycisti model, ale neuvolni pamet. dobre pokud chcem hned delat dalsi model
model3d *model_end(tmpmodel *m)vyrobi finalni 3d model z docasneho modelu
voidmodel_face_begin_id(tmpmodel *m, byte r,byte g,byte b,byte alpha,texture *texture1)zacatek facu
voidmodel_face_begin_mat(tmpmodel *m, material *mat)zacatek facu
voidmodel_face_end(tmpmodel *m)konec facu: normala se spocita automaticky
voidmodel_face_end_v(tmpmodel *m,vector normal)konec facu: normala dana vektorem
voidmodel_flush()odstrani z pameti modely co nejsou pouzivany (refcount=0)
voidmodel_free(tmpmodel *m)uvolni model z pameti
voidmodel_move(model3d *mo,bfloat ix,bfloat iy,bfloat iz)presune vsechny vertexy v modelu o (ix,iy,iz) - move
voidmodel_scale(model3d *mo,bfloat ix,bfloat iy,bfloat iz)vynasobi vsechny vertexy v modelu (ix,iy,iz) - scale
model3d *model_txt_load(const char *name)nahrani modelu ve formatu milkshapa ascii
voidmodel_vertex(tmpmodel *m,bfloat tex_x,bfloat tex_y,bfloat x,bfloat y,bfloat z)prida vertex podle souradnic
voidmodel_vertex_num(tmpmodel *m,bfloat tex_x,bfloat tex_y,int vnum)prida vertex podle cisla - nutno nejdriv pridat vertexu cislo pres model_addvertex
voidmodel_vertexv(tmpmodel *m,bfloat tex_x,bfloat tex_y,vertex v)prida vertex (podle souradnic)
voidmodel_vertexvs(tmpmodel *m,bfloat tex_x,bfloat tex_y,vertex v,bfloat scale)prida vertex (podle souradnic, se scalovanim)
worldspawn *world_empty(int obj)vytvori prazdny svet a naalokuje misto pro obj dynamickych objektu

Dokumentace z 12.09.2003 18:06:39