Initial commit.
This commit is contained in:
688
codemp/botlib/be_interface.cpp
Normal file
688
codemp/botlib/be_interface.cpp
Normal file
@@ -0,0 +1,688 @@
|
||||
|
||||
/*****************************************************************************
|
||||
* name: be_interface.c // bk010221 - FIXME - DEAD code elimination
|
||||
*
|
||||
* desc: bot library interface
|
||||
*
|
||||
* $Archive: /MissionPack/code/botlib/be_interface.c $
|
||||
* $Author: Zaphod $
|
||||
* $Revision: 16 $
|
||||
* $Modtime: 5/16/01 2:36p $
|
||||
* $Date: 5/16/01 2:41p $
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#include "../game/q_shared.h"
|
||||
#include "l_memory.h"
|
||||
#include "l_log.h"
|
||||
#include "l_libvar.h"
|
||||
#include "l_script.h"
|
||||
#include "l_precomp.h"
|
||||
#include "l_struct.h"
|
||||
#include "aasfile.h"
|
||||
#include "../game/botlib.h"
|
||||
#include "../game/be_aas.h"
|
||||
#include "be_aas_funcs.h"
|
||||
#include "be_aas_def.h"
|
||||
#include "be_interface.h"
|
||||
|
||||
#include "../game/be_ea.h"
|
||||
#include "be_ai_weight.h"
|
||||
#include "../game/be_ai_goal.h"
|
||||
#include "../game/be_ai_move.h"
|
||||
#include "../game/be_ai_weap.h"
|
||||
#include "../game/be_ai_chat.h"
|
||||
#include "../game/be_ai_char.h"
|
||||
#include "../game/be_ai_gen.h"
|
||||
|
||||
//library globals in a structure
|
||||
botlib_globals_t botlibglobals;
|
||||
|
||||
botlib_export_t be_botlib_export;
|
||||
botlib_import_t botimport;
|
||||
//
|
||||
int bot_developer;
|
||||
//qtrue if the library is setup
|
||||
int botlibsetup = qfalse;
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
// several functions used by the exported functions
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
// Parameter: -
|
||||
// Returns: -
|
||||
// Changes Globals: -
|
||||
//===========================================================================
|
||||
int Sys_MilliSeconds(void)
|
||||
{
|
||||
return clock() * 1000 / CLOCKS_PER_SEC;
|
||||
} //end of the function Sys_MilliSeconds
|
||||
//===========================================================================
|
||||
//
|
||||
// Parameter: -
|
||||
// Returns: -
|
||||
// Changes Globals: -
|
||||
//===========================================================================
|
||||
qboolean ValidClientNumber(int num, char *str)
|
||||
{
|
||||
if (num < 0 || num > botlibglobals.maxclients)
|
||||
{
|
||||
//weird: the disabled stuff results in a crash
|
||||
botimport.Print(PRT_ERROR, "%s: invalid client number %d, [0, %d]\n",
|
||||
str, num, botlibglobals.maxclients);
|
||||
return qfalse;
|
||||
} //end if
|
||||
return qtrue;
|
||||
} //end of the function BotValidateClientNumber
|
||||
//===========================================================================
|
||||
//
|
||||
// Parameter: -
|
||||
// Returns: -
|
||||
// Changes Globals: -
|
||||
//===========================================================================
|
||||
qboolean ValidEntityNumber(int num, char *str)
|
||||
{
|
||||
if (num < 0 || num > botlibglobals.maxentities)
|
||||
{
|
||||
botimport.Print(PRT_ERROR, "%s: invalid entity number %d, [0, %d]\n",
|
||||
str, num, botlibglobals.maxentities);
|
||||
return qfalse;
|
||||
} //end if
|
||||
return qtrue;
|
||||
} //end of the function BotValidateClientNumber
|
||||
//===========================================================================
|
||||
//
|
||||
// Parameter: -
|
||||
// Returns: -
|
||||
// Changes Globals: -
|
||||
//===========================================================================
|
||||
qboolean BotLibSetup(char *str)
|
||||
{
|
||||
if (!botlibglobals.botlibsetup)
|
||||
{
|
||||
botimport.Print(PRT_ERROR, "%s: bot library used before being setup\n", str);
|
||||
return qfalse;
|
||||
} //end if
|
||||
return qtrue;
|
||||
} //end of the function BotLibSetup
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
// Parameter: -
|
||||
// Returns: -
|
||||
// Changes Globals: -
|
||||
//===========================================================================
|
||||
int Export_BotLibSetup(void)
|
||||
{
|
||||
int errnum;
|
||||
|
||||
bot_developer = LibVarGetValue("bot_developer");
|
||||
memset( &botlibglobals, 0, sizeof(botlibglobals) ); // bk001207 - init
|
||||
//initialize byte swapping (litte endian etc.)
|
||||
// Swap_Init();
|
||||
Log_Open("botlib.log");
|
||||
//
|
||||
// botimport.Print(PRT_MESSAGE, "------- BotLib Initialization -------\n");
|
||||
//
|
||||
botlibglobals.maxclients = (int) LibVarValue("maxclients", "128");
|
||||
botlibglobals.maxentities = (int) LibVarValue("maxentities", "1024");
|
||||
|
||||
EA_Setup();
|
||||
|
||||
/*
|
||||
errnum = BotSetupWeaponAI(); //be_ai_weap.c
|
||||
if (errnum != BLERR_NOERROR)return errnum;
|
||||
errnum = BotSetupGoalAI(); //be_ai_goal.c
|
||||
if (errnum != BLERR_NOERROR) return errnum;
|
||||
errnum = BotSetupChatAI(); //be_ai_chat.c
|
||||
if (errnum != BLERR_NOERROR) return errnum;
|
||||
errnum = BotSetupMoveAI(); //be_ai_move.c
|
||||
if (errnum != BLERR_NOERROR) return errnum;
|
||||
*/
|
||||
botlibsetup = qtrue;
|
||||
botlibglobals.botlibsetup = qtrue;
|
||||
|
||||
return BLERR_NOERROR;
|
||||
} //end of the function Export_BotLibSetup
|
||||
//===========================================================================
|
||||
//
|
||||
// Parameter: -
|
||||
// Returns: -
|
||||
// Changes Globals: -
|
||||
//===========================================================================
|
||||
int Export_BotLibShutdown(void)
|
||||
{
|
||||
if (!BotLibSetup("BotLibShutdown")) return BLERR_LIBRARYNOTSETUP;
|
||||
#ifndef DEMO
|
||||
//DumpFileCRCs();
|
||||
#endif //DEMO
|
||||
//
|
||||
//free all libvars
|
||||
LibVarDeAllocAll();
|
||||
//remove all global defines from the pre compiler
|
||||
PC_RemoveAllGlobalDefines();
|
||||
|
||||
EA_Shutdown();
|
||||
|
||||
//dump all allocated memory
|
||||
// DumpMemory();
|
||||
#ifdef DEBUG
|
||||
PrintMemoryLabels();
|
||||
#endif
|
||||
//shut down library log file
|
||||
Log_Shutdown();
|
||||
//
|
||||
botlibsetup = qfalse;
|
||||
botlibglobals.botlibsetup = qfalse;
|
||||
// print any files still open
|
||||
PC_CheckOpenSourceHandles();
|
||||
//
|
||||
return BLERR_NOERROR;
|
||||
} //end of the function Export_BotLibShutdown
|
||||
//===========================================================================
|
||||
//
|
||||
// Parameter: -
|
||||
// Returns: -
|
||||
// Changes Globals: -
|
||||
//===========================================================================
|
||||
int Export_BotLibVarSet(char *var_name, char *value)
|
||||
{
|
||||
LibVarSet(var_name, value);
|
||||
return BLERR_NOERROR;
|
||||
} //end of the function Export_BotLibVarSet
|
||||
//===========================================================================
|
||||
//
|
||||
// Parameter: -
|
||||
// Returns: -
|
||||
// Changes Globals: -
|
||||
//===========================================================================
|
||||
int Export_BotLibVarGet(char *var_name, char *value, int size)
|
||||
{
|
||||
char *varvalue;
|
||||
|
||||
varvalue = LibVarGetString(var_name);
|
||||
strncpy(value, varvalue, size-1);
|
||||
value[size-1] = '\0';
|
||||
return BLERR_NOERROR;
|
||||
} //end of the function Export_BotLibVarGet
|
||||
//===========================================================================
|
||||
//
|
||||
// Parameter: -
|
||||
// Returns: -
|
||||
// Changes Globals: -
|
||||
//===========================================================================
|
||||
int Export_BotLibStartFrame(float time)
|
||||
{
|
||||
if (!BotLibSetup("BotStartFrame")) return BLERR_LIBRARYNOTSETUP;
|
||||
return 0;
|
||||
} //end of the function Export_BotLibStartFrame
|
||||
//===========================================================================
|
||||
//
|
||||
// Parameter: -
|
||||
// Returns: -
|
||||
// Changes Globals: -
|
||||
//===========================================================================
|
||||
int Export_BotLibLoadMap(const char *mapname)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
int starttime = Sys_MilliSeconds();
|
||||
#endif
|
||||
int errnum;
|
||||
|
||||
if (!BotLibSetup("BotLoadMap")) return BLERR_LIBRARYNOTSETUP;
|
||||
//
|
||||
botimport.Print(PRT_MESSAGE, "------------ Map Loading ------------\n");
|
||||
//startup AAS for the current map, model and sound index
|
||||
//initialize the items in the level
|
||||
//
|
||||
botimport.Print(PRT_MESSAGE, "-------------------------------------\n");
|
||||
#ifdef DEBUG
|
||||
botimport.Print(PRT_MESSAGE, "map loaded in %d msec\n", Sys_MilliSeconds() - starttime);
|
||||
#endif
|
||||
//
|
||||
return BLERR_NOERROR;
|
||||
} //end of the function Export_BotLibLoadMap
|
||||
//===========================================================================
|
||||
//
|
||||
// Parameter: -
|
||||
// Returns: -
|
||||
// Changes Globals: -
|
||||
//===========================================================================
|
||||
int Export_BotLibUpdateEntity(int ent, bot_entitystate_t *state)
|
||||
{
|
||||
if (!BotLibSetup("BotUpdateEntity")) return BLERR_LIBRARYNOTSETUP;
|
||||
if (!ValidEntityNumber(ent, "BotUpdateEntity")) return BLERR_INVALIDENTITYNUMBER;
|
||||
|
||||
return 0;
|
||||
} //end of the function Export_BotLibUpdateEntity
|
||||
//===========================================================================
|
||||
//
|
||||
// Parameter: -
|
||||
// Returns: -
|
||||
// Changes Globals: -
|
||||
//===========================================================================
|
||||
void AAS_TestMovementPrediction(int entnum, vec3_t origin, vec3_t dir);
|
||||
void ElevatorBottomCenter(aas_reachability_t *reach, vec3_t bottomcenter);
|
||||
int BotGetReachabilityToGoal(vec3_t origin, int areanum,
|
||||
int lastgoalareanum, int lastareanum,
|
||||
int *avoidreach, float *avoidreachtimes, int *avoidreachtries,
|
||||
bot_goal_t *goal, int travelflags, int movetravelflags,
|
||||
struct bot_avoidspot_s *avoidspots, int numavoidspots, int *flags);
|
||||
|
||||
int AAS_PointLight(vec3_t origin, int *red, int *green, int *blue);
|
||||
|
||||
int AAS_TraceAreas(vec3_t start, vec3_t end, int *areas, vec3_t *points, int maxareas);
|
||||
|
||||
int AAS_Reachability_WeaponJump(int area1num, int area2num);
|
||||
|
||||
int BotFuzzyPointReachabilityArea(vec3_t origin);
|
||||
|
||||
float BotGapDistance(vec3_t origin, vec3_t hordir, int entnum);
|
||||
|
||||
void AAS_FloodAreas(vec3_t origin);
|
||||
|
||||
int BotExportTest(int parm0, char *parm1, vec3_t parm2, vec3_t parm3)
|
||||
{
|
||||
#ifndef _XBOX
|
||||
|
||||
// return AAS_PointLight(parm2, NULL, NULL, NULL);
|
||||
|
||||
#ifdef DEBUG
|
||||
static int area = -1;
|
||||
static int line[2];
|
||||
int newarea, i, highlightarea, flood;
|
||||
// int reachnum;
|
||||
vec3_t eye, forward, right, end, origin;
|
||||
// vec3_t bottomcenter;
|
||||
// aas_trace_t trace;
|
||||
// aas_face_t *face;
|
||||
// aas_entity_t *ent;
|
||||
// bsp_trace_t bsptrace;
|
||||
// aas_reachability_t reach;
|
||||
// bot_goal_t goal;
|
||||
|
||||
// clock_t start_time, end_time;
|
||||
vec3_t mins = {-16, -16, -24};
|
||||
vec3_t maxs = {16, 16, 32};
|
||||
|
||||
// int areas[10], numareas;
|
||||
|
||||
|
||||
//return 0;
|
||||
|
||||
if (!aasworld.loaded) return 0;
|
||||
|
||||
/*
|
||||
if (parm0 & 1)
|
||||
{
|
||||
AAS_ClearShownPolygons();
|
||||
AAS_FloodAreas(parm2);
|
||||
} //end if
|
||||
return 0;
|
||||
*/
|
||||
for (i = 0; i < 2; i++) if (!line[i]) line[i] = botimport.DebugLineCreate();
|
||||
|
||||
// AAS_ClearShownDebugLines();
|
||||
|
||||
//if (AAS_AgainstLadder(parm2)) botimport.Print(PRT_MESSAGE, "against ladder\n");
|
||||
//BotOnGround(parm2, PRESENCE_NORMAL, 1, &newarea, &newarea);
|
||||
//botimport.Print(PRT_MESSAGE, "%f %f %f\n", parm2[0], parm2[1], parm2[2]);
|
||||
//*
|
||||
highlightarea = LibVarGetValue("bot_highlightarea");
|
||||
if (highlightarea > 0)
|
||||
{
|
||||
newarea = highlightarea;
|
||||
} //end if
|
||||
else
|
||||
{
|
||||
VectorCopy(parm2, origin);
|
||||
origin[2] += 0.5;
|
||||
//newarea = AAS_PointAreaNum(origin);
|
||||
newarea = BotFuzzyPointReachabilityArea(origin);
|
||||
} //end else
|
||||
|
||||
botimport.Print(PRT_MESSAGE, "\rtravel time to goal (%d) = %d ", botlibglobals.goalareanum,
|
||||
AAS_AreaTravelTimeToGoalArea(newarea, origin, botlibglobals.goalareanum, TFL_DEFAULT));
|
||||
//newarea = BotReachabilityArea(origin, qtrue);
|
||||
if (newarea != area)
|
||||
{
|
||||
botimport.Print(PRT_MESSAGE, "origin = %f, %f, %f\n", origin[0], origin[1], origin[2]);
|
||||
area = newarea;
|
||||
botimport.Print(PRT_MESSAGE, "new area %d, cluster %d, presence type %d\n",
|
||||
area, AAS_AreaCluster(area), AAS_PointPresenceType(origin));
|
||||
botimport.Print(PRT_MESSAGE, "area contents: ");
|
||||
if (aasworld.areasettings[area].contents & AREACONTENTS_WATER)
|
||||
{
|
||||
botimport.Print(PRT_MESSAGE, "water &");
|
||||
} //end if
|
||||
if (aasworld.areasettings[area].contents & AREACONTENTS_LAVA)
|
||||
{
|
||||
botimport.Print(PRT_MESSAGE, "lava &");
|
||||
} //end if
|
||||
if (aasworld.areasettings[area].contents & AREACONTENTS_SLIME)
|
||||
{
|
||||
botimport.Print(PRT_MESSAGE, "slime &");
|
||||
} //end if
|
||||
if (aasworld.areasettings[area].contents & AREACONTENTS_JUMPPAD)
|
||||
{
|
||||
botimport.Print(PRT_MESSAGE, "jump pad &");
|
||||
} //end if
|
||||
if (aasworld.areasettings[area].contents & AREACONTENTS_CLUSTERPORTAL)
|
||||
{
|
||||
botimport.Print(PRT_MESSAGE, "cluster portal &");
|
||||
} //end if
|
||||
if (aasworld.areasettings[area].contents & AREACONTENTS_VIEWPORTAL)
|
||||
{
|
||||
botimport.Print(PRT_MESSAGE, "view portal &");
|
||||
} //end if
|
||||
if (aasworld.areasettings[area].contents & AREACONTENTS_DONOTENTER)
|
||||
{
|
||||
botimport.Print(PRT_MESSAGE, "do not enter &");
|
||||
} //end if
|
||||
if (aasworld.areasettings[area].contents & AREACONTENTS_MOVER)
|
||||
{
|
||||
botimport.Print(PRT_MESSAGE, "mover &");
|
||||
} //end if
|
||||
if (!aasworld.areasettings[area].contents)
|
||||
{
|
||||
botimport.Print(PRT_MESSAGE, "empty");
|
||||
} //end if
|
||||
botimport.Print(PRT_MESSAGE, "\n");
|
||||
botimport.Print(PRT_MESSAGE, "travel time to goal (%d) = %d\n", botlibglobals.goalareanum,
|
||||
AAS_AreaTravelTimeToGoalArea(newarea, origin, botlibglobals.goalareanum, TFL_DEFAULT|TFL_ROCKETJUMP));
|
||||
/*
|
||||
VectorCopy(origin, end);
|
||||
end[2] += 5;
|
||||
numareas = AAS_TraceAreas(origin, end, areas, NULL, 10);
|
||||
AAS_TraceClientBBox(origin, end, PRESENCE_CROUCH, -1);
|
||||
botimport.Print(PRT_MESSAGE, "num areas = %d, area = %d\n", numareas, areas[0]);
|
||||
*/
|
||||
/*
|
||||
botlibglobals.goalareanum = newarea;
|
||||
VectorCopy(parm2, botlibglobals.goalorigin);
|
||||
botimport.Print(PRT_MESSAGE, "new goal %2.1f %2.1f %2.1f area %d\n",
|
||||
origin[0], origin[1], origin[2], newarea);
|
||||
*/
|
||||
} //end if
|
||||
//*
|
||||
flood = LibVarGetValue("bot_flood");
|
||||
if (parm0 & 1)
|
||||
{
|
||||
if (flood)
|
||||
{
|
||||
AAS_ClearShownPolygons();
|
||||
AAS_ClearShownDebugLines();
|
||||
AAS_FloodAreas(parm2);
|
||||
}
|
||||
else
|
||||
{
|
||||
botlibglobals.goalareanum = newarea;
|
||||
VectorCopy(parm2, botlibglobals.goalorigin);
|
||||
botimport.Print(PRT_MESSAGE, "new goal %2.1f %2.1f %2.1f area %d\n",
|
||||
origin[0], origin[1], origin[2], newarea);
|
||||
}
|
||||
} //end if*/
|
||||
if (flood)
|
||||
return 0;
|
||||
// if (parm0 & BUTTON_USE)
|
||||
// {
|
||||
// botlibglobals.runai = !botlibglobals.runai;
|
||||
// if (botlibglobals.runai) botimport.Print(PRT_MESSAGE, "started AI\n");
|
||||
// else botimport.Print(PRT_MESSAGE, "stopped AI\n");
|
||||
//* /
|
||||
/*
|
||||
goal.areanum = botlibglobals.goalareanum;
|
||||
reachnum = BotGetReachabilityToGoal(parm2, newarea, 1,
|
||||
ms.avoidreach, ms.avoidreachtimes,
|
||||
&goal, TFL_DEFAULT);
|
||||
if (!reachnum)
|
||||
{
|
||||
botimport.Print(PRT_MESSAGE, "goal not reachable\n");
|
||||
} //end if
|
||||
else
|
||||
{
|
||||
AAS_ReachabilityFromNum(reachnum, &reach);
|
||||
AAS_ClearShownDebugLines();
|
||||
AAS_ShowArea(area, qtrue);
|
||||
AAS_ShowArea(reach.areanum, qtrue);
|
||||
AAS_DrawCross(reach.start, 6, LINECOLOR_BLUE);
|
||||
AAS_DrawCross(reach.end, 6, LINECOLOR_RED);
|
||||
//
|
||||
if ((reach.traveltype & TRAVELTYPE_MASK) == TRAVEL_ELEVATOR)
|
||||
{
|
||||
ElevatorBottomCenter(&reach, bottomcenter);
|
||||
AAS_DrawCross(bottomcenter, 10, LINECOLOR_GREEN);
|
||||
} //end if
|
||||
} //end else*/
|
||||
// botimport.Print(PRT_MESSAGE, "travel time to goal = %d\n",
|
||||
// AAS_AreaTravelTimeToGoalArea(area, origin, botlibglobals.goalareanum, TFL_DEFAULT));
|
||||
// botimport.Print(PRT_MESSAGE, "test rj from 703 to 716\n");
|
||||
// AAS_Reachability_WeaponJump(703, 716);
|
||||
// } //end if*/
|
||||
|
||||
/* face = AAS_AreaGroundFace(newarea, parm2);
|
||||
if (face)
|
||||
{
|
||||
AAS_ShowFace(face - aasworld.faces);
|
||||
} //end if*/
|
||||
/*
|
||||
AAS_ClearShownDebugLines();
|
||||
AAS_ShowArea(newarea, parm0 & BUTTON_USE);
|
||||
AAS_ShowReachableAreas(area);
|
||||
*/
|
||||
AAS_ClearShownPolygons();
|
||||
AAS_ClearShownDebugLines();
|
||||
AAS_ShowAreaPolygons(newarea, 1, parm0 & 4);
|
||||
if (parm0 & 2) AAS_ShowReachableAreas(area);
|
||||
else
|
||||
{
|
||||
static int lastgoalareanum, lastareanum;
|
||||
static int avoidreach[MAX_AVOIDREACH];
|
||||
static float avoidreachtimes[MAX_AVOIDREACH];
|
||||
static int avoidreachtries[MAX_AVOIDREACH];
|
||||
int reachnum, resultFlags;
|
||||
bot_goal_t goal;
|
||||
aas_reachability_t reach;
|
||||
|
||||
/*
|
||||
goal.areanum = botlibglobals.goalareanum;
|
||||
VectorCopy(botlibglobals.goalorigin, goal.origin);
|
||||
reachnum = BotGetReachabilityToGoal(origin, newarea,
|
||||
lastgoalareanum, lastareanum,
|
||||
avoidreach, avoidreachtimes, avoidreachtries,
|
||||
&goal, TFL_DEFAULT|TFL_FUNCBOB|TFL_ROCKETJUMP, TFL_DEFAULT|TFL_FUNCBOB|TFL_ROCKETJUMP,
|
||||
NULL, 0, &resultFlags);
|
||||
AAS_ReachabilityFromNum(reachnum, &reach);
|
||||
AAS_ShowReachability(&reach);
|
||||
*/
|
||||
int curarea;
|
||||
vec3_t curorigin;
|
||||
|
||||
goal.areanum = botlibglobals.goalareanum;
|
||||
VectorCopy(botlibglobals.goalorigin, goal.origin);
|
||||
VectorCopy(origin, curorigin);
|
||||
curarea = newarea;
|
||||
for ( i = 0; i < 100; i++ ) {
|
||||
if ( curarea == goal.areanum ) {
|
||||
break;
|
||||
}
|
||||
reachnum = BotGetReachabilityToGoal(curorigin, curarea,
|
||||
lastgoalareanum, lastareanum,
|
||||
avoidreach, avoidreachtimes, avoidreachtries,
|
||||
&goal, TFL_DEFAULT|TFL_FUNCBOB|TFL_ROCKETJUMP, TFL_DEFAULT|TFL_FUNCBOB|TFL_ROCKETJUMP,
|
||||
NULL, 0, &resultFlags);
|
||||
AAS_ReachabilityFromNum(reachnum, &reach);
|
||||
AAS_ShowReachability(&reach);
|
||||
VectorCopy(reach.end, origin);
|
||||
lastareanum = curarea;
|
||||
curarea = reach.areanum;
|
||||
}
|
||||
} //end else
|
||||
VectorClear(forward);
|
||||
//BotGapDistance(origin, forward, 0);
|
||||
/*
|
||||
if (parm0 & BUTTON_USE)
|
||||
{
|
||||
botimport.Print(PRT_MESSAGE, "test rj from 703 to 716\n");
|
||||
AAS_Reachability_WeaponJump(703, 716);
|
||||
} //end if*/
|
||||
|
||||
AngleVectors(parm3, forward, right, NULL);
|
||||
//get the eye 16 units to the right of the origin
|
||||
VectorMA(parm2, 8, right, eye);
|
||||
//get the eye 24 units up
|
||||
eye[2] += 24;
|
||||
//get the end point for the line to be traced
|
||||
VectorMA(eye, 800, forward, end);
|
||||
|
||||
// AAS_TestMovementPrediction(1, parm2, forward);
|
||||
/*
|
||||
//trace the line to find the hit point
|
||||
trace = AAS_TraceClientBBox(eye, end, PRESENCE_NORMAL, 1);
|
||||
if (!line[0]) line[0] = botimport.DebugLineCreate();
|
||||
botimport.DebugLineShow(line[0], eye, trace.endpos, LINECOLOR_BLUE);
|
||||
//
|
||||
AAS_ClearShownDebugLines();
|
||||
if (trace.ent)
|
||||
{
|
||||
ent = &aasworld.entities[trace.ent];
|
||||
AAS_ShowBoundingBox(ent->origin, ent->mins, ent->maxs);
|
||||
} //end if
|
||||
*/
|
||||
|
||||
/*
|
||||
start_time = clock();
|
||||
for (i = 0; i < 2000; i++)
|
||||
{
|
||||
AAS_Trace2(eye, mins, maxs, end, 1, MASK_PLAYERSOLID);
|
||||
// AAS_TraceClientBBox(eye, end, PRESENCE_NORMAL, 1);
|
||||
} //end for
|
||||
end_time = clock();
|
||||
botimport.Print(PRT_MESSAGE, "me %lu clocks, %lu CLOCKS_PER_SEC\n", end_time - start_time, CLOCKS_PER_SEC);
|
||||
start_time = clock();
|
||||
for (i = 0; i < 2000; i++)
|
||||
{
|
||||
AAS_Trace(eye, mins, maxs, end, 1, MASK_PLAYERSOLID);
|
||||
} //end for
|
||||
end_time = clock();
|
||||
botimport.Print(PRT_MESSAGE, "id %lu clocks, %lu CLOCKS_PER_SEC\n", end_time - start_time, CLOCKS_PER_SEC);
|
||||
*/
|
||||
|
||||
// TTimo: nested comments are BAD for gcc -Werror, use #if 0 instead..
|
||||
#if 0
|
||||
AAS_ClearShownDebugLines();
|
||||
//bsptrace = AAS_Trace(eye, NULL, NULL, end, 1, MASK_PLAYERSOLID);
|
||||
bsptrace = AAS_Trace(eye, mins, maxs, end, 1, MASK_PLAYERSOLID);
|
||||
if (!line[0]) line[0] = botimport.DebugLineCreate();
|
||||
botimport.DebugLineShow(line[0], eye, bsptrace.endpos, LINECOLOR_YELLOW);
|
||||
if (bsptrace.fraction < 1.0)
|
||||
{
|
||||
face = AAS_TraceEndFace(&trace);
|
||||
if (face)
|
||||
{
|
||||
AAS_ShowFace(face - aasworld.faces);
|
||||
} //end if
|
||||
|
||||
AAS_DrawPlaneCross(bsptrace.endpos,
|
||||
bsptrace.plane.normal,
|
||||
bsptrace.plane.dist + bsptrace.exp_dist,
|
||||
bsptrace.plane.type, LINECOLOR_GREEN);
|
||||
if (trace.ent)
|
||||
{
|
||||
ent = &aasworld.entities[trace.ent];
|
||||
AAS_ShowBoundingBox(ent->origin, ent->mins, ent->maxs);
|
||||
} //end if
|
||||
} //end if
|
||||
//bsptrace = AAS_Trace2(eye, NULL, NULL, end, 1, MASK_PLAYERSOLID);
|
||||
bsptrace = AAS_Trace2(eye, mins, maxs, end, 1, MASK_PLAYERSOLID);
|
||||
botimport.DebugLineShow(line[1], eye, bsptrace.endpos, LINECOLOR_BLUE);
|
||||
if (bsptrace.fraction < 1.0)
|
||||
{
|
||||
AAS_DrawPlaneCross(bsptrace.endpos,
|
||||
bsptrace.plane.normal,
|
||||
bsptrace.plane.dist,// + bsptrace.exp_dist,
|
||||
bsptrace.plane.type, LINECOLOR_RED);
|
||||
if (bsptrace.ent)
|
||||
{
|
||||
ent = &aasworld.entities[bsptrace.ent];
|
||||
AAS_ShowBoundingBox(ent->origin, ent->mins, ent->maxs);
|
||||
} //end if
|
||||
} //end if
|
||||
#endif
|
||||
#endif
|
||||
#endif // _XBOX
|
||||
return 0;
|
||||
} //end of the function BotExportTest
|
||||
|
||||
/*
|
||||
============
|
||||
Init_AAS_Export
|
||||
============
|
||||
*/
|
||||
static void Init_AAS_Export( aas_export_t *aas ) {
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
============
|
||||
Init_EA_Export
|
||||
============
|
||||
*/
|
||||
static void Init_EA_Export( ea_export_t *ea ) {
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
============
|
||||
Init_AI_Export
|
||||
============
|
||||
*/
|
||||
static void Init_AI_Export( ai_export_t *ai ) {
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
============
|
||||
GetBotLibAPI
|
||||
============
|
||||
*/
|
||||
botlib_export_t *GetBotLibAPI(int apiVersion, botlib_import_t *import) {
|
||||
assert(import); // bk001129 - this wasn't set for base/
|
||||
botimport = *import;
|
||||
assert(botimport.Print); // bk001129 - pars pro toto
|
||||
|
||||
Com_Memset( &be_botlib_export, 0, sizeof( be_botlib_export ) );
|
||||
|
||||
if ( apiVersion != BOTLIB_API_VERSION ) {
|
||||
botimport.Print( PRT_ERROR, "Mismatched BOTLIB_API_VERSION: expected %i, got %i\n", BOTLIB_API_VERSION, apiVersion );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Init_AAS_Export(&be_botlib_export.aas);
|
||||
Init_EA_Export(&be_botlib_export.ea);
|
||||
Init_AI_Export(&be_botlib_export.ai);
|
||||
|
||||
be_botlib_export.BotLibSetup = Export_BotLibSetup;
|
||||
be_botlib_export.BotLibShutdown = Export_BotLibShutdown;
|
||||
be_botlib_export.BotLibVarSet = Export_BotLibVarSet;
|
||||
be_botlib_export.BotLibVarGet = Export_BotLibVarGet;
|
||||
|
||||
be_botlib_export.PC_AddGlobalDefine = PC_AddGlobalDefine;
|
||||
be_botlib_export.PC_LoadSourceHandle = PC_LoadSourceHandle;
|
||||
be_botlib_export.PC_FreeSourceHandle = PC_FreeSourceHandle;
|
||||
be_botlib_export.PC_ReadTokenHandle = PC_ReadTokenHandle;
|
||||
be_botlib_export.PC_SourceFileAndLine = PC_SourceFileAndLine;
|
||||
be_botlib_export.PC_LoadGlobalDefines = PC_LoadGlobalDefines;
|
||||
be_botlib_export.PC_RemoveAllGlobalDefines = PC_RemoveAllGlobalDefines;
|
||||
|
||||
be_botlib_export.BotLibStartFrame = Export_BotLibStartFrame;
|
||||
be_botlib_export.BotLibLoadMap = Export_BotLibLoadMap;
|
||||
be_botlib_export.BotLibUpdateEntity = Export_BotLibUpdateEntity;
|
||||
be_botlib_export.Test = BotExportTest;
|
||||
|
||||
return &be_botlib_export;
|
||||
}
|
||||
Reference in New Issue
Block a user