//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #ifndef AI_ROUTEDIST_H #define AI_ROUTEDIST_H #include "ai_navtype.h" #if defined( _WIN32 ) #pragma once #endif // ---------------------------------------------------------------------------- // Computes the route distance + route direction based on nav type // FIXME: Where should this go? // ---------------------------------------------------------------------------- inline float ComputePathDistance( Navigation_t navType, const Vector &start, const Vector &end ) { if (navType == NAV_GROUND) { return (end - start).Length2D(); } else { return (end - start).Length(); } } inline void ComputePathVector( Navigation_t navType, const Vector &start, const Vector &end, Vector *pDelta ) { if (navType == NAV_GROUND) { Vector2DSubtract( end.AsVector2D(), start.AsVector2D(), pDelta->AsVector2D() ); pDelta->z = 0.0f; } else { VectorSubtract( end, start, *pDelta ); } } inline float ComputePathDirection( Navigation_t navType, const Vector &start, const Vector &end, Vector *pDirection ) { if (navType == NAV_GROUND || navType == NAV_CRAWL) { VectorSubtract( end, start, *pDirection ); pDirection->z = 0.0f; return Vector2DNormalize( pDirection->AsVector2D() ); } else { VectorSubtract( end, start, *pDirection ); return VectorNormalize( *pDirection ); } } #endif // AI_ROUTEDIST_H