mirror of
https://github.com/Jackzmc/sourcemod-plugins.git
synced 2025-05-05 20:13:21 +00:00
Optimization: Use pre-squared value for distance calc
This commit is contained in:
parent
2eb2db1460
commit
f75a8d8bed
4 changed files with 8 additions and 6 deletions
Binary file not shown.
Binary file not shown.
|
@ -4,6 +4,9 @@
|
|||
#define PLUGIN_VERSION "1.5"
|
||||
#pragma newdecls required
|
||||
|
||||
#define MAX_TANK_DISTANCE_FROM_SURVIVOR 1000
|
||||
#define MAX_TANK_DIST_SQUARED MAX_TANK_DISTANCE_FROM_SURVIVOR^2
|
||||
|
||||
//#define DEBUG
|
||||
|
||||
static bool bEscapeReady = false;
|
||||
|
@ -34,7 +37,6 @@ public void OnPluginStart()
|
|||
HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy);
|
||||
HookEvent("tank_spawn", Event_TankSpawn);
|
||||
HookEvent("tank_killed", Event_TankDeath);
|
||||
HookEvent("tank_killed", Event_RoundStart, EventHookMode_PostNoCopy);
|
||||
HookEvent("finale_vehicle_incoming", Event_FinaleArriving, EventHookMode_PostNoCopy);
|
||||
}
|
||||
|
||||
|
@ -109,8 +111,8 @@ public Action BotControlTimerV2(Handle timer)
|
|||
//Fetch the tank's position
|
||||
GetClientAbsOrigin(tankID, TankPosition);
|
||||
//Get distance to survivor, and compare to get closest tank
|
||||
distanceFromSurvivor = GetVectorDistance(BotPosition, TankPosition);
|
||||
if(distanceFromSurvivor <= 1000 && smallestDistance > distanceFromSurvivor || smallestDistance == 0.0) {
|
||||
distanceFromSurvivor = GetVectorDistance(BotPosition, TankPosition, true);
|
||||
if(distanceFromSurvivor <= MAX_TANK_DIST_SQUARED && smallestDistance > distanceFromSurvivor || smallestDistance == 0.0) {
|
||||
smallestDistance = distanceFromSurvivor;
|
||||
closestTank = tankID;
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@ public Action CheckTimer(Handle timer) {
|
|||
//optimization: Only update player-based positions ever 5 loops (5 * 5 = 25 seconds)
|
||||
static int timer_update_pos;
|
||||
if(GetClientCount(true) == 0) return Plugin_Continue;
|
||||
float pos[3], ang[3], botPos[3], center_distance;
|
||||
static float pos[3], ang[3], botPos[3], center_distance;
|
||||
static float finalPos[3], checkPos[3];
|
||||
bool usingMinigun, usingMountedWeapon;
|
||||
|
||||
|
@ -92,9 +92,9 @@ public Action CheckTimer(Handle timer) {
|
|||
if(bIsSurvivorClient[bot] && IsClientInGame(bot) && IsFakeClient(bot) && IsPlayerAlive(bot)) {
|
||||
GetClientAbsOrigin(bot, botPos);
|
||||
|
||||
center_distance = GetVectorDistance(checkPos, botPos);
|
||||
center_distance = GetVectorDistance(checkPos, botPos, true);
|
||||
|
||||
if(center_distance <= 70) {
|
||||
if(center_distance <= 4900) {
|
||||
L4D2_RunScript("CommandABot({cmd=1,bot=GetPlayerFromUserID(%i),pos=Vector(%f,%f,%f)})", GetClientUserId(bot), finalPos[0], finalPos[1], finalPos[2]);
|
||||
}else{
|
||||
L4D2_RunScript("CommandABot({cmd=3,bot=GetPlayerFromUserID(%i)})", GetClientUserId(bot));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue