ACE3/addons/ragdolls/config.cpp

802 lines
24 KiB
C++
Raw Normal View History

2015-01-11 21:06:40 +00:00
#include "script_component.hpp"
class CfgPatches {
2015-01-12 19:27:43 +00:00
class ADDON {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
author[] = {"KoffeinFlummi", "Opticalsnare"};
authorUrl = "https://github.com/KoffeinFlummi/";
VERSION_CONFIG;
};
};
/*
* BASED ON OPTICALSNARE'S WORK
* He gave permission to use his code here:
* http://forums.bistudio.com/showthread.php?171771-Flying-bodies-Physics-Mod&p=2603042#post2603042
*/
class PhysXParams {
2015-01-12 19:27:43 +00:00
epeImpulseDamageCoef = 1320.0;
impulseForceRagdollCoef = 200;
impulseTorqueRagdollCoef = 100;
maxRagdollImpulseForceMagnitude = 500;
maxRagdollImpulseTorqueMagnitude = 150;
ragdollHitDmgLimit = "0.01f";
ragdollHitForceCoef = "20f";
ragdollHitTime = "0.05f";
ragdollOnCollideForceCoef = "20.0f";
ragdollOnCollideMassLimit = "0.0f";
ragdollOnCollideMaxForce = "25.0f";
ragdollOnCollideMaxOffset = "2.0f";
ragdollOnCollideMaxOffsetSpeed = "50.0f";
ragdollOnCollideSpeedLimit = "2500.0f";
ragdollOnCollideVehicleImpulseCoef = "0.5f";
ragdollUnconsciousSleepCoef = "0f";
ragdollUnderwaterBuoyancyCoef = 9.7;
ragdollUnderwaterResistanceCoef = 0.005;
ragdollVehicleCollision = 1;
};
class RagDollDefaultLimit {
2015-01-12 19:27:43 +00:00
value = 0;
restitution = 0.9;
hardness = 0.5;
};
class RagDollDefaultSpring {
2015-01-12 19:27:43 +00:00
enabled = 0;
value = 0.5;
damper = 1;
targetValue = 0;
};
class RagDollSphericalJoint {
2015-01-12 19:27:43 +00:00
class TwistLimitLow : RagDollDefaultLimit {};
2015-01-12 19:27:43 +00:00
class TwistLimitHigh : RagDollDefaultLimit {};
2015-01-12 19:27:43 +00:00
class SwingLimit : RagDollDefaultLimit {};
2015-01-12 19:27:43 +00:00
class TwistSpring : RagDollDefaultSpring {
enabled = 1;
};
2015-01-12 19:27:43 +00:00
class SwingSpring : RagDollDefaultSpring {
enabled = 1;
damper = 2;
};
2015-01-12 19:27:43 +00:00
class JointSpring : RagDollDefaultSpring {
enabled = 0;
};
type = "spherical";
enableCollision = 0;
projectionDistance = 0.05;
projectionMode = "point";
};
class RagDollRevoluteJoint {
2015-01-12 19:27:43 +00:00
class LimitLow : RagDollDefaultLimit {};
2015-01-12 19:27:43 +00:00
class LimitHigh : RagDollDefaultLimit {};
2015-01-12 19:27:43 +00:00
class Spring : RagDollDefaultSpring {
enabled = 0;
};
type = "revolute";
enableCollision = 0;
projectionDistance = 0.05;
projectionMode = "point";
};
class RagDollD6Joint_PX3 {
2015-01-12 19:27:43 +00:00
type = "D6";
enableCollision = 0;
projectionDistance = 0.05;
projectionMode = "point";
swingLimitY = "0.0f";
swingLimitZ = "0.0f";
swingSpring = "0.0f";
swingDamping = "0.0f";
swingRestitution = "0.6f";
swingContactDistance = "0.05f";
twistLimitLower = "0.0f";
twistLimitUpper = "0.0f";
twistSpring = "0.0f";
twistDamping = "0.0f";
twistRestitution = "0.6f";
twistContactDistance = "0.05f";
driveSpring = "20.0f";
driveDamping = "20.0f";
driveMaxForce = "1000000.0f";
driveUseAcceleration = 1;
driveLinearVelocity[] = {0, 0, 0};
driveAngularVelocity[] = {0, 0, 0};
};
class CfgRagDollSkeletons {
2015-01-12 19:27:43 +00:00
class BaseRagdoll {
primaryWeaponBone = "";
secondaryWeaponBone = "";
networkBonePrimary = "";
networkBoneSecondary = "";
weaponSleepLinearVelocity = 20;
weaponSleepAngularVelocity = 20;
weaponDropMinTime = 1.0;
weaponDropMaxTime = 100.0;
weaponDistanceLimit = "10f";
weaponDistanceLimitTime = "5.0f";
sleepLinearVelocity = 0.05;
sleepAngularVelocity = 0.05;
simulateMinTime = 30;
simulateMaxTime = 100.0;
simulateDistanceLimit = "0.05f";
simulateDistanceLimitTime = "5.0f";
recoveryBlendTime = "0.5f";
recoveryCosLimit = "0.3f";
recoveryDistLimit = "0.7f";
animBlendTime = "0.0f";
};
2015-01-12 19:27:43 +00:00
class Soldier : BaseRagdoll {
primaryWeaponBone = "weapon";
secondaryWeaponBone = "launcher";
networkBonePrimary = "chest";
networkBoneSecondary = "pelvis";
draggingMask = "dragging";
hitMask = "hit";
hitMaskUnderwater = "hitUnderwater";
class WeaponLinkBones {
class LinkBone1 {
bone = "leftHand";
canBeDropped = 1;
prefference = "1.0f";
};
class LinkBone2 {
bone = "rightHand";
canBeDropped = 1;
prefference = "2.0f";
};
class LinkBone3 {
bone = "chest";
canBeDropped = 1;
prefference = "1.0f";
};
};
class Masks {
class DraggingMask {
name = "dragging";
mask[] = {{"pelvis", 0, 1}, {"chest", 0, 1}, {"head", "0.6f", 0}, {"leftArm", 1, 0}, {"leftForeArm", 1, 0}, {"leftHand", 1, 0}, {"rightArm", 1, 0}, {"rightForeArm", 1, 0}, {"rightHand", 1, 0}, {"leftUpLeg", 1, 0}, {"leftLeg", 1, 0}, {"leftFoot", 1, 0}, {"rightUpLeg", 1, 0}, {"rightLeg", 1, 0}, {"rightFoot", 1, 0}, {"weapon", 0, 1}, {"launcher", 0, 1}};
};
class HitMask {
name = "hit";
mask[] = {{"pelvis", 1, 0}, {"chest", 1, 0}, {"head", 1, 0}, {"leftArm", 1, 0}, {"leftForeArm", 1, 0}, {"leftHand", 1, 0}, {"rightArm", 1, 0}, {"rightForeArm", 1, 0}, {"rightHand", 1, 0}, {"leftUpLeg", 1, 0}, {"leftLeg", 1, 0}, {"leftFoot", 1, 1}, {"rightUpLeg", 1, 0}, {"rightLeg", 1, 0}, {"rightFoot", 1, 1}, {"weapon", 1, 0}, {"launcher", 1, 0}};
};
class HitMaskUnderwater {
name = "hitUnderwater";
mask[] = {{"pelvis", 1, 1}, {"chest", 1, 1}, {"head", 1, 0}, {"leftArm", 1, 0}, {"leftForeArm", 1, 0}, {"leftHand", 1, 0}, {"rightArm", 1, 0}, {"rightForeArm", 1, 0}, {"rightHand", 1, 0}, {"leftUpLeg", 1, 0}, {"leftLeg", 1, 0}, {"leftFoot", 1, 0}, {"rightUpLeg", 1, 0}, {"rightLeg", 1, 0}, {"rightFoot", 1, 0}, {"weapon", 1, 0}, {"launcher", 1, 0}};
};
};
class BaseRagdollBone {
material = "Ragdoll";
childrenUseStartTrans = 1;
};
class Bones {
class Pelvis : BaseRagdollBone {
name = "pelvis";
type = "capsule";
startBone = "pelvis";
endBone = "spine2";
mass = 15;
radius = 0.12;
networkType = "root";
};
class Chest : BaseRagdollBone {
name = "chest";
type = "capsule";
startBone = "spine1";
endBone = "neck";
radius = 0.16;
mass = 15;
};
class Head : BaseRagdollBone {
name = "head";
type = "sphere";
startBone = "head";
mass = 8;
radius = 0.16;
};
class LeftArm : BaseRagdollBone {
name = "leftArm";
type = "capsule";
startBone = "leftArm";
endBone = "leftForeArm";
mass = 8;
};
class LeftForeArm : BaseRagdollBone {
name = "leftForeArm";
type = "capsule";
startBone = "leftForeArm";
endBone = "leftHand";
mass = 6;
};
class LeftHand : BaseRagdollBone {
name = "leftHand";
type = "sphere";
startBone = "leftHand";
mass = 6;
radius = 0.08;
childrenUseStartTrans = 0;
networkType = "leftHand";
};
class RightArm : BaseRagdollBone {
name = "rightArm";
type = "capsule";
startBone = "rightArm";
endBone = "rightForeArm";
mass = 8;
};
class RightForeArm : BaseRagdollBone {
name = "rightForeArm";
type = "capsule";
startBone = "rightForeArm";
endBone = "rightHand";
mass = 6;
};
class RightHand : BaseRagdollBone {
name = "rightHand";
type = "sphere";
startBone = "rightHand";
mass = 6;
radius = 0.08;
childrenUseStartTrans = 0;
networkType = "rightHand";
};
class LeftUpLeg : BaseRagdollBone {
name = "leftUpLeg";
type = "capsule";
startBone = "leftUpLeg";
endBone = "leftLeg";
mass = 15;
};
class LeftLeg : BaseRagdollBone {
name = "leftLeg";
type = "capsule";
startBone = "leftLeg";
endBone = "leftFoot";
mass = 10;
};
class LeftFoot : BaseRagdollBone {
name = "leftFoot";
type = "box";
startBone = "leftFoot";
size[] = {0.15, 0.035, 0.07};
mass = 8;
networkType = "leftFoot";
};
class RightUpLeg : BaseRagdollBone {
name = "rightUpLeg";
type = "capsule";
startBone = "rightUpLeg";
endBone = "rightLeg";
mass = 15;
};
class RightLeg : BaseRagdollBone {
name = "rightLeg";
type = "capsule";
startBone = "rightLeg";
endBone = "rightFoot";
mass = 10;
};
class RightFoot : BaseRagdollBone {
name = "rightFoot";
type = "box";
startBone = "rightFoot";
size[] = {0.15, 0.035, 0.07};
mass = 8;
networkType = "rightFoot";
};
class Weapon : BaseRagdollBone {
name = "weapon";
type = "weapon";
startBone = "weapon";
endPosRelToStart[] = {0.0, 1.0, 0.0};
mass = 3;
};
class Launcher : BaseRagdollBone {
name = "launcher";
type = "weapon";
startBone = "launcher";
endPosRelToStart[] = {1.0, 0.0, 0.0};
mass = 3;
};
};
class JointsPX2 {
class Pelvis_Chest_PX2 : RagDollSphericalJoint {
name = "pelvis_chest";
bone1 = "pelvis";
bone2 = "chest";
axis[] = {0, 1, 0.3};
class SwingLimit : SwingLimit {
value = 25;
};
class TwistLimitLow : TwistLimitLow {
value = -15;
};
class TwistLimitHigh : TwistLimitHigh {
value = 25;
};
};
class Chest_Head_PX2 : RagDollSphericalJoint {
name = "chest_head";
bone1 = "chest";
bone2 = "head";
class SwingLimit : SwingLimit {
value = 20;
};
class TwistLimitLow : TwistLimitLow {
value = -15;
};
class TwistLimitHigh : TwistLimitHigh {
value = 15;
};
};
class Chest_LeftArm_PX2 : RagDollSphericalJoint {
name = "chest_leftArm";
bone1 = "chest";
bone2 = "leftArm";
axis[] = {-1, 0.0, 0.5};
enableCollision = 1;
class SwingLimit : SwingLimit {
value = 60;
};
class TwistLimitLow : TwistLimitLow {
value = -20;
};
class TwistLimitHigh : TwistLimitHigh {
value = 20;
};
};
class LeftArm_LeftForeArm_PX2 : RagDollRevoluteJoint {
name = "leftArm_leftForeArm";
bone1 = "leftArm";
bone2 = "leftForeArm";
axis[] = {1, -1, 0.2};
class LimitLow : LimitLow {
value = -2;
};
class LimitHigh : LimitHigh {
value = 60;
};
};
class LeftForeArm_LeftHand_PX2 : RagDollSphericalJoint {
name = "leftForeArm_leftHand";
bone1 = "leftForeArm";
bone2 = "leftHand";
class SwingLimit : SwingLimit {
value = 20;
};
class TwistLimitLow : TwistLimitLow {
value = -5;
};
class TwistLimitHigh : TwistLimitHigh {
value = 5;
};
};
class Chest_RightArm_PX2 : RagDollSphericalJoint {
name = "chest_rightArm";
bone1 = "chest";
bone2 = "rightArm";
axis[] = {1, 0.0, 0.5};
enableCollision = 1;
class SwingLimit : SwingLimit {
value = 60;
};
class TwistLimitLow : TwistLimitLow {
value = -20;
};
class TwistLimitHigh : TwistLimitHigh {
value = 20;
};
};
class RightArm_RightForeArm_PX2 : RagDollRevoluteJoint {
name = "rightArm_rightForeArm";
bone1 = "rightArm";
bone2 = "rightForeArm";
axis[] = {1, 1, -0.2};
class LimitLow : LimitLow {
value = -2;
};
class LimitHigh : LimitHigh {
value = 60;
};
};
class RightForeArm_RightHand_PX2 : RagDollSphericalJoint {
name = "rightForeArm_rightHand";
bone1 = "rightForeArm";
bone2 = "rightHand";
class SwingLimit : SwingLimit {
value = 20;
};
class TwistLimitLow : TwistLimitLow {
value = -5;
};
class TwistLimitHigh : TwistLimitHigh {
value = 5;
};
};
class Pelvis_LeftUpLeg_PX2 : RagDollSphericalJoint {
name = "pelvis_leftUpLeg";
bone1 = "pelvis";
bone2 = "leftUpLeg";
axis[] = {-1.5, -1.1, 2};
enableCollision = 1;
class SwingLimit : SwingLimit {
value = 45;
};
class TwistLimitLow : TwistLimitLow {
value = -10;
};
class TwistLimitHigh : TwistLimitHigh {
value = 20;
};
};
class LeftUpLeg_LeftLeg_PX2 : RagDollRevoluteJoint {
name = "leftUpLeg_leftLeg";
bone1 = "leftUpLeg";
bone2 = "leftLeg";
axis[] = {-1, 0, 0};
class LimitLow : LimitLow {
value = -5;
};
class LimitHigh : LimitHigh {
value = 110;
};
};
class LeftLeg_LeftFoot_PX2 : RagDollRevoluteJoint {
name = "leftLeg_leftFoot";
bone1 = "leftLeg";
bone2 = "leftFoot";
axis[] = {-1, 0, 0};
class LimitLow : LimitLow {
value = -15;
};
class LimitHigh : LimitHigh {
value = 45;
};
};
class Pelvis_RightUpLeg_PX2 : RagDollSphericalJoint {
name = "pelvis_rightUpLeg";
bone1 = "pelvis";
bone2 = "rightUpLeg";
axis[] = {1.5, -1.1, 2};
enableCollision = 1;
class SwingLimit : SwingLimit {
value = 45;
};
class TwistLimitLow : TwistLimitLow {
value = -10;
};
class TwistLimitHigh : TwistLimitHigh {
value = 20;
};
};
class RightUpLeg_RightLeg_PX2 : RagDollRevoluteJoint {
name = "rightUpLeg_rightLeg";
bone1 = "rightUpLeg";
bone2 = "rightLeg";
axis[] = {-1, 0, 0};
class LimitLow : LimitLow {
value = -5;
};
class LimitHigh : LimitHigh {
value = 110;
};
};
class RightLeg_RightFoot_PX2 : RagDollRevoluteJoint {
name = "rightLeg_rightFoot";
bone1 = "rightLeg";
bone2 = "rightFoot";
axis[] = {-1, 0, 0};
class LimitLow : LimitLow {
value = -15;
};
class LimitHigh : LimitHigh {
value = 45;
};
};
};
class JointsPX3 {
class Pelvis_Chest_PX3 : RagDollD6Joint_PX3 {
name = "pelvis_chest";
bone1 = "pelvis";
bone2 = "chest";
axis[] = {0, 1, 0.3};
enableCollision = 0;
swingLimitY = 30;
swingLimitZ = 30;
twistLimitLower = -25;
twistLimitUpper = 25;
driveSpring = 30;
driveDamping = 30;
driveSpringWater = 5;
driveDampingWater = 5;
};
class Chest_Head_PX3 : RagDollD6Joint_PX3 {
name = "chest_head";
bone1 = "chest";
bone2 = "head";
swingLimitY = 45;
swingLimitZ = 45;
twistLimitLower = -40;
twistLimitUpper = 40;
driveSpring = 15.0;
driveDamping = 30;
driveSpringWater = 1.5;
driveDampingWater = 3.0;
twistSpring = 15.0;
twistDamping = 30.0;
};
class Chest_LeftArm_PX3 : RagDollD6Joint_PX3 {
name = "chest_leftArm";
bone1 = "chest";
bone2 = "leftArm";
enableCollision = 1;
swingLimitY = 85;
swingLimitZ = 85;
twistLimitLower = -60;
twistLimitUpper = 60;
driveSpring = 30;
driveDamping = 30;
driveSpringWater = 3;
driveDampingWater = 3;
};
class LeftArm_LeftForeArm_PX3 : RagDollD6Joint_PX3 {
name = "leftArm_leftForeArm";
bone1 = "leftArm";
bone2 = "leftForeArm";
axis[] = {-1, 1, -0.2};
swingLimitY = 10;
swingLimitZ = 10;
twistLimitLower = -5;
twistLimitUpper = 150;
driveSpring = 10;
driveDamping = 10;
driveSpringWater = 1;
driveDampingWater = 1;
};
class LeftForeArm_LeftHand_PX3 : RagDollD6Joint_PX3 {
name = "leftForeArm_leftHand";
bone1 = "leftForeArm";
bone2 = "leftHand";
swingLimitY = 10;
swingLimitZ = 10;
twistLimitLower = -20;
twistLimitUpper = 20;
driveSpring = 10;
driveDamping = 10;
driveSpringWater = 1;
driveDampingWater = 1;
};
class Chest_RightArm_PX3 : RagDollD6Joint_PX3 {
name = "chest_rightArm";
bone1 = "chest";
bone2 = "rightArm";
enableCollision = 1;
swingLimitY = 85;
swingLimitZ = 85;
twistLimitLower = -60;
twistLimitUpper = 60;
driveSpring = 30;
driveDamping = 30;
driveSpringWater = 3;
driveDampingWater = 3;
};
class RightArm_RightForeArm_PX3 : RagDollD6Joint_PX3 {
name = "rightArm_rightForeArm";
bone1 = "rightArm";
bone2 = "rightForeArm";
axis[] = {-1, -1, 0.2};
swingLimitY = 10;
swingLimitZ = 10;
twistLimitLower = -5;
twistLimitUpper = 150;
driveSpring = 10;
driveDamping = 10;
driveSpringWater = 1;
driveDampingWater = 1;
};
class RightForeArm_RightHand_PX3 : RagDollD6Joint_PX3 {
name = "rightForeArm_rightHand";
bone1 = "rightForeArm";
bone2 = "rightHand";
swingLimitY = 10;
swingLimitZ = 10;
twistLimitLower = -20;
twistLimitUpper = 20;
driveSpring = 10;
driveDamping = 10;
driveSpringWater = 1;
driveDampingWater = 1;
};
class Pelvis_LeftUpLeg_PX3 : RagDollD6Joint_PX3 {
name = "pelvis_leftUpLeg";
bone1 = "pelvis";
bone2 = "leftUpLeg";
enableCollision = 1;
swingLimitY = 35;
swingLimitZ = 35;
twistLimitLower = -10;
twistLimitUpper = 60;
driveSpring = 30;
driveDamping = 30;
driveSpringWater = 3;
driveDampingWater = 3;
twistDamping = 30.0;
};
class LeftUpLeg_LeftLeg_PX3 : RagDollD6Joint_PX3 {
name = "leftUpLeg_leftLeg";
bone1 = "leftUpLeg";
bone2 = "leftLeg";
axis[] = {1, 0, 0};
swingLimitY = 10;
swingLimitZ = 10;
twistLimitLower = -5;
twistLimitUpper = 120;
driveSpring = 20;
driveDamping = 20;
driveSpringWater = 2;
driveDampingWater = 2;
};
class LeftLeg_LeftFoot_PX3 : RagDollD6Joint_PX3 {
name = "leftLeg_leftFoot";
bone1 = "leftLeg";
bone2 = "leftFoot";
axis[] = {1, 0, 0};
swingLimitY = 10;
swingLimitZ = 10;
twistLimitLower = -15;
twistLimitUpper = 45;
driveSpring = 20;
driveDamping = 20;
driveSpringWater = 2;
driveDampingWater = 2;
};
class Pelvis_RightUpLeg_PX3 : RagDollD6Joint_PX3 {
name = "pelvis_rightUpLeg";
bone1 = "pelvis";
bone2 = "rightUpLeg";
enableCollision = 1;
swingLimitY = 35;
swingLimitZ = 35;
twistLimitLower = -10;
twistLimitUpper = 60;
driveSpring = 30;
driveDamping = 30;
driveSpringWater = 3;
driveDampingWater = 3;
twistDamping = 30.0;
};
class RightUpLeg_RightLeg_PX3 : RagDollD6Joint_PX3 {
name = "rightUpLeg_rightLeg";
bone1 = "rightUpLeg";
bone2 = "rightLeg";
axis[] = {1, 0, 0};
swingLimitY = 10;
swingLimitZ = 10;
twistLimitLower = -5;
twistLimitUpper = 120;
driveSpring = 20;
driveDamping = 20;
driveSpringWater = 2;
driveDampingWater = 2;
};
class RightLeg_RightFoot_PX3 : RagDollD6Joint_PX3 {
name = "rightLeg_rightFoot";
bone1 = "rightLeg";
bone2 = "rightFoot";
axis[] = {1, 0, 0};
swingLimitY = 10;
swingLimitZ = 10;
twistLimitLower = -15;
twistLimitUpper = 45;
driveSpring = 20;
driveDamping = 20;
driveSpringWater = 2;
driveDampingWater = 2;
};
};
};
};