aboutsummaryrefslogtreecommitdiff
path: root/sp/src/public/ispatialpartition.h
diff options
context:
space:
mode:
authorJørgen P. Tjernø <[email protected]>2013-12-02 19:31:46 -0800
committerJørgen P. Tjernø <[email protected]>2013-12-02 19:46:31 -0800
commitf56bb35301836e56582a575a75864392a0177875 (patch)
treede61ddd39de3e7df52759711950b4c288592f0dc /sp/src/public/ispatialpartition.h
parentMark some more files as text. (diff)
downloadsource-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz
source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip
Fix line endings. WHAMMY.
Diffstat (limited to 'sp/src/public/ispatialpartition.h')
-rw-r--r--sp/src/public/ispatialpartition.h432
1 files changed, 216 insertions, 216 deletions
diff --git a/sp/src/public/ispatialpartition.h b/sp/src/public/ispatialpartition.h
index 090b0e68..6b6678f7 100644
--- a/sp/src/public/ispatialpartition.h
+++ b/sp/src/public/ispatialpartition.h
@@ -1,216 +1,216 @@
-//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $Revision: $
-// $NoKeywords: $
-//=============================================================================//
-
-#ifndef ISPATIALPARTITION_H
-#define ISPATIALPARTITION_H
-
-#include "interface.h"
-
-//-----------------------------------------------------------------------------
-// forward declarations
-//-----------------------------------------------------------------------------
-
-class Vector;
-struct Ray_t;
-class IHandleEntity;
-
-
-#define INTERFACEVERSION_SPATIALPARTITION "SpatialPartition001"
-
-//-----------------------------------------------------------------------------
-// These are the various partition lists. Note some are server only, some
-// are client only
-//-----------------------------------------------------------------------------
-
-enum
-{
- PARTITION_ENGINE_SOLID_EDICTS = (1 << 0), // every edict_t that isn't SOLID_TRIGGER or SOLID_NOT (and static props)
- PARTITION_ENGINE_TRIGGER_EDICTS = (1 << 1), // every edict_t that IS SOLID_TRIGGER
- PARTITION_CLIENT_SOLID_EDICTS = (1 << 2),
- PARTITION_CLIENT_RESPONSIVE_EDICTS = (1 << 3), // these are client-side only objects that respond to being forces, etc.
- PARTITION_ENGINE_NON_STATIC_EDICTS = (1 << 4), // everything in solid & trigger except the static props, includes SOLID_NOTs
- PARTITION_CLIENT_STATIC_PROPS = (1 << 5),
- PARTITION_ENGINE_STATIC_PROPS = (1 << 6),
- PARTITION_CLIENT_NON_STATIC_EDICTS = (1 << 7), // everything except the static props
-};
-
-// Use this to look for all client edicts.
-#define PARTITION_ALL_CLIENT_EDICTS ( \
- PARTITION_CLIENT_NON_STATIC_EDICTS | \
- PARTITION_CLIENT_STATIC_PROPS | \
- PARTITION_CLIENT_RESPONSIVE_EDICTS | \
- PARTITION_CLIENT_SOLID_EDICTS \
- )
-
-
-// These are the only handles in the spatial partition that the game is controlling (everything but static props)
-// These masks are used to handle updating the dirty spatial partition list in each game DLL
-#define PARTITION_CLIENT_GAME_EDICTS (PARTITION_ALL_CLIENT_EDICTS & ~PARTITION_CLIENT_STATIC_PROPS)
-#define PARTITION_SERVER_GAME_EDICTS (PARTITION_ENGINE_SOLID_EDICTS|PARTITION_ENGINE_TRIGGER_EDICTS|PARTITION_ENGINE_NON_STATIC_EDICTS)
-
-//-----------------------------------------------------------------------------
-// Clients that want to know about all elements within a particular
-// volume must inherit from this
-//-----------------------------------------------------------------------------
-
-enum IterationRetval_t
-{
- ITERATION_CONTINUE = 0,
- ITERATION_STOP,
-};
-
-
-typedef unsigned short SpatialPartitionHandle_t;
-
-// A combination of the PARTITION_ flags above.
-typedef int SpatialPartitionListMask_t;
-
-typedef int SpatialTempHandle_t;
-
-
-//-----------------------------------------------------------------------------
-// Any search in the CSpatialPartition must use this to filter out entities it doesn't want.
-// You're forced to use listMasks because it can filter by listMasks really fast. Any other
-// filtering can be done by EnumElement.
-//-----------------------------------------------------------------------------
-
-class IPartitionEnumerator
-{
-public:
- virtual IterationRetval_t EnumElement( IHandleEntity *pHandleEntity ) = 0;
-};
-
-
-//-----------------------------------------------------------------------------
-// Installs a callback to call right before a spatial partition query occurs
-//-----------------------------------------------------------------------------
-class IPartitionQueryCallback
-{
-public:
- virtual void OnPreQuery_V1() = 0;
- virtual void OnPreQuery( SpatialPartitionListMask_t listMask ) = 0;
- virtual void OnPostQuery( SpatialPartitionListMask_t listMask ) = 0;
-};
-
-
-//-----------------------------------------------------------------------------
-// This is the spatial partition manager, groups objects into buckets
-//-----------------------------------------------------------------------------
-enum
-{
- PARTITION_INVALID_HANDLE = (SpatialPartitionHandle_t)~0
-};
-
-
-abstract_class ISpatialPartition
-{
-public:
- // Add a virtual destructor to silence the clang warning.
- // This is harmless but not important since the only derived class
- // doesn't have a destructor.
- virtual ~ISpatialPartition() {}
-
- // Create/destroy a handle for this dude in our system. Destroy
- // will also remove it from all lists it happens to be in
- virtual SpatialPartitionHandle_t CreateHandle( IHandleEntity *pHandleEntity ) = 0;
-
- // A fast method of creating a handle + inserting into the tree in the right place
- virtual SpatialPartitionHandle_t CreateHandle( IHandleEntity *pHandleEntity,
- SpatialPartitionListMask_t listMask, const Vector& mins, const Vector& maxs ) = 0;
-
- virtual void DestroyHandle( SpatialPartitionHandle_t handle ) = 0;
-
- // Adds, removes an handle from a particular spatial partition list
- // There can be multiple partition lists; each has a unique id
- virtual void Insert( SpatialPartitionListMask_t listMask,
- SpatialPartitionHandle_t handle ) = 0;
- virtual void Remove( SpatialPartitionListMask_t listMask,
- SpatialPartitionHandle_t handle ) = 0;
-
- // Same as calling Remove() then Insert(). For performance-sensitive areas where you want to save a call.
- virtual void RemoveAndInsert( SpatialPartitionListMask_t removeMask, SpatialPartitionListMask_t insertMask,
- SpatialPartitionHandle_t handle ) = 0;
-
- // This will remove a particular handle from all lists
- virtual void Remove( SpatialPartitionHandle_t handle ) = 0;
-
- // Call this when an entity moves...
- virtual void ElementMoved( SpatialPartitionHandle_t handle,
- const Vector& mins, const Vector& maxs ) = 0;
-
- // A fast method to insert + remove a handle from the tree...
- // This is used to suppress collision of a single model..
- virtual SpatialTempHandle_t HideElement( SpatialPartitionHandle_t handle ) = 0;
- virtual void UnhideElement( SpatialPartitionHandle_t handle, SpatialTempHandle_t tempHandle ) = 0;
-
- // Installs callbacks to get called right before a query occurs
- virtual void InstallQueryCallback_V1( IPartitionQueryCallback *pCallback ) = 0;
- virtual void RemoveQueryCallback( IPartitionQueryCallback *pCallback ) = 0;
-
- // Gets all entities in a particular volume...
- // if coarseTest == true, it'll return all elements that are in
- // spatial partitions that intersect the box
- // if coarseTest == false, it'll return only elements that truly intersect
- virtual void EnumerateElementsInBox(
- SpatialPartitionListMask_t listMask,
- const Vector& mins,
- const Vector& maxs,
- bool coarseTest,
- IPartitionEnumerator* pIterator
- ) = 0;
-
- virtual void EnumerateElementsInSphere(
- SpatialPartitionListMask_t listMask,
- const Vector& origin,
- float radius,
- bool coarseTest,
- IPartitionEnumerator* pIterator
- ) = 0;
-
- virtual void EnumerateElementsAlongRay(
- SpatialPartitionListMask_t listMask,
- const Ray_t& ray,
- bool coarseTest,
- IPartitionEnumerator* pIterator
- ) = 0;
-
- virtual void EnumerateElementsAtPoint(
- SpatialPartitionListMask_t listMask,
- const Vector& pt,
- bool coarseTest,
- IPartitionEnumerator* pIterator
- ) = 0;
-
- // For debugging.... suppress queries on particular lists
- virtual void SuppressLists( SpatialPartitionListMask_t nListMask, bool bSuppress ) = 0;
- virtual SpatialPartitionListMask_t GetSuppressedLists() = 0;
-
- virtual void RenderAllObjectsInTree( float flTime ) = 0;
- virtual void RenderObjectsInPlayerLeafs( const Vector &vecPlayerMin, const Vector &vecPlayerMax, float flTime ) = 0;
- virtual void RenderLeafsForRayTraceStart( float flTime ) = 0;
- virtual void RenderLeafsForRayTraceEnd( void ) = 0;
- virtual void RenderLeafsForHullTraceStart( float flTime ) = 0;
- virtual void RenderLeafsForHullTraceEnd( void ) = 0;
- virtual void RenderLeafsForBoxStart( float flTime ) = 0;
- virtual void RenderLeafsForBoxEnd( void ) = 0;
- virtual void RenderLeafsForSphereStart( float flTime ) = 0;
- virtual void RenderLeafsForSphereEnd( void ) = 0;
-
- virtual void RenderObjectsInBox( const Vector &vecMin, const Vector &vecMax, float flTime ) = 0;
- virtual void RenderObjectsInSphere( const Vector &vecCenter, float flRadius, float flTime ) = 0;
- virtual void RenderObjectsAlongRay( const Ray_t& ray, float flTime ) = 0;
-
- virtual void ReportStats( const char *pFileName ) = 0;
-
- virtual void InstallQueryCallback( IPartitionQueryCallback *pCallback ) = 0;
-};
-
-#endif
-
-
-
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $Revision: $
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef ISPATIALPARTITION_H
+#define ISPATIALPARTITION_H
+
+#include "interface.h"
+
+//-----------------------------------------------------------------------------
+// forward declarations
+//-----------------------------------------------------------------------------
+
+class Vector;
+struct Ray_t;
+class IHandleEntity;
+
+
+#define INTERFACEVERSION_SPATIALPARTITION "SpatialPartition001"
+
+//-----------------------------------------------------------------------------
+// These are the various partition lists. Note some are server only, some
+// are client only
+//-----------------------------------------------------------------------------
+
+enum
+{
+ PARTITION_ENGINE_SOLID_EDICTS = (1 << 0), // every edict_t that isn't SOLID_TRIGGER or SOLID_NOT (and static props)
+ PARTITION_ENGINE_TRIGGER_EDICTS = (1 << 1), // every edict_t that IS SOLID_TRIGGER
+ PARTITION_CLIENT_SOLID_EDICTS = (1 << 2),
+ PARTITION_CLIENT_RESPONSIVE_EDICTS = (1 << 3), // these are client-side only objects that respond to being forces, etc.
+ PARTITION_ENGINE_NON_STATIC_EDICTS = (1 << 4), // everything in solid & trigger except the static props, includes SOLID_NOTs
+ PARTITION_CLIENT_STATIC_PROPS = (1 << 5),
+ PARTITION_ENGINE_STATIC_PROPS = (1 << 6),
+ PARTITION_CLIENT_NON_STATIC_EDICTS = (1 << 7), // everything except the static props
+};
+
+// Use this to look for all client edicts.
+#define PARTITION_ALL_CLIENT_EDICTS ( \
+ PARTITION_CLIENT_NON_STATIC_EDICTS | \
+ PARTITION_CLIENT_STATIC_PROPS | \
+ PARTITION_CLIENT_RESPONSIVE_EDICTS | \
+ PARTITION_CLIENT_SOLID_EDICTS \
+ )
+
+
+// These are the only handles in the spatial partition that the game is controlling (everything but static props)
+// These masks are used to handle updating the dirty spatial partition list in each game DLL
+#define PARTITION_CLIENT_GAME_EDICTS (PARTITION_ALL_CLIENT_EDICTS & ~PARTITION_CLIENT_STATIC_PROPS)
+#define PARTITION_SERVER_GAME_EDICTS (PARTITION_ENGINE_SOLID_EDICTS|PARTITION_ENGINE_TRIGGER_EDICTS|PARTITION_ENGINE_NON_STATIC_EDICTS)
+
+//-----------------------------------------------------------------------------
+// Clients that want to know about all elements within a particular
+// volume must inherit from this
+//-----------------------------------------------------------------------------
+
+enum IterationRetval_t
+{
+ ITERATION_CONTINUE = 0,
+ ITERATION_STOP,
+};
+
+
+typedef unsigned short SpatialPartitionHandle_t;
+
+// A combination of the PARTITION_ flags above.
+typedef int SpatialPartitionListMask_t;
+
+typedef int SpatialTempHandle_t;
+
+
+//-----------------------------------------------------------------------------
+// Any search in the CSpatialPartition must use this to filter out entities it doesn't want.
+// You're forced to use listMasks because it can filter by listMasks really fast. Any other
+// filtering can be done by EnumElement.
+//-----------------------------------------------------------------------------
+
+class IPartitionEnumerator
+{
+public:
+ virtual IterationRetval_t EnumElement( IHandleEntity *pHandleEntity ) = 0;
+};
+
+
+//-----------------------------------------------------------------------------
+// Installs a callback to call right before a spatial partition query occurs
+//-----------------------------------------------------------------------------
+class IPartitionQueryCallback
+{
+public:
+ virtual void OnPreQuery_V1() = 0;
+ virtual void OnPreQuery( SpatialPartitionListMask_t listMask ) = 0;
+ virtual void OnPostQuery( SpatialPartitionListMask_t listMask ) = 0;
+};
+
+
+//-----------------------------------------------------------------------------
+// This is the spatial partition manager, groups objects into buckets
+//-----------------------------------------------------------------------------
+enum
+{
+ PARTITION_INVALID_HANDLE = (SpatialPartitionHandle_t)~0
+};
+
+
+abstract_class ISpatialPartition
+{
+public:
+ // Add a virtual destructor to silence the clang warning.
+ // This is harmless but not important since the only derived class
+ // doesn't have a destructor.
+ virtual ~ISpatialPartition() {}
+
+ // Create/destroy a handle for this dude in our system. Destroy
+ // will also remove it from all lists it happens to be in
+ virtual SpatialPartitionHandle_t CreateHandle( IHandleEntity *pHandleEntity ) = 0;
+
+ // A fast method of creating a handle + inserting into the tree in the right place
+ virtual SpatialPartitionHandle_t CreateHandle( IHandleEntity *pHandleEntity,
+ SpatialPartitionListMask_t listMask, const Vector& mins, const Vector& maxs ) = 0;
+
+ virtual void DestroyHandle( SpatialPartitionHandle_t handle ) = 0;
+
+ // Adds, removes an handle from a particular spatial partition list
+ // There can be multiple partition lists; each has a unique id
+ virtual void Insert( SpatialPartitionListMask_t listMask,
+ SpatialPartitionHandle_t handle ) = 0;
+ virtual void Remove( SpatialPartitionListMask_t listMask,
+ SpatialPartitionHandle_t handle ) = 0;
+
+ // Same as calling Remove() then Insert(). For performance-sensitive areas where you want to save a call.
+ virtual void RemoveAndInsert( SpatialPartitionListMask_t removeMask, SpatialPartitionListMask_t insertMask,
+ SpatialPartitionHandle_t handle ) = 0;
+
+ // This will remove a particular handle from all lists
+ virtual void Remove( SpatialPartitionHandle_t handle ) = 0;
+
+ // Call this when an entity moves...
+ virtual void ElementMoved( SpatialPartitionHandle_t handle,
+ const Vector& mins, const Vector& maxs ) = 0;
+
+ // A fast method to insert + remove a handle from the tree...
+ // This is used to suppress collision of a single model..
+ virtual SpatialTempHandle_t HideElement( SpatialPartitionHandle_t handle ) = 0;
+ virtual void UnhideElement( SpatialPartitionHandle_t handle, SpatialTempHandle_t tempHandle ) = 0;
+
+ // Installs callbacks to get called right before a query occurs
+ virtual void InstallQueryCallback_V1( IPartitionQueryCallback *pCallback ) = 0;
+ virtual void RemoveQueryCallback( IPartitionQueryCallback *pCallback ) = 0;
+
+ // Gets all entities in a particular volume...
+ // if coarseTest == true, it'll return all elements that are in
+ // spatial partitions that intersect the box
+ // if coarseTest == false, it'll return only elements that truly intersect
+ virtual void EnumerateElementsInBox(
+ SpatialPartitionListMask_t listMask,
+ const Vector& mins,
+ const Vector& maxs,
+ bool coarseTest,
+ IPartitionEnumerator* pIterator
+ ) = 0;
+
+ virtual void EnumerateElementsInSphere(
+ SpatialPartitionListMask_t listMask,
+ const Vector& origin,
+ float radius,
+ bool coarseTest,
+ IPartitionEnumerator* pIterator
+ ) = 0;
+
+ virtual void EnumerateElementsAlongRay(
+ SpatialPartitionListMask_t listMask,
+ const Ray_t& ray,
+ bool coarseTest,
+ IPartitionEnumerator* pIterator
+ ) = 0;
+
+ virtual void EnumerateElementsAtPoint(
+ SpatialPartitionListMask_t listMask,
+ const Vector& pt,
+ bool coarseTest,
+ IPartitionEnumerator* pIterator
+ ) = 0;
+
+ // For debugging.... suppress queries on particular lists
+ virtual void SuppressLists( SpatialPartitionListMask_t nListMask, bool bSuppress ) = 0;
+ virtual SpatialPartitionListMask_t GetSuppressedLists() = 0;
+
+ virtual void RenderAllObjectsInTree( float flTime ) = 0;
+ virtual void RenderObjectsInPlayerLeafs( const Vector &vecPlayerMin, const Vector &vecPlayerMax, float flTime ) = 0;
+ virtual void RenderLeafsForRayTraceStart( float flTime ) = 0;
+ virtual void RenderLeafsForRayTraceEnd( void ) = 0;
+ virtual void RenderLeafsForHullTraceStart( float flTime ) = 0;
+ virtual void RenderLeafsForHullTraceEnd( void ) = 0;
+ virtual void RenderLeafsForBoxStart( float flTime ) = 0;
+ virtual void RenderLeafsForBoxEnd( void ) = 0;
+ virtual void RenderLeafsForSphereStart( float flTime ) = 0;
+ virtual void RenderLeafsForSphereEnd( void ) = 0;
+
+ virtual void RenderObjectsInBox( const Vector &vecMin, const Vector &vecMax, float flTime ) = 0;
+ virtual void RenderObjectsInSphere( const Vector &vecCenter, float flRadius, float flTime ) = 0;
+ virtual void RenderObjectsAlongRay( const Ray_t& ray, float flTime ) = 0;
+
+ virtual void ReportStats( const char *pFileName ) = 0;
+
+ virtual void InstallQueryCallback( IPartitionQueryCallback *pCallback ) = 0;
+};
+
+#endif
+
+
+