--- /dev/null
+/*
+===========================================================================
+Copyright (C) 1997-2006 Id Software, Inc.
+
+This file is part of Quake 2 Tools source code.
+
+Quake 2 Tools source code is free software; you can redistribute it
+and/or modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2 of the License,
+or (at your option) any later version.
+
+Quake 2 Tools source code is distributed in the hope that it will be
+useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Quake 2 Tools source code; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+===========================================================================
+*/
+
+// entity.h
+
+
+#define MAX_FLAGS 8
+
+typedef struct eclass_s
+{
+ struct eclass_s *next;
+ char *name;
+ qboolean fixedsize;
+ qboolean unknown; // wasn't found in source
+ vec3_t mins, maxs;
+ vec3_t color;
+ texdef_t texdef;
+ char *comments;
+ char flagnames[MAX_FLAGS][32];
+} eclass_t;
+
+extern eclass_t *eclass;
+
+void Eclass_InitForSourceDirectory (char *path);
+eclass_t *Eclass_ForName (char *name, qboolean has_brushes);
+
+//===================================================
+
+
+typedef struct epair_s
+{
+ struct epair_s *next;
+ char *key;
+ char *value;
+} epair_t;
+
+typedef struct entity_s
+{
+ struct entity_s *prev, *next;
+ brush_t brushes; // head/tail of list
+ vec3_t origin;
+ eclass_t *eclass;
+ epair_t *epairs;
+} entity_t;
+
+char *ValueForKey (entity_t *ent, char *key);
+void SetKeyValue (entity_t *ent, char *key, char *value);
+void DeleteKey (entity_t *ent, char *key);
+float FloatForKey (entity_t *ent, char *key);
+int IntForKey (entity_t *ent, char *key);
+void GetVectorForKey (entity_t *ent, char *key, vec3_t vec);
+
+void Entity_Free (entity_t *e);
+entity_t *Entity_Parse (qboolean onlypairs);
+void Entity_Write (entity_t *e, FILE *f, qboolean use_region);
+entity_t *Entity_Create (eclass_t *c);
+entity_t *Entity_Clone (entity_t *e);
+
+void Entity_LinkBrush (entity_t *e, brush_t *b);
+void Entity_UnlinkBrush (brush_t *b);
+entity_t *FindEntity(char *pszKey, char *pszValue);
+entity_t *FindEntityInt(char *pszKey, int iValue);
+
+int GetUniqueTargetId(int iHint);
+