Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================
#include "dme_controls/DmeSourceSkinPanel.h"
#include "dme_controls/DmePanel.h"
#include "movieobjects/dmemdlmakefile.h"
#include "vgui_controls/TextEntry.h"
#include "vgui_controls/CheckButton.h"
#include "tier1/KeyValues.h"
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
using namespace vgui;
//-----------------------------------------------------------------------------
//
// Hook into the dme panel editor system
//
//-----------------------------------------------------------------------------
IMPLEMENT_DMEPANEL_FACTORY( CDmeSourceSkinPanel, DmeSourceSkin, "DmeSourceSkinDefault", "MDL Skin Editor", true );
//-----------------------------------------------------------------------------
// Purpose: Constructor, destructor
//-----------------------------------------------------------------------------
CDmeSourceSkinPanel::CDmeSourceSkinPanel( vgui::Panel *pParent, const char *pPanelName ) : BaseClass( pParent, pPanelName ) { m_pSkinName = new vgui::TextEntry( this, "SkinName" ); m_pSkinName->AddActionSignalTarget( this );
m_pScale = new vgui::TextEntry( this, "Scale" ); m_pScale->AddActionSignalTarget( this );
m_pFlipTriangles = new vgui::CheckButton( this, "FlipTriangles", "" ); m_pFlipTriangles->AddActionSignalTarget( this );
// Load layout settings; has to happen before pinning occurs in code
LoadControlSettings( "resource/DmeSourceSkinPanel.res" ); }
CDmeSourceSkinPanel::~CDmeSourceSkinPanel() { }
//-----------------------------------------------------------------------------
// Marks the file as dirty (or not)
//-----------------------------------------------------------------------------
void CDmeSourceSkinPanel::SetDirty() { PostActionSignal( new KeyValues( "DmeElementChanged" ) ); }
//-----------------------------------------------------------------------------
// Resets the state
//-----------------------------------------------------------------------------
void CDmeSourceSkinPanel::SetDmeElement( CDmeSourceSkin *pSourceSkin ) { m_hSourceSkin = pSourceSkin;
bool bEnabled = (pSourceSkin != NULL); m_pSkinName->SetEnabled( bEnabled ); m_pScale->SetEnabled( bEnabled ); m_pFlipTriangles->SetEnabled( bEnabled ); if ( !bEnabled ) { m_pSkinName->SetText( "" ); m_pScale->SetText( "" ); m_pFlipTriangles->SetSelected( false ); return; }
char pBuf[32]; Q_snprintf( pBuf, sizeof(pBuf), "%.3f", pSourceSkin->m_flScale.Get() ); m_pSkinName->SetText( pSourceSkin->m_SkinName ); m_pScale->SetText( pBuf ); m_pFlipTriangles->SetSelected( pSourceSkin->m_bFlipTriangles ); }
//-----------------------------------------------------------------------------
// Command handler
//-----------------------------------------------------------------------------
void CDmeSourceSkinPanel::OnCheckButtonChecked( int nChecked ) { if ( !m_hSourceSkin.Get() ) return;
bool bFlipTriangles = ( nChecked != 0 ); if ( bFlipTriangles != m_hSourceSkin->m_bFlipTriangles ) { m_hSourceSkin->m_bFlipTriangles = bFlipTriangles; SetDirty(); } }
//-----------------------------------------------------------------------------
// Called when something is typed in a text entry field
//-----------------------------------------------------------------------------
void CDmeSourceSkinPanel::OnTextChanged( KeyValues *kv ) { if ( !m_hSourceSkin.Get() ) return;
Panel *pPanel = (Panel *)kv->GetPtr( "panel", NULL ); if ( pPanel == m_pSkinName ) { char pTextBuf[256]; m_pSkinName->GetText( pTextBuf, sizeof( pTextBuf) ); if ( Q_stricmp( pTextBuf, m_hSourceSkin->m_SkinName ) ) { m_hSourceSkin->m_SkinName = pTextBuf; SetDirty(); } return; }
if ( pPanel == m_pScale ) { char pTextBuf[256]; m_pScale->GetText( pTextBuf, sizeof( pTextBuf) ); float flScale = atoi( pTextBuf ); if ( flScale != m_hSourceSkin->m_flScale ) { m_hSourceSkin->m_flScale = flScale; SetDirty(); } return; } }
|