//===== 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; }