doom3-gpl
Doom 3 GPL source release
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DialogAFProperties.cpp
Go to the documentation of this file.
1 /*
2 ===========================================================================
3 
4 Doom 3 GPL Source Code
5 Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.
6 
7 This file is part of the Doom 3 GPL Source Code (?Doom 3 Source Code?).
8 
9 Doom 3 Source Code is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13 
14 Doom 3 Source Code is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18 
19 You should have received a copy of the GNU General Public License
20 along with Doom 3 Source Code. If not, see <http://www.gnu.org/licenses/>.
21 
22 In addition, the Doom 3 Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 Source Code. If not, please request a copy in writing from id Software at the address below.
23 
24 If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
25 
26 ===========================================================================
27 */
28 
29 #include "../../idlib/precompiled.h"
30 #pragma hdrstop
31 
32 #include "../../sys/win32/rc/AFEditor_resource.h"
33 
34 #include "DialogAF.h"
35 #include "DialogAFProperties.h"
36 #include "DialogAFBody.h"
37 #include "DialogAFConstraint.h"
38 
39 
40 // DialogAFProperties dialog
41 
43  { IDC_EDIT_MODEL, "model def" },
44  { IDC_BUTTON_BROWSE_MODEL, "browse model def" },
45  { IDC_EDIT_SKIN, "skin" },
46  { IDC_BUTTON_BROWSE_SKIN, "browse skin" },
47  { IDC_EDIT_LINEARFRICTION, "translational friction" },
48  { IDC_EDIT_ANGULARFRICTION, "rotational friction" },
49  { IDC_EDIT_CONTACTFRICTION, "friction with contact surfaces" },
50  { IDC_EDIT_CONSTRAINTFRICTION, "constraint friction" },
51  { IDC_CHECK_SELFCOLLISION, "allow bodies to collide with other bodies of this articulated figure" },
52  { IDC_EDIT_CONTENTS, "content of bodies" },
53  { IDC_EDIT_CLIPMASK, "collide with these content types" },
54  { IDC_EDIT_TOTALMASS, "scale the mass of each body to get this total mass" },
55  { IDC_EDIT_LINEARVELOCITY, "do not suspend simulation if the linear velocity is higher than this value" },
56  { IDC_EDIT_ANGULARVELOCITY, "do not suspend simulation if the angular velocity is higher than this value" },
57  { IDC_EDIT_LINEARACCELERATION, "do not suspend simulation if the linear acceleration is higher than this value" },
58  { IDC_EDIT_ANGULARACCELERATION, "do not suspend simulation if the angular acceleration is higher than this value" },
59  { IDC_EDIT_NO_MOVE_TIME, "suspend simulation if hardly any movement for this many seconds" },
60  { IDC_EDIT_MAXIMUM_MOVE_TIME, "always suspend simulation after running for this many seconds" },
61  { IDC_EDIT_LINEAR_TOLERANCE, "maximum translation considered no movement" },
62  { IDC_EDIT_ANGULAR_TOLERANCE, "maximum rotation considered no movement" },
63  { 0, NULL }
64 };
65 
66 IMPLEMENT_DYNAMIC(DialogAFProperties, CDialog)
67 
68 /*
69 ================
70 DialogAFProperties::DialogAFProperties
71 ================
72 */
73 DialogAFProperties::DialogAFProperties(CWnd* pParent /*=NULL*/)
74  : CDialog(DialogAFProperties::IDD, pParent)
75  , m_selfCollision(false)
76  , m_linearFriction(0)
77  , m_angularFriction(0)
78  , m_contactFriction(0)
79  , m_constraintFriction(0)
80  , m_totalMass(0)
81  , m_suspendLinearVelocity(0)
82  , m_suspendAngularVelocity(0)
83  , m_suspendLinearAcceleration(0)
84  , m_suspendAngularAcceleration(0)
85  , m_noMoveTime(0)
86  , m_minMoveTime(0)
87  , m_maxMoveTime(0)
88  , m_linearTolerance(0)
89  , m_angularTolerance(0)
90  , file(NULL)
91 {
92  Create( IDD_DIALOG_AF_PROPERTIES, pParent );
93  EnableToolTips( TRUE );
94 }
95 
96 /*
97 ================
98 DialogAFProperties::~DialogAFProperties
99 ================
100 */
102 }
103 
104 /*
105 ================
106 DialogAFProperties::DoDataExchange
107 ================
108 */
109 void DialogAFProperties::DoDataExchange(CDataExchange* pDX) {
110  CDialog::DoDataExchange(pDX);
111  //{{AFX_DATA_MAP(DialogAFProperties)
112  DDX_Control(pDX, IDC_EDIT_MODEL, m_editModel);
113  DDX_Control(pDX, IDC_EDIT_SKIN, m_editSkin);
114  DDX_Check(pDX, IDC_CHECK_SELFCOLLISION, m_selfCollision);
115  DDX_Control(pDX, IDC_EDIT_CONTENTS, m_editContents);
116  DDX_Control(pDX, IDC_EDIT_CLIPMASK, m_editClipMask);
121  DDX_Text(pDX, IDC_EDIT_TOTALMASS, m_totalMass);
126  DDX_Text(pDX, IDC_EDIT_NO_MOVE_TIME, m_noMoveTime);
131  //}}AFX_DATA_MAP
132 }
133 
134 /*
135 ================
136 DialogAFProperties::LoadFile
137 ================
138 */
140  idStr str;
141 
142  file = af;
143 
144  if ( !file ) {
145  ClearFile();
146  return;
147  }
148  m_editModel.SetWindowText( file->model.c_str() );
149  m_editSkin.SetWindowText( file->skin.c_str() );
152  m_editContents.SetWindowText( str );
154  m_editClipMask.SetWindowText( str );
169  UpdateData( FALSE );
170 }
171 
172 /*
173 ================
174 DialogAFProperties::SetFile
175 ================
176 */
178  CString str;
179 
180  if ( !file ) {
181  return;
182  }
183  UpdateData( TRUE );
184  m_editModel.GetWindowText( str );
185  file->model = str;
186  m_editSkin.GetWindowText( str );
187  file->skin = str;
189  m_editContents.GetWindowText( str );
191  m_editClipMask.GetWindowText( str );
207 
209 }
210 
211 /*
212 ================
213 DialogAFProperties::UpdateFile
214 ================
215 */
217  SaveFile();
218  if ( file ) {
220  }
221 }
222 
223 /*
224 ================
225 DialogAFProperties::ClearFile
226 ================
227 */
229  m_editModel.SetWindowText( "" );
230  m_editSkin.SetWindowText( "" );
231  m_selfCollision = false;
232  m_editContents.SetWindowText( "" );
233  m_editClipMask.SetWindowText( "" );
234  m_linearFriction = 0.0f;
235  m_angularFriction = 0.0f;
236  m_contactFriction = 0.0f;
237  m_constraintFriction = 0.0f;
238  m_totalMass = -1.0f;
243  m_noMoveTime = 0.0f;
244  m_minMoveTime = 0.0f;
245  m_maxMoveTime = 0.0f;
246  m_linearTolerance = 0.0f;
247  m_angularTolerance = 0.0f;
248  UpdateData( FALSE );
249 }
250 
251 /*
252 ================
253 DialogAFProperties::OnToolHitTest
254 ================
255 */
256 int DialogAFProperties::OnToolHitTest( CPoint point, TOOLINFO* pTI ) const {
257  CDialog::OnToolHitTest( point, pTI );
258  return DefaultOnToolHitTest( toolTips, this, point, pTI );
259 }
260 
261 BEGIN_MESSAGE_MAP(DialogAFProperties, CDialog)
262  ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipNotify)
263  ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipNotify)
264  ON_EN_CHANGE(IDC_EDIT_MODEL, OnEnChangeEditModel)
265  ON_BN_CLICKED(IDC_BUTTON_BROWSE_MODEL, OnBnClickedButtonBrowseModel)
266  ON_EN_CHANGE(IDC_EDIT_SKIN, OnEnChangeEditSkin)
267  ON_BN_CLICKED(IDC_BUTTON_BROWSE_SKIN, OnBnClickedButtonBrowseSkin)
268  ON_EN_CHANGE(IDC_EDIT_LINEARFRICTION, OnEnChangeEditLinearfriction)
269  ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_LINEARFRICTION, OnDeltaposSpinLinearfriction)
270  ON_EN_CHANGE(IDC_EDIT_ANGULARFRICTION, OnEnChangeEditAngularfriction)
271  ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_ANGULARFRICTION, OnDeltaposSpinAngularfriction)
272  ON_EN_CHANGE(IDC_EDIT_CONTACTFRICTION, OnEnChangeEditContactfriction)
273  ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_CONTACTFRICTION, OnDeltaposSpinContactfriction)
274  ON_EN_CHANGE(IDC_EDIT_CONSTRAINTFRICTION, OnEnChangeEditConstraintfriction)
275  ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_CONSTRAINTFRICTION, OnDeltaposSpinConstraintfriction)
276  ON_BN_CLICKED(IDC_CHECK_SELFCOLLISION, OnBnClickedCheckSelfcollision)
277  ON_EN_CHANGE(IDC_EDIT_CONTENTS, OnEnChangeEditContents)
278  ON_EN_CHANGE(IDC_EDIT_CLIPMASK, OnEnChangeEditClipmask)
279  ON_EN_CHANGE(IDC_EDIT_TOTALMASS, OnEnChangeEditTotalmass)
280  ON_NOTIFY(UDN_DELTAPOS, IDC_SPIN_TOTALMASS, OnDeltaposSpinTotalmass)
281  ON_EN_CHANGE(IDC_EDIT_LINEARVELOCITY, OnEnChangeEditLinearvelocity)
282  ON_EN_CHANGE(IDC_EDIT_ANGULARVELOCITY, OnEnChangeEditAngularvelocity)
283  ON_EN_CHANGE(IDC_EDIT_LINEARACCELERATION, OnEnChangeEditLinearacceleration)
284  ON_EN_CHANGE(IDC_EDIT_ANGULARACCELERATION, OnEnChangeEditAngularacceleration)
285  ON_EN_CHANGE(IDC_EDIT_NO_MOVE_TIME, OnEnChangeEditNomovetime)
286  ON_EN_CHANGE(IDC_EDIT_MINIMUM_MOVE_TIME, OnEnChangeEditMinimummovetime)
287  ON_EN_CHANGE(IDC_EDIT_MAXIMUM_MOVE_TIME, OnEnChangeEditMaximummovetime)
288  ON_EN_CHANGE(IDC_EDIT_LINEAR_TOLERANCE, OnEnChangeEditLineartolerance)
289  ON_EN_CHANGE(IDC_EDIT_ANGULAR_TOLERANCE, OnEnChangeEditAngulartolerance)
290 END_MESSAGE_MAP()
291 
292 
293 // DialogAFProperties message handlers
294 
295 BOOL DialogAFProperties::OnToolTipNotify( UINT id, NMHDR *pNMHDR, LRESULT *pResult ) {
296  return DefaultOnToolTipNotify( toolTips, id, pNMHDR, pResult );
297 }
298 
300  if ( EditControlEnterHit( &m_editModel ) ) {
301  UpdateFile();
302  }
303 }
304 
306  if ( EditControlEnterHit( &m_editSkin ) ) {
307  UpdateFile();
308  // reload the .af file
310  }
311 }
312 
314  UpdateFile();
315  if ( file && file->bodies.Num() && MessageBox( "Apply to all bodies ?", "Self Collision", MB_YESNO | MB_ICONQUESTION ) == IDYES ) {
316  for ( int i = 0; i < file->bodies.Num(); i++ ) {
317  file->bodies[i]->selfCollision = file->selfCollision;
318  }
319  bodyDlg->LoadFile( file );
320  }
321 }
322 
325  UpdateFile();
326  if ( file && file->bodies.Num() && MessageBox( "Apply to all bodies ?", "Contents", MB_YESNO | MB_ICONQUESTION ) == IDYES ) {
327  for ( int i = 0; i < file->bodies.Num(); i++ ) {
328  file->bodies[i]->contents = file->contents;
329  }
330  bodyDlg->LoadFile( file );
331  }
332  }
333 }
334 
337  UpdateFile();
338  if ( file && file->bodies.Num() && MessageBox( "Apply to all bodies ?", "Clip Mask", MB_YESNO | MB_ICONQUESTION ) == IDYES ) {
339  for ( int i = 0; i < file->bodies.Num(); i++ ) {
340  file->bodies[i]->clipMask = file->clipMask;
341  }
342  bodyDlg->LoadFile( file );
343  }
344  }
345 }
346 
348  if ( EditControlEnterHit( (CEdit *) GetDlgItem( IDC_EDIT_LINEARFRICTION ) ) ) {
349  UpdateFile();
350  if ( file && file->bodies.Num() && MessageBox( "Apply to all bodies ?", "Linear Friction", MB_YESNO | MB_ICONQUESTION ) == IDYES ) {
351  for ( int i = 0; i < file->bodies.Num(); i++ ) {
352  file->bodies[i]->linearFriction = file->defaultLinearFriction;
353  }
354  bodyDlg->LoadFile( file );
355  }
356  }
357  else {
358  m_linearFriction = EditVerifyFloat( (CEdit *) GetDlgItem( IDC_EDIT_LINEARFRICTION ), false );
359  }
360 }
361 
362 void DialogAFProperties::OnDeltaposSpinLinearfriction(NMHDR *pNMHDR, LRESULT *pResult) {
363  LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
364  m_linearFriction = EditSpinFloat( (CEdit *)GetDlgItem( IDC_EDIT_LINEARFRICTION ), pNMUpDown->iDelta < 0 );
365  UpdateFile();
366  *pResult = 0;
367 }
368 
370  if ( EditControlEnterHit( (CEdit *) GetDlgItem( IDC_EDIT_ANGULARFRICTION ) ) ) {
371  UpdateFile();
372  if ( file && file->bodies.Num() && MessageBox( "Apply to all bodies ?", "Angular Friction", MB_YESNO | MB_ICONQUESTION ) == IDYES ) {
373  for ( int i = 0; i < file->bodies.Num(); i++ ) {
374  file->bodies[i]->angularFriction = file->defaultAngularFriction;
375  }
376  bodyDlg->LoadFile( file );
377  }
378  }
379  else {
380  m_angularFriction = EditVerifyFloat( (CEdit *) GetDlgItem( IDC_EDIT_ANGULARFRICTION ), false );
381  }
382 }
383 
384 void DialogAFProperties::OnDeltaposSpinAngularfriction(NMHDR *pNMHDR, LRESULT *pResult) {
385  LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
386  m_angularFriction = EditSpinFloat( (CEdit *)GetDlgItem( IDC_EDIT_ANGULARFRICTION ), pNMUpDown->iDelta < 0 );
387  UpdateFile();
388  *pResult = 0;
389 }
390 
392  if ( EditControlEnterHit( (CEdit *) GetDlgItem( IDC_EDIT_CONTACTFRICTION ) ) ) {
393  UpdateFile();
394  if ( file && file->bodies.Num() && MessageBox( "Apply to all bodies ?", "Contact Friction", MB_YESNO | MB_ICONQUESTION ) == IDYES ) {
395  for ( int i = 0; i < file->bodies.Num(); i++ ) {
396  file->bodies[i]->contactFriction = file->defaultContactFriction;
397  }
398  bodyDlg->LoadFile( file );
399  }
400  }
401  else {
402  m_contactFriction = EditVerifyFloat( (CEdit *) GetDlgItem( IDC_EDIT_CONTACTFRICTION ), false );
403  }
404 }
405 
406 void DialogAFProperties::OnDeltaposSpinContactfriction(NMHDR *pNMHDR, LRESULT *pResult) {
407  LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
408  m_contactFriction = EditSpinFloat( (CEdit *)GetDlgItem( IDC_EDIT_CONTACTFRICTION ), pNMUpDown->iDelta < 0 );
409  UpdateFile();
410  *pResult = 0;
411 }
412 
414  if ( EditControlEnterHit( (CEdit *) GetDlgItem( IDC_EDIT_CONSTRAINTFRICTION ) ) ) {
415  UpdateFile();
416  if ( file && file->constraints.Num() && MessageBox( "Apply to all constraints ?", "Constraint Friction", MB_YESNO | MB_ICONQUESTION ) == IDYES ) {
417  for ( int i = 0; i < file->constraints.Num(); i++ ) {
419  }
421  }
422  }
423  else {
424  EditVerifyFloat( (CEdit *) GetDlgItem( IDC_EDIT_CONSTRAINTFRICTION ), false );
425  }
426 }
427 
428 void DialogAFProperties::OnDeltaposSpinConstraintfriction(NMHDR *pNMHDR, LRESULT *pResult) {
429  LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
430  m_constraintFriction = EditSpinFloat( (CEdit *)GetDlgItem( IDC_EDIT_CONSTRAINTFRICTION ), pNMUpDown->iDelta < 0 );
431  UpdateFile();
432  *pResult = 0;
433 }
434 
436  if ( EditControlEnterHit( (CEdit *) GetDlgItem( IDC_EDIT_TOTALMASS ) ) ) {
437  UpdateFile();
438  }
439 }
440 
441 void DialogAFProperties::OnDeltaposSpinTotalmass(NMHDR *pNMHDR, LRESULT *pResult) {
442  LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
443  m_totalMass = EditSpinFloat( (CEdit *)GetDlgItem( IDC_EDIT_TOTALMASS ), pNMUpDown->iDelta < 0 );
444  UpdateFile();
445  *pResult = 0;
446 }
447 
449  if ( EditControlEnterHit( (CEdit *) GetDlgItem( IDC_EDIT_LINEARVELOCITY ) ) ) {
450  UpdateFile();
451  }
452 }
453 
455  if ( EditControlEnterHit( (CEdit *) GetDlgItem( IDC_EDIT_ANGULARVELOCITY ) ) ) {
456  UpdateFile();
457  }
458 }
459 
461  if ( EditControlEnterHit( (CEdit *) GetDlgItem( IDC_EDIT_LINEARACCELERATION ) ) ) {
462  UpdateFile();
463  }
464 }
465 
467  if ( EditControlEnterHit( (CEdit *) GetDlgItem( IDC_EDIT_ANGULARACCELERATION ) ) ) {
468  UpdateFile();
469  }
470 }
471 
473  if ( EditControlEnterHit( (CEdit *) GetDlgItem( IDC_EDIT_NO_MOVE_TIME ) ) ) {
474  UpdateFile();
475  }
476 }
477 
479  if ( EditControlEnterHit( (CEdit *) GetDlgItem( IDC_EDIT_MINIMUM_MOVE_TIME ) ) ) {
480  UpdateFile();
481  }
482 }
483 
485  if ( EditControlEnterHit( (CEdit *) GetDlgItem( IDC_EDIT_MAXIMUM_MOVE_TIME ) ) ) {
486  UpdateFile();
487  }
488 }
489 
491  if ( EditControlEnterHit( (CEdit *) GetDlgItem( IDC_EDIT_LINEAR_TOLERANCE ) ) ) {
492  UpdateFile();
493  }
494 }
495 
497  if ( EditControlEnterHit( (CEdit *) GetDlgItem( IDC_EDIT_ANGULAR_TOLERANCE ) ) ) {
498  UpdateFile();
499  }
500 }
501 
503 // m_editModel.SetWindowText( str );
504 // UpdateFile();
505 }
506 
508 // m_editSkin.SetWindowText( str );
509 // UpdateFile();
510  // reload the .af file
511 // AFDialogReloadFile();
512 }
BOOL DefaultOnToolTipNotify(const toolTip_t *toolTips, UINT id, NMHDR *pNMHDR, LRESULT *pResult)
Definition: StdAfx.cpp:104
afx_msg void OnEnChangeEditMinimummovetime()
idList< idDeclAF_Constraint * > constraints
Definition: DeclAF.h:190
float defaultLinearFriction
Definition: DeclAF.h:174
#define IDC_EDIT_MAXIMUM_MOVE_TIME
float noMoveTime
Definition: DeclAF.h:181
afx_msg void OnEnChangeEditLineartolerance()
virtual void AF_UpdateEntities(const char *fileName)
Definition: AFEntity.cpp:2856
afx_msg void OnEnChangeEditLinearvelocity()
#define IDC_EDIT_SKIN
afx_msg void OnEnChangeEditNomovetime()
afx_msg void OnDeltaposSpinContactfriction(NMHDR *pNMHDR, LRESULT *pResult)
static int ContentsFromString(const char *str)
Definition: DeclAF.cpp:653
afx_msg void OnEnChangeEditLinearfriction()
afx_msg void OnDeltaposSpinConstraintfriction(NMHDR *pNMHDR, LRESULT *pResult)
CONST PIXELFORMATDESCRIPTOR UINT
Definition: win_qgl.cpp:47
float noMoveTranslation
Definition: DeclAF.h:182
#define IDC_EDIT_ANGULAR_TOLERANCE
#define IDC_EDIT_LINEARFRICTION
#define IDC_BUTTON_BROWSE_SKIN
afx_msg void OnEnChangeEditLinearacceleration()
#define IDC_CHECK_SELFCOLLISION
void AFDialogReloadFile(void)
Definition: DialogAF.cpp:624
afx_msg void OnEnChangeEditConstraintfriction()
int contents
Definition: DeclAF.h:186
#define IDC_EDIT_NO_MOVE_TIME
const char * GetName(void) const
Definition: DeclManager.h:140
float totalMass
Definition: DeclAF.h:178
afx_msg void OnEnChangeEditAngularacceleration()
int i
Definition: process.py:33
afx_msg void OnDeltaposSpinTotalmass(NMHDR *pNMHDR, LRESULT *pResult)
#define BOOL
Definition: mprintf.c:71
#define IDC_EDIT_LINEAR_TOLERANCE
#define IDC_EDIT_ANGULARACCELERATION
#define IDC_EDIT_LINEARVELOCITY
idGameEdit * gameEdit
Definition: GameEdit.cpp:668
afx_msg void OnBnClickedCheckSelfcollision()
#define IDC_EDIT_MODEL
afx_msg void OnEnChangeEditTotalmass()
void LoadFile(idDeclAF *af)
virtual int OnToolHitTest(CPoint point, TOOLINFO *pTI) const
float minMoveTime
Definition: DeclAF.h:184
idStr skin
Definition: DeclAF.h:173
int clipMask
Definition: DeclAF.h:187
afx_msg void OnEnChangeEditClipmask()
static toolTip_t toolTips[]
#define IDC_SPIN_CONSTRAINTFRICTION
afx_msg void OnEnChangeEditModel()
#define NULL
Definition: Lib.h:88
#define IDC_EDIT_MINIMUM_MOVE_TIME
float defaultContactFriction
Definition: DeclAF.h:176
#define IDC_SPIN_ANGULARFRICTION
void LoadFile(idDeclAF *af)
int DefaultOnToolHitTest(const toolTip_t *toolTips, const CDialog *dialog, CPoint point, TOOLINFO *pTI)
Definition: StdAfx.cpp:75
virtual void DoDataExchange(CDataExchange *pDX)
DialogAFBody * bodyDlg
#define IDC_EDIT_CLIPMASK
#define IDC_EDIT_TOTALMASS
#define IDD_DIALOG_AF_PROPERTIES
static const char * ContentsToString(const int contents, idStr &str)
Definition: DeclAF.cpp:693
afx_msg void OnEnChangeEditAngularfriction()
afx_msg void OnDeltaposSpinLinearfriction(NMHDR *pNMHDR, LRESULT *pResult)
DialogAFConstraint * constraintDlg
bool EditControlEnterHit(CEdit *edit)
Definition: StdAfx.cpp:154
#define IDC_SPIN_CONTACTFRICTION
void LoadFile(idDeclAF *af)
afx_msg void OnBnClickedButtonBrowseSkin()
#define IDC_EDIT_ANGULARVELOCITY
float noMoveRotation
Definition: DeclAF.h:183
float maxMoveTime
Definition: DeclAF.h:185
#define IDC_EDIT_LINEARACCELERATION
afx_msg void OnEnChangeEditAngulartolerance()
idVec2 suspendVelocity
Definition: DeclAF.h:179
float defaultConstraintFriction
Definition: DeclAF.h:177
void AFDialogSetFileModified(void)
Definition: DialogAF.cpp:613
idVec2 suspendAcceleration
Definition: DeclAF.h:180
idList< idDeclAF_Body * > bodies
Definition: DeclAF.h:189
afx_msg void OnEnChangeEditMaximummovetime()
#define IDC_EDIT_CONTENTS
afx_msg void OnEnChangeEditAngularvelocity()
afx_msg void OnBnClickedButtonBrowseModel()
int Num(void) const
Definition: List.h:265
idStr model
Definition: DeclAF.h:172
#define IDC_EDIT_ANGULARFRICTION
Definition: Str.h:116
#define IDC_BUTTON_BROWSE_MODEL
#define IDC_SPIN_LINEARFRICTION
#define IDC_SPIN_TOTALMASS
float EditSpinFloat(CEdit *edit, bool up)
Definition: StdAfx.cpp:305
const char * c_str(void) const
Definition: Str.h:487
#define FALSE
Definition: mprintf.c:70
afx_msg void OnDeltaposSpinAngularfriction(NMHDR *pNMHDR, LRESULT *pResult)
afx_msg void OnEnChangeEditSkin()
#define TRUE
Definition: mprintf.c:69
#define IDC_EDIT_CONSTRAINTFRICTION
float defaultAngularFriction
Definition: DeclAF.h:175
#define IDC_EDIT_CONTACTFRICTION
bool selfCollision
Definition: DeclAF.h:188
afx_msg void OnEnChangeEditContactfriction()
float EditVerifyFloat(CEdit *edit, bool allowNegative)
Definition: StdAfx.cpp:175
afx_msg void OnEnChangeEditContents()