50 lines
1.9 KiB
Ucode
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)
|
|
}
|