mirror of
https://github.com/s1lentq/ReGameDLL_CS.git
synced 2024-12-27 07:05:38 +03:00
Refactoring
Added remaining functions of pm_math/pm_debug
This commit is contained in:
parent
a8cc9cc76f
commit
4a774865ba
@ -59,7 +59,7 @@ CCSBotManager::CCSBotManager(void)
|
||||
|
||||
m_bServerActive = false;
|
||||
|
||||
TheBotPhrases = new BotPhraseManager; // TODO: Reverse me!
|
||||
TheBotPhrases = new BotPhraseManager;
|
||||
// load the database of bot radio chatter
|
||||
TheBotPhrases->Initialize("BotChatter.db", 0);
|
||||
|
||||
|
@ -220,11 +220,11 @@ public:
|
||||
void SetNavPlace(unsigned int place) { m_navPlace = place; }
|
||||
|
||||
enum SkillType { LOW, AVERAGE, HIGH, RANDOM };
|
||||
NOXREF NOBODY const char *GetRandomBotName(SkillType skill);
|
||||
NOXREF const char *GetRandomBotName(SkillType skill);
|
||||
|
||||
static void MonitorBotCVars(void);
|
||||
static void MaintainBotQuota(void);
|
||||
NOBODY static bool AddBot(const BotProfile *profile, BotProfileTeamType team);
|
||||
static bool AddBot(const BotProfile *profile, BotProfileTeamType team);
|
||||
|
||||
#define FROM_CONSOLE true
|
||||
static bool BotAddCommand(BotProfileTeamType team, bool isFromConsole = false); // process the "bot_add" console command
|
||||
|
@ -342,24 +342,11 @@ void EndRoundMessage(const char *sentence, int event)
|
||||
{
|
||||
if (teamTriggered)
|
||||
{
|
||||
UTIL_LogPrintf
|
||||
(
|
||||
"Team \"%s\" triggered \"%s\" (CT \"%i\") (T \"%i\")\n",
|
||||
team,
|
||||
message,
|
||||
mp->m_iNumCTWins,
|
||||
mp->m_iNumTerroristWins
|
||||
);
|
||||
UTIL_LogPrintf("Team \"%s\" triggered \"%s\" (CT \"%i\") (T \"%i\")\n", team, message, mp->m_iNumCTWins, mp->m_iNumTerroristWins);
|
||||
}
|
||||
else
|
||||
{
|
||||
UTIL_LogPrintf
|
||||
(
|
||||
"World triggered \"%s\" (CT \"%i\") (T \"%i\")\n",
|
||||
message,
|
||||
mp->m_iNumCTWins,
|
||||
mp->m_iNumTerroristWins
|
||||
);
|
||||
UTIL_LogPrintf("World triggered \"%s\" (CT \"%i\") (T \"%i\")\n", message, mp->m_iNumCTWins, mp->m_iNumTerroristWins);
|
||||
}
|
||||
}
|
||||
|
||||
@ -437,7 +424,6 @@ void ReadMultiplayCvars(CHalfLifeMultiplay *mp)
|
||||
/* <11492c> ../cstrike/dlls/multiplay_gamerules.cpp:479 */
|
||||
CHalfLifeMultiplay::CHalfLifeMultiplay(void)
|
||||
{
|
||||
UNTESTED
|
||||
m_VoiceGameMgr.Init(&g_GameMgrHelper, gpGlobals->maxClients);
|
||||
RefreshSkillData();
|
||||
|
||||
@ -512,7 +498,7 @@ CHalfLifeMultiplay::CHalfLifeMultiplay(void)
|
||||
m_bMapHasRescueZone = false;
|
||||
m_iStoredSpectValue = (int)allow_spectators.value;
|
||||
|
||||
for (int j = 0; j < MAX_VIP_QUEUES; j++)
|
||||
for (int j = 0; j < MAX_VIP_QUEUES; ++j)
|
||||
{
|
||||
VIPQueue[j] = NULL;
|
||||
}
|
||||
@ -860,14 +846,7 @@ void CHalfLifeMultiplay::__MAKE_VHOOK(GiveC4)(void)
|
||||
player->HintMessage("#Hint_you_have_the_bomb", FALSE, TRUE);
|
||||
|
||||
// Log this information
|
||||
UTIL_LogPrintf
|
||||
(
|
||||
"\"%s<%i><%s><TERRORIST>\" triggered \"Spawned_With_The_Bomb\"\n",
|
||||
STRING(player->pev->netname),
|
||||
GETPLAYERUSERID(player->edict()),
|
||||
GETPLAYERAUTHID(player->edict())
|
||||
);
|
||||
|
||||
UTIL_LogPrintf("\"%s<%i><%s><TERRORIST>\" triggered \"Spawned_With_The_Bomb\"\n", STRING(player->pev->netname), GETPLAYERUSERID(player->edict()), GETPLAYERAUTHID(player->edict()));
|
||||
m_bBombDropped = FALSE;
|
||||
}
|
||||
}
|
||||
@ -903,14 +882,7 @@ void CHalfLifeMultiplay::__MAKE_VHOOK(GiveC4)(void)
|
||||
player->HintMessage("#Hint_you_have_the_bomb", FALSE, TRUE);
|
||||
|
||||
// Log this information
|
||||
UTIL_LogPrintf
|
||||
(
|
||||
"\"%s<%i><%s><TERRORIST>\" triggered \"Spawned_With_The_Bomb\"\n",
|
||||
STRING(player->pev->netname),
|
||||
GETPLAYERUSERID(player->edict()),
|
||||
GETPLAYERAUTHID(player->edict())
|
||||
);
|
||||
|
||||
UTIL_LogPrintf("\"%s<%i><%s><TERRORIST>\" triggered \"Spawned_With_The_Bomb\"\n", STRING(player->pev->netname), GETPLAYERUSERID(player->edict()), GETPLAYERAUTHID(player->edict()));
|
||||
m_bBombDropped = FALSE;
|
||||
return;
|
||||
}
|
||||
@ -2546,9 +2518,7 @@ void CHalfLifeMultiplay::__MAKE_VHOOK(Think)(void)
|
||||
pPlayer->m_iHideHUD |= HIDEHUD_ALL;
|
||||
m_fTeamCount = gpGlobals->time + 100000.0;
|
||||
|
||||
UTIL_LogPrintf("Career Round %d %d %d %d\n", m_iRoundWinStatus, m_iNumCTWins,
|
||||
m_iNumTerroristWins, TheCareerTasks->AreAllTasksComplete());
|
||||
|
||||
UTIL_LogPrintf("Career Round %d %d %d %d\n", m_iRoundWinStatus, m_iNumCTWins, m_iNumTerroristWins, TheCareerTasks->AreAllTasksComplete());
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -2624,7 +2594,6 @@ void CHalfLifeMultiplay::__MAKE_VHOOK(Think)(void)
|
||||
MESSAGE_END();
|
||||
|
||||
UTIL_LogPrintf("Career Match %d %d %d %d\n", m_iRoundWinStatus, m_iNumCTWins, m_iNumTerroristWins, TheCareerTasks->AreAllTasksComplete());
|
||||
|
||||
SERVER_COMMAND("setpause\n");
|
||||
}
|
||||
}
|
||||
@ -2959,19 +2928,8 @@ void CHalfLifeMultiplay::CheckRestartRound(void)
|
||||
|
||||
// log the restart
|
||||
UTIL_LogPrintf("World triggered \"Restart_Round_(%i_%s)\"\n", iRestartDelay, (iRestartDelay == 1) ? "second" : "seconds");
|
||||
UTIL_LogPrintf
|
||||
(
|
||||
"Team \"CT\" scored \"%i\" with \"%i\" players\n",
|
||||
m_iNumCTWins,
|
||||
m_iNumCT
|
||||
);
|
||||
|
||||
UTIL_LogPrintf
|
||||
(
|
||||
"Team \"TERRORIST\" scored \"%i\" with \"%i\" players\n",
|
||||
m_iNumTerroristWins,
|
||||
m_iNumTerrorist
|
||||
);
|
||||
UTIL_LogPrintf("Team \"CT\" scored \"%i\" with \"%i\" players\n", m_iNumCTWins, m_iNumCT);
|
||||
UTIL_LogPrintf("Team \"TERRORIST\" scored \"%i\" with \"%i\" players\n", m_iNumTerroristWins, m_iNumTerrorist);
|
||||
|
||||
// let the players know
|
||||
UTIL_ClientPrintAll(HUD_PRINTCENTER, "#Game_will_restart_in", UTIL_dtos1(iRestartDelay), (iRestartDelay == 1) ? "SECOND" : "SECONDS");
|
||||
@ -3211,13 +3169,7 @@ void CHalfLifeMultiplay::__MAKE_VHOOK(InitHUD)(CBasePlayer *pl)
|
||||
int i;
|
||||
|
||||
// notify other clients of player joining the game
|
||||
UTIL_LogPrintf
|
||||
(
|
||||
"\"%s<%i><%s><>\" entered the game\n",
|
||||
STRING(pl->pev->netname),
|
||||
GETPLAYERUSERID(pl->edict()),
|
||||
GETPLAYERAUTHID(pl->edict())
|
||||
);
|
||||
UTIL_LogPrintf("\"%s<%i><%s><>\" entered the game\n", STRING(pl->pev->netname), GETPLAYERUSERID(pl->edict()), GETPLAYERAUTHID(pl->edict()));
|
||||
|
||||
UpdateGameMode(pl);
|
||||
|
||||
@ -3417,14 +3369,7 @@ void CHalfLifeMultiplay::__MAKE_VHOOK(ClientDisconnected)(edict_t *pClient)
|
||||
char *team = GetTeam(pPlayer->m_iTeam);
|
||||
|
||||
FireTargets("game_playerleave", pPlayer, pPlayer, USE_TOGGLE, 0);
|
||||
UTIL_LogPrintf
|
||||
(
|
||||
"\"%s<%i><%s><%s>\" disconnected\n",
|
||||
STRING(pPlayer->pev->netname),
|
||||
GETPLAYERUSERID(pPlayer->edict()),
|
||||
GETPLAYERAUTHID(pPlayer->edict()),
|
||||
team
|
||||
);
|
||||
UTIL_LogPrintf("\"%s<%i><%s><%s>\" disconnected\n", STRING(pPlayer->pev->netname), GETPLAYERUSERID(pPlayer->edict()), GETPLAYERAUTHID(pPlayer->edict()), team);
|
||||
|
||||
// destroy all of the players weapons and items
|
||||
pPlayer->RemoveAllItems(TRUE);
|
||||
@ -3740,13 +3685,7 @@ void CHalfLifeMultiplay::__MAKE_VHOOK(PlayerKilled)(CBasePlayer *pVictim, entvar
|
||||
WRITE_LONG(DRC_FLAG_PRIO_MASK | DRC_FLAG_DRAMATIC | DRC_FLAG_FINAL);
|
||||
MESSAGE_END();
|
||||
|
||||
UTIL_LogPrintf
|
||||
(
|
||||
"\"%s<%i><%s><TERRORIST>\" triggered \"Assassinated_The_VIP\"\n",
|
||||
STRING(killer->pev->netname),
|
||||
GETPLAYERUSERID(killer->edict()),
|
||||
GETPLAYERAUTHID(killer->edict())
|
||||
);
|
||||
UTIL_LogPrintf("\"%s<%i><%s><TERRORIST>\" triggered \"Assassinated_The_VIP\"\n", STRING(killer->pev->netname), GETPLAYERUSERID(killer->edict()), GETPLAYERAUTHID(killer->edict()));
|
||||
}
|
||||
else
|
||||
killer->AddAccount(REWARD_KILLED_ENEMY);
|
||||
@ -3874,16 +3813,8 @@ void CHalfLifeMultiplay::__MAKE_VHOOK(DeathNotice)(CBasePlayer *pVictim, entvars
|
||||
{
|
||||
// killed self
|
||||
char *team = GetTeam(pVictim->m_iTeam);
|
||||
|
||||
UTIL_LogPrintf
|
||||
(
|
||||
"\"%s<%i><%s><%s>\" committed suicide with \"%s\"\n",
|
||||
STRING(pVictim->pev->netname),
|
||||
GETPLAYERUSERID(pVictim->edict()),
|
||||
GETPLAYERAUTHID(pVictim->edict()),
|
||||
team,
|
||||
killer_weapon_name
|
||||
);
|
||||
UTIL_LogPrintf("\"%s<%i><%s><%s>\" committed suicide with \"%s\"\n", STRING(pVictim->pev->netname), GETPLAYERUSERID(pVictim->edict()),
|
||||
GETPLAYERAUTHID(pVictim->edict()), team, killer_weapon_name);
|
||||
}
|
||||
else if (pKiller->flags & FL_CLIENT)
|
||||
{
|
||||
@ -3892,34 +3823,15 @@ void CHalfLifeMultiplay::__MAKE_VHOOK(DeathNotice)(CBasePlayer *pVictim, entvars
|
||||
char *VictimTeam = GetTeam(pVictim->m_iTeam);
|
||||
char *KillerTeam = GetTeam(pPlayer->m_iTeam);
|
||||
|
||||
UTIL_LogPrintf
|
||||
(
|
||||
"\"%s<%i><%s><%s>\" killed \"%s<%i><%s><%s>\" with \"%s\"\n",
|
||||
STRING(pKiller->netname),
|
||||
GETPLAYERUSERID(ENT(pKiller)),
|
||||
GETPLAYERAUTHID(ENT(pKiller)),
|
||||
KillerTeam,
|
||||
STRING(pVictim->pev->netname),
|
||||
GETPLAYERUSERID(pVictim->edict()),
|
||||
GETPLAYERAUTHID(pVictim->edict()),
|
||||
VictimTeam,
|
||||
killer_weapon_name
|
||||
);
|
||||
UTIL_LogPrintf("\"%s<%i><%s><%s>\" killed \"%s<%i><%s><%s>\" with \"%s\"\n", STRING(pKiller->netname), GETPLAYERUSERID(ENT(pKiller)), GETPLAYERAUTHID(ENT(pKiller)),
|
||||
KillerTeam, STRING(pVictim->pev->netname), GETPLAYERUSERID(pVictim->edict()), GETPLAYERAUTHID(pVictim->edict()), VictimTeam, killer_weapon_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
// killed by the world
|
||||
char *team = GetTeam(pVictim->m_iTeam);
|
||||
|
||||
UTIL_LogPrintf
|
||||
(
|
||||
"\"%s<%i><%s><%s>\" committed suicide with \"%s\" (world)\n",
|
||||
STRING(pVictim->pev->netname),
|
||||
GETPLAYERUSERID(pVictim->edict()),
|
||||
GETPLAYERAUTHID(pVictim->edict()),
|
||||
team,
|
||||
killer_weapon_name
|
||||
);
|
||||
UTIL_LogPrintf("\"%s<%i><%s><%s>\" committed suicide with \"%s\" (world)\n", STRING(pVictim->pev->netname), GETPLAYERUSERID(pVictim->edict()),
|
||||
GETPLAYERAUTHID(pVictim->edict()), team, killer_weapon_name);
|
||||
}
|
||||
|
||||
CheckWinConditions();
|
||||
|
@ -140,12 +140,12 @@ FunctionHook g_FunctionHooks[] =
|
||||
{ 0x01DB6710, "PM_Init", (size_t)&PM_Init },
|
||||
{ 0x01DB1020, "PM_FindTextureType", (size_t)&PM_FindTextureType },
|
||||
//pm_debug
|
||||
//{ 0x0, "PM_ShowClipBox", (size_t)&PM_ShowClipBox },
|
||||
//{ 0x0, "PM_ParticleLine", (size_t)&PM_ParticleLine },
|
||||
//{ 0x0, "PM_DrawRectangle", (size_t)&PM_DrawRectangle },
|
||||
//{ 0x0, "PM_DrawPhysEntBBox", (size_t)&PM_DrawPhysEntBBox },
|
||||
//{ 0x0, "PM_DrawBBox", (size_t)&PM_DrawBBox },
|
||||
//{ 0x0, "PM_ViewEntity", (size_t)&PM_ViewEntity },
|
||||
//{ 0x01DAEEE0, "PM_ShowClipBox", (size_t)&PM_ShowClipBox }, // NOXREF
|
||||
//{ 0x01DAEEF0, "PM_ParticleLine", (size_t)&PM_ParticleLine }, // NOXREF
|
||||
//{ 0x01DAEFC0, "PM_DrawRectangle", (size_t)&PM_DrawRectangle }, // NOXREF
|
||||
//{ 0x01DAF290, "PM_DrawPhysEntBBox", (size_t)&PM_DrawPhysEntBBox }, // NOXREF
|
||||
//{ 0x01DAFB50, "PM_DrawBBox", (size_t)&PM_DrawBBox }, // NOXREF
|
||||
//{ 0x01DAFF20, "PM_ViewEntity", (size_t)&PM_ViewEntity }, // NOXREF
|
||||
//pm_shared
|
||||
//{ 0x01DB0AB0, "PM_SwapTextures", (size_t)&PM_SwapTextures }, // NOXREF
|
||||
//{ 0x01DB0B30, "PM_IsThereGrassTexture", (size_t)&PM_IsThereGrassTexture }, // NOXREF
|
||||
@ -203,28 +203,28 @@ FunctionHook g_FunctionHooks[] =
|
||||
//pm_math
|
||||
//{ 0x0, "anglemod", (size_t)&anglemod },
|
||||
{ 0x01DB0000, "AngleVectors", (size_t)&AngleVectors },
|
||||
//{ 0x0, "AngleVectorsTranspose", (size_t)&AngleVectorsTranspose },
|
||||
//{ 0x01DB0100, "AngleVectorsTranspose", (size_t)&AngleVectorsTranspose }, // NOXREF
|
||||
{ 0x01DB0200, "AngleMatrix", (size_t)&AngleMatrix },
|
||||
//{ 0x0, "AngleIMatrix", (size_t)&AngleIMatrix },
|
||||
//{ 0x0, "NormalizeAngles", (size_t)&NormalizeAngles },
|
||||
//{ 0x0, "InterpolateAngles", (size_t)&InterpolateAngles },
|
||||
//{ 0x0, "AngleBetweenVectors", (size_t)&AngleBetweenVectors },
|
||||
//{ 0x0, "VectorTransform", (size_t)&VectorTransform },
|
||||
//{ 0x01DB02D0, "AngleIMatrix", (size_t)&AngleIMatrix }, // NOXREF
|
||||
//{ 0x01DB03A0, "NormalizeAngles", (size_t)&NormalizeAngles }, // NOXREF
|
||||
//{ 0x01DB03F0, "InterpolateAngles", (size_t)&InterpolateAngles }, // NOXREF
|
||||
//{ 0x01DB0510, "AngleBetweenVectors", (size_t)&AngleBetweenVectors }, // NOXREF
|
||||
//{ 0x01DB05B0, "VectorTransform", (size_t)&VectorTransform }, // NOXREF
|
||||
{ 0x01DB0610, "VectorCompare", (size_t)&VectorCompare },
|
||||
{ 0x01DB0640, "VectorMA", (size_t)&VectorMA },
|
||||
//{ 0x01DB0680, "_DotProduct", (size_t)&_DotProduct }, // NOXREF
|
||||
//{ 0x01DB06A0, "_VectorSubtract", (size_t)&_VectorSubtract }, // NOXREF
|
||||
//{ 0x01DB06D0, "_VectorAdd", (size_t)&_VectorAdd }, // NOXREF
|
||||
//{ 0x01DB0700, "_VectorCopy", (size_t)&_VectorCopy }, // NOXREF
|
||||
//{ 0x01DB0720, "CrossProduct", (size_t)&_CrossProduct }, // NOXREF
|
||||
//{ 0x01DB0680, "_DotProduct", (size_t)&_DotProduct }, // NOXREF
|
||||
//{ 0x01DB06A0, "_VectorSubtract", (size_t)&_VectorSubtract }, // NOXREF
|
||||
//{ 0x01DB06D0, "_VectorAdd", (size_t)&_VectorAdd }, // NOXREF
|
||||
//{ 0x01DB0700, "_VectorCopy", (size_t)&_VectorCopy }, // NOXREF
|
||||
//{ 0x01DB0720, "CrossProduct", (size_t)&_CrossProduct }, // NOXREF
|
||||
{ 0x01DB0760, "Length", (size_t)&Length },
|
||||
//{ 0x0, "Distance", (size_t)&Distance },
|
||||
//{ 0x01DB0780, "Distance", (size_t)&Distance }, // NOXREF
|
||||
{ 0x01DB07D0, "VectorNormalize", (size_t)&VectorNormalize },
|
||||
//{ 0x0, "VectorInverse", (size_t)&VectorInverse },
|
||||
//{ 0x01DB0820, "VectorInverse", (size_t)&VectorInverse },
|
||||
{ 0x01DB0840, "VectorScale", (size_t)&VectorScale },
|
||||
//{ 0x0, "Q_log2", (size_t)&Q_log2 },
|
||||
//{ 0x0, "VectorMatrix", (size_t)&VectorMatrix },
|
||||
//{ 0x0, "VectorAngles", (size_t)&VectorAngles },
|
||||
//{ 0x01DB0870, "Q_log2", (size_t)&Q_log2 },
|
||||
//{ 0x01DB0880, "VectorMatrix", (size_t)&VectorMatrix },
|
||||
//{ 0x01DB09D0, "VectorAngles", (size_t)&VectorAngles },
|
||||
|
||||
#endif // PM_Shared_Region
|
||||
|
||||
|
@ -1,5 +1,10 @@
|
||||
#include "precompiled.h"
|
||||
|
||||
#undef vec3_t
|
||||
|
||||
// Expand debugging BBOX particle hulls by this many units.
|
||||
#define BOX_GAP 0.0f
|
||||
|
||||
static int PM_boxpnt[6][4] =
|
||||
{
|
||||
{ 0, 4, 6, 2 }, // +X
|
||||
@ -11,73 +16,233 @@ static int PM_boxpnt[6][4] =
|
||||
};
|
||||
|
||||
/* <2d0110> ../cstrike/pm_shared/pm_debug.c:43 */
|
||||
NOBODY void PM_ShowClipBox(void)
|
||||
void PM_ShowClipBox(void)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
if (!pmove->runfuncs)
|
||||
return;
|
||||
|
||||
// More debugging, draw the particle bbox for player and for the entity we are looking directly at.
|
||||
// aslo prints entity info to the console overlay.
|
||||
if (!pmove->server)
|
||||
return;
|
||||
|
||||
// Draw entity in center of view
|
||||
// Also draws the normal to the clip plane that intersects our movement ray. Leaves a particle
|
||||
// trail at the intersection point.
|
||||
PM_ViewEntity();
|
||||
|
||||
// Show our BBOX in particles.
|
||||
//PM_DrawBBox(pmove->player_mins[pmove->usehull], pmove->player_maxs[pmove->usehull], pmove->origin, 132, 0.1);
|
||||
/*
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < pmove->numphysent; i++)
|
||||
{
|
||||
if (pmove->physents[ i ].info >= 1 && pmove->physents[ i ].info <= 4)
|
||||
{
|
||||
PM_DrawBBox(pmove->player_mins[pmove->usehull], pmove->player_maxs[pmove->usehull], pmove->physents[i].origin, 132, 0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
#endif // _DEBUG
|
||||
}
|
||||
|
||||
/* <2d0012> ../cstrike/pm_shared/pm_debug.c:82 */
|
||||
NOBODY void PM_ParticleLine(vec3_t start, vec3_t end, int pcolor, float life, float vert)
|
||||
void PM_ParticleLine(vec3_t start, vec3_t end, int pcolor, float life, float vert)
|
||||
{
|
||||
// float linestep; // 84
|
||||
// float curdist; // 85
|
||||
// float len; // 86
|
||||
// vec3_t curpos; // 87
|
||||
// vec3_t diff; // 88
|
||||
// int i; // 89
|
||||
float linestep = 2.0f;
|
||||
float curdist;
|
||||
float len;
|
||||
vec3_t curpos;
|
||||
vec3_t diff;
|
||||
int i;
|
||||
// Determine distance;
|
||||
|
||||
VectorSubtract(end, start, diff);
|
||||
|
||||
len = VectorNormalize(diff);
|
||||
|
||||
curdist = 0;
|
||||
while (curdist <= len)
|
||||
{
|
||||
for (i = 0; i < 3; ++i)
|
||||
curpos[i] = start[i] + curdist * diff[i];
|
||||
|
||||
pmove->PM_Particle(curpos, pcolor, life, 0, vert);
|
||||
curdist += linestep;
|
||||
}
|
||||
}
|
||||
|
||||
/* <2d0197> ../cstrike/pm_shared/pm_debug.c:114 */
|
||||
NOBODY void PM_DrawRectangle(vec3_t tl, vec3_t bl, vec3_t tr, vec3_t br, int pcolor, float life)
|
||||
void PM_DrawRectangle(vec3_t tl, vec3_t bl, vec3_t tr, vec3_t br, int pcolor, float life)
|
||||
{
|
||||
PM_ParticleLine(tl, bl, pcolor, life, 0);
|
||||
PM_ParticleLine(bl, br, pcolor, life, 0);
|
||||
PM_ParticleLine(br, tr, pcolor, life, 0);
|
||||
PM_ParticleLine(tr, tl, pcolor, life, 0);
|
||||
}
|
||||
|
||||
/* <2cff57> ../cstrike/pm_shared/pm_debug.c:128 */
|
||||
NOBODY void PM_DrawPhysEntBBox(int num, int pcolor, float life)
|
||||
void PM_DrawPhysEntBBox(int num, int pcolor, float life)
|
||||
{
|
||||
// physent_t *pe; // 130
|
||||
// vec3_t org; // 131
|
||||
// int j; // 132
|
||||
// vec3_t tmp; // 133
|
||||
// vec_t p; // 134
|
||||
// float gap; // 135
|
||||
// vec3_t modelmins; // 136
|
||||
// vec3_t modelmaxs; // 136
|
||||
// {
|
||||
// vec3_t forward; // 161
|
||||
// vec3_t right; // 161
|
||||
// vec3_t up; // 161
|
||||
// }
|
||||
physent_t *pe;
|
||||
vec3_t org;
|
||||
int j;
|
||||
vec3_t tmp;
|
||||
vec3_t p[8];
|
||||
float gap = BOX_GAP;
|
||||
vec3_t modelmins, modelmaxs;
|
||||
|
||||
if (num >= pmove->numphysent || num <= 0)
|
||||
return;
|
||||
|
||||
pe = &pmove->physents[num];
|
||||
|
||||
if (pe->model)
|
||||
{
|
||||
VectorCopy(pe->origin, org);
|
||||
|
||||
pmove->PM_GetModelBounds(pe->model, modelmins, modelmaxs);
|
||||
for (j = 0; j < 8; ++j)
|
||||
{
|
||||
tmp[0] = (j & 1) ? modelmins[0] - gap : modelmaxs[0] + gap;
|
||||
tmp[1] = (j & 2) ? modelmins[1] - gap : modelmaxs[1] + gap;
|
||||
tmp[2] = (j & 4) ? modelmins[2] - gap : modelmaxs[2] + gap;
|
||||
|
||||
VectorCopy(tmp, p[j]);
|
||||
}
|
||||
|
||||
// If the bbox should be rotated, do that
|
||||
if (pe->angles[0] || pe->angles[1] || pe->angles[2])
|
||||
{
|
||||
vec3_t forward, right, up;
|
||||
|
||||
AngleVectorsTranspose(pe->angles, forward, right, up);
|
||||
for (j = 0; j < 8; ++j)
|
||||
{
|
||||
VectorCopy(p[j], tmp);
|
||||
p[j][0] = DotProduct(tmp, forward);
|
||||
p[j][1] = DotProduct(tmp, right);
|
||||
p[j][2] = DotProduct(tmp, up);
|
||||
}
|
||||
}
|
||||
|
||||
// Offset by entity origin, if any.
|
||||
for (j = 0; j < 8; ++j)
|
||||
VectorAdd(p[j], org, p[j]);
|
||||
|
||||
for (j = 0; j < 6; ++j)
|
||||
{
|
||||
PM_DrawRectangle(
|
||||
p[PM_boxpnt[j][1]],
|
||||
p[PM_boxpnt[j][0]],
|
||||
p[PM_boxpnt[j][2]],
|
||||
p[PM_boxpnt[j][3]],
|
||||
pcolor, life);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (j = 0; j < 8; ++j)
|
||||
{
|
||||
tmp[0] = (j & 1) ? pe->mins[0] : pe->maxs[0];
|
||||
tmp[1] = (j & 2) ? pe->mins[1] : pe->maxs[1];
|
||||
tmp[2] = (j & 4) ? pe->mins[2] : pe->maxs[2];
|
||||
|
||||
VectorAdd(tmp, pe->origin, tmp);
|
||||
VectorCopy(tmp, p[j]);
|
||||
}
|
||||
|
||||
for (j = 0; j < 6; ++j)
|
||||
{
|
||||
PM_DrawRectangle(
|
||||
p[PM_boxpnt[j][1]],
|
||||
p[PM_boxpnt[j][0]],
|
||||
p[PM_boxpnt[j][2]],
|
||||
p[PM_boxpnt[j][3]],
|
||||
pcolor, life);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* <2d030c> ../cstrike/pm_shared/pm_debug.c:218 */
|
||||
NOBODY void PM_DrawBBox(vec3_t mins, vec3_t maxs, vec3_t origin, int pcolor, float life)
|
||||
void PM_DrawBBox(vec3_t mins, vec3_t maxs, vec3_t origin, int pcolor, float life)
|
||||
{
|
||||
// int j; // 220
|
||||
// vec3_t tmp; // 222
|
||||
// vec_t p; // 223
|
||||
// float gap; // 224
|
||||
// PM_DrawRectangle(vec3_t tl,
|
||||
// vec3_t bl,
|
||||
// vec3_t tr,
|
||||
// vec3_t br,
|
||||
// int pcolor,
|
||||
// float life); // 238
|
||||
int j;
|
||||
|
||||
vec3_t tmp;
|
||||
vec3_t p[8];
|
||||
float gap = BOX_GAP;
|
||||
|
||||
for (j = 0; j < 8; ++j)
|
||||
{
|
||||
tmp[0] = (j & 1) ? mins[0] - gap : maxs[0] + gap;
|
||||
tmp[1] = (j & 2) ? mins[1] - gap : maxs[1] + gap;
|
||||
tmp[2] = (j & 4) ? mins[2] - gap : maxs[2] + gap;
|
||||
|
||||
VectorAdd(tmp, origin, tmp);
|
||||
VectorCopy(tmp, p[j]);
|
||||
}
|
||||
|
||||
for (j = 0; j < 6; ++j)
|
||||
{
|
||||
PM_DrawRectangle(
|
||||
p[PM_boxpnt[j][1]],
|
||||
p[PM_boxpnt[j][0]],
|
||||
p[PM_boxpnt[j][2]],
|
||||
p[PM_boxpnt[j][3]],
|
||||
pcolor, life);
|
||||
}
|
||||
}
|
||||
|
||||
// Shows a particle trail from player to entity in crosshair.
|
||||
// Shows particles at that entities bbox
|
||||
// Tries to shoot a ray out by about 128 units.
|
||||
|
||||
/* <2d03e9> ../cstrike/pm_shared/pm_debug.c:260 */
|
||||
NOBODY void PM_ViewEntity(void)
|
||||
void PM_ViewEntity(void)
|
||||
{
|
||||
// vec3_t forward; // 262
|
||||
// vec3_t right; // 262
|
||||
// vec3_t up; // 262
|
||||
// float raydist; // 263
|
||||
// vec3_t origin; // 264
|
||||
// vec3_t end; // 265
|
||||
// int i; // 266
|
||||
// pmtrace_t trace; // 267
|
||||
// int pcolor; // 268
|
||||
// float fup; // 269
|
||||
// PM_DrawPhysEntBBox(int num,
|
||||
// int pcolor,
|
||||
// float life); // 294
|
||||
vec3_t forward, right, up;
|
||||
float raydist = 256.0f;
|
||||
vec3_t origin;
|
||||
vec3_t end;
|
||||
int i;
|
||||
pmtrace_t trace;
|
||||
int pcolor = 77;
|
||||
float fup;
|
||||
|
||||
#if 0
|
||||
if (!pm_showclip.value)
|
||||
return;
|
||||
#endif
|
||||
|
||||
// Determine movement angles
|
||||
AngleVectors(pmove->angles, forward, right, up);
|
||||
|
||||
VectorCopy(pmove->origin, origin);
|
||||
|
||||
fup = 0.5 * (pmove->_player_mins[pmove->usehull][2] + pmove->_player_maxs[pmove->usehull][2]);
|
||||
fup += pmove->view_ofs[2];
|
||||
fup -= 4;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
end[i] = origin[i] + raydist * forward[i];
|
||||
}
|
||||
|
||||
trace = pmove->PM_PlayerTrace(origin, end, PM_STUDIO_BOX, -1);
|
||||
|
||||
// Not the world
|
||||
if (trace.ent > 0)
|
||||
{
|
||||
pcolor = 111;
|
||||
}
|
||||
|
||||
// Draw the hull or bbox.
|
||||
if (trace.ent > 0)
|
||||
{
|
||||
PM_DrawPhysEntBBox(trace.ent, pcolor, 0.3f);
|
||||
}
|
||||
}
|
||||
|
@ -32,11 +32,11 @@
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
NOBODY void PM_ShowClipBox(void);
|
||||
NOBODY void PM_ParticleLine(vec3_t start, vec3_t end, int pcolor, float life, float vert);
|
||||
NOBODY void PM_DrawRectangle(vec3_t tl, vec3_t bl, vec3_t tr, vec3_t br, int pcolor, float life);
|
||||
NOBODY void PM_DrawPhysEntBBox(int num, int pcolor, float life);
|
||||
NOBODY void PM_DrawBBox(vec3_t mins, vec3_t maxs, vec3_t origin, int pcolor, float life);
|
||||
NOBODY void PM_ViewEntity(void);
|
||||
void PM_ShowClipBox(void);
|
||||
void PM_ParticleLine(vec3_t start, vec3_t end, int pcolor, float life, float vert);
|
||||
void PM_DrawRectangle(vec3_t tl, vec3_t bl, vec3_t tr, vec3_t br, int pcolor, float life);
|
||||
void PM_DrawPhysEntBBox(int num, int pcolor, float life);
|
||||
void PM_DrawBBox(vec3_t mins, vec3_t maxs, vec3_t origin, int pcolor, float life);
|
||||
void PM_ViewEntity(void);
|
||||
|
||||
#endif // PM_DEBUG_H
|
||||
|
@ -16,7 +16,7 @@ int nanmask;
|
||||
#endif // HOOK_GAMEDLL
|
||||
|
||||
/* <2ce436> ../cstrike/pm_shared/pm_math.c:35 */
|
||||
NOBODY float anglemod(float a)
|
||||
float anglemod(float a)
|
||||
{
|
||||
a = (360.0 / 65536) * ((int)(a *(65536 / 360.0)) & 65535);
|
||||
return a;
|
||||
@ -63,15 +63,39 @@ void AngleVectors(const vec_t *angles, vec_t *forward, vec_t *right, vec_t *up)
|
||||
}
|
||||
|
||||
/* <2ce521> ../cstrike/pm_shared/pm_math.c:76 */
|
||||
NOBODY void AngleVectorsTranspose(const vec_t *angles, vec_t *forward, vec_t *right, vec_t *up)
|
||||
void AngleVectorsTranspose(const vec_t *angles, vec_t *forward, vec_t *right, vec_t *up)
|
||||
{
|
||||
// float angle; // 78
|
||||
// float sr; // 79
|
||||
// float sp; // 79
|
||||
// float sy; // 79
|
||||
// float cr; // 79
|
||||
// float cp; // 79
|
||||
// float cy; // 79
|
||||
float angle;
|
||||
float sr, sp, sy, cr, cp, cy;
|
||||
|
||||
angle = angles[YAW] * (M_PI * 2 / 360);
|
||||
sy = sin(angle);
|
||||
cy = cos(angle);
|
||||
angle = angles[PITCH] * (M_PI * 2 / 360);
|
||||
sp = sin(angle);
|
||||
cp = cos(angle);
|
||||
angle = angles[ROLL] * (M_PI * 2 / 360);
|
||||
sr = sin(angle);
|
||||
cr = cos(angle);
|
||||
|
||||
if (forward)
|
||||
{
|
||||
forward[0] = cp * cy;
|
||||
forward[1] = (sr * sp * cy + cr * -sy);
|
||||
forward[2] = (cr * sp * cy + -sr * -sy);
|
||||
}
|
||||
if (right)
|
||||
{
|
||||
right[0] = cp * sy;
|
||||
right[1] = (sr * sp * sy + cr * cy);
|
||||
right[2] = (cr * sp * sy + -sr * cy);
|
||||
}
|
||||
if (up)
|
||||
{
|
||||
up[0] = -sp;
|
||||
up[1] = sr * cp;
|
||||
up[2] = cr * cp;
|
||||
}
|
||||
}
|
||||
|
||||
/* <2ce5d0> ../cstrike/pm_shared/pm_math.c:112 */
|
||||
@ -110,48 +134,111 @@ void AngleMatrix(const vec_t *angles, float (*matrix)[4])
|
||||
}
|
||||
|
||||
/* <2ce67b> ../cstrike/pm_shared/pm_math.c:142 */
|
||||
NOBODY void AngleIMatrix(const vec_t *angles, float (*matrix)[4])
|
||||
void AngleIMatrix(const vec_t *angles, float (*matrix)[4])
|
||||
{
|
||||
// float angle; // 144
|
||||
// float sr; // 145
|
||||
// float sp; // 145
|
||||
// float sy; // 145
|
||||
// float cr; // 145
|
||||
// float cp; // 145
|
||||
// float cy; // 145
|
||||
float angle;
|
||||
float sr, sp, sy, cr, cp, cy;
|
||||
|
||||
angle = angles[YAW] * (M_PI * 2 / 360);
|
||||
sy = sin(angle);
|
||||
cy = cos(angle);
|
||||
angle = angles[PITCH] * (M_PI * 2 / 360);
|
||||
sp = sin(angle);
|
||||
cp = cos(angle);
|
||||
angle = angles[ROLL] * (M_PI * 2 / 360);
|
||||
sr = sin(angle);
|
||||
cr = cos(angle);
|
||||
|
||||
// matrix = (YAW * PITCH) * ROLL
|
||||
matrix[0][0] = cp * cy;
|
||||
matrix[0][1] = cp * sy;
|
||||
matrix[0][2] = -sp;
|
||||
matrix[1][0] = sr * sp * cy + cr * -sy;
|
||||
matrix[1][1] = sr * sp * sy + cr * cy;
|
||||
matrix[1][2] = sr * cp;
|
||||
matrix[2][0] = (cr * sp * cy + -sr * -sy);
|
||||
matrix[2][1] = (cr * sp * sy + -sr * cy);
|
||||
matrix[2][2] = cr * cp;
|
||||
matrix[0][3] = 0.0;
|
||||
matrix[1][3] = 0.0;
|
||||
matrix[2][3] = 0.0;
|
||||
}
|
||||
|
||||
/* <2ce710> ../cstrike/pm_shared/pm_math.c:172 */
|
||||
NOBODY void NormalizeAngles(float *angles)
|
||||
void NormalizeAngles(float *angles)
|
||||
{
|
||||
// int i; // 174
|
||||
int i;
|
||||
// Normalize angles
|
||||
for (i = 0; i < 3; ++i)
|
||||
{
|
||||
if (angles[i] > 180.0)
|
||||
{
|
||||
angles[i] -= 360.0;
|
||||
}
|
||||
else if (angles[i] < -180.0)
|
||||
{
|
||||
angles[i] += 360.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Interpolate Euler angles.
|
||||
// FIXME: Use Quaternions to avoid discontinuities
|
||||
// Frac is 0.0 to 1.0 (i.e., should probably be clamped, but doesn't have to be)
|
||||
|
||||
/* <2ce75f> ../cstrike/pm_shared/pm_math.c:198 */
|
||||
NOBODY void InterpolateAngles(float *start, float *end, float *output, float frac)
|
||||
void InterpolateAngles(float *start, float *end, float *output, float frac)
|
||||
{
|
||||
// int i; // 200
|
||||
// float ang1; // 201
|
||||
// float ang2; // 201
|
||||
// float d; // 202
|
||||
// NormalizeAngles(float *angles); // 204
|
||||
// NormalizeAngles(float *angles); // 205
|
||||
// NormalizeAngles(float *angles); // 225
|
||||
int i;
|
||||
float ang1, ang2;
|
||||
float d;
|
||||
|
||||
NormalizeAngles(start);
|
||||
NormalizeAngles(end);
|
||||
|
||||
for (i = 0; i < 3; ++i)
|
||||
{
|
||||
ang1 = start[i];
|
||||
ang2 = end[i];
|
||||
|
||||
d = ang2 - ang1;
|
||||
if (d > 180)
|
||||
{
|
||||
d -= 360;
|
||||
}
|
||||
else if (d < -180)
|
||||
{
|
||||
d += 360;
|
||||
}
|
||||
|
||||
output[i] = ang1 + d * frac;
|
||||
}
|
||||
|
||||
NormalizeAngles(output);
|
||||
}
|
||||
|
||||
/* <2ce893> ../cstrike/pm_shared/pm_math.c:235 */
|
||||
NOBODY float AngleBetweenVectors(const vec_t *v1, const vec_t *v2)
|
||||
float AngleBetweenVectors(const vec_t *v1, const vec_t *v2)
|
||||
{
|
||||
// float angle; // 237
|
||||
// float l1; // 238
|
||||
// float l2; // 239
|
||||
// Length(const vec_t *v); // 238
|
||||
// Length(const vec_t *v); // 239
|
||||
float angle;
|
||||
float l1 = Length(v1);
|
||||
float l2 = Length(v2);
|
||||
|
||||
if (!l1 || !l2)
|
||||
return 0.0f;
|
||||
|
||||
angle = acos(DotProduct(v1, v2)) / (l1 * l2);
|
||||
angle = (angle * 180.0f) / M_PI;
|
||||
|
||||
return angle;
|
||||
}
|
||||
|
||||
/* <2ce953> ../cstrike/pm_shared/pm_math.c:251 */
|
||||
NOBODY void VectorTransform(const vec_t *in1, float *in2, vec_t *out)
|
||||
void VectorTransform(const vec_t *in1, float (*in2)[4], vec_t *out)
|
||||
{
|
||||
out[0] = _DotProduct(in1, in2[0]) + in2[0][3];
|
||||
out[1] = _DotProduct(in1, in2[1]) + in2[1][3];
|
||||
out[2] = _DotProduct(in1, in2[2]) + in2[2][3];
|
||||
}
|
||||
|
||||
/* <2ce996> ../cstrike/pm_shared/pm_math.c:259 */
|
||||
@ -175,7 +262,7 @@ void VectorMA(const vec_t *veca, float scale, const vec_t *vecb, vec_t *vecc)
|
||||
}
|
||||
|
||||
/* <2cea34> ../cstrike/pm_shared/pm_math.c:278 */
|
||||
float_precision _DotProduct(vec_t *v1, vec_t *v2)
|
||||
float_precision _DotProduct(const vec_t *v1, const vec_t *v2)
|
||||
{
|
||||
return v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2];
|
||||
}
|
||||
@ -225,10 +312,11 @@ float_precision Length(const vec_t *v)
|
||||
}
|
||||
|
||||
/* <2cebc2> ../cstrike/pm_shared/pm_math.c:325 */
|
||||
NOBODY float Distance(const vec_t *v1, const vec_t *v2)
|
||||
float Distance(const vec_t *v1, const vec_t *v2)
|
||||
{
|
||||
// vec_t *d; // 327
|
||||
// Length(const vec_t *v); // 329
|
||||
vec_t d[3];
|
||||
VectorSubtract(v2, v1, d);
|
||||
return Length(d);
|
||||
}
|
||||
|
||||
/* <2cec3c> ../cstrike/pm_shared/pm_math.c:332 */
|
||||
@ -252,8 +340,11 @@ float_precision VectorNormalize(vec_t *v)
|
||||
}
|
||||
|
||||
/* <2ceca2> ../cstrike/pm_shared/pm_math.c:351 */
|
||||
NOBODY void VectorInverse(vec_t *v)
|
||||
void VectorInverse(vec_t *v)
|
||||
{
|
||||
v[0] = -v[0];
|
||||
v[1] = -v[1];
|
||||
v[2] = -v[2];
|
||||
}
|
||||
|
||||
/* <2cecc9> ../cstrike/pm_shared/pm_math.c:358 */
|
||||
@ -265,7 +356,7 @@ void VectorScale(const vec_t *in, vec_t scale, vec_t *out)
|
||||
}
|
||||
|
||||
/* <2ced0f> ../cstrike/pm_shared/pm_math.c:366 */
|
||||
NOBODY int Q_log2(int val)
|
||||
int Q_log2(int val)
|
||||
{
|
||||
int answer = 0;
|
||||
while (val >>= 1)
|
||||
@ -275,23 +366,55 @@ NOBODY int Q_log2(int val)
|
||||
}
|
||||
|
||||
/* <2ced4d> ../cstrike/pm_shared/pm_math.c:374 */
|
||||
NOBODY void VectorMatrix(vec_t *forward, vec_t *right, vec_t *up)
|
||||
void VectorMatrix(vec_t *forward, vec_t *right, vec_t *up)
|
||||
{
|
||||
// vec3_t *tmp; // 376
|
||||
// CrossProduct(const vec_t *v1,
|
||||
// const vec_t *v2,
|
||||
// vec_t *cross); // 390
|
||||
// VectorNormalize(vec_t *v); // 391
|
||||
// CrossProduct(const vec_t *v1,
|
||||
// const vec_t *v2,
|
||||
// vec_t *cross); // 392
|
||||
// VectorNormalize(vec_t *v); // 393
|
||||
vec_t tmp[3];
|
||||
|
||||
if (forward[0] == 0 && forward[1] == 0)
|
||||
{
|
||||
right[0] = 1;
|
||||
right[1] = 0;
|
||||
right[2] = 0;
|
||||
|
||||
up[0] = -forward[2];
|
||||
up[1] = 0;
|
||||
up[2] = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
tmp[0] = 0; tmp[1] = 0; tmp[2] = 1.0;
|
||||
_CrossProduct(forward, tmp, right);
|
||||
VectorNormalize(right);
|
||||
_CrossProduct(right, forward, up);
|
||||
VectorNormalize(up);
|
||||
}
|
||||
|
||||
/* <2cee68> ../cstrike/pm_shared/pm_math.c:398 */
|
||||
NOBODY void VectorAngles(const vec_t *forward, vec_t *angles)
|
||||
void VectorAngles(const vec_t *forward, vec_t *angles)
|
||||
{
|
||||
// float tmp; // 400
|
||||
// float yaw; // 400
|
||||
// float pitch; // 400
|
||||
float tmp, yaw, pitch;
|
||||
|
||||
if (forward[1] == 0 && forward[0] == 0)
|
||||
{
|
||||
yaw = 0;
|
||||
if (forward[2] > 0)
|
||||
pitch = 90;
|
||||
else
|
||||
pitch = 270;
|
||||
}
|
||||
else
|
||||
{
|
||||
yaw = (atan2(forward[1], forward[0]) * 180 / M_PI);
|
||||
if (yaw < 0)
|
||||
yaw += 360;
|
||||
|
||||
tmp = sqrt (forward[0]*forward[0] + forward[1]*forward[1]);
|
||||
pitch = (atan2(forward[2], tmp) * 180 / M_PI);
|
||||
if (pitch < 0)
|
||||
pitch += 360;
|
||||
}
|
||||
|
||||
angles[0] = pitch;
|
||||
angles[1] = yaw;
|
||||
angles[2] = 0;
|
||||
}
|
||||
|
@ -48,32 +48,32 @@ extern int nanmask;
|
||||
|
||||
#define IS_NAN(x) ((*reinterpret_cast<int *>(&(x)) & nanmask) == nanmask)
|
||||
|
||||
NOBODY float anglemod(float a);
|
||||
float anglemod(float a);
|
||||
void AngleVectors(const vec_t *angles, vec_t *forward, vec_t *right, vec_t *up);
|
||||
NOBODY void AngleVectorsTranspose(const vec_t *angles, vec_t *forward, vec_t *right, vec_t *up);
|
||||
void AngleVectorsTranspose(const vec_t *angles, vec_t *forward, vec_t *right, vec_t *up);
|
||||
void AngleMatrix(const vec_t *angles, float (*matrix)[4]);
|
||||
NOBODY void AngleIMatrix(const vec_t *angles, float (*matrix)[4]);
|
||||
NOBODY void NormalizeAngles(float *angles);
|
||||
NOBODY void InterpolateAngles(float *start, float *end, float *output, float frac);
|
||||
NOBODY float AngleBetweenVectors(const vec_t *v1, const vec_t *v2);
|
||||
NOBODY void VectorTransform(const vec_t *in1, float *in2, vec_t *out);
|
||||
void AngleIMatrix(const vec_t *angles, float (*matrix)[4]);
|
||||
void NormalizeAngles(float *angles);
|
||||
void InterpolateAngles(float *start, float *end, float *output, float frac);
|
||||
float AngleBetweenVectors(const vec_t *v1, const vec_t *v2);
|
||||
void VectorTransform(const vec_t *in1, float *in2, vec_t *out);
|
||||
int VectorCompare(const vec_t *v1, const vec_t *v2);
|
||||
void VectorMA(const vec_t *veca, float scale, const vec_t *vecb, vec_t *vecc);
|
||||
|
||||
float_precision _DotProduct(vec_t *v1, vec_t *v2);
|
||||
float_precision _DotProduct(const vec_t *v1, const vec_t *v2);
|
||||
void _VectorSubtract(vec_t *veca, vec_t *vecb, vec_t *out);
|
||||
void _VectorAdd(vec_t *veca, vec_t *vecb, vec_t *out);
|
||||
void _VectorCopy(vec_t *in, vec_t *out);
|
||||
void _CrossProduct(const vec_t *v1, const vec_t *v2, vec_t *cross);
|
||||
|
||||
float_precision Length(const vec_t *v);
|
||||
NOBODY float Distance(const vec_t *v1, const vec_t *v2);
|
||||
float Distance(const vec_t *v1, const vec_t *v2);
|
||||
float_precision VectorNormalize(vec_t *v);
|
||||
|
||||
NOBODY void VectorInverse(vec_t *v);
|
||||
NOBODY void VectorScale(const vec_t *in, vec_t scale, vec_t *out);
|
||||
NOBODY int Q_log2(int val);
|
||||
NOBODY void VectorMatrix(vec_t *forward, vec_t *right, vec_t *up);
|
||||
NOBODY void VectorAngles(const vec_t *forward, vec_t *angles);
|
||||
void VectorInverse(vec_t *v);
|
||||
void VectorScale(const vec_t *in, vec_t scale, vec_t *out);
|
||||
int Q_log2(int val);
|
||||
void VectorMatrix(vec_t *forward, vec_t *right, vec_t *up);
|
||||
void VectorAngles(const vec_t *forward, vec_t *angles);
|
||||
|
||||
#endif // PM_MATH_H
|
||||
|
Loading…
Reference in New Issue
Block a user