mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-12-21 00:18:43 +00:00
93 lines
2.9 KiB
C++
93 lines
2.9 KiB
C++
|
// 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);
|
||
|
}
|