// NeL - MMORPG Framework // Copyright (C) 2010 Winch Gate Property Limited // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . // #if !defined(AFX_EDIT_PS_SOUND_H__E11AAB2A_04BB_453A_B722_AA47DB840D5A__INCLUDED_) #define AFX_EDIT_PS_SOUND_H__E11AAB2A_04BB_453A_B722_AA47DB840D5A__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif #include "ps_wrapper.h" #include "nel/3d/ps_sound.h" #include "editable_range.h" #include "particle_workspace.h" namespace NLSOUND { class UAudioMixer; } class CAttribDlgFloat; /// particle system sound system initialisation extern void setPSSoundSystem(NLSOUND::UAudioMixer *am); /// release the particle system sound system extern void releasePSSoundSystem(void); ///////////////////////////////////////////////////////////////////////////// // CEditPSSound dialog class CEditPSSound : public CDialog { // Construction public: CEditPSSound(CParticleWorkspace::CNode *ownerNode, NL3D::CPSSound *sound); // standard constructor ~CEditPSSound(); void init(CWnd* pParent = NULL); // Dialog Data //{{AFX_DATA(CEditPSSound) enum { IDD = IDD_SOUND }; CString m_SoundName; BOOL m_Spawn; BOOL m_Mute; BOOL m_KeepOriginalPitch; //}}AFX_DATA // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CEditPSSound) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: NL3D::CPSSound *_Sound; // the sound being edited CAttribDlgFloat *_GainDlg; // dlg to tune sounds gain CAttribDlgFloat *_PitchDlg; // dlg to tune sounds pitch CEditableRangeFloat *_PercentDlg; // dlg to tune the percent of sound emissions CParticleWorkspace::CNode *_Node; // Generated message map functions //{{AFX_MSG(CEditPSSound) afx_msg void OnBrowseSound(); virtual BOOL OnInitDialog(); afx_msg void OnChangeSoundName(); afx_msg void OnSpawn(); afx_msg void OnPlaySound(); afx_msg void OnMute(); afx_msg void OnKeepOriginalPitch(); //}}AFX_MSG DECLARE_MESSAGE_MAP() ///////////////////////////////////////// // wrapper to set the gain of sounds // ///////////////////////////////////////// struct CGainWrapper : public IPSWrapperFloat, IPSSchemeWrapperFloat { NL3D::CPSSound *S; float get(void) const { return S->getGain(); } void set(const float &v) { S->setGain(v); } scheme_type *getScheme(void) const { return S->getGainScheme(); } void setScheme(scheme_type *s) { S->setGainScheme(s); } } _GainWrapper; //////////////////////////////////////////// // wrapper to set the pitch of sounds // //////////////////////////////////////////// struct CPitchWrapper : public IPSWrapperFloat, IPSSchemeWrapperFloat { NL3D::CPSSound *S; float get(void) const { return S->getPitch(); } void set(const float &v) { S->setPitch(v); } scheme_type *getScheme(void) const { return S->getPitchScheme(); } void setScheme(scheme_type *s) { S->setPitchScheme(s); } } _PitchWrapper; ////////////////////////////////////////////////////// // wrapper to set the percentage of sound emissions // ////////////////////////////////////////////////////// struct CEmissionPercentWrapper : public IPSWrapperFloat { NL3D::CPSSound *S; float get(void) const { return S->getEmissionPercent(); } void set(const float &v) { S->setEmissionPercent(v); } } _EmissionPercentWrapper; void updateModifiedFlag() { if (_Node) _Node->setModified(true); } }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_EDIT_PS_SOUND_H__E11AAB2A_04BB_453A_B722_AA47DB840D5A__INCLUDED_)