rott/kf_sources/Engine/Classes/KarmaParamsCollision.uc
2026-07-14 20:27:09 +07:00

50 lines
1.9 KiB
Ucode

//=============================================================================
// The Karma Collision parameters class.
// This provides 'extra' parameters needed to create Karma collision for this Actor.
// You can _only_ turn on collision, not dynamics.
// NB: All parameters are in KARMA scale!
//=============================================================================
class KarmaParamsCollision extends Object
editinlinenew
native;
cpptext
{
#ifdef WITH_KARMA
void CalcContactRegion();
#endif
}
// Used internally for Karma stuff - DO NOT CHANGE!
var const transient pointer KarmaData;
var const float KScale; // Usually kept in sync with actor's DrawScale, this is how much to scale moi/com-offset (but not mass!)
var const vector KScale3D;
var vector KAcceleration; // Instantaneous acceleration.
var() float KFriction; // Multiplied pairwise to get contact friction
var() float KRestitution; // 'Bouncy-ness' - Normally between 0 and 1. Multiplied pairwise to get contact restitution.
var() float KImpactThreshold; // threshold velocity magnitude to call KImpact event
var const bool bContactingLevel; // This actor currently has contacts with some level geometry (bsp, static mesh etc.). OUTPUT VARIABLE.
// OUTPUT. The 'contact region' below refers to collision against the world, not between dynamics bodies. Use CalcContactRegion to update.
var const vector ContactRegionCenter;
var const vector ContactRegionNormal;
var const float ContactRegionRadius;
var const float ContactRegionNormalForce;
native function CalcContactRegion(); // Fills in ContactRegion variables above. Will do nothing if bContactingLevel is false.
// default is sphere with mass 1 and radius 1
defaultproperties
{
KFriction=0
KRestitution=0
KImpactThreshold=1000000
KScale=1
KScale3D=(X=1,Y=1,Z=1)
}