//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // //============================================================================= #ifndef VIRTUALMESH_H #define VIRTUALMESH_H #ifdef _WIN32 #pragma once #endif // NOTE: These are fixed length to make it easy to fill these out without memory // allocation or storage const int MAX_VIRTUAL_TRIANGLES = 1024; struct virtualmeshlist_t { Vector *pVerts; int indexCount; int triangleCount; int vertexCount; int surfacePropsIndex; byte *pHull; unsigned short indices[MAX_VIRTUAL_TRIANGLES * 3]; }; struct virtualmeshtrianglelist_t { int triangleCount; unsigned short triangleIndices[MAX_VIRTUAL_TRIANGLES * 3]; }; class IVirtualMeshEvent { public: virtual void GetVirtualMesh(void *userData, virtualmeshlist_t *pList) = 0; virtual void GetWorldspaceBounds(void *userData, Vector *pMins, Vector *pMaxs) = 0; virtual void GetTrianglesInSphere(void *userData, const Vector ¢er, float radius, virtualmeshtrianglelist_t *pList) = 0; }; struct virtualmeshparams_t { IVirtualMeshEvent *pMeshEventHandler; void *userData; bool buildOuterHull; }; #endif // VIRTUALMESH_H