summaryrefslogtreecommitdiff
path: root/public/engine/IStaticPropMgr.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /public/engine/IStaticPropMgr.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'public/engine/IStaticPropMgr.h')
-rw-r--r--public/engine/IStaticPropMgr.h100
1 files changed, 100 insertions, 0 deletions
diff --git a/public/engine/IStaticPropMgr.h b/public/engine/IStaticPropMgr.h
new file mode 100644
index 0000000..ed6cc3c
--- /dev/null
+++ b/public/engine/IStaticPropMgr.h
@@ -0,0 +1,100 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef IPROPS_H
+#define IPROPS_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "interface.h"
+#include "mathlib/vector.h"
+#include "utlvector.h"
+#include "basehandle.h"
+
+
+struct vcollide_t;
+struct Ray_t;
+class IClientRenderable;
+class CGameTrace;
+typedef CGameTrace trace_t;
+class IVPhysicsKeyHandler;
+class IPhysicsEnvironment;
+class ICollideable;
+
+
+//-----------------------------------------------------------------------------
+// Interface versions for static props
+//-----------------------------------------------------------------------------
+#define INTERFACEVERSION_STATICPROPMGR_CLIENT "StaticPropMgrClient004"
+#define INTERFACEVERSION_STATICPROPMGR_SERVER "StaticPropMgrServer002"
+
+
+//-----------------------------------------------------------------------------
+// Interface for static props
+//-----------------------------------------------------------------------------
+abstract_class IStaticPropMgr
+{
+public:
+ // Create physics representations of props
+ virtual void CreateVPhysicsRepresentations( IPhysicsEnvironment *physenv, IVPhysicsKeyHandler *pDefaults, void *pGameData ) = 0;
+
+ // Purpose: Trace a ray against the specified static Prop. Returns point of intersection in trace_t
+ virtual void TraceRayAgainstStaticProp( const Ray_t& ray, int staticPropIndex, trace_t& tr ) = 0;
+
+ // Is a base handle a static prop?
+ virtual bool IsStaticProp( IHandleEntity *pHandleEntity ) const = 0;
+ virtual bool IsStaticProp( CBaseHandle handle ) const = 0;
+
+ // returns a collideable interface to static props
+ virtual ICollideable *GetStaticPropByIndex( int propIndex ) = 0;
+};
+
+abstract_class IStaticPropMgrClient : public IStaticPropMgr
+{
+public:
+ // Recomputes the static prop opacity given a view origin
+ virtual void ComputePropOpacity( const Vector &viewOrigin, float factor ) = 0;
+
+ // Adds decals to static props, returns point of decal in trace_t
+ virtual void AddDecalToStaticProp( const Vector& rayStart, const Vector& rayEnd,
+ int staticPropIndex, int decalIndex, bool doTrace, trace_t& tr ) = 0;
+ // Adds/removes shadows from static props
+ virtual void AddShadowToStaticProp( unsigned short shadowHandle, IClientRenderable* pRenderable ) = 0;
+ virtual void RemoveAllShadowsFromStaticProp( IClientRenderable* pRenderable ) = 0;
+
+ // Gets the lighting + material color of a static prop
+ virtual void GetStaticPropMaterialColorAndLighting( trace_t* pTrace,
+ int staticPropIndex, Vector& lighting, Vector& matColor ) = 0;
+
+ //Changes made specifically to support the Portal mod (smack Dave Kircher if something breaks) (Added separately to both client and server to not mess with versioning)
+ //===================================================================
+ virtual void GetAllStaticProps( CUtlVector<ICollideable *> *pOutput ) = 0; //testing function that will eventually be removed
+ virtual void GetAllStaticPropsInAABB( const Vector &vMins, const Vector &vMaxs, CUtlVector<ICollideable *> *pOutput ) = 0; //get all static props that exist wholly or partially in an AABB
+ virtual void GetAllStaticPropsInOBB( const Vector &ptOrigin, const Vector &vExtent1, const Vector &vExtent2, const Vector &vExtent3, CUtlVector<ICollideable *> *pOutput ) = 0; //get all static props that exist wholly or partially in an OBB
+ //===================================================================
+
+ virtual void DrawStaticProps( IClientRenderable **pProps, int count, bool bShadowDepth, bool drawVCollideWireframe ) = 0;
+ virtual void AddColorDecalToStaticProp( Vector const& rayStart, Vector const& rayEnd,
+ int staticPropIndex, int decalIndex, bool doTrace, trace_t& tr, bool bUseColor, Color cColor ) = 0;
+};
+
+class IStaticPropMgrServer : public IStaticPropMgr
+{
+public:
+
+
+ //Changes made specifically to support the Portal mod (smack Dave Kircher if something breaks) (Added separately to both client and server to not mess with versioning)
+ //===================================================================
+ virtual void GetAllStaticProps( CUtlVector<ICollideable *> *pOutput ) = 0; //testing function that will eventually be removed
+ virtual void GetAllStaticPropsInAABB( const Vector &vMins, const Vector &vMaxs, CUtlVector<ICollideable *> *pOutput ) = 0; //get all static props that exist wholly or partially in an AABB
+ virtual void GetAllStaticPropsInOBB( const Vector &ptOrigin, const Vector &vExtent1, const Vector &vExtent2, const Vector &vExtent3, CUtlVector<ICollideable *> *pOutput ) = 0; //get all static props that exist wholly or partially in an OBB
+ //===================================================================
+};
+
+
+#endif // IPROPS_H