csgo-2018-source/game/server/ai_hull.h
2021-07-24 21:11:47 -07:00

93 lines
2.4 KiB
C++

//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
//
//=============================================================================//
#ifndef AI_HULL_H
#define AI_HULL_H
#pragma once
class Vector;
//=========================================================
// Link Properties. These hulls must correspond to the hulls
// in AI_Hull.cpp!
//=========================================================
enum Hull_t
{
HULL_HUMAN, // Combine, Stalker, Zombie...
HULL_SMALL_CENTERED, // Scanner
HULL_WIDE_HUMAN, // Vortigaunt
HULL_TINY, // Headcrab
HULL_WIDE_SHORT, // Bullsquid
HULL_MEDIUM, // Cremator
HULL_TINY_CENTERED, // Manhack
HULL_LARGE, // Antlion Guard
HULL_LARGE_CENTERED, // Mortar Synth
//--DONT_DROP flag splits hulls here
HULL_MEDIUM_TALL, // Hunter
HULL_TINY_FLUID, // Blob
HULL_MEDIUMBIG, // Infested drone
//--------------------------------------------
NUM_HULLS,
HULL_NONE // No Hull (appears after num hulls as we don't want to count it)
};
enum Hull_Bits_t
{
bits_HUMAN_HULL = 0x00000001,
bits_SMALL_CENTERED_HULL = 0x00000002,
bits_WIDE_HUMAN_HULL = 0x00000004,
bits_TINY_HULL = 0x00000008,
bits_WIDE_SHORT_HULL = 0x00000010,
bits_MEDIUM_HULL = 0x00000020,
bits_TINY_CENTERED_HULL = 0x00000040,
bits_LARGE_HULL = 0x00000080,
bits_LARGE_CENTERED_HULL = 0x00000100,
bits_DONT_DROP_PLACEHOLDER = 0x00000200,
bits_MEDIUM_TALL_HULL = 0x00000400,
bits_TINY_FLUID_HULL = 0x00000800,
bits_MEDIUMBIG_HULL = 0x00001000,
bits_HULL_BITS_MASK = 0x00001fff, // infested change from 1ff to fff
};
inline int HullToBit( Hull_t hull )
{
if ( hull < HULL_MEDIUM_TALL )
{
// Hull is before where don't drop flag splits the hull flags
return ( 1 << hull );
}
else
{
// Skip over the extra flag taken by don't drop
return ( 1 << ( hull + 1 ) );
}
}
//=============================================================================
// >> CAI_Hull
//=============================================================================
namespace NAI_Hull
{
const Vector &Mins(int id);
const Vector &Maxs(int id);
const Vector &SmallMins(int id);
const Vector &SmallMaxs(int id);
float Length(int id);
float Width(int id);
float Height(int id);
int Bits(int id);
const char* Name(int id);
unsigned int TraceMask(int id);
Hull_t LookupId(const char *szName);
};
#endif // AI_HULL_H