//========= 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