//jhefty - only apply settings that are different void CLightDlg::OnApplyDifferences () { idDict differences, modified, original; UpdateLightInfoFromDialog(); lightInfo.ToDict( &modified ); lightInfoOriginal.ToDictWriteAllInfo( &original ); differences = modified; // jhefty - compile a set of modified values to apply for ( int i = 0; i < modified.GetNumKeyVals (); i ++ ) { const idKeyValue* valModified = modified.GetKeyVal ( i ); const idKeyValue* valOriginal = original.FindKey ( valModified->GetKey() ); //if it hasn't changed, remove it from the list of values to apply if ( !valOriginal || ( valModified->GetValue() == valOriginal->GetValue() ) ) { differences.Delete ( valModified->GetKey() ); } } SaveLightInfo( &differences ); lightInfoOriginal.FromDict( &modified ); Sys_UpdateWindows( W_ALL ); }
void CLightDlg::OnOK() { UpdateLightInfoFromDialog(); SaveLightInfo(NULL); Sys_UpdateWindows(W_ALL); CDialog::OnOK(); }
void CLightDlg::UpdateColor( float r, float g, float b, float a ) { color[0] = a * r; color[1] = a * g; color[2] = a * b; ColorButtons(); UpdateLightInfoFromDialog(); SaveLightInfo( NULL ); Sys_UpdateWindows( W_CAMERA ); }