93 lines
2.5 KiB
C
93 lines
2.5 KiB
C
|
//========= Copyright <20> 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
|