102 lines
3.0 KiB
C
102 lines
3.0 KiB
C
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//=============================================================================//
|
|
|
|
#ifndef AI_DEBUG_H
|
|
#define AI_DEBUG_H
|
|
|
|
#include "ai_debug_shared.h"
|
|
#include "fmtstr.h"
|
|
|
|
#if defined(_WIN32)
|
|
#pragma once
|
|
#endif
|
|
|
|
// This dumps a summary result on exit
|
|
//#define PROFILE_AI 1
|
|
|
|
#define AI_PROFILE_SCOPE_BEGIN(tag) \
|
|
if (0) \
|
|
; \
|
|
else { \
|
|
AI_PROFILE_SCOPE(tag)
|
|
#define AI_PROFILE_SCOPE_BEGIN_(pszName) \
|
|
if (0) \
|
|
; \
|
|
else { \
|
|
AI_PROFILE_SCOPE_(pszName)
|
|
#define AI_PROFILE_SCOPE_END() \
|
|
} \
|
|
do { \
|
|
} while (0)
|
|
|
|
#if defined(VPROF_AI)
|
|
#define VProfAI() true
|
|
#else
|
|
#define VProfAI() false
|
|
#endif
|
|
#if defined(VPROF_AI)
|
|
#include "tier0/vprof.h"
|
|
#define AI_PROFILE_SCOPE(tag) VPROF(#tag)
|
|
#define AI_PROFILE_SCOPE_(pszName) VPROF(pszName)
|
|
#define AI_PROFILE_MEASURE_SCOPE(tag) VPROF(#tag)
|
|
#elif defined(PROFILE_AI)
|
|
#include "tier0/fasttimer.h"
|
|
#define AI_PROFILE_SCOPE(tag) PROFILE_SCOPE(tag)
|
|
#define AI_PROFILE_MEASURE_SCOPE(tag) PROFILE_SCOPE(tag)
|
|
#else
|
|
#define AI_PROFILE_MEASURE_SCOPE(tag) ((void)0)
|
|
#define AI_PROFILE_SCOPE(tag) ((void)0)
|
|
#endif
|
|
|
|
#ifndef AI_PROFILE_SCOPE_
|
|
#define AI_PROFILE_SCOPE_(pszName) ((void)0)
|
|
#endif
|
|
|
|
enum AIMsgFlags { AIMF_IGNORE_SELECTED = 0x01 };
|
|
|
|
void DevMsg(CAI_BaseNPC *pAI, unsigned flags,
|
|
PRINTF_FORMAT_STRING const char *pszFormat, ...) FMTFUNCTION(3, 4);
|
|
void DevMsg(CAI_BaseNPC *pAI, PRINTF_FORMAT_STRING const char *pszFormat, ...)
|
|
FMTFUNCTION(2, 3);
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Use this to perform AI tracelines that are trying to determine LOS
|
|
// between points.
|
|
// LOS checks between entities should use FVisible.
|
|
//-----------------------------------------------------------------------------
|
|
void AI_TraceLOS(const Vector &vecAbsStart, const Vector &vecAbsEnd,
|
|
CBaseEntity *pLooker, trace_t *ptr,
|
|
ITraceFilter *pFilter = NULL);
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#ifdef DEBUG
|
|
extern bool g_fTestSteering;
|
|
#define TestingSteering() g_fTestSteering
|
|
#else
|
|
#define TestingSteering() false
|
|
#endif
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#ifdef _DEBUG
|
|
extern ConVar ai_debug_doors;
|
|
#define AIIsDebuggingDoors(pNPC) (ai_debug_doors.GetBool() && pNPC->m_bSelected)
|
|
#define AIDoorDebugMsg(pNPC, msg) \
|
|
if (!AIIsDebuggingDoors(pNPC)) \
|
|
; \
|
|
else \
|
|
Msg(msg)
|
|
#else
|
|
#define AIIsDebuggingDoors(pNPC) (false)
|
|
#define AIDoorDebugMsg(pNPC, msg) ((void)(0))
|
|
#endif
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#endif // AI_DEBUG_H
|