2013-10-23 17:08:09 +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/>.
|
|
|
|
|
|
|
|
#include "std_afx.h"
|
|
|
|
#include "object_viewer.h"
|
|
|
|
#include "collision_zone_dlg.h"
|
|
|
|
#include "editable_range.h"
|
|
|
|
#include "particle_dlg.h"
|
|
|
|
#include "start_stop_particle_system.h"
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// CCollisionZoneDlg dialog
|
|
|
|
|
|
|
|
// standard constructor
|
|
|
|
CCollisionZoneDlg::CCollisionZoneDlg(CParticleWorkspace::CNode *ownerNode, NL3D::CPSZone *zone, CParticleDlg *particleDlg)
|
|
|
|
: _Zone(zone),
|
|
|
|
_Node(ownerNode),
|
|
|
|
_ParticleDlg(particleDlg)
|
|
|
|
{
|
|
|
|
nlassert(particleDlg);
|
|
|
|
//{{AFX_DATA_INIT(CCollisionZoneDlg)
|
|
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
|
|
//}}AFX_DATA_INIT
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CCollisionZoneDlg::init(sint x, sint y, CWnd *pParent)
|
|
|
|
{
|
|
|
|
RECT r;
|
|
|
|
Create(IDD_ZONE, pParent);
|
|
|
|
GetClientRect(&r);
|
|
|
|
r.top += y; r.bottom += y;
|
|
|
|
r.right += x; r.left += x;
|
|
|
|
MoveWindow(&r);
|
|
|
|
|
|
|
|
_BounceFactorDlg = new CEditableRangeFloat(std::string("BOUNCE_FACTOR"), _Node, 0.f, 1.f);
|
|
|
|
pushWnd(_BounceFactorDlg);
|
|
|
|
_BounceFactorWrapper.Z = _Zone;
|
|
|
|
_BounceFactorDlg->setWrapper(&_BounceFactorWrapper);
|
|
|
|
_BounceFactorDlg->init(60, 35, this);
|
|
|
|
|
|
|
|
m_CollisionBehaviour.SetCurSel((uint) _Zone->getCollisionBehaviour() );
|
|
|
|
|
|
|
|
if (_Zone->getCollisionBehaviour() != NL3D::CPSZone::bounce)
|
|
|
|
{
|
|
|
|
_BounceFactorDlg->EnableWindow(FALSE);
|
|
|
|
}
|
|
|
|
|
|
|
|
UpdateData();
|
|
|
|
|
|
|
|
ShowWindow(SW_SHOW);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CCollisionZoneDlg::DoDataExchange(CDataExchange* pDX)
|
|
|
|
{
|
|
|
|
CDialog::DoDataExchange(pDX);
|
|
|
|
//{{AFX_DATA_MAP(CCollisionZoneDlg)
|
|
|
|
DDX_Control(pDX, IDC_COLLISION_BEHAVIOUR, m_CollisionBehaviour);
|
|
|
|
//}}AFX_DATA_MAP
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CCollisionZoneDlg, CDialog)
|
|
|
|
//{{AFX_MSG_MAP(CCollisionZoneDlg)
|
|
|
|
ON_CBN_SELCHANGE(IDC_COLLISION_BEHAVIOUR, OnSelchangeCollisionBehaviour)
|
|
|
|
//}}AFX_MSG_MAP
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// CCollisionZoneDlg message handlers
|
|
|
|
|
|
|
|
void CCollisionZoneDlg::OnSelchangeCollisionBehaviour()
|
|
|
|
{
|
|
|
|
UpdateData();
|
|
|
|
_Zone->setCollisionBehaviour( (NL3D::CPSZone::TCollisionBehaviour) m_CollisionBehaviour.GetCurSel());
|
|
|
|
_BounceFactorDlg->EnableWindow(_Zone->getCollisionBehaviour() == NL3D::CPSZone::bounce ? TRUE : FALSE);
|
|
|
|
_ParticleDlg->StartStopDlg->resetAutoCount(_Node);
|
|
|
|
}
|