aboutsummaryrefslogtreecommitdiffstats
path: root/code/botlib/be_aas_entity.c
diff options
context:
space:
mode:
authorzakk <zakk@edf5b092-35ff-0310-97b2-ce42778d08ea>2005-08-26 17:39:27 +0000
committerzakk <zakk@edf5b092-35ff-0310-97b2-ce42778d08ea>2005-08-26 17:39:27 +0000
commit6bf20c78f5b69d40bcc4931df93d29198435ab67 (patch)
treee3eda937a05d7db42de725b7013bd0344b987f34 /code/botlib/be_aas_entity.c
parent872d4d7f55af706737ffb361bb76ad13e7496770 (diff)
downloadioquake3-aero-6bf20c78f5b69d40bcc4931df93d29198435ab67.tar.gz
ioquake3-aero-6bf20c78f5b69d40bcc4931df93d29198435ab67.zip
newlines fixed
git-svn-id: svn://svn.icculus.org/quake3/trunk@6 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'code/botlib/be_aas_entity.c')
-rwxr-xr-xcode/botlib/be_aas_entity.c874
1 files changed, 437 insertions, 437 deletions
diff --git a/code/botlib/be_aas_entity.c b/code/botlib/be_aas_entity.c
index e3ed85e..e11356b 100755
--- a/code/botlib/be_aas_entity.c
+++ b/code/botlib/be_aas_entity.c
@@ -1,437 +1,437 @@
-/*
-===========================================================================
-Copyright (C) 1999-2005 Id Software, Inc.
-
-This file is part of Quake III Arena source code.
-
-Quake III Arena 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 III Arena 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 Foobar; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-===========================================================================
-*/
-
-/*****************************************************************************
- * name: be_aas_entity.c
- *
- * desc: AAS entities
- *
- * $Archive: /MissionPack/code/botlib/be_aas_entity.c $
- *
- *****************************************************************************/
-
-#include "../game/q_shared.h"
-#include "l_memory.h"
-#include "l_script.h"
-#include "l_precomp.h"
-#include "l_struct.h"
-#include "l_utils.h"
-#include "l_log.h"
-#include "aasfile.h"
-#include "../game/botlib.h"
-#include "../game/be_aas.h"
-#include "be_aas_funcs.h"
-#include "be_interface.h"
-#include "be_aas_def.h"
-
-#define MASK_SOLID CONTENTS_PLAYERCLIP
-
-//FIXME: these might change
-enum {
- ET_GENERAL,
- ET_PLAYER,
- ET_ITEM,
- ET_MISSILE,
- ET_MOVER
-};
-
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-int AAS_UpdateEntity(int entnum, bot_entitystate_t *state)
-{
- int relink;
- aas_entity_t *ent;
- vec3_t absmins, absmaxs;
-
- if (!aasworld.loaded)
- {
- botimport.Print(PRT_MESSAGE, "AAS_UpdateEntity: not loaded\n");
- return BLERR_NOAASFILE;
- } //end if
-
- ent = &aasworld.entities[entnum];
-
- if (!state) {
- //unlink the entity
- AAS_UnlinkFromAreas(ent->areas);
- //unlink the entity from the BSP leaves
- AAS_UnlinkFromBSPLeaves(ent->leaves);
- //
- ent->areas = NULL;
- //
- ent->leaves = NULL;
- return BLERR_NOERROR;
- }
-
- ent->i.update_time = AAS_Time() - ent->i.ltime;
- ent->i.type = state->type;
- ent->i.flags = state->flags;
- ent->i.ltime = AAS_Time();
- VectorCopy(ent->i.origin, ent->i.lastvisorigin);
- VectorCopy(state->old_origin, ent->i.old_origin);
- ent->i.solid = state->solid;
- ent->i.groundent = state->groundent;
- ent->i.modelindex = state->modelindex;
- ent->i.modelindex2 = state->modelindex2;
- ent->i.frame = state->frame;
- ent->i.event = state->event;
- ent->i.eventParm = state->eventParm;
- ent->i.powerups = state->powerups;
- ent->i.weapon = state->weapon;
- ent->i.legsAnim = state->legsAnim;
- ent->i.torsoAnim = state->torsoAnim;
- //number of the entity
- ent->i.number = entnum;
- //updated so set valid flag
- ent->i.valid = qtrue;
- //link everything the first frame
- if (aasworld.numframes == 1) relink = qtrue;
- else relink = qfalse;
- //
- if (ent->i.solid == SOLID_BSP)
- {
- //if the angles of the model changed
- if (!VectorCompare(state->angles, ent->i.angles))
- {
- VectorCopy(state->angles, ent->i.angles);
- relink = qtrue;
- } //end if
- //get the mins and maxs of the model
- //FIXME: rotate mins and maxs
- AAS_BSPModelMinsMaxsOrigin(ent->i.modelindex, ent->i.angles, ent->i.mins, ent->i.maxs, NULL);
- } //end if
- else if (ent->i.solid == SOLID_BBOX)
- {
- //if the bounding box size changed
- if (!VectorCompare(state->mins, ent->i.mins) ||
- !VectorCompare(state->maxs, ent->i.maxs))
- {
- VectorCopy(state->mins, ent->i.mins);
- VectorCopy(state->maxs, ent->i.maxs);
- relink = qtrue;
- } //end if
- VectorCopy(state->angles, ent->i.angles);
- } //end if
- //if the origin changed
- if (!VectorCompare(state->origin, ent->i.origin))
- {
- VectorCopy(state->origin, ent->i.origin);
- relink = qtrue;
- } //end if
- //if the entity should be relinked
- if (relink)
- {
- //don't link the world model
- if (entnum != ENTITYNUM_WORLD)
- {
- //absolute mins and maxs
- VectorAdd(ent->i.mins, ent->i.origin, absmins);
- VectorAdd(ent->i.maxs, ent->i.origin, absmaxs);
- //unlink the entity
- AAS_UnlinkFromAreas(ent->areas);
- //relink the entity to the AAS areas (use the larges bbox)
- ent->areas = AAS_LinkEntityClientBBox(absmins, absmaxs, entnum, PRESENCE_NORMAL);
- //unlink the entity from the BSP leaves
- AAS_UnlinkFromBSPLeaves(ent->leaves);
- //link the entity to the world BSP tree
- ent->leaves = AAS_BSPLinkEntity(absmins, absmaxs, entnum, 0);
- } //end if
- } //end if
- return BLERR_NOERROR;
-} //end of the function AAS_UpdateEntity
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-void AAS_EntityInfo(int entnum, aas_entityinfo_t *info)
-{
- if (!aasworld.initialized)
- {
- botimport.Print(PRT_FATAL, "AAS_EntityInfo: aasworld not initialized\n");
- Com_Memset(info, 0, sizeof(aas_entityinfo_t));
- return;
- } //end if
-
- if (entnum < 0 || entnum >= aasworld.maxentities)
- {
- botimport.Print(PRT_FATAL, "AAS_EntityInfo: entnum %d out of range\n", entnum);
- Com_Memset(info, 0, sizeof(aas_entityinfo_t));
- return;
- } //end if
-
- Com_Memcpy(info, &aasworld.entities[entnum].i, sizeof(aas_entityinfo_t));
-} //end of the function AAS_EntityInfo
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-void AAS_EntityOrigin(int entnum, vec3_t origin)
-{
- if (entnum < 0 || entnum >= aasworld.maxentities)
- {
- botimport.Print(PRT_FATAL, "AAS_EntityOrigin: entnum %d out of range\n", entnum);
- VectorClear(origin);
- return;
- } //end if
-
- VectorCopy(aasworld.entities[entnum].i.origin, origin);
-} //end of the function AAS_EntityOrigin
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-int AAS_EntityModelindex(int entnum)
-{
- if (entnum < 0 || entnum >= aasworld.maxentities)
- {
- botimport.Print(PRT_FATAL, "AAS_EntityModelindex: entnum %d out of range\n", entnum);
- return 0;
- } //end if
- return aasworld.entities[entnum].i.modelindex;
-} //end of the function AAS_EntityModelindex
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-int AAS_EntityType(int entnum)
-{
- if (!aasworld.initialized) return 0;
-
- if (entnum < 0 || entnum >= aasworld.maxentities)
- {
- botimport.Print(PRT_FATAL, "AAS_EntityType: entnum %d out of range\n", entnum);
- return 0;
- } //end if
- return aasworld.entities[entnum].i.type;
-} //end of the AAS_EntityType
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-int AAS_EntityModelNum(int entnum)
-{
- if (!aasworld.initialized) return 0;
-
- if (entnum < 0 || entnum >= aasworld.maxentities)
- {
- botimport.Print(PRT_FATAL, "AAS_EntityModelNum: entnum %d out of range\n", entnum);
- return 0;
- } //end if
- return aasworld.entities[entnum].i.modelindex;
-} //end of the function AAS_EntityModelNum
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-int AAS_OriginOfMoverWithModelNum(int modelnum, vec3_t origin)
-{
- int i;
- aas_entity_t *ent;
-
- for (i = 0; i < aasworld.maxentities; i++)
- {
- ent = &aasworld.entities[i];
- if (ent->i.type == ET_MOVER)
- {
- if (ent->i.modelindex == modelnum)
- {
- VectorCopy(ent->i.origin, origin);
- return qtrue;
- } //end if
- } //end if
- } //end for
- return qfalse;
-} //end of the function AAS_OriginOfMoverWithModelNum
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-void AAS_EntitySize(int entnum, vec3_t mins, vec3_t maxs)
-{
- aas_entity_t *ent;
-
- if (!aasworld.initialized) return;
-
- if (entnum < 0 || entnum >= aasworld.maxentities)
- {
- botimport.Print(PRT_FATAL, "AAS_EntitySize: entnum %d out of range\n", entnum);
- return;
- } //end if
-
- ent = &aasworld.entities[entnum];
- VectorCopy(ent->i.mins, mins);
- VectorCopy(ent->i.maxs, maxs);
-} //end of the function AAS_EntitySize
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-void AAS_EntityBSPData(int entnum, bsp_entdata_t *entdata)
-{
- aas_entity_t *ent;
-
- ent = &aasworld.entities[entnum];
- VectorCopy(ent->i.origin, entdata->origin);
- VectorCopy(ent->i.angles, entdata->angles);
- VectorAdd(ent->i.origin, ent->i.mins, entdata->absmins);
- VectorAdd(ent->i.origin, ent->i.maxs, entdata->absmaxs);
- entdata->solid = ent->i.solid;
- entdata->modelnum = ent->i.modelindex - 1;
-} //end of the function AAS_EntityBSPData
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-void AAS_ResetEntityLinks(void)
-{
- int i;
- for (i = 0; i < aasworld.maxentities; i++)
- {
- aasworld.entities[i].areas = NULL;
- aasworld.entities[i].leaves = NULL;
- } //end for
-} //end of the function AAS_ResetEntityLinks
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-void AAS_InvalidateEntities(void)
-{
- int i;
- for (i = 0; i < aasworld.maxentities; i++)
- {
- aasworld.entities[i].i.valid = qfalse;
- aasworld.entities[i].i.number = i;
- } //end for
-} //end of the function AAS_InvalidateEntities
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-void AAS_UnlinkInvalidEntities(void)
-{
- int i;
- aas_entity_t *ent;
-
- for (i = 0; i < aasworld.maxentities; i++)
- {
- ent = &aasworld.entities[i];
- if (!ent->i.valid)
- {
- AAS_UnlinkFromAreas( ent->areas );
- ent->areas = NULL;
- AAS_UnlinkFromBSPLeaves( ent->leaves );
- ent->leaves = NULL;
- } //end for
- } //end for
-} //end of the function AAS_UnlinkInvalidEntities
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-int AAS_NearestEntity(vec3_t origin, int modelindex)
-{
- int i, bestentnum;
- float dist, bestdist;
- aas_entity_t *ent;
- vec3_t dir;
-
- bestentnum = 0;
- bestdist = 99999;
- for (i = 0; i < aasworld.maxentities; i++)
- {
- ent = &aasworld.entities[i];
- if (ent->i.modelindex != modelindex) continue;
- VectorSubtract(ent->i.origin, origin, dir);
- if (abs(dir[0]) < 40)
- {
- if (abs(dir[1]) < 40)
- {
- dist = VectorLength(dir);
- if (dist < bestdist)
- {
- bestdist = dist;
- bestentnum = i;
- } //end if
- } //end if
- } //end if
- } //end for
- return bestentnum;
-} //end of the function AAS_NearestEntity
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-int AAS_BestReachableEntityArea(int entnum)
-{
- aas_entity_t *ent;
-
- ent = &aasworld.entities[entnum];
- return AAS_BestReachableLinkArea(ent->areas);
-} //end of the function AAS_BestReachableEntityArea
-//===========================================================================
-//
-// Parameter: -
-// Returns: -
-// Changes Globals: -
-//===========================================================================
-int AAS_NextEntity(int entnum)
-{
- if (!aasworld.loaded) return 0;
-
- if (entnum < 0) entnum = -1;
- while(++entnum < aasworld.maxentities)
- {
- if (aasworld.entities[entnum].i.valid) return entnum;
- } //end while
- return 0;
-} //end of the function AAS_NextEntity
+/*
+===========================================================================
+Copyright (C) 1999-2005 Id Software, Inc.
+
+This file is part of Quake III Arena source code.
+
+Quake III Arena 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 III Arena 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 Foobar; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+===========================================================================
+*/
+
+/*****************************************************************************
+ * name: be_aas_entity.c
+ *
+ * desc: AAS entities
+ *
+ * $Archive: /MissionPack/code/botlib/be_aas_entity.c $
+ *
+ *****************************************************************************/
+
+#include "../game/q_shared.h"
+#include "l_memory.h"
+#include "l_script.h"
+#include "l_precomp.h"
+#include "l_struct.h"
+#include "l_utils.h"
+#include "l_log.h"
+#include "aasfile.h"
+#include "../game/botlib.h"
+#include "../game/be_aas.h"
+#include "be_aas_funcs.h"
+#include "be_interface.h"
+#include "be_aas_def.h"
+
+#define MASK_SOLID CONTENTS_PLAYERCLIP
+
+//FIXME: these might change
+enum {
+ ET_GENERAL,
+ ET_PLAYER,
+ ET_ITEM,
+ ET_MISSILE,
+ ET_MOVER
+};
+
+//===========================================================================
+//
+// Parameter: -
+// Returns: -
+// Changes Globals: -
+//===========================================================================
+int AAS_UpdateEntity(int entnum, bot_entitystate_t *state)
+{
+ int relink;
+ aas_entity_t *ent;
+ vec3_t absmins, absmaxs;
+
+ if (!aasworld.loaded)
+ {
+ botimport.Print(PRT_MESSAGE, "AAS_UpdateEntity: not loaded\n");
+ return BLERR_NOAASFILE;
+ } //end if
+
+ ent = &aasworld.entities[entnum];
+
+ if (!state) {
+ //unlink the entity
+ AAS_UnlinkFromAreas(ent->areas);
+ //unlink the entity from the BSP leaves
+ AAS_UnlinkFromBSPLeaves(ent->leaves);
+ //
+ ent->areas = NULL;
+ //
+ ent->leaves = NULL;
+ return BLERR_NOERROR;
+ }
+
+ ent->i.update_time = AAS_Time() - ent->i.ltime;
+ ent->i.type = state->type;
+ ent->i.flags = state->flags;
+ ent->i.ltime = AAS_Time();
+ VectorCopy(ent->i.origin, ent->i.lastvisorigin);
+ VectorCopy(state->old_origin, ent->i.old_origin);
+ ent->i.solid = state->solid;
+ ent->i.groundent = state->groundent;
+ ent->i.modelindex = state->modelindex;
+ ent->i.modelindex2 = state->modelindex2;
+ ent->i.frame = state->frame;
+ ent->i.event = state->event;
+ ent->i.eventParm = state->eventParm;
+ ent->i.powerups = state->powerups;
+ ent->i.weapon = state->weapon;
+ ent->i.legsAnim = state->legsAnim;
+ ent->i.torsoAnim = state->torsoAnim;
+ //number of the entity
+ ent->i.number = entnum;
+ //updated so set valid flag
+ ent->i.valid = qtrue;
+ //link everything the first frame
+ if (aasworld.numframes == 1) relink = qtrue;
+ else relink = qfalse;
+ //
+ if (ent->i.solid == SOLID_BSP)
+ {
+ //if the angles of the model changed
+ if (!VectorCompare(state->angles, ent->i.angles))
+ {
+ VectorCopy(state->angles, ent->i.angles);
+ relink = qtrue;
+ } //end if
+ //get the mins and maxs of the model
+ //FIXME: rotate mins and maxs
+ AAS_BSPModelMinsMaxsOrigin(ent->i.modelindex, ent->i.angles, ent->i.mins, ent->i.maxs, NULL);
+ } //end if
+ else if (ent->i.solid == SOLID_BBOX)
+ {
+ //if the bounding box size changed
+ if (!VectorCompare(state->mins, ent->i.mins) ||
+ !VectorCompare(state->maxs, ent->i.maxs))
+ {
+ VectorCopy(state->mins, ent->i.mins);
+ VectorCopy(state->maxs, ent->i.maxs);
+ relink = qtrue;
+ } //end if
+ VectorCopy(state->angles, ent->i.angles);
+ } //end if
+ //if the origin changed
+ if (!VectorCompare(state->origin, ent->i.origin))
+ {
+ VectorCopy(state->origin, ent->i.origin);
+ relink = qtrue;
+ } //end if
+ //if the entity should be relinked
+ if (relink)
+ {
+ //don't link the world model
+ if (entnum != ENTITYNUM_WORLD)
+ {
+ //absolute mins and maxs
+ VectorAdd(ent->i.mins, ent->i.origin, absmins);
+ VectorAdd(ent->i.maxs, ent->i.origin, absmaxs);
+ //unlink the entity
+ AAS_UnlinkFromAreas(ent->areas);
+ //relink the entity to the AAS areas (use the larges bbox)
+ ent->areas = AAS_LinkEntityClientBBox(absmins, absmaxs, entnum, PRESENCE_NORMAL);
+ //unlink the entity from the BSP leaves
+ AAS_UnlinkFromBSPLeaves(ent->leaves);
+ //link the entity to the world BSP tree
+ ent->leaves = AAS_BSPLinkEntity(absmins, absmaxs, entnum, 0);
+ } //end if
+ } //end if
+ return BLERR_NOERROR;
+} //end of the function AAS_UpdateEntity
+//===========================================================================
+//
+// Parameter: -
+// Returns: -
+// Changes Globals: -
+//===========================================================================
+void AAS_EntityInfo(int entnum, aas_entityinfo_t *info)
+{
+ if (!aasworld.initialized)
+ {
+ botimport.Print(PRT_FATAL, "AAS_EntityInfo: aasworld not initialized\n");
+ Com_Memset(info, 0, sizeof(aas_entityinfo_t));
+ return;
+ } //end if
+
+ if (entnum < 0 || entnum >= aasworld.maxentities)
+ {
+ botimport.Print(PRT_FATAL, "AAS_EntityInfo: entnum %d out of range\n", entnum);
+ Com_Memset(info, 0, sizeof(aas_entityinfo_t));
+ return;
+ } //end if
+
+ Com_Memcpy(info, &aasworld.entities[entnum].i, sizeof(aas_entityinfo_t));
+} //end of the function AAS_EntityInfo
+//===========================================================================
+//
+// Parameter: -
+// Returns: -
+// Changes Globals: -
+//===========================================================================
+void AAS_EntityOrigin(int entnum, vec3_t origin)
+{
+ if (entnum < 0 || entnum >= aasworld.maxentities)
+ {
+ botimport.Print(PRT_FATAL, "AAS_EntityOrigin: entnum %d out of range\n", entnum);
+ VectorClear(origin);
+ return;
+ } //end if
+
+ VectorCopy(aasworld.entities[entnum].i.origin, origin);
+} //end of the function AAS_EntityOrigin
+//===========================================================================
+//
+// Parameter: -
+// Returns: -
+// Changes Globals: -
+//===========================================================================
+int AAS_EntityModelindex(int entnum)
+{
+ if (entnum < 0 || entnum >= aasworld.maxentities)
+ {
+ botimport.Print(PRT_FATAL, "AAS_EntityModelindex: entnum %d out of range\n", entnum);
+ return 0;
+ } //end if
+ return aasworld.entities[entnum].i.modelindex;
+} //end of the function AAS_EntityModelindex
+//===========================================================================
+//
+// Parameter: -
+// Returns: -
+// Changes Globals: -
+//===========================================================================
+int AAS_EntityType(int entnum)
+{
+ if (!aasworld.initialized) return 0;
+
+ if (entnum < 0 || entnum >= aasworld.maxentities)
+ {
+ botimport.Print(PRT_FATAL, "AAS_EntityType: entnum %d out of range\n", entnum);
+ return 0;
+ } //end if
+ return aasworld.entities[entnum].i.type;
+} //end of the AAS_EntityType
+//===========================================================================
+//
+// Parameter: -
+// Returns: -
+// Changes Globals: -
+//===========================================================================
+int AAS_EntityModelNum(int entnum)
+{
+ if (!aasworld.initialized) return 0;
+
+ if (entnum < 0 || entnum >= aasworld.maxentities)
+ {
+ botimport.Print(PRT_FATAL, "AAS_EntityModelNum: entnum %d out of range\n", entnum);
+ return 0;
+ } //end if
+ return aasworld.entities[entnum].i.modelindex;
+} //end of the function AAS_EntityModelNum
+//===========================================================================
+//
+// Parameter: -
+// Returns: -
+// Changes Globals: -
+//===========================================================================
+int AAS_OriginOfMoverWithModelNum(int modelnum, vec3_t origin)
+{
+ int i;
+ aas_entity_t *ent;
+
+ for (i = 0; i < aasworld.maxentities; i++)
+ {
+ ent = &aasworld.entities[i];
+ if (ent->i.type == ET_MOVER)
+ {
+ if (ent->i.modelindex == modelnum)
+ {
+ VectorCopy(ent->i.origin, origin);
+ return qtrue;
+ } //end if
+ } //end if
+ } //end for
+ return qfalse;
+} //end of the function AAS_OriginOfMoverWithModelNum
+//===========================================================================
+//
+// Parameter: -
+// Returns: -
+// Changes Globals: -
+//===========================================================================
+void AAS_EntitySize(int entnum, vec3_t mins, vec3_t maxs)
+{
+ aas_entity_t *ent;
+
+ if (!aasworld.initialized) return;
+
+ if (entnum < 0 || entnum >= aasworld.maxentities)
+ {
+ botimport.Print(PRT_FATAL, "AAS_EntitySize: entnum %d out of range\n", entnum);
+ return;
+ } //end if
+
+ ent = &aasworld.entities[entnum];
+ VectorCopy(ent->i.mins, mins);
+ VectorCopy(ent->i.maxs, maxs);
+} //end of the function AAS_EntitySize
+//===========================================================================
+//
+// Parameter: -
+// Returns: -
+// Changes Globals: -
+//===========================================================================
+void AAS_EntityBSPData(int entnum, bsp_entdata_t *entdata)
+{
+ aas_entity_t *ent;
+
+ ent = &aasworld.entities[entnum];
+ VectorCopy(ent->i.origin, entdata->origin);
+ VectorCopy(ent->i.angles, entdata->angles);
+ VectorAdd(ent->i.origin, ent->i.mins, entdata->absmins);
+ VectorAdd(ent->i.origin, ent->i.maxs, entdata->absmaxs);
+ entdata->solid = ent->i.solid;
+ entdata->modelnum = ent->i.modelindex - 1;
+} //end of the function AAS_EntityBSPData
+//===========================================================================
+//
+// Parameter: -
+// Returns: -
+// Changes Globals: -
+//===========================================================================
+void AAS_ResetEntityLinks(void)
+{
+ int i;
+ for (i = 0; i < aasworld.maxentities; i++)
+ {
+ aasworld.entities[i].areas = NULL;
+ aasworld.entities[i].leaves = NULL;
+ } //end for
+} //end of the function AAS_ResetEntityLinks
+//===========================================================================
+//
+// Parameter: -
+// Returns: -
+// Changes Globals: -
+//===========================================================================
+void AAS_InvalidateEntities(void)
+{
+ int i;
+ for (i = 0; i < aasworld.maxentities; i++)
+ {
+ aasworld.entities[i].i.valid = qfalse;
+ aasworld.entities[i].i.number = i;
+ } //end for
+} //end of the function AAS_InvalidateEntities
+//===========================================================================
+//
+// Parameter: -
+// Returns: -
+// Changes Globals: -
+//===========================================================================
+void AAS_UnlinkInvalidEntities(void)
+{
+ int i;
+ aas_entity_t *ent;
+
+ for (i = 0; i < aasworld.maxentities; i++)
+ {
+ ent = &aasworld.entities[i];
+ if (!ent->i.valid)
+ {
+ AAS_UnlinkFromAreas( ent->areas );
+ ent->areas = NULL;
+ AAS_UnlinkFromBSPLeaves( ent->leaves );
+ ent->leaves = NULL;
+ } //end for
+ } //end for
+} //end of the function AAS_UnlinkInvalidEntities
+//===========================================================================
+//
+// Parameter: -
+// Returns: -
+// Changes Globals: -
+//===========================================================================
+int AAS_NearestEntity(vec3_t origin, int modelindex)
+{
+ int i, bestentnum;
+ float dist, bestdist;
+ aas_entity_t *ent;
+ vec3_t dir;
+
+ bestentnum = 0;
+ bestdist = 99999;
+ for (i = 0; i < aasworld.maxentities; i++)
+ {
+ ent = &aasworld.entities[i];
+ if (ent->i.modelindex != modelindex) continue;
+ VectorSubtract(ent->i.origin, origin, dir);
+ if (abs(dir[0]) < 40)
+ {
+ if (abs(dir[1]) < 40)
+ {
+ dist = VectorLength(dir);
+ if (dist < bestdist)
+ {
+ bestdist = dist;
+ bestentnum = i;
+ } //end if
+ } //end if
+ } //end if
+ } //end for
+ return bestentnum;
+} //end of the function AAS_NearestEntity
+//===========================================================================
+//
+// Parameter: -
+// Returns: -
+// Changes Globals: -
+//===========================================================================
+int AAS_BestReachableEntityArea(int entnum)
+{
+ aas_entity_t *ent;
+
+ ent = &aasworld.entities[entnum];
+ return AAS_BestReachableLinkArea(ent->areas);
+} //end of the function AAS_BestReachableEntityArea
+//===========================================================================
+//
+// Parameter: -
+// Returns: -
+// Changes Globals: -
+//===========================================================================
+int AAS_NextEntity(int entnum)
+{
+ if (!aasworld.loaded) return 0;
+
+ if (entnum < 0) entnum = -1;
+ while(++entnum < aasworld.maxentities)
+ {
+ if (aasworld.entities[entnum].i.valid) return entnum;
+ } //end while
+ return 0;
+} //end of the function AAS_NextEntity