summaryrefslogtreecommitdiff
path: root/public/tier3
diff options
context:
space:
mode:
Diffstat (limited to 'public/tier3')
-rw-r--r--public/tier3/choreoutils.h39
-rw-r--r--public/tier3/mdlutils.h97
-rw-r--r--public/tier3/scenetokenprocessor.h18
-rw-r--r--public/tier3/tier3.h114
-rw-r--r--public/tier3/tier3dm.h55
5 files changed, 323 insertions, 0 deletions
diff --git a/public/tier3/choreoutils.h b/public/tier3/choreoutils.h
new file mode 100644
index 0000000..b531737
--- /dev/null
+++ b/public/tier3/choreoutils.h
@@ -0,0 +1,39 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Helper methods + classes for choreo
+//
+//===========================================================================//
+
+#ifndef CHOREOUTILS_H
+#define CHOREOUTILS_H
+
+#if defined( _WIN32 )
+#pragma once
+#endif
+
+
+//-----------------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------------
+class CChoreoScene;
+class CChoreoEvent;
+class CStudioHdr;
+
+
+//-----------------------------------------------------------------------------
+// Finds sound files associated with events
+//-----------------------------------------------------------------------------
+const char *GetSoundForEvent( CChoreoEvent *pEvent, CStudioHdr *pStudioHdr );
+
+
+//-----------------------------------------------------------------------------
+// Fixes up the duration of a choreo scene based on wav files + animations
+// Returns true if a change needed to be made
+//-----------------------------------------------------------------------------
+bool AutoAddGestureKeys( CChoreoEvent *e, CStudioHdr *pStudioHdr, float *pPoseParameters, bool bCheckOnly );
+bool UpdateGestureLength( CChoreoEvent *e, CStudioHdr *pStudioHdr, float *pPoseParameters, bool bCheckOnly );
+bool UpdateSequenceLength( CChoreoEvent *e, CStudioHdr *pStudioHdr, float *pPoseParameters, bool bCheckOnly, bool bVerbose );
+
+
+#endif // CHOREOUTILS_H
+
diff --git a/public/tier3/mdlutils.h b/public/tier3/mdlutils.h
new file mode 100644
index 0000000..1e04abd
--- /dev/null
+++ b/public/tier3/mdlutils.h
@@ -0,0 +1,97 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: A higher level link library for general use in the game and tools.
+//
+//===========================================================================//
+
+
+#ifndef MDLUTILS_H
+#define MDLUTILS_H
+
+#if defined( _WIN32 )
+#pragma once
+#endif
+
+#include "datacache/imdlcache.h"
+#include "mathlib/vector.h"
+#include "Color.h"
+#include "studio.h"
+
+
+//-----------------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------------
+struct matrix3x4_t;
+
+struct MDLSquenceLayer_t
+{
+ int m_nSequenceIndex;
+ float m_flWeight;
+ bool m_bNoLoop;
+ float m_flCycleBeganAt;
+};
+
+//-----------------------------------------------------------------------------
+// Class containing simplistic MDL state for use in rendering
+//-----------------------------------------------------------------------------
+class CMDL
+{
+public:
+ CMDL();
+ ~CMDL();
+
+ void SetMDL( MDLHandle_t h );
+ MDLHandle_t GetMDL() const;
+
+ // Simple version of drawing; sets up bones for you
+ void Draw( const matrix3x4_t& rootToWorld );
+
+ // NOTE: This version of draw assumes you've filled in the bone to world
+ // matrix yourself by calling IStudioRender::LockBoneMatrices. The pointer
+ // returned by that method needs to be passed into here
+ void Draw( const matrix3x4_t& rootToWorld, const matrix3x4_t *pBoneToWorld );
+
+
+ void SetUpBones( const matrix3x4_t& shapeToWorld, int nMaxBoneCount, matrix3x4_t *pOutputMatrices, const float *pPoseParameters = NULL, MDLSquenceLayer_t *pSequenceLayers = NULL, int nNumSequenceLayers = 0 );
+ void SetupBonesWithBoneMerge( const CStudioHdr *pMergeHdr, matrix3x4_t *pMergeBoneToWorld,
+ const CStudioHdr *pFollow, const matrix3x4_t *pFollowBoneToWorld, const matrix3x4_t &matModelToWorld );
+
+ studiohdr_t *GetStudioHdr();
+
+private:
+ void UnreferenceMDL();
+
+public:
+ MDLHandle_t m_MDLHandle;
+ Color m_Color;
+ int m_nSkin;
+ int m_nBody;
+ int m_nSequence;
+ int m_nLOD;
+ float m_flPlaybackRate;
+ float m_flTime;
+ float m_pFlexControls[ MAXSTUDIOFLEXCTRL * 4 ];
+ Vector m_vecViewTarget;
+ bool m_bWorldSpaceViewTarget;
+ void *m_pProxyData;
+};
+
+
+//-----------------------------------------------------------------------------
+// Returns the bounding box for the model
+//-----------------------------------------------------------------------------
+void GetMDLBoundingBox( Vector *pMins, Vector *pMaxs, MDLHandle_t h, int nSequence );
+
+//-----------------------------------------------------------------------------
+// Returns the radius of the model as measured from the origin
+//-----------------------------------------------------------------------------
+float GetMDLRadius( MDLHandle_t h, int nSequence );
+
+//-----------------------------------------------------------------------------
+// Returns a more accurate bounding sphere
+//-----------------------------------------------------------------------------
+void GetMDLBoundingSphere( Vector *pVecCenter, float *pRadius, MDLHandle_t h, int nSequence );
+
+
+#endif // MDLUTILS_H
+
diff --git a/public/tier3/scenetokenprocessor.h b/public/tier3/scenetokenprocessor.h
new file mode 100644
index 0000000..d614b75
--- /dev/null
+++ b/public/tier3/scenetokenprocessor.h
@@ -0,0 +1,18 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================
+
+#ifndef SCENETOKENPROCESSOR_H
+#define SCENETOKENPROCESSOR_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+class ISceneTokenProcessor;
+
+ISceneTokenProcessor *GetTokenProcessor();
+void SetTokenProcessorBuffer( const char *buf );
+
+#endif // SCENETOKENPROCESSOR_H
diff --git a/public/tier3/tier3.h b/public/tier3/tier3.h
new file mode 100644
index 0000000..7f53353
--- /dev/null
+++ b/public/tier3/tier3.h
@@ -0,0 +1,114 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: A higher level link library for general use in the game and tools.
+//
+//===========================================================================//
+
+
+#ifndef TIER3_H
+#define TIER3_H
+
+#if defined( _WIN32 )
+#pragma once
+#endif
+
+#include "tier2/tier2.h"
+
+
+//-----------------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------------
+class IStudioRender;
+class IMatSystemSurface;
+class IDataCache;
+class IMDLCache;
+class IVideoServices;
+class IDmeMakefileUtils;
+class IPhysicsCollision;
+class ISoundEmitterSystemBase;
+class IVTex;
+
+namespace vgui
+{
+ class ISurface;
+ class IVGui;
+ class IInput;
+ class IPanel;
+ class ILocalize;
+ class ISchemeManager;
+ class ISystem;
+}
+
+
+//-----------------------------------------------------------------------------
+// These tier3 libraries must be set by any users of this library.
+// They can be set by calling ConnectTier3Libraries.
+// It is hoped that setting this, and using this library will be the common mechanism for
+// allowing link libraries to access tier3 library interfaces
+//-----------------------------------------------------------------------------
+extern IStudioRender *g_pStudioRender;
+extern IStudioRender *studiorender;
+extern IMatSystemSurface *g_pMatSystemSurface;
+extern vgui::ISurface *g_pVGuiSurface;
+extern vgui::IInput *g_pVGuiInput;
+extern vgui::IVGui *g_pVGui;
+extern vgui::IPanel *g_pVGuiPanel;
+extern vgui::ILocalize *g_pVGuiLocalize;
+extern vgui::ISchemeManager *g_pVGuiSchemeManager;
+extern vgui::ISystem *g_pVGuiSystem;
+extern IDataCache *g_pDataCache; // FIXME: Should IDataCache be in tier2?
+extern IMDLCache *g_pMDLCache;
+extern IMDLCache *mdlcache;
+extern IVideoServices *g_pVideo;
+extern IDmeMakefileUtils *g_pDmeMakefileUtils;
+extern IPhysicsCollision *g_pPhysicsCollision;
+extern ISoundEmitterSystemBase *g_pSoundEmitterSystem;
+extern IVTex *g_pVTex;
+
+
+//-----------------------------------------------------------------------------
+// Call this to connect to/disconnect from all tier 3 libraries.
+// It's up to the caller to check the globals it cares about to see if ones are missing
+//-----------------------------------------------------------------------------
+void ConnectTier3Libraries( CreateInterfaceFn *pFactoryList, int nFactoryCount );
+void DisconnectTier3Libraries();
+
+
+//-----------------------------------------------------------------------------
+// Helper empty implementation of an IAppSystem for tier2 libraries
+//-----------------------------------------------------------------------------
+template< class IInterface, int ConVarFlag = 0 >
+class CTier3AppSystem : public CTier2AppSystem< IInterface, ConVarFlag >
+{
+ typedef CTier2AppSystem< IInterface, ConVarFlag > BaseClass;
+
+public:
+ CTier3AppSystem( bool bIsPrimaryAppSystem = true ) : BaseClass( bIsPrimaryAppSystem )
+ {
+ }
+
+ virtual bool Connect( CreateInterfaceFn factory )
+ {
+ if ( !BaseClass::Connect( factory ) )
+ return false;
+
+ if ( BaseClass::IsPrimaryAppSystem() )
+ {
+ ConnectTier3Libraries( &factory, 1 );
+ }
+ return true;
+ }
+
+ virtual void Disconnect()
+ {
+ if ( BaseClass::IsPrimaryAppSystem() )
+ {
+ DisconnectTier3Libraries();
+ }
+ BaseClass::Disconnect();
+ }
+};
+
+
+#endif // TIER3_H
+
diff --git a/public/tier3/tier3dm.h b/public/tier3/tier3dm.h
new file mode 100644
index 0000000..5ac6028
--- /dev/null
+++ b/public/tier3/tier3dm.h
@@ -0,0 +1,55 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: A higher level link library for general use in the game and tools.
+//
+//===========================================================================//
+
+
+#ifndef TIER3DM_H
+#define TIER3DM_H
+
+#if defined( _WIN32 )
+#pragma once
+#endif
+
+#include "tier3/tier3.h"
+#include "tier2/tier2dm.h"
+
+//-----------------------------------------------------------------------------
+// Helper empty implementation of an IAppSystem for tier2 libraries
+//-----------------------------------------------------------------------------
+template< class IInterface, int ConVarFlag = 0 >
+class CTier3DmAppSystem : public CTier2DmAppSystem< IInterface, ConVarFlag >
+{
+ typedef CTier2DmAppSystem< IInterface, ConVarFlag > BaseClass;
+
+public:
+ CTier3DmAppSystem( bool bIsPrimaryAppSystem = true ) : BaseClass( bIsPrimaryAppSystem )
+ {
+ }
+
+ virtual bool Connect( CreateInterfaceFn factory )
+ {
+ if ( !BaseClass::Connect( factory ) )
+ return false;
+
+ if ( IsPrimaryAppSystem() )
+ {
+ ConnectTier3Libraries( &factory, 1 );
+ }
+ return true;
+ }
+
+ virtual void Disconnect()
+ {
+ if ( IsPrimaryAppSystem() )
+ {
+ DisconnectTier3Libraries();
+ }
+ BaseClass::Disconnect();
+ }
+};
+
+
+#endif // TIER3DM_H
+