diff options
Diffstat (limited to 'mdlobjects/dmeboneflexdriver.cpp')
| -rw-r--r-- | mdlobjects/dmeboneflexdriver.cpp | 163 |
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; +} |