csgo-2018-source/mdlobjects/dmecollisionjoints.cpp
2021-07-24 21:11:47 -07:00

143 lines
4.7 KiB
C++

//====== Copyright © 1996-2004, Valve Corporation, All rights reserved. =====//
//
// Dme $collisionjoints
//
//===========================================================================//
#include "datamodel/dmelementfactoryhelper.h"
#include "mdlobjects/dmecollisionjoints.h"
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
//===========================================================================
// Expose DmeJointConstrain class to the scene database
//===========================================================================
IMPLEMENT_ELEMENT_FACTORY( DmeJointConstrain, CDmeJointConstrain );
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
void CDmeJointConstrain::OnConstruction()
{
m_nType.InitAndSet( this, "type", 1 ); // 0: Free, 1: Fixed, 2: Limit
m_aLimitMin.Init( this, "minAngle" );
m_aLimitMax.Init( this, "maxAngle" );
m_flFriction.Init( this, "friction" );
}
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
void CDmeJointConstrain::OnDestruction()
{
}
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
void CDmeJointConstrain::OnAttributeChanged( CDmAttribute *pAttribute )
{
// Limit "type" to [0:2]
// TODO: Check for recursive behavior
if ( pAttribute == m_nType.GetAttribute() )
{
m_nType.Set( clamp( m_nType.Get(), 0, 2 ) );
}
}
//===========================================================================
// Expose DmeJointAnimatedFriction class to the scene database
//===========================================================================
IMPLEMENT_ELEMENT_FACTORY( DmeJointAnimatedFriction, CDmeJointAnimatedFriction );
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
void CDmeJointAnimatedFriction::OnConstruction()
{
m_nMinFriction.InitAndSet( this, "minFriction", 1.0f );
m_nMaxFriction.InitAndSet( this, "maxFriction", 1.0f );
m_tTimeIn.Init( this, "timeIn" );
m_tTimeHold.Init( this, "timeHold" );
m_tTimeOut.Init( this, "timeOut" );
}
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
void CDmeJointAnimatedFriction::OnDestruction()
{
}
//===========================================================================
// Expose DmeCollisionJoint class to the scene database
//===========================================================================
IMPLEMENT_ELEMENT_FACTORY( DmeCollisionJoint, CDmeCollisionJoint );
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
void CDmeCollisionJoint::OnConstruction()
{
m_flMassBias.InitAndSet( this, "massBias", 1.0f );
m_flDamping.InitAndSet( this, "damping", 0.0f );
m_flRotDamping.InitAndSet( this, "rotationalDamping", 0.0f );
m_flInertia.InitAndSet( this, "inertia", 1.0f );
m_ConstrainX.Init( this, "constrainX" );
m_ConstrainY.Init( this, "constrainY" );
m_ConstrainZ.Init( this, "constrainZ" );
m_JointMergeList.Init( this, "jointMergeList" );
m_JointCollideList.Init( this, "jointCollideList" );
}
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
void CDmeCollisionJoint::OnDestruction()
{
}
//===========================================================================
// Expose DmeKeyValueString class to the scene database
//===========================================================================
IMPLEMENT_ELEMENT_FACTORY( DmeCollisionJoints, CDmeCollisionJoints );
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
void CDmeCollisionJoints::OnConstruction()
{
m_bConcavePerJoint.InitAndSet( this, "concavePerJoint", false );
m_bSelfCollisions.InitAndSet( this, "selfCollisions", true );
m_bBoneFollower.InitAndSet( this, "boneFollower", false );
m_RootBone.Init( this, "rootBone" );
m_AnimatedFriction.Init( this, "animatedFriction" );
m_JointSkipList.Init( this, "jointSkipList" );
m_JointList.Init( this, "jointList" );
}
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
void CDmeCollisionJoints::OnDestruction()
{
}