1 /****************************************************************************************/
\r
4 /* Author: Eli Boling / John Pollard */
\r
5 /* Description: EntitySet creation / Entity Compiler */
\r
7 /* The contents of this file are subject to the Genesis3D Public License */
\r
8 /* Version 1.01 (the "License"); you may not use this file except in */
\r
9 /* compliance with the License. You may obtain a copy of the License at */
\r
10 /* http://www.genesis3d.com */
\r
12 /* Software distributed under the License is distributed on an "AS IS" */
\r
13 /* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */
\r
14 /* the License for the specific language governing rights and limitations */
\r
15 /* under the License. */
\r
17 /* The Original Code is Genesis3D, released March 25, 1999. */
\r
18 /* Genesis3D Version 1.1 released November 15, 1999 */
\r
19 /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */
\r
21 /****************************************************************************************/
\r
22 #ifndef GE_ENTITIES_H
\r
23 #define GE_ENTITIES_H
\r
26 #include <Windows.h>
\r
28 #include "BaseType.h"
\r
29 #include "Errorlog.h"
\r
39 //=====================================================================================
\r
40 // Defines / Structure defines
\r
41 //=====================================================================================
\r
53 } geEntity_ClassType;
\r
55 typedef struct geEntity_Class geEntity_Class;
\r
57 // Fields within a geEntity_Class
\r
58 typedef struct geEntity_Field
\r
60 char *Name; // Name of the field
\r
61 geEntity_Class *TypeClass; // Atomic class the defines field
\r
62 int32 Offset; // Offset in Entity's UserData
\r
64 struct geEntity_Field *Next; // Next Field list
\r
68 typedef struct geEntity_Class
\r
70 char *Name; // Class Name
\r
71 geEntity_ClassType Type; // Type of class
\r
73 geEntity_Field *Fields; // Fields in this Class
\r
74 int32 FieldSize; // Size of all fields
\r
76 struct geEntity_Class *Next;
\r
80 typedef struct geEntity_Epair
\r
82 struct geEntity_Epair *Next;
\r
87 typedef struct geEntity
\r
89 geEntity_Class *Class; // Class data
\r
91 geEntity_Epair *Epairs; // Parsed epair list from entity string list
\r
93 void *UserData; // User structure parsed from entity
\r
96 typedef struct geEntity_EntitySet
\r
98 struct geEntity_EntitySet *Next; // Next entity in this set
\r
99 struct geEntity_EntitySet *Current; // Current entity set as an iterator
\r
101 geBoolean OwnsEntities; // GE_TRUE if
\r
103 geEntity *Entity; // The entity
\r
104 geEntity_Class *Classes; // List of classes for set
\r
106 } geEntity_EntitySet;
\r
109 //=====================================================================================
\r
110 // Function prototypes
\r
111 //=====================================================================================
\r
112 geBoolean Ent_WorldInit(geWorld *World);
\r
113 void Ent_WorldShutdown(geWorld *World);
\r
115 geEntity *geEntity_Create(void);
\r
116 void geEntity_Destroy(geEntity *Entity);
\r
117 geBoolean geEntity_GetModelNumForKey(geEntity *Entity, const char *Key, int32 *ModelNum);
\r
118 geBoolean geEntity_AddEpair(geEntity *Entity, geEntity_Epair *Epair);
\r
119 const char *geEntity_GetStringForKey(const geEntity *Entity, const char *Key);
\r
120 geEntity_Epair *geEntity_EpairCreate(void);
\r
121 void geEntity_EpairDestroy(geEntity_Epair *Epair);
\r
122 geEntity_Field *geEntity_FieldCreate(const char *Name, int32 Offset, geEntity_Class *TypeClass);
\r
123 void geEntity_FieldDestroy(geEntity_Field *Field);
\r
124 geEntity_Class *geEntity_ClassCreate(geEntity_ClassType Type, const char *Name, int32 TypeSize);
\r
125 void geEntity_ClassDestroy(geEntity_Class *Class);
\r
126 geBoolean geEntity_ClassAddField(geEntity_Class *Class, geEntity_Field *Field);
\r
127 geEntity_Field *geEntity_ClassFindFieldByName(geEntity_Class *Class, const char *Name);
\r
128 geEntity_EntitySet *geEntity_EntitySetCreate(void);
\r
129 void geEntity_EntitySetDestroy(geEntity_EntitySet *EntitySet);
\r
130 geEntity_Class *geEntity_EntitySetFindClassByName(geEntity_EntitySet *Set, const char *Name);
\r
131 geEntity *geEntity_EntitySetFindEntityByName(geEntity_EntitySet *EntitySet, const char *Name);
\r
132 GENESISAPI void geEntity_GetName(const geEntity *Entity, char *Buff, int MaxLen);
\r
133 geBoolean geEntity_EntitySetAddEntity(geEntity_EntitySet *EntitySet, geEntity *Entity);
\r
134 GENESISAPI geEntity *geEntity_EntitySetGetNextEntity(geEntity_EntitySet *EntitySet, geEntity *Entity);
\r
135 geBoolean geEntity_EntitySetAddClass(geEntity_EntitySet *EntitySet, geEntity_Class *Class);
\r
136 geEntity_EntitySet *LoadEntitySet(const char *EntityData, int32 EntityDataSize);
\r