2011-11-22 21:28:15 +00:00
|
|
|
/*
|
|
|
|
===========================================================================
|
|
|
|
|
|
|
|
Doom 3 GPL Source Code
|
2011-12-06 18:20:15 +00:00
|
|
|
Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.
|
2011-11-22 21:28:15 +00:00
|
|
|
|
2011-12-06 16:14:59 +00:00
|
|
|
This file is part of the Doom 3 GPL Source Code ("Doom 3 Source Code").
|
2011-11-22 21:28:15 +00:00
|
|
|
|
|
|
|
Doom 3 Source Code is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
Doom 3 Source Code 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 General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with Doom 3 Source Code. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
===========================================================================
|
|
|
|
*/
|
|
|
|
|
2019-01-07 04:19:20 +00:00
|
|
|
#include "tools/edit_gui_common.h"
|
|
|
|
|
2011-11-22 21:28:15 +00:00
|
|
|
|
|
|
|
#include "../../sys/win32/rc/AFEditor_resource.h"
|
|
|
|
|
|
|
|
#include "DialogAF.h"
|
|
|
|
#include "DialogAFView.h"
|
|
|
|
|
|
|
|
// DialogAFView dialog
|
|
|
|
|
|
|
|
toolTip_t DialogAFView::toolTips[] = {
|
|
|
|
{ IDC_CHECK_VIEW_BODIES, "show bodies" },
|
|
|
|
{ IDC_CHECK_VIEW_BODYNAMES, "show body names" },
|
|
|
|
{ IDC_CHECK_VIEW_BODYMASS, "show body mass" },
|
|
|
|
{ IDC_CHECK_VIEW_TOTALMASS, "show total mass" },
|
|
|
|
{ IDC_CHECK_VIEW_INERTIATENSOR, "show body inertia tensor" },
|
|
|
|
{ IDC_CHECK_VIEW_VELOCITY, "show body velocity" },
|
|
|
|
{ IDC_CHECK_VIEW_CONSTRAINTNAMES, "show constraint names" },
|
|
|
|
{ IDC_CHECK_VIEW_CONSTRAINTS, "show constraints" },
|
|
|
|
{ IDC_CHECK_VIEW_PRIMARYONLY, "show only primary constraints" },
|
|
|
|
{ IDC_CHECK_VIEW_LIMITS, "show constraint limits" },
|
|
|
|
{ IDC_CHECK_VIEW_CONSTRAINEDBODIES, "show bodies constrained by current constraint (body1 = cyan, body2 = blue)" },
|
|
|
|
{ IDC_CHECK_VIEW_TREES, "show tree structures" },
|
|
|
|
{ IDC_CHECK_MD5_SKELETON, "show md5 with skeleton" },
|
|
|
|
{ IDC_CHECK_MD5_SKELETONONLY, "show only the md5 skeleton" },
|
|
|
|
{ IDC_CHECK_LINES_DEPTHTEST, "zbuffer lines" },
|
|
|
|
{ IDC_CHECK_LINES_USEARROWS, "use arrows" },
|
|
|
|
{ IDC_CHECK_PHYSICS_NOFRICTION, "disable all friction" },
|
|
|
|
{ IDC_CHECK_PHYSICS_NOLIMITS, "disable all joint limits" },
|
|
|
|
{ IDC_CHECK_PHYSICS_NOGRAVITY, "disable gravity" },
|
|
|
|
{ IDC_CHECK_PHYSICS_NOSELFCOLLISION, "disable self collision detection" },
|
|
|
|
{ IDC_CHECK_PHYSICS_TIMING, "show performance timings" },
|
|
|
|
{ IDC_CHECK_PHYSICS_DRAG_ENTITIES, "drag entities" },
|
|
|
|
{ IDC_CHECK_PHYSICS_SHOW_DRAG_SELECTION, "show selection box around the entity selected for dragging" },
|
|
|
|
{ 0, NULL }
|
|
|
|
};
|
|
|
|
|
|
|
|
IMPLEMENT_DYNAMIC(DialogAFView, CDialog)
|
|
|
|
|
|
|
|
/*
|
|
|
|
================
|
|
|
|
DialogAFView::DialogAFView
|
|
|
|
================
|
|
|
|
*/
|
|
|
|
DialogAFView::DialogAFView(CWnd* pParent /*=NULL*/)
|
|
|
|
: CDialog(DialogAFView::IDD, pParent)
|
|
|
|
|
|
|
|
{
|
|
|
|
m_showBodies = cvarSystem->GetCVarBool( "af_showBodies" );
|
|
|
|
m_showBodyNames = cvarSystem->GetCVarBool( "af_showBodyNames" );
|
|
|
|
m_showMass = cvarSystem->GetCVarBool( "af_showMass" );
|
|
|
|
m_showTotalMass = cvarSystem->GetCVarBool( "af_showTotalMass" );
|
|
|
|
m_showInertia = cvarSystem->GetCVarBool( "af_showInertia" );
|
|
|
|
m_showVelocity = cvarSystem->GetCVarBool( "af_showVelocity" );
|
|
|
|
m_showConstraints = cvarSystem->GetCVarBool( "af_showConstraints" );
|
|
|
|
m_showConstraintNames = cvarSystem->GetCVarBool( "af_showConstraintNames" );
|
|
|
|
m_showPrimaryOnly = cvarSystem->GetCVarBool( "af_showPrimaryOnly" );
|
|
|
|
m_showLimits = cvarSystem->GetCVarBool( "af_showLimits" );
|
|
|
|
m_showConstrainedBodies = cvarSystem->GetCVarBool( "af_showConstrainedBodies" );
|
|
|
|
m_showTrees = cvarSystem->GetCVarBool( "af_showTrees" );
|
|
|
|
m_showSkeleton = cvarSystem->GetCVarInteger( "af_showSkel" ) == 1;
|
|
|
|
m_showSkeletonOnly = cvarSystem->GetCVarInteger( "af_showSkel" ) == 2;
|
|
|
|
m_debugLineDepthTest = cvarSystem->GetCVarBool( "r_debugLineDepthTest" );
|
|
|
|
m_debugLineUseArrows = cvarSystem->GetCVarInteger( "r_debugArrowStep" ) != 0;
|
|
|
|
m_noFriction = cvarSystem->GetCVarBool( "af_skipFriction" );
|
|
|
|
m_noLimits = cvarSystem->GetCVarBool( "af_skipLimits" );
|
|
|
|
m_gravity = cvarSystem->GetCVarFloat( "g_gravity" );
|
|
|
|
m_noGravity = ( m_gravity == 0.0f );
|
|
|
|
m_noSelfCollision = cvarSystem->GetCVarBool( "af_skipSelfCollision" );
|
|
|
|
m_showTimings = cvarSystem->GetCVarBool( "af_showTimings" );
|
|
|
|
m_dragEntity = cvarSystem->GetCVarBool( "g_dragEntity" );
|
|
|
|
m_dragShowSelection = cvarSystem->GetCVarBool( "g_dragShowSelection" );
|
|
|
|
|
|
|
|
Create( IDD_DIALOG_AF_VIEW, pParent );
|
|
|
|
EnableToolTips( TRUE );
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
================
|
|
|
|
DialogAFView::~DialogAFView
|
|
|
|
================
|
|
|
|
*/
|
|
|
|
DialogAFView::~DialogAFView() {
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
================
|
|
|
|
DialogAFView::DoDataExchange
|
|
|
|
================
|
|
|
|
*/
|
|
|
|
void DialogAFView::DoDataExchange(CDataExchange* pDX) {
|
|
|
|
CDialog::DoDataExchange(pDX);
|
|
|
|
//{{AFX_DATA_MAP(DialogAFView)
|
|
|
|
DDX_Check(pDX, IDC_CHECK_VIEW_BODIES, m_showBodies);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_VIEW_BODYNAMES, m_showBodyNames);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_VIEW_BODYMASS, m_showMass);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_VIEW_TOTALMASS, m_showTotalMass);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_VIEW_INERTIATENSOR, m_showInertia);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_VIEW_VELOCITY, m_showVelocity);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_VIEW_CONSTRAINTS, m_showConstraints);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_VIEW_CONSTRAINTNAMES, m_showConstraintNames);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_VIEW_PRIMARYONLY, m_showPrimaryOnly);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_VIEW_LIMITS, m_showLimits);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_VIEW_CONSTRAINEDBODIES, m_showConstrainedBodies);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_VIEW_TREES, m_showTrees);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_MD5_SKELETON, m_showSkeleton);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_MD5_SKELETONONLY, m_showSkeletonOnly);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_LINES_DEPTHTEST, m_debugLineDepthTest);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_LINES_USEARROWS, m_debugLineUseArrows);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_PHYSICS_NOFRICTION, m_noFriction);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_PHYSICS_NOLIMITS, m_noLimits);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_PHYSICS_NOGRAVITY, m_noGravity);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_PHYSICS_NOSELFCOLLISION, m_noSelfCollision);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_PHYSICS_TIMING, m_showTimings);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_PHYSICS_DRAG_ENTITIES, m_dragEntity);
|
|
|
|
DDX_Check(pDX, IDC_CHECK_PHYSICS_SHOW_DRAG_SELECTION, m_dragShowSelection);
|
|
|
|
//}}AFX_DATA_MAP
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
================
|
|
|
|
DialogAFView::OnToolHitTest
|
|
|
|
================
|
|
|
|
*/
|
2021-05-06 00:07:41 +00:00
|
|
|
INT_PTR DialogAFView::OnToolHitTest( CPoint point, TOOLINFO* pTI ) const {
|
2011-11-22 21:28:15 +00:00
|
|
|
CDialog::OnToolHitTest( point, pTI );
|
|
|
|
return DefaultOnToolHitTest( toolTips, this, point, pTI );
|
|
|
|
}
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(DialogAFView, CDialog)
|
|
|
|
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, OnToolTipNotify)
|
|
|
|
ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, OnToolTipNotify)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_VIEW_BODIES, OnBnClickedCheckViewBodies)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_VIEW_BODYNAMES, OnBnClickedCheckViewBodynames)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_VIEW_BODYMASS, OnBnClickedCheckViewBodyMass)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_VIEW_TOTALMASS, OnBnClickedCheckViewTotalMass)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_VIEW_INERTIATENSOR, OnBnClickedCheckViewInertiatensor)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_VIEW_VELOCITY, OnBnClickedCheckViewVelocity)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_VIEW_CONSTRAINTS, OnBnClickedCheckViewConstraints)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_VIEW_CONSTRAINTNAMES, OnBnClickedCheckViewConstraintnames)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_VIEW_PRIMARYONLY, OnBnClickedCheckViewPrimaryonly)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_VIEW_LIMITS, OnBnClickedCheckViewLimits)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_VIEW_CONSTRAINEDBODIES, OnBnClickedCheckViewConstrainedBodies)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_VIEW_TREES, OnBnClickedCheckViewTrees)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_MD5_SKELETON, OnBnClickedCheckMd5Skeleton)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_MD5_SKELETONONLY, OnBnClickedCheckMd5Skeletononly)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_LINES_DEPTHTEST, OnBnClickedCheckLinesDepthtest)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_LINES_USEARROWS, OnBnClickedCheckLinesUsearrows)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_PHYSICS_NOFRICTION, OnBnClickedCheckPhysicsNofriction)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_PHYSICS_NOLIMITS, OnBnClickedCheckPhysicsNolimits)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_PHYSICS_NOGRAVITY, OnBnClickedCheckPhysicsNogravity)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_PHYSICS_NOSELFCOLLISION, OnBnClickedCheckPhysicsNoselfcollision)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_PHYSICS_TIMING, OnBnClickedCheckPhysicsTiming)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_PHYSICS_DRAG_ENTITIES, OnBnClickedCheckPhysicsDragEntities)
|
|
|
|
ON_BN_CLICKED(IDC_CHECK_PHYSICS_SHOW_DRAG_SELECTION, OnBnClickedCheckPhysicsShowDragSelection)
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
|
|
|
|
// DialogAFView message handlers
|
|
|
|
|
|
|
|
BOOL DialogAFView::OnToolTipNotify( UINT id, NMHDR *pNMHDR, LRESULT *pResult ) {
|
|
|
|
return DefaultOnToolTipNotify( toolTips, id, pNMHDR, pResult );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckViewBodies() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "af_showBodies", m_showBodies != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckViewBodynames() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "af_showBodyNames", m_showBodyNames != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckViewBodyMass() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "af_showMass", m_showMass != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckViewTotalMass() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "af_showTotalMass", m_showTotalMass != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckViewInertiatensor() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "af_showInertia", m_showInertia != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckViewVelocity() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "af_showVelocity", m_showVelocity != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckViewConstraints() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "af_showConstraints", m_showConstraints != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckViewConstraintnames() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "af_showConstraintNames", m_showConstraintNames != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckViewPrimaryonly() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "af_showPrimaryOnly", m_showPrimaryOnly != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckViewLimits() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "af_showLimits", m_showLimits != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckViewConstrainedBodies() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "af_showConstrainedBodies", m_showConstrainedBodies != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckViewTrees() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "af_showTrees", m_showTrees != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckMd5Skeleton() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
if ( !m_showSkeletonOnly ) {
|
|
|
|
if ( m_showSkeleton ) {
|
|
|
|
cvarSystem->SetCVarInteger( "r_showSkel", 1 );
|
|
|
|
} else {
|
|
|
|
cvarSystem->SetCVarInteger( "r_showSkel", 0 );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckMd5Skeletononly() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
if ( m_showSkeletonOnly ) {
|
|
|
|
cvarSystem->SetCVarInteger( "r_showSkel", 2 );
|
|
|
|
} else {
|
|
|
|
if ( m_showSkeleton ) {
|
|
|
|
cvarSystem->SetCVarInteger( "r_showSkel", 1 );
|
|
|
|
} else {
|
|
|
|
cvarSystem->SetCVarInteger( "r_showSkel", 0 );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckLinesDepthtest() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "r_debugLineDepthTest", m_debugLineDepthTest != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckLinesUsearrows() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
if ( m_debugLineUseArrows ) {
|
|
|
|
cvarSystem->SetCVarInteger( "r_debugArrowStep", 120 );
|
|
|
|
} else {
|
|
|
|
cvarSystem->SetCVarInteger( "r_debugArrowStep", 0 );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckPhysicsNofriction() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "af_skipFriction", m_noFriction != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckPhysicsNolimits() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "af_skipLimits", m_noLimits != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckPhysicsNogravity() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarFloat( "g_gravity", m_noGravity ? 0.0f : m_gravity );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckPhysicsNoselfcollision() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "af_skipSelfCollision", m_noSelfCollision != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckPhysicsTiming() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "af_showTimings", m_showTimings != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckPhysicsDragEntities() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "g_dragEntity", m_dragEntity != FALSE );
|
|
|
|
}
|
|
|
|
|
|
|
|
void DialogAFView::OnBnClickedCheckPhysicsShowDragSelection() {
|
|
|
|
UpdateData(TRUE);
|
|
|
|
cvarSystem->SetCVarBool( "g_dragShowSelection", m_dragShowSelection != FALSE );
|
|
|
|
}
|