summaryrefslogtreecommitdiff
path: root/mdlobjects/dmeboneflexdriver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mdlobjects/dmeboneflexdriver.cpp')
-rw-r--r--mdlobjects/dmeboneflexdriver.cpp163
1 files changed, 163 insertions, 0 deletions
diff --git a/mdlobjects/dmeboneflexdriver.cpp b/mdlobjects/dmeboneflexdriver.cpp
new file mode 100644
index 0000000..c494306
--- /dev/null
+++ b/mdlobjects/dmeboneflexdriver.cpp
@@ -0,0 +1,163 @@
+//===== Copyright (c) 1996-2009, Valve Corporation, All rights reserved. ====
+//
+// Dme version of QC $BoneFlexDriver
+//
+//===========================================================================//
+
+
+// Valve includes
+#include "datamodel/dmelementfactoryhelper.h"
+#include "mdlobjects/dmeBoneFlexDriver.h"
+
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+
+//===========================================================================//
+// CDmeBoneFlexDriverControl
+//===========================================================================//
+//-----------------------------------------------------------------------------
+// Expose this class to the scene database
+//-----------------------------------------------------------------------------
+IMPLEMENT_ELEMENT_FACTORY( DmeBoneFlexDriverControl, CDmeBoneFlexDriverControl );
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+void CDmeBoneFlexDriverControl::OnConstruction()
+{
+ m_sFlexControllerName.Init( this, "flexControllerName" );
+ m_nBoneComponent.Init( this, "boneComponent" );
+ m_flMin.InitAndSet( this, "min", 0.0f );
+ m_flMax.InitAndSet( this, "max", 1.0f );
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+void CDmeBoneFlexDriverControl::OnDestruction()
+{
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+int CDmeBoneFlexDriverControl::SetBoneComponent( int nBoneComponent )
+{
+ // Range [STUDIO_BONE_FLEX_TX, STUDIO_BONE_FLEX_RZ]
+ m_nBoneComponent = clamp( nBoneComponent, 0, 5 );
+ return m_nBoneComponent.Get();
+}
+
+
+//===========================================================================//
+// CDmeBoneFlexDriver
+//===========================================================================//
+//-----------------------------------------------------------------------------
+// Expose this class to the scene database
+//-----------------------------------------------------------------------------
+IMPLEMENT_ELEMENT_FACTORY( DmeBoneFlexDriver, CDmeBoneFlexDriver );
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+void CDmeBoneFlexDriver::OnConstruction()
+{
+ m_sBoneName.Init( this, "boneName" );
+ m_eControlList.Init( this, "controlList" );
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+void CDmeBoneFlexDriver::OnDestruction()
+{
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+CDmeBoneFlexDriverControl *CDmeBoneFlexDriver::FindOrCreateControl( const char *pszControlName )
+{
+ CDmeBoneFlexDriverControl *pDmeBoneFlexDriverControl = NULL;
+
+ for ( int i = 0; i < m_eControlList.Count(); ++i )
+ {
+ pDmeBoneFlexDriverControl = m_eControlList[i];
+ if ( !pDmeBoneFlexDriverControl )
+ continue;
+
+ if ( !Q_stricmp( pszControlName, pDmeBoneFlexDriverControl->m_sFlexControllerName.Get() ) )
+ return pDmeBoneFlexDriverControl;
+ }
+
+ pDmeBoneFlexDriverControl = CreateElement< CDmeBoneFlexDriverControl >( "", GetFileId() ); // Nameless
+ if ( !pDmeBoneFlexDriverControl )
+ return NULL;
+
+ pDmeBoneFlexDriverControl->m_sFlexControllerName = pszControlName;
+ m_eControlList.AddToTail( pDmeBoneFlexDriverControl );
+
+ return pDmeBoneFlexDriverControl;
+}
+
+
+//===========================================================================//
+// CDmeBoneFlexDriverList
+//===========================================================================//
+//-----------------------------------------------------------------------------
+// Expose this class to the scene database
+//-----------------------------------------------------------------------------
+IMPLEMENT_ELEMENT_FACTORY( DmeBoneFlexDriverList, CDmeBoneFlexDriverList );
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+void CDmeBoneFlexDriverList::OnConstruction()
+{
+ m_eBoneFlexDriverList.Init( this, "boneFlexDriverList" );
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+void CDmeBoneFlexDriverList::OnDestruction()
+{
+}
+
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+CDmeBoneFlexDriver *CDmeBoneFlexDriverList::FindOrCreateBoneFlexDriver( const char *pszBoneName )
+{
+ CDmeBoneFlexDriver *pDmeBoneFlexDriver = NULL;
+
+ for ( int i = 0; i < m_eBoneFlexDriverList.Count(); ++i )
+ {
+ pDmeBoneFlexDriver = m_eBoneFlexDriverList[i];
+ if ( !pDmeBoneFlexDriver )
+ continue;
+
+ if ( !Q_stricmp( pszBoneName, pDmeBoneFlexDriver->m_sBoneName.Get() ) )
+ return pDmeBoneFlexDriver;
+ }
+
+ pDmeBoneFlexDriver = CreateElement< CDmeBoneFlexDriver >( "", GetFileId() ); // Nameless
+ if ( !pDmeBoneFlexDriver )
+ return NULL;
+
+ pDmeBoneFlexDriver->m_sBoneName = pszBoneName;
+ m_eBoneFlexDriverList.AddToTail( pDmeBoneFlexDriver );
+
+ return pDmeBoneFlexDriver;
+}