Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

l_bsp_ent.h File Reference

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Data Structures

struct  entity_t
struct  epair_s

Defines

#define MAX_MAP_ENTITIES   2048

Typedefs

typedef epair_s epair_t

Functions

vec_t FloatForKey (entity_t *ent, char *key)
void GetVectorForKey (entity_t *ent, char *key, vec3_t vec)
qboolean ParseEntity (script_t *script)
epair_tParseEpair (script_t *script)
void PrintEntity (entity_t *ent)
void SetKeyValue (entity_t *ent, char *key, char *value)
void StripTrailing (char *e)
char * ValueForKey (entity_t *ent, char *key)

Variables

entity_t entities [MAX_MAP_ENTITIES]
int num_entities


Define Documentation

#define MAX_MAP_ENTITIES   2048
 

Definition at line 24 of file l_bsp_ent.h.

Referenced by ResetMapLoading().


Typedef Documentation

typedef struct epair_s epair_t
 

Referenced by Brush_Free(), Brush_MemorySize(), Brush_Write(), BrushPrimit_Parse(), CleanCopyEntities(), DeleteKey(), Entity_Clone(), Entity_CopyClone(), Entity_FreeEpairs(), Entity_MemorySize(), Entity_Parse(), Entity_Write(), Entity_WriteSelected(), FillBSPMenu(), FreeValueKeys(), Group_Init(), HL_UnparseEntities(), CMainFrame::OnDestroy(), CEntityListDlg::OnSelchangedTreeEntity(), ParseEntity(), ParseEpair(), ParseMapEntity(), ParsePatch(), Patch_Parse(), Patch_Write(), PrintEntity(), Q1_UnparseEntities(), Q2_ParseMapEntity(), Q2_UnparseEntities(), Q3_UnparseEntities(), QE_SaveProject(), QERApp_AllocateEpair(), QERApp_GetEntityKeyValList(), QERApp_SetEntityKeyValList(), ResetMapLoading(), SetKeyValue(), SetKeyValuePairs(), Sin_UnparseEntities(), UnparseEntities(), UpdateBSPCommandList(), ValueForKey(), and WriteMapFileSafe().


Function Documentation

vec_t FloatForKey entity_t ent,
char *  key
 

Definition at line 158 of file l_bsp_ent.c.

00159 {
00160     char    *k;
00161     
00162     k = ValueForKey (ent, key);
00163     return atof(k);
00164 }

void GetVectorForKey entity_t ent,
char *  key,
vec3_t  vec
 

Definition at line 166 of file l_bsp_ent.c.

00167 {
00168     char    *k;
00169     double  v1, v2, v3;
00170 
00171     k = ValueForKey (ent, key);
00172 // scanf into doubles, then assign, so it is vec_t size independent
00173     v1 = v2 = v3 = 0;
00174     sscanf (k, "%lf %lf %lf", &v1, &v2, &v3);
00175     vec[0] = v1;
00176     vec[1] = v2;
00177     vec[2] = v3;
00178 }

qboolean ParseEntity script_t script  ) 
 

Definition at line 85 of file l_bsp_ent.c.

References e, entities, epair_t, entity_t::epairs, Error(), mapent, epair_s::next, num_entities, ParseEpair(), PS_ReadToken(), PS_UnreadLastToken(), qboolean, script, strcmp(), token_s::string, token, and token_t.

00086 {
00087     epair_t *e;
00088     entity_t    *mapent;
00089     token_t token;
00090 
00091     if (!PS_ReadToken(script, &token))
00092         return false;
00093 
00094     if (strcmp(token.string, "{"))
00095         Error ("ParseEntity: { not found");
00096     
00097     if (num_entities == MAX_MAP_ENTITIES)
00098         Error ("num_entities == MAX_MAP_ENTITIES");
00099 
00100     mapent = &entities[num_entities];
00101     num_entities++;
00102 
00103     do
00104     {
00105         if (!PS_ReadToken(script, &token))
00106             Error ("ParseEntity: EOF without closing brace");
00107         if (!strcmp(token.string, "}") )
00108             break;
00109         PS_UnreadLastToken(script);
00110         e = ParseEpair(script);
00111         e->next = mapent->epairs;
00112         mapent->epairs = e;
00113     } while (1);
00114     
00115     return true;
00116 } //end of the function ParseEntity

Here is the call graph for this function:

epair_t* ParseEpair script_t script  ) 
 

Definition at line 53 of file l_bsp_ent.c.

References copystring(), e, epair_t, Error(), GetMemory(), epair_s::key, MAX_KEY, MAX_VALUE, memset(), PS_ExpectAnyToken(), script, token_s::string, StripDoubleQuotes(), StripTrailing(), strlen(), token, token_t, and epair_s::value.

00054 {
00055     epair_t *e;
00056     token_t token;
00057 
00058     e = GetMemory(sizeof(epair_t));
00059     memset (e, 0, sizeof(epair_t));
00060     
00061     PS_ExpectAnyToken(script, &token);
00062     StripDoubleQuotes(token.string);
00063     if (strlen(token.string) >= MAX_KEY-1)
00064         Error ("ParseEpair: token %s too long", token.string);
00065     e->key = copystring(token.string);
00066     PS_ExpectAnyToken(script, &token);
00067     StripDoubleQuotes(token.string);
00068     if (strlen(token.string) >= MAX_VALUE-1)
00069         Error ("ParseEpair: token %s too long", token.string);
00070     e->value = copystring(token.string);
00071 
00072     // strip trailing spaces
00073     StripTrailing(e->key);
00074     StripTrailing(e->value);
00075 
00076     return e;
00077 } //end of the function ParseEpair

Here is the call graph for this function:

void PrintEntity entity_t ent  ) 
 

Definition at line 118 of file l_bsp_ent.c.

00119 {
00120     epair_t *ep;
00121     
00122     printf ("------- entity %p -------\n", ent);
00123     for (ep=ent->epairs ; ep ; ep=ep->next)
00124     {
00125         printf ("%s = %s\n", ep->key, ep->value);
00126     }
00127 
00128 }

void SetKeyValue entity_t ent,
char *  key,
char *  value
 

Definition at line 130 of file l_bsp_ent.c.

00131 {
00132     epair_t *ep;
00133     
00134     for (ep=ent->epairs ; ep ; ep=ep->next)
00135         if (!strcmp (ep->key, key) )
00136         {
00137             FreeMemory(ep->value);
00138             ep->value = copystring(value);
00139             return;
00140         }
00141     ep = GetMemory(sizeof(*ep));
00142     ep->next = ent->epairs;
00143     ent->epairs = ep;
00144     ep->key = copystring(key);
00145     ep->value = copystring(value);
00146 }

void StripTrailing char *  e  ) 
 

Definition at line 36 of file l_bsp_ent.c.

References e, s, and strlen().

Referenced by ParseEpair(), Q2_UnparseEntities(), Sin_UnparseEntities(), UnparseEntities(), and WriteMapFileSafe().

00037 {
00038     char    *s;
00039 
00040     s = e + strlen(e)-1;
00041     while (s >= e && *s <= 32)
00042     {
00043         *s = 0;
00044         s--;
00045     }
00046 }

Here is the call graph for this function:

char* ValueForKey entity_t ent,
char *  key
 

Definition at line 148 of file l_bsp_ent.c.

00149 {
00150     epair_t *ep;
00151     
00152     for (ep=ent->epairs ; ep ; ep=ep->next)
00153         if (!strcmp (ep->key, key) )
00154             return ep->value;
00155     return "";
00156 }


Variable Documentation

entity_t entities[MAX_MAP_ENTITIES]
 

Definition at line 34 of file l_bsp_ent.c.

int num_entities
 

Definition at line 33 of file l_bsp_ent.c.


Generated on Thu Aug 25 12:52:56 2005 for Quake III Arena by  doxygen 1.3.9.1