2017-03-15 19:43:10 +00:00
|
|
|
// NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
|
|
|
|
// 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 <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
#if !defined(AFX_TEXTURE_ANIM_DLG_H__4A689FB0_93B9_4F5A_8075_8006D8FD19B2__INCLUDED_)
|
|
|
|
#define AFX_TEXTURE_ANIM_DLG_H__4A689FB0_93B9_4F5A_8075_8006D8FD19B2__INCLUDED_
|
|
|
|
|
|
|
|
#if _MSC_VER > 1000
|
|
|
|
#pragma once
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "ps_wrapper.h"
|
|
|
|
#include "nel/3d/ps_particle.h"
|
|
|
|
#include "value_gradient_dlg.h"
|
|
|
|
#include "popup_notify.h"
|
|
|
|
#include "particle_workspace.h"
|
|
|
|
|
|
|
|
namespace NL3D
|
|
|
|
{
|
|
|
|
class CPSTexturedParticle;
|
|
|
|
class CPSMultiTexturedParticle;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
class CTextureChooser;
|
|
|
|
class CAttribDlgInt;
|
|
|
|
class CValueGradientDlg;
|
|
|
|
class CMultiTexDlg;
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// CTextureAnimDlg dialog
|
|
|
|
|
|
|
|
class CTextureAnimDlg : public CDialog, IPopupNotify
|
|
|
|
{
|
|
|
|
// Construction
|
|
|
|
public:
|
|
|
|
CTextureAnimDlg(CParticleWorkspace::CNode *ownerNode, NL3D::CPSTexturedParticle *p, NL3D::CPSMultiTexturedParticle *mtp = NULL); // standard constructor
|
|
|
|
~CTextureAnimDlg();
|
|
|
|
|
|
|
|
void init(sint x, sint y, CWnd *pParent);
|
|
|
|
// Dialog Data
|
|
|
|
//{{AFX_DATA(CTextureAnimDlg)
|
|
|
|
enum { IDD = IDD_TEXTURE_ANIM };
|
|
|
|
CButton m_ChooseTextures;
|
|
|
|
BOOL m_EnableTextureAnim;
|
|
|
|
BOOL m_MultiTexEnable;
|
|
|
|
//}}AFX_DATA
|
|
|
|
|
|
|
|
|
|
|
|
BOOL EnableWindow( BOOL bEnable);
|
|
|
|
|
|
|
|
// Overrides
|
|
|
|
// ClassWizard generated virtual function overrides
|
|
|
|
//{{AFX_VIRTUAL(CTextureAnimDlg)
|
|
|
|
protected:
|
|
|
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
|
|
|
//}}AFX_VIRTUAL
|
|
|
|
|
|
|
|
// Implementation
|
|
|
|
protected:
|
|
|
|
NL3D::CPSTexturedParticle *_EditedParticle;
|
|
|
|
NL3D::CPSMultiTexturedParticle *_MTP;
|
|
|
|
CParticleWorkspace::CNode *_Node;
|
|
|
|
// dialog to choose a constant texture
|
|
|
|
CTextureChooser *_TextureChooser;
|
|
|
|
// dialog to have a theme or constant value for texture id
|
|
|
|
CAttribDlgInt *_TextureIndexDialog;
|
|
|
|
CMultiTexDlg *_MultiTexDlg;
|
|
|
|
// Generated message map functions
|
|
|
|
//{{AFX_MSG(CTextureAnimDlg)
|
|
|
|
afx_msg void OnChooseTextures();
|
|
|
|
afx_msg void OnEnableTextureAnim();
|
|
|
|
afx_msg void OnMultiTex();
|
|
|
|
afx_msg void OnEditMultitex();
|
|
|
|
//}}AFX_MSG
|
|
|
|
DECLARE_MESSAGE_MAP()
|
|
|
|
// delete created controls
|
|
|
|
void cleanCtrl(void);
|
|
|
|
// create the right controls, depending on the fact that a an,imated texture is used or not
|
|
|
|
void setupCtrl(void);
|
|
|
|
//////////////////////////////////
|
|
|
|
// wrapper for single texture //
|
|
|
|
//////////////////////////////////
|
|
|
|
|
|
|
|
struct CTextureWrapper : public IPSWrapperTexture
|
|
|
|
{
|
|
|
|
NL3D::CPSTexturedParticle *P;
|
|
|
|
NL3D::ITexture *get(void) { return P->getTexture(); }
|
|
|
|
void set(NL3D::ITexture *t) { P->setTexture(t); }
|
|
|
|
} _TextureWrapper;
|
|
|
|
|
|
|
|
///////////////////////////////////////
|
|
|
|
// wrapper for texture anim sequence //
|
|
|
|
///////////////////////////////////////
|
|
|
|
|
|
|
|
struct CTextureIndexWrapper : public IPSWrapper<sint32>, IPSSchemeWrapper<sint32>
|
|
|
|
{
|
|
|
|
NL3D::CPSTexturedParticle *P;
|
|
|
|
sint32 get(void) const { return P->getTextureIndex(); }
|
|
|
|
void set(const sint32 &v) { P->setTextureIndex(v); }
|
|
|
|
scheme_type *getScheme(void) const { return P->getTextureIndexScheme(); }
|
|
|
|
void setScheme(scheme_type *s) { P->setTextureIndexScheme(s); }
|
|
|
|
} _TextureIndexWrapper;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* the implementation of this struct tells the gradient dialog bow how to edit a texture list
|
|
|
|
*/
|
|
|
|
|
|
|
|
struct CGradientInterface : public IValueGradientDlgClient
|
|
|
|
{
|
|
|
|
// the particle being edited
|
|
|
|
CValueGradientDlg *Dlg;
|
|
|
|
NL3D::CPSTexturedParticle *P;
|
|
|
|
// all method inherited from IValueGradientDlgClient
|
|
|
|
virtual CEditAttribDlg *createDialog(uint index, CValueGradientDlg *grad, CParticleWorkspace::CNode *ownerNode);
|
|
|
|
virtual void modifyGradient(TAction, uint index);
|
|
|
|
virtual void displayValue(CDC *dc, uint index, sint x, sint y);
|
|
|
|
virtual uint32 getSchemeSize(void) const;
|
|
|
|
virtual uint32 getNbSteps(void) const;
|
|
|
|
virtual void setNbSteps(uint32 value);
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////
|
|
|
|
// wrapper for the texture chooser //
|
|
|
|
// that allows to choose a texture in the list //
|
|
|
|
/////////////////////////////////////////////////
|
|
|
|
|
|
|
|
struct CTextureWrapper : public IPSWrapperTexture
|
|
|
|
{
|
|
|
|
CValueGradientDlg *Dlg;
|
|
|
|
NL3D::CPSTexturedParticle *P;
|
|
|
|
// index of the particle in the list
|
|
|
|
uint32 Index;
|
|
|
|
NL3D::ITexture *get(void);
|
|
|
|
void set(NL3D::ITexture *t);
|
|
|
|
} _TextureWrapper;
|
|
|
|
|
|
|
|
} _GradientInterface;
|
|
|
|
|
|
|
|
|
|
|
|
/// inherited from IPopuNotify
|
|
|
|
void childPopupClosed(CWnd *child);
|
|
|
|
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_TEXTURE_ANIM_DLG_H__4A689FB0_93B9_4F5A_8075_8006D8FD19B2__INCLUDED_)
|