scotg 204 Posted September 2, 2018 I could sure use some help figuring out how to get this working nicely. Here's the list of things that I am trying to fix right now: 1) Flight stability - adjusted, but it's far from right. Adjusting is not straight forward, so finding the sweetspot or magic combination is elusive. 2) Wheel suspension - Animations are fixed, but the physical handling is way off.3) Folding wingtips, F/A-18 style FIXED4) remove co-pilot FIXEDAirplaneX vs Geom LOD After spending several hours messing with "draconic forces" and planar surface values in the config, my airplane is still acting weird. Currently, it requires 232kph to take off, whereas I'd prefer it to be about 80mph (~129kph). Once it takes off, there is little forgiveness in pitch changes before it starts to bob up and down violently, but with very subtle changes it can do a steady climb. It's like the config parameters are fighting with the plane's shape. I've started the config from the NATO UAV, which shares a similar wing layout (forward canard style elevators), but I must be overlooking something, I think. How much does the actual shape of the Geometry LOD and GeomPhys LOD affect its flight? Here is a printscreen of its GEOM LOD in OB. Fig. 1: Firebat/Hellwing Geom_LOD in Object builder. config.cpp (updated): Spoiler class CfgPatches { class ViboraHellwing { units[] = {"firebat_Pilot","firebat1"}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {"A3_Air_F","A3_Weapons_F"/*,"A3_Air_F_Exp"*/}; }; }; class CfgFactionClasses { class VIBORA { displayName = "VIBORA"; author = "Scot Gilmore"; icon = "data_f\faction_vibora_ca.paa"; priority = 2; side = 2; }; }; class CfgVehicleClasses { class Vibora_Air { displayName = "Vibora Air"; }; }; class CfgWeapons { class LMG_Minigun; class RocketPods; class Safe: RocketPods { CanLock = 0; displayName = "Safe"; displayNameMagazine = "Safe"; shortNameMagazine = "Safe"; nameSound = ""; cursor = "EmptyCursor"; cursorAim = "EmptyCursor"; magazines[] = {}; burst = 0; reloadTime = 0.01; magazineReloadTime = 0.1; }; class LMG_Minigun2: LMG_Minigun { class gunParticles { class effect1 { positionName = "machinegun2_eject_pos"; directionName = "machinegun2_eject_dir"; effectName = "MachineGunCartridge1"; }; }; }; class HMG_127: LMG_Minigun { class gunParticles { class effect1 { positionName = "machinegun_eject_pos"; directionName = "machinegun_eject_dir"; effectName = "MachineGunCartridge1"; }; }; }; class HMG_127_APC: HMG_127 { class gunParticles { class effect1 { positionName = "machinegun2_eject_pos"; directionName = "machinegun2_eject_dir"; effectName = "MachineGunCartridge1"; }; }; }; }; class CfgMovesBasic { class DefaultDie; class ManActions { firebat_Pilot = "firebat_Pilot"; firebat_Gunner = "firebat_Pilot"; }; }; class CfgMovesMaleSdr: CfgMovesBasic { class States { class Crew; class firebat_Dead: DefaultDie { actions = "DeadActions"; file = "vhx_plane\cobra_firebat\Anims\firebat_Dead.rtm"; speed = 0.5; looped = 0; terminal = 1; soundEnabled = 0; connectTo[] = {"Unconscious",0.1}; }; class KIA_firebat_Pilot: DefaultDie { actions = "DeadActions"; speed = 0.5; looped = 0; terminal = 1; file = "vhx_plane\cobra_firebat\Anims\KIA_firebat_Pilot.rtm"; connectTo[] = {"Unconscious",0.1}; }; class firebat_Pilot: Crew { file = "vhx_plane\cobra_firebat\Anims\pilot_firebat_static.rtm"; interpolateTo[] = {"KIA_firebat_Pilot",1}; }; }; }; class CfgVehicles { class B_Helipilot_F; class firebat_Pilot: B_Helipilot_F { class SpeechVariants { class Default { speechSingular[] = {"veh_infantry_pilot_s"}; speechPlural[] = {"veh_infantry_pilot_p"}; }; }; textSingular = "$STR_A3_nameSound_veh_infantry_pilot_s"; textPlural = "$STR_A3_nameSound_veh_infantry_pilot_p"; nameSound = "veh_infantry_pilot_s"; scope = 2; identityTypes[] = {"LanguageENG_F","Head_NATO","G_NATO_pilot"}; modelSides[] = {3,1}; uniformClass = "U_B_HeliPilotCoveralls"; displayName = "firebat-Pilot"; linkedItems[] = {"V_TacVestIR_blk","H_PilotHelmetHeli_O","ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles_INDEP","ItemGPS"}; respawnLinkedItems[] = {"V_TacVestIR_blk","H_PilotHelmetHeli_O","ItemMap","ItemCompass","ItemWatch","ItemRadio","NVGoggles_INDEP","ItemGPS"}; weapons[] = {"hgun_Rook40_F","Throw","Put"}; respawnWeapons[] = {"hgun_Rook40_F","Throw","Put"}; magazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","SmokeShellGreen","Chemlight_green","SmokeShellGreen","B_IR_Grenade","Chemlight_green"}; respawnMagazines[] = {"16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","16Rnd_9x21_Mag","SmokeShellGreen","Chemlight_green","SmokeShellGreen","B_IR_Grenade","Chemlight_green"}; cost = 160000; camouflage = 2.0; }; class AllVehicles; class Air; class Plane: Air { class HitPoints; }; class Plane_Base_F: Plane { class HitPoints: HitPoints { class HitHull; }; class AnimationSources; }; class firebat1: Plane_Base_F { author = "Scot Gilmore"; destrType = "DestructWreck"; scope = 2; side = 2; faction = "VIBORA"; displayName = "-- Hellwing --"; vehicleClass = "Vibora_Air"; hiddenSelections[] = {"Camo1","Camo2"}; model = "vhx_plane\cobra_firebat\firebat1.p3d"; picture = "vhx_plane\cobra_firebat\data\ui\pic_firebat_co.paa"; Icon = "vhx_plane\cobra_firebat\data\ui\map_firebat_co.paa"; mapSize = 7; driverlefthandanimname = "lever_pilot"; driverleftleganimname = ""; driverrighthandanimname = "stick_pilot"; driverrightleganimname = ""; crew = "firebat_Pilot"; ejectSpeed[] = {0,-2,0}; cabinOpening = 1; gearRetracting = 1; gearDownTime = 0.25; gearUpTime = 0.35; driverAction = "firebat_Pilot"; fuelCapacity = 300; fuelConsumptionRate = 0.05; supplyRadius = 4; incomingMissileDetectionSystem = 16; LockDetectionSystem = "2 + 8 + 4"; driverhasflares = 0; radarType = 4; soundLocked[] = {"vhx_plane\cobra_firebat\Sounds\opfor_lock_1",0.1,1}; soundIncommingMissile[] = {"vhx_plane\cobra_firebat\Sounds\opfor_lock_2",0.1,1}; cost = 20000; threat[] = {0.1,1,0.7}; damageEffect = "AirDestructionEffects"; armor = 60; accuracy = 0.5; damageResistance = 0.01593; weapons[] = {"gatling_20mm","missiles_DAGR"}; magazines[] = {"1000Rnd_20mm_shells","12Rnd_PG_missiles"}; availableForSupportTypes[] = {"CAS_Bombing"}; simulation = "airplaneX"; maxSpeed = 350; landingAoa = "5*3.1415/180"; landingSpeed = 95; stallSpeed = 80; stallWarningTreshold = 0.05; wheelSteeringSensitivity = 0.25; airBrake = 1; airBrakeFrictionCoef = 2.4; flaps = 1; flapsFrictionCoef = 0.3; angleOfIndicence = "1.5*3.1415/180"; envelope[] = {0,0.05,0.3,2.8,6.0,6.2,6.3,6.4,6.4,6.5,6.5,6.5,1.0}; altNoForce = 35000; altFullForce = 13636; thrustCoef[] = {1.48,1.45,1.4,1.35,1.3,1.24,1.17,1.1,0.9,0.7,0.3,0.0,0.0,0.0,0.0,0.0}; aileronSensitivity = 1.2; aileronCoef[] = {0.0,0.8,1.0,1.1,1.2,1.2,1.2}; aileronControlsSensitivityCoef = 2.8; elevatorSensitivity = 2.25; elevatorCoef[] = {0.0,0.13,0.2,0.26,0.32,0.38,0.43,0.48,0.54,0.58,0.53}; elevatorControlsSensitivityCoef = 3; rudderInfluence = 0.7071; rudderCoef[] = {0.0,0.8,1.5,1.8,2.1,2.3,2.4,2.4,2.4,2.3,2.2}; rudderControlsSensitivityCoef = 4; draconicForceXCoef = 9.0; draconicForceYCoef = 1.0; draconicForceZCoef = 1.0; draconicTorqueXCoef[] = {7.5,4.0,3.5,3.2,3.0,3.4,4.0,5.5,6.0,7.5,9.0}; draconicTorqueYCoef[] = {9.0,8.3,5.0,4.3,4.0,3.7,3.5,3.3,3.1,2.9,2.8}; maxOmega = 2000; memoryPointLMissile = "Missile_1"; memoryPointRMissile = "Missile_2"; // selectionFireAnim = "muzzleflash"; memoryPointCM[] = {"flare_launcher1","flare_launcher2"}; memoryPointCMDir[] = {"flare_launcher1_dir","flare_launcher2_dir"}; memoryPointsGetInDriver = "pos_driver"; memoryPointsGetInDriverDir = "pos_driver_dir"; getInAction = "GetInLow"; getOutAction = "GetOutLow"; typicalCargo[] = {"B_Helipilot_F"}; driverCompartments = "Compartment1"; nameSound = "veh_helicopter"; preciseGetInOut = 0; sensitivity = 2.5; driverCanSee = 31; extCameraPosition[] = {0,2,-15}; gunnerUsesPilotView = 1; irScanRangeMax = 10000; cameraBegin = "rtd1_pos"; cameraEnd = "rtd1_dir"; memoryPointDriverOptics = "slingCamera"; enableManualFire = 1; memoryPointGun[] = {"z_gunL_muzzle","z_gunR_muzzle"}; gunBeg[] = {"z_gunL_muzzle","z_gunR_muzzle"}; gunEnd[] = {"z_gunL_chamber","z_gunR_chamber"}; laserScanner = 1; epeImpulseDamageCoef = 20; hiddenSelectionsTextures[] = {}; driverCanEject = 1; class Wheels { class Wheel_1 { boneName = "Wheel_1"; steering = 1; side = "left"; center = "Wheel_1_center"; boundary = "Wheel_1_rim"; width = 0.16; mass = 20; //150; MOI = 40; dampingRate = 0.5; //2; dampingRateDamaged = 1; dampingRateDestroyed = 1000; maxBrakeTorque = 2500; maxHandBrakeTorque = 0; suspTravelDirection[] = {0,-1,0}; suspForceAppPointOffset = "Wheel_1_center"; tireForceAppPointOffset = "Wheel_1_center"; maxCompression = 0.4; maxDroop = 0.4; sprungMass = 350; springStrength = 14366; //1200234; springDamperRate = 3448; //128025; longitudinalStiffnessPerUnitGravity = 40; //4000; latStiffX = 25; latStiffY = 180; frictionVsSlipGraph[] = {{0,1},{0.5,1},{1,1}}; }; class Wheel_2: Wheel_1 { boneName = "Wheel_2"; steering = 0; center = "Wheel_2_center"; boundary = "Wheel_2_rim"; width = 0.28; mass = 25; sprungMass = 150; springStrength = 8757; springDamperRate = 3062; suspForceAppPointOffset = "Wheel_2_center"; tireForceAppPointOffset = "Wheel_2_center"; maxCompression = 0.8; maxDroop = 0.8; }; class Wheel_3: Wheel_2 { boneName = "Wheel_3"; side = "right"; center = "Wheel_3_center"; boundary = "Wheel_3_rim"; suspForceAppPointOffset = "Wheel_3_center"; tireForceAppPointOffset = "Wheel_3_center"; }; }; #include "sounds.hpp" class RenderTargets { class LowerMirror { renderTarget = "rendertarget1"; class CameraView { pointPosition = "rtd1_pos"; pointDirection = "rtd1_dir"; renderQuality = 0; renderVisionMode = 0; fov = 0.7; }; }; }; class Reflectors { class Middle { color[] = {7000,7500,10000,1}; ambient[] = {100,100,100,0}; position = "L svetlo"; direction = "konec L svetla"; hitpoint = "L svetlo"; selection = "L svetlo"; size = 1; innerAngle = 20; outerAngle = 60; coneFadeCoef = 10; intensity = 50; useFlare = 1; dayLight = 0; FlareSize = 6; class Attenuation { start = 1; constant = 0; linear = 0; quadratic = 4; }; }; }; class Exhausts { class Exhaust1 { position = "exhaust1"; direction = "exhaust1_dir"; effect = "ExhaustsEffectJet"; }; }; class WingVortices { class StabilizerLeft { effectName = "BodyVortices"; position = "pos_vortex_vStab_L"; }; class StabilizerRight { effectName = "BodyVortices"; position = "pos_vortex_vStab_R"; }; class WingTipLeft { effectName = "WingVortices"; position = "pos_vortex_wTip_L"; }; class WingTipRight { effectName = "WingVortices"; position = "pos_vortex_wTip_R"; }; }; class MarkerLights { class WhiteStill { name = "bily pozicni"; color[] = {1.0,1.0,1.0}; ambient[] = {0.1,0.1,0.1}; blinking = 1; intensity = 75; blinkingPattern[] = {0.1,0.9}; blinkingPatternGuarantee = 0; drawLightSize = 0.2; drawLightCenterSize = 0.04; }; class RedStill { name = "cerveny pozicni"; color[] = {0.8,0.0,0.0}; ambient[] = {0.08,0.0,0.0}; intensity = 75; drawLight = 1; drawLightSize = 0.15; drawLightCenterSize = 0.04; activeLight = 0; blinking = 0; dayLight = 0; useFlare = 0; }; class GreenStill { name = "zeleny pozicni"; color[] = {0.0,0.8,0.0}; ambient[] = {0.0,0.08,0.0}; intensity = 75; drawLight = 1; drawLightSize = 0.15; drawLightCenterSize = 0.04; activeLight = 0; blinking = 0; dayLight = 0; useFlare = 0; }; class RedBlinking { name = "bily pozicni blik"; color[] = {0.9,0.15,0.1}; ambient[] = {0.09,0.015,0.01}; intensity = 75; blinking = 1; blinkingPattern[] = {0.1,0.9}; blinkingPatternGuarantee = 0; drawLightSize = 0.2; drawLightCenterSize = 0.04; }; class WhiteBlinking { name = "cerveny pozicni blik"; color[] = {0.9,0.15,0.1}; intensity = 75; ambient[] = {0.09,0.015,0.01}; blinking = 1; blinkingPattern[] = {0.2,1.3}; blinkingPatternGuarantee = 0; drawLightSize = 0.25; drawLightCenterSize = 0.08; }; }; class AnimationSources: AnimationSources { class wingsFold { source = "user"; animPeriod = 1; initPhase = 0; }; class AddScreen1 { source = "user"; animPeriod = 1e-006; initPhase = 0; }; class Damper_1_source { source = "damper"; wheel = "Wheel_1"; }; class Damper_2_source { source = "damper"; wheel = "Wheel_2"; }; class Damper_3_source { source = "damper"; wheel = "Wheel_3"; }; class Wheel_1_source { source = "wheel"; wheel = "Wheel_1"; }; class Wheel_2_source { source = "wheel"; wheel = "Wheel_2"; }; class Wheel_3_source { source = "wheel"; wheel = "Wheel_3"; }; class HitGlass1 { source = "Hit"; hitpoint = "HitGlass1"; raw = 1; }; class HitGlass2: HitGlass1 { hitpoint = "HitGlass2"; }; }; class UserActions { class Wings_Fold { displayName = "Tuck Wings"; textToolTip = ""; shortcut = ""; priority = 2.0; position = ""; radius = 2; showWindow = 0; onlyForPlayer = 1; condition = "(this animationPhase 'wingsFold' < 0.5) AND (alive this)"; statement = "this animate ['wingsFold', 1]"; }; class Wings_UnFold : Wings_Fold { displayName = "Extend Wings"; condition = "(this animationPhase 'wingsFold' > 0.5) AND (alive this)"; statement = "this animate ['wingsFold', 0];"; }; }; }; } Wheels & Suspension Notice in the image above that the front wheel doesn't droop as far as the main/rear wheels do. It is intended to have a nose down stance while on the ground, but I aligned it to its flight path (Z axis) in OB. I'm not sure if that's the correct way to do it; I just assumed its weight distribution and suspension settings would make it rest properly on ground. Something weird was also happening: Addon Breaker was compiling my PBO, even though it had some syntax errors. During that time, the wheels were aligned to the ground and working fine. The truly weird part: after I found and corrected the missing semi-colons (located after the map icon .paa line), the wheel behavior became wonky as you see in the images below. In short, the jacked up syntax version made the suspension and wheels work better. Huh. This is what the wheels look like when the plane is freshly loaded into the arsenal/garage: Fig. 2: Fresh spawn ...and after starting the engine and moving forward a few feet, the rear wheels are a little less sunken while the front wheel is still raised: Fig. 3: Allowing the wheel physics to readjust/kick in Fig. 4: After getting out and looking at it from prone, the wheels are sunken again. Some information about the plane: This is based on two planes - the real life BD5J and the fictional Cobra Firebat. It's a small, light weight, short-range bomber/fighter with very limited avionic technology. It has a wide gliding surface and canard-style elevators. The wings are supposed to fold upwards for storage (but that isn't working either) and vertical catapult launching (from e.g. a missile silo) , and it barely has room for one pilot. As always, any help is much appreciated! EDIT: here is also the model.cfg (updated): Spoiler class cfgSkeletons { class firebatbones { isDiscrete = 0; skeletonInherit = ""; SkeletonBones[]= { "fan_1" ,"", "exhaust1" ,"", "flapArmL" ,"", "flapArmR" ,"", "flapL" ,"flapArmL", "flapR" ,"flapArmR", "i_mph" ,"", "i_bank" ,"", "i_horizont" ,"i_bank", "i_alt_100f" ,"", "i_alt_1000f" ,"", "i_alt_10000f" ,"", "i_compass" ,"", "i_vSpeed" ,"", "i_fuel" ,"", "dg_pitch" ,"", "dg_bank" ,"", "dg_pitch2" ,"", "dg_bank2" ,"", "dg_vertspeed" ,"", "dg_vertspeed2" ,"", "barrel_1" ,"", "barrel_2" ,"", "muzzleflash_1" ,"barrel_1", "muzzleflash_2" ,"barrel_2", "l svetlo" ,"", "konec l svetla" ,"", "machinegun" ,"", "otochlavne" ,"", "zasleh" ,"", "damagehide" ,"", "virtual_damper" ,"", "gear_1" ,"", "gDoor1_3" ,"gear_1", "gear_1_2" ,"gear_1", "gear_1_3" ,"gear_1_2", "gear_1_damper" ,"gear_1_3", "gear_1_caster" ,"gear_1_damper", "visWheel_1" ,"gear_1_caster", "gDoor1_1" ,"", "gDoor1_2" ,"gDoor1_1", "gear_2" ,"", "gear_2_2" ,"gear_2", "gear_2_3" ,"gear_2_2", "gear_2_damper" ,"gear_2_3", "visWheel_2" ,"gear_2_damper", "gArm2_1" ,"", "gArm2_2" ,"gArm2_1", "gear_3" ,"", "gear_3_2" ,"gear_3", "gear_3_3" ,"gear_3_2", "gear_3_damper" ,"gear_3_3", "visWheel_3" ,"gear_3_damper", "gArm3_1" ,"", "gArm3_2" ,"gArm3_1", "canopyB" ,"canopyA", "canopyA" ,"canopyC", "canopyC" ,"", "glass1" ,"canopyA", "glass2" , "", "stick_pilot" ,"", "stick_bank_axis" ,"", "stick_dive_axis" ,"stick_bank_axis", "lever_pilot" ,"", "throttle_pilot" ,"lever_pilot", "throttle_switch_pilot" ,"lever_pilot", "display_off" ,"", "rudderL" ,"", "rudderR" ,"", "canardL" , "", "canardR" , "", "wingL" , "", "alrnL" , "wingL", "wingR" , "", "alrnR" , "wingR" }; }; }; class CfgModels { class Default { sections[] = {}; sectionsInherit=""; skeletonName = ""; }; class firebat1: default { skeletonName="firebatbones"; sections[]= { "elektronika", "glass1", "glass2", "glass3", "glass4", "glass5", "zbytek", "mala vrtule", "velka vrtule", "motor", "munice", "vez", "zbran", "trup", "muzzleflash", "zasleh" }; class Animations { class I_Speed { type="rotation"; source="speed"; selection="i_mph"; axis="i_mph_axis"; // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 10.288889;//rad 589.5099 angle0 = -0.034906585;//rad -2.0; angle1 = 0.19198622;//rad 11.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Speed_02 { type="rotation"; source="speed"; selection="i_mph"; axis="i_mph_axis"; // sourceAddress = clamp;// (default) minValue = 10.28889;//rad 589.50995 maxValue = 41.155556;//rad 2358.0396 angle0 = 0.0;//rad 0.0; angle1 = 2.9496064;//rad 169.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Speed_03 { type="rotation"; source="speed"; selection="i_mph"; axis="i_mph_axis"; // sourceAddress = clamp;// (default) minValue = 41.155556;//rad 2358.0396 maxValue = 46.3;//rad 2652.7944 angle0 = 0.0;//rad 0.0; angle1 = 0.36651915;//rad 21.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Speed_04 { type="rotation"; source="speed"; selection="i_mph"; axis="i_mph_axis"; // sourceAddress = clamp;// (default) minValue = 46.3;//rad 2652.7944 maxValue = 92.6;//rad 5305.589 angle0 = 0.0;//rad 0.0; angle1 = 2.1816616;//rad 125.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Bank { type="rotation"; source="horizonBank"; selection="i_bank"; axis="i_bank_axis"; // sourceAddress = clamp;// (default) minValue = -6.2831855;//rad -360.0 maxValue = 6.2831855;//rad 360.0 angle0 = 6.2831855;//rad 360.0; angle1 = -6.2831855;//rad -360.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Horizont_Dive { type="translation"; source="horizonDive"; selection="i_horizont"; axis="i_horizont_axis"; // sourceAddress = clamp;// (default) minValue = -6.2831855;//rad -360.0 maxValue = 6.2831855;//rad 360.0 offset0 = -0.25;//rad -360.0; offset1 = 0.25;//rad 360.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Altitude_100f { type="rotation"; source="altBaro"; selection="i_alt_100f"; axis="i_alt_axis"; sourceAddress = loop; minValue = 0.0;//rad 0.0 maxValue = 304.8;//rad 17463.752 angle0 = 0.0;//rad 0.0; angle1 = 6.2831855;//rad 360.0; animPeriod = 1.4013e-045/*#DEN*/; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Altitude_1000f { type="rotation"; source="altBaro"; selection="i_alt_1000f"; axis="i_alt_axis"; sourceAddress = loop; minValue = 0.0;//rad 0.0 maxValue = 3048.0;//rad 174637.53 angle0 = 0.0;//rad 0.0; angle1 = 6.2831855;//rad 360.0; animPeriod = 1.4013e-045/*#DEN*/; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Altitude_10000f { type="rotation"; source="altBaro"; selection="i_alt_10000f"; axis="i_alt_axis"; sourceAddress = loop; minValue = 0.0;//rad 0.0 maxValue = 30480.0;//rad 1746375.4 angle0 = 0.0;//rad 0.0; angle1 = 6.2831855;//rad 360.0; animPeriod = 1.4013e-045/*#DEN*/; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Compass { type="rotation"; source="direction"; selection="i_compass"; axis="i_compass_axis"; // sourceAddress = clamp;// (default) minValue = -3.1415927;//rad -180.0 maxValue = 3.1415927;//rad 180.0 angle0 = -3.1415927;//rad -180.0; angle1 = 3.1415927;//rad 180.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class I_VSpeed { type="rotation"; source="vertSpeed"; selection="i_vSpeed"; axis="i_vSpeed_axis"; // sourceAddress = clamp;// (default) minValue = -15.24;//rad -873.1877 maxValue = 15.24;//rad 873.1877 angle0 = 4.6076694;//rad -264.0; angle1 = -1.43117;//rad 82.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Fuel { type="rotation"; source="fuel"; selection="i_fuel"; axis="i_fuel_axis"; // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 1.0;//rad 57.29578 angle0 = -0.6109;//rad -35.0; angle1 = 0.6109;//rad 35.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class dg_pitch { type="rotation"; source="horizonDive"; selection="dg_pitch"; axis="dg_pitch_axis"; // sourceAddress = clamp;// (default) minValue = -6.2831855;//rad -360.0 maxValue = 6.2831855;//rad 360.0 angle0 = 1.5707964;//rad 90.0; angle1 = -1.5707964;//rad -90.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class dg_bank { type="rotation"; source="horizonBank"; selection="dg_bank"; axis="dg_bank_axis"; // sourceAddress = clamp;// (default) minValue = -3.1415927;//rad -180.0 maxValue = 3.1415927;//rad 180.0 angle0 = -1.5707964;//rad -90.0; angle1 = 1.5707964;//rad 90.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class dg_pitch2 { type="rotation"; source="horizonDive"; selection="dg_pitch2"; axis="dg_pitch2_axis"; // sourceAddress = clamp;// (default) minValue = -6.2831855;//rad -360.0 maxValue = 6.2831855;//rad 360.0 angle0 = 1.5707964;//rad 90.0; angle1 = -1.5707964;//rad -90.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class dg_bank2 { type="rotation"; source="horizonBank"; selection="dg_bank2"; axis="dg_bank2_axis"; // sourceAddress = clamp;// (default) minValue = -3.1415927;//rad -180.0 maxValue = 3.1415927;//rad 180.0 angle0 = -1.5707964;//rad -90.0; angle1 = 1.5707964;//rad 90.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class dg_vertspeed { type="translation"; source="vertSpeed"; selection="dg_vertspeed"; axis="dg_vertspeed_axis"; // sourceAddress = clamp;// (default) minValue = -30.0;//rad -1718.8734 maxValue = 30.0;//rad 1718.8734 offset0 = -0.5; offset1 = 0.5; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class dg_vertspeed2 { type="translation"; source="vertSpeed"; selection="dg_vertspeed2"; axis="dg_vertspeed2_axis"; // sourceAddress = clamp;// (default) minValue = -30.0;//rad -1718.8734 maxValue = 30.0;//rad 1718.8734 offset0 = -0.5; offset1 = 0.5; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class display_on { type="hide"; source="rpm"; selection="display_off"; // sourceAddress = clamp;// (default) minValue = -0.8;//rad -45.836624 maxValue = 0.2;//rad 11.459156 hideValue = 0.99; // unHideValue = -1.0;//(default) animPeriod = 0.0; initPhase = 0.0; }; class Canopy_rot_p1 { type="rotation"; source="cabin"; selection="canopyA"; axis="canopyA_axis"; // sourceAddress = clamp;// (default) minValue = 2.001;//rad 429.71835 maxValue = 4.0;//rad 859.4367 angle0 = 1.0;//rad 115.0; angle1 = 0.0;//rad 0.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Canopy_rot_p2 { type="rotation"; source="cabin"; selection="canopyA"; axis="canopyA_axis"; // sourceAddress = clamp;// (default) minValue = 0.0;//rad 429.71835 maxValue = 2.0;//rad 859.4367 angle0 = 0.76;//rad 115.0; angle1 = 0.0;//rad 0.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Canopy_hinge1_rot { type="rotation"; source="cabin"; selection="canopyB"; axis="canopyB_axis"; // sourceAddress = clamp;// (default) minValue = 0.0;//rad 429.71835 maxValue = 4.0;//rad 859.4367 angle0 = -2.32;//rad -115.0; angle1 = 0.0;//rad 0.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Canopy_hinge2_rot { type="rotation"; source="cabin"; selection="canopyC"; axis="canopyC_axis"; // sourceAddress = clamp;// (default) minValue = 0.0;//rad 429.71835 maxValue = 4.0;//rad 859.4367 angle0 = -2.007;//rad -115.0; angle1 = 0.0;//rad 0.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// class Wheel_1_rot { type="rotation"; source="wheel"; selection="visWheel_1"; axis="visWheel_1_axis"; sourceAddress = loop; minValue = 0.0;//rad 0.0 maxValue = 1.0;//rad 57.29578 angle0 = 0.0;//rad 0.0; angle1 = -6.2831855;//rad -360.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Wheel_2_rot { type="rotation"; source="wheel"; selection="visWheel_2"; axis="visWheel_2_axis"; sourceAddress = loop; minValue = 0.0;//rad 0.0 maxValue = 1.0;//rad 57.29578 angle0 = 0.0;//rad 0.0; angle1 = 6.2831855;//rad 360.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Wheel_3_rot { type="rotation"; source="wheel"; selection="visWheel_3"; axis="visWheel_3_axis"; sourceAddress = loop; minValue = 0.0;//rad 0.0 maxValue = 1.0;//rad 57.29578 angle0 = 0.0;//rad 0.0; angle1 = -6.2831855;//rad -360.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Gear_1_rot { type="rotation"; source="gear"; selection="gear_1"; axis="gear_1_axis"; // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 1.0;//rad 40.107044 angle0 = 0.0;//rad 0.0; angle1 = -1.885;//rad -108.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Gear_1_hatch_1_rot: Gear_1_rot { selection="gDoor1_1"; axis="gDoor1_1_axis"; angle0 = 0.0;//rad 0.0; angle1 = -2.094;//rad -120.0; }; class Gear_1_hatch_2_rot: Gear_1_rot { selection="gDoor1_2"; axis="gDoor1_2_axis"; angle0 = 0.0;//rad 0.0; angle1 = -1.453;//rad -83.25; }; class Gear_1_hatch_hinge_rot: Gear_1_rot { selection="gDoor1_3"; axis="gDoor1_3_axis"; angle0 = 0.0;//rad 0.0; angle1 = -1.117;//rad -64; }; class virtual_damper_move { type="translation"; source="Damper_1_source"; selection="virtual_damper"; axis="basic_damper_destruct_axis"; // sourceAddress = clamp;// (default) minValue = 0.0; maxValue = 1; offset0 = 1; offset1 = -1; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class gear_1_stabil_1_rot: virtual_damper_move { type="rotation"; source="Damper_1_source"; selection="gear_1_2"; axis="gear_1_2_axis"; minValue = 0.0; maxValue = 1; angle0 = -0.0; angle1 = 1.0472;//rad 60; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class gear_1_stabil_2_rot: gear_1_stabil_1_rot { selection="gear_1_3"; axis="gear_1_3_axis"; angle0 = 0.0; angle1 = -2.0944;//rad 120.0; }; class gear_1_damper_rot: gear_1_stabil_1_rot { selection="gear_1_damper"; axis="gear_1_damper_axis"; }; class Gear_1_hatch_2_susp_p1: gear_1_stabil_1_rot { selection="gDoor1_2"; axis="gDoor1_2_axis"; minValue = 0.0; maxValue = 0.5; angle0 = 0.0; angle1 = 0.2269;//rad 13 }; class Gear_1_hatch_2_susp_p2: Gear_1_hatch_2_susp_p1 { minValue = 0.5001; maxValue = 1; angle0 = 0.0; angle1 = 0.4538;//rad 26.0; }; class gear_1_steering_rot { type="rotation"; source="noseWheelTurn"; selection="gear_1_caster"; axis="gear_1_caster_axis"; // sourceAddress = clamp;// (default) minValue = -1.0;//rad -57.29578 maxValue = 1.0;//rad 57.29578 angle0 = -0.6981317;//rad -40.0; angle1 = 0.6981317;//rad 40.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; //////// MAIN GEARS //////// class Gear_2_rot { type="rotation"; source="gear"; selection="gear_2"; axis="gear_2_axis"; // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 1.0;//rad 40.107044 angle0 = 0.0;//rad 0.0; angle1 = -2.094;//rad -120.37; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Gear_2_piston_1_rot1 { type="rotation"; source="gear"; selection="gArm2_1"; axis="gArm2_1_axis"; // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 0.5;//rad 40.107044 angle0 = 0.0;//rad 0.0 angle1 = -0.07854;//rad -4.5 animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Gear_2_piston_1_rot2 { type="rotation"; source="gear"; selection="gArm2_1"; axis="gArm2_1_axis"; // sourceAddress = clamp;// (default) minValue = 0.5001;//rad 0.0 maxValue = 0.7;//rad 40.107044 angle0 = 0.0;//rad 0.0 angle1 = 0.05236;//rad 3 animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Gear_2_piston_1_rot3 { type="rotation"; source="gear"; selection="gArm2_1"; axis="gArm2_1_axis"; // sourceAddress = clamp;// (default) minValue = 0.7001;//rad 0.0 maxValue = 1.0;//rad 40.107044 angle0 = 0.0;//rad 0.0; angle1 = 0.1222;//rad 7; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Gear_2_piston_2 { type="translation"; source="gear"; selection="gArm2_2"; axis="gArm2_2_axis"; // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 1.0;//rad 40.107044 offset0 = 0.0; offset1 = -0.87; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class gear_2_stabil_1_rot: gear_1_stabil_1_rot { source="Damper_2_source"; selection="gear_2_2"; axis="gear_2_2_axis"; }; class gear_2_stabil_2_rot: gear_1_stabil_2_rot { source="Damper_2_source"; selection="gear_2_3"; axis="gear_2_3_axis"; }; class gear_2_damper_rot: gear_1_stabil_1_rot { source="Damper_2_source"; selection="gear_2_damper"; axis="gear_2_damper_axis"; }; class Gear_3_rot: Gear_2_rot { selection="gear_3"; axis="gear_3_axis"; }; class Gear_3_piston_1_rot1: Gear_2_piston_1_rot1 { selection="gArm3_1"; axis="gArm3_1_axis"; }; class Gear_3_piston_1_rot2: Gear_2_piston_1_rot2 { selection="gArm3_1"; axis="gArm3_1_axis"; }; class Gear_3_piston_1_rot3: Gear_2_piston_1_rot3 { selection="gArm3_1"; axis="gArm3_1_axis"; }; class Gear_3_piston_2: Gear_2_piston_2 { source="gear"; selection="gArm3_2"; axis="gArm3_2_axis"; }; class gear_3_stabil_1_1_rot: gear_1_stabil_1_rot { source="Damper_3_source"; selection="gear_3_2"; axis="gear_3_2_axis"; }; class gear_3_stabil_1_2_rot: gear_1_stabil_2_rot { source="Damper_3_source"; selection="gear_3_3"; axis="gear_3_3_axis"; }; class gear_3_damper_rot: gear_1_stabil_1_rot { source="Damper_3_source"; selection="gear_3_damper"; axis="gear_3_damper_axis"; }; //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// class Flap_L_move { type="translation"; source="flap"; selection="flapArmL"; axis="flapArmL_axis"; // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 0.5;//rad 28.64789 offset0 = 0.0; offset1 = 0.6; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Flap_R_move { type="translation"; source="flap"; selection="flapArmR"; axis="flapArmR_axis"; // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 0.5;//rad 28.64789 offset0 = 0.0; offset1 = 0.6; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Flap_L_rot { type="rotation"; source="flap"; selection="flapL"; axis="flapL_axis"; // sourceAddress = clamp;// (default) minValue = 0.5;//rad 28.64789 maxValue = 1.0;//rad 57.29578 angle0 = 0.0;//rad 0.0; angle1 = -0.34906584;//rad -20.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Flap_R_rot { type="rotation"; source="flap"; selection="flapR"; axis="flapR_axis"; // sourceAddress = clamp;// (default) minValue = 0.5;//rad 28.64789 maxValue = 1.0;//rad 57.29578 angle0 = 0.0;//rad 0.0; angle1 = 0.34906584;//rad 20.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Stick_Pilot_Dive { type="rotation"; source="elevator"; selection="stick_pilot"; axis="stick_dive_axis"; // sourceAddress = clamp;// (default) minValue = -1.0;//rad -57.29578 maxValue = 1.0;//rad 57.29578 angle0 = -0.05235988;//rad -3.0; angle1 = 0.05235988;//rad 3.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Stick_Pilot_Bank { type="rotation"; source="aileron"; selection="stick_pilot"; axis="stick_bank_axis"; // sourceAddress = clamp;// (default) minValue = -0.5;//rad -28.64789 maxValue = 0.5;//rad 28.64789 angle0 = -0.05235988;//rad -3.0; angle1 = 0.05235988;//rad 3.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class aileron_1 { type="rotation"; source="aileron"; selection="alrnL"; axis="alrnL_axis"; // sourceAddress = clamp;// (default) minValue = -0.5;//rad -28.64789 maxValue = 0.5;//rad 28.64789 angle0 = -0.34906584;//rad -20.0; angle1 = 0.34906584;//rad 20.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class aileron_2 { type="rotation"; source="aileron"; selection="alrnR"; axis="alrnR_axis"; // sourceAddress = clamp;// (default) minValue = -0.5;//rad -28.64789 maxValue = 0.5;//rad 28.64789 angle0 = -0.34906584;//rad -20.0; angle1 = 0.34906584;//rad 20.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Elevator_L { type="rotation"; source="elevator"; selection="canardL"; axis="canardL_axis"; // sourceAddress = clamp;// (default) minValue = -1.0;//rad -57.29578 maxValue = 1.0;//rad 57.29578 angle0 = 0.24434611;//rad -14.000001; angle1 = -0.24434611;//rad 14.000001; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Elevator_R { type="rotation"; source="elevator"; selection="canardR"; axis="canardR_axis"; // sourceAddress = clamp;// (default) minValue = -1.0;//rad -57.29578 maxValue = 1.0;//rad 57.29578 angle0 = -0.24434611;//rad -14.000001; angle1 = 0.24434611;//rad 14.000001; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class RudderL { type="rotation"; source="rudder"; selection="rudderL"; axis="rudderL_axis"; // sourceAddress = clamp;// (default) minValue = -1.0;//rad -57.29578 maxValue = 1.0;//rad 57.29578 angle0 = 0.39968044;//rad 22.900002; angle1 = -0.39968044;//rad -22.900002; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class RudderR { type="rotation"; source="rudder"; selection="rudderR"; axis="rudderR_axis"; // sourceAddress = clamp;// (default) minValue = -1.0;//rad -57.29578 maxValue = 1.0;//rad 57.29578 angle0 = 0.39968044;//rad 22.900002; angle1 = -0.39968044;//rad -22.900002; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Leftwing { type = "rotation"; source="user"; selection="wingL"; axis="wingL_axis"; minValue=0; maxValue=1; angle0=0; angle1=1.571;// i.e.: 90 deg animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Rightwing { type = "rotation"; source="user"; selection="wingR"; axis="wingR_axis"; minValue=0; maxValue=1; angle0=0; angle1=-1.571;// i.e.: -90 deg animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Rotor_1 { type="rotation"; source="rotor"; selection="fan_1"; axis="fan_1_axis"; // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 1.0;//rad 57.29578 angle0 = 0.0;//rad 0.0; angle1 = -6.2831855;//rad -360.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Glass1_destruct { type="hide"; source="HitGlass1"; selection="glass1"; minValue=0; maxValue=1; hideValue=0.99000001; animPeriod=0; initPhase=0; }; class Glass2_destruct { type="hide"; source="HitGlass2"; selection="glass2"; minValue=0; maxValue=1; hideValue=0.99000001; animPeriod=0; initPhase=0; }; }; }; }; Edit 2: I am realizing to my horror how messed up my model.cfg is, with redundant selections and obsolete min/maxValue settings for dampers. My corrections so far have allowed the wheels to rest on the ground, yet the suspension is still really stiff. I have to hard dive into the ground in order to notice any change. Edit 3: Docs are updated, and some fixes were noted. Problems still persist. 2 Share this post Link to post Share on other sites
scotg 204 Posted September 7, 2018 After some adjustments and some trial and error, it's still having issues. It's a little better than it was, but there are still a lot of problems to work through. This video explains and demos my issues better: Here's the updated config.cpp: Spoiler #define _ARMA_ enum { destructengine = 2, destructdefault = 6, destructwreck = 7, destructtree = 3, destructtent = 4, stabilizedinaxisx = 1, stabilizedinaxesxyz = 4, stabilizedinaxisy = 2, stabilizedinaxesboth = 3, destructno = 0, stabilizedinaxesnone = 0, destructman = 5, destructbuilding = 1 }; class CfgPatches { class ViboraHellwing { addonRootClass = "A3_Air_F_EPC"; units[] = {"plane_hellwing_bomber_F"}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {"A3_Air_F", "A3_Air_F_EPC"}; }; }; class CfgFactionClasses { class VIBORA { displayName = "VIBORA"; author = "Scot Gilmore"; icon = "data_f\faction_vibora_ca.paa"; priority = 2; side = 2; }; }; class CfgVehicleClasses { class Vibora_Air { displayName = "Vibora Air"; }; }; class CfgWeapons { class LMG_Minigun; class RocketPods; class Safe: RocketPods { CanLock = 0; displayName = "Safe"; displayNameMagazine = "Safe"; shortNameMagazine = "Safe"; nameSound = ""; cursor = "EmptyCursor"; cursorAim = "EmptyCursor"; magazines[] = {}; burst = 0; reloadTime = 0.01; magazineReloadTime = 0.1; }; class LMG_Minigun2: LMG_Minigun { class gunParticles { class effect1 { positionName = "machinegun2_eject_pos"; directionName = "machinegun2_eject_dir"; effectName = "MachineGunCartridge1"; }; }; }; class HMG_127: LMG_Minigun { class gunParticles { class effect1 { positionName = "machinegun_eject_pos"; directionName = "machinegun_eject_dir"; effectName = "MachineGunCartridge1"; }; }; }; class HMG_127_APC: HMG_127 { class gunParticles { class effect1 { positionName = "machinegun2_eject_pos"; directionName = "machinegun2_eject_dir"; effectName = "MachineGunCartridge1"; }; }; }; }; class CfgMovesBasic { class DefaultDie; class ManActions { firebat_Pilot = "firebat_Pilot"; }; }; class CfgMovesMaleSdr: CfgMovesBasic { class States { class Crew; class firebat_Pilot: Crew { file = "vhx_plane\cobra_firebat\Anims\pilot_firebat_static.rtm"; interpolateTo[] = {"KIA_firebat_Pilot",1}; }; class firebat_Dead: DefaultDie { actions = "DeadActions"; file = "vhx_plane\cobra_firebat\Anims\firebat_Dead.rtm"; speed = 0.5; looped = 0; terminal = 1; soundEnabled = 0; connectTo[] = {"Unconscious",0.1}; }; class KIA_firebat_Pilot: DefaultDie { actions = "DeadActions"; speed = 0.5; looped = 0; terminal = 1; file = "vhx_plane\cobra_firebat\Anims\KIA_firebat_Pilot.rtm"; connectTo[] = {"Unconscious",0.1}; }; }; }; class SensorTemplatePassiveRadar; class SensorTemplateAntiRadiation; class SensorTemplateActiveRadar; class SensorTemplateIR; class SensorTemplateVisual; class SensorTemplateMan; class SensorTemplateLaser; class SensorTemplateNV; class SensorTemplateDataLink; class DefaultVehicleSystemsDisplayManagerLeft { class components; }; class DefaultVehicleSystemsDisplayManagerRight { class components; }; class CfgVehicles { //class AllVehicles; class Air; class Plane: Air { class HitPoints; }; class Plane_Base_F: Plane { class HitPoints: HitPoints { class HitHull; }; class AnimationSources; class Components; class Eventhandlers; }; class firebat1_base_F: Plane_Base_F { author = "Scot Gilmore"; destrType = "DestructWreck"; displayName = "firebat_base"; model = "vhx_plane\cobra_firebat\firebat1.p3d"; picture = "vhx_plane\cobra_firebat\data\ui\pic_firebat_co.paa"; Icon = "vhx_plane\cobra_firebat\data\ui\map_firebat_co.paa"; animated = 1; mapSize = 7; //DLC = "COBRA_Air"; // - keep to test for garage icon crew = "firebat1_Pilot"; typicalcargo[] = {"firebat1_Pilot"}; crewVulnerable = 1; driverAction = "firebat_Pilot"; //driverlefthandanimname = "throttle"; driverleftleganimname = ""; driverrighthandanimname = "stick_pilot"; driverrightleganimname = ""; preciseGetInOut = 1; driverCanEject = 1; cargoCanEject = 0; ejectDeadGunner = 0; ejectDeadCargo = 0; ejectDeadDriver = 0; disableInventory = 1; memoryPointsGetInDriver = "pos_driver"; memoryPointsGetInDriverDir = "pos_driver_dir"; getInAction = "GetInLow"; getOutAction = "GetOutLow"; getInRadius = 2.5; ejectSpeed[] = {0,-2,0}; cabinOpening = 1; gearRetracting = 1; gearDownTime = 0.25; gearUpTime = 2.35; fuelCapacity = 300; fuelConsumptionRate = 0.05; supplyRadius = 4; incomingMissileDetectionSystem = 16; LockDetectionSystem = "2 + 8 + 4"; driverhasflares = 0; radarType = 4; soundLocked[] = {"vhx_plane\cobra_firebat\Sounds\opfor_lock_1",0.1,1}; soundIncommingMissile[] = {"vhx_plane\cobra_firebat\Sounds\opfor_lock_2",0.1,1}; cost = 20000; threat[] = {0.1,1,0.7}; damageEffect = "AirDestructionEffects"; armor = 60; accuracy = 0.5; damageResistance = 0.01593; weapons[] = {"gatling_20mm","missiles_DAGR"}; magazines[] = {"1000Rnd_20mm_shells","12Rnd_PG_missiles"}; availableForSupportTypes[] = {"CAS_Bombing"}; simulation = "airplaneX"; maxSpeed = 2000; landingAoa = 0.174533; landingSpeed = 255; stallSpeed = 80; stallWarningTreshold = 0.05; acceleration = 200; wheelSteeringSensitivity = 1.3; airBrake = 1; airBrakeFrictionCoef = 7.2; flaps = 1; flapsFrictionCoef = 0.3; altNoForce = 35000; altFullForce = 13636; angleOfIndicence = "-0.04*3.1415/180"; envelope[] = {0.2,0.6,1.1,1.5,2.6,3.3,3.5,3.2,2.6,2,1.5,1,1,1,1,1,1,1,1,0.5,0}; thrustCoef[] = {0.9,1.1,2.3,3.5,3.4,2.9,2.9,2.5,2.1,1.8,1.4,0.9,0.4,0.0,0.0,0.0}; aileronSensitivity = 2.2; aileronCoef[] = {0.0,0.8,1.0,1.1,1.2,1.2,1.2}; aileronControlsSensitivityCoef = 3.5; elevatorSensitivity = 1.75; elevatorCoef[] = {0.1,0.4,0.7,0.7,0.6,0.45,0.3,0.3}; elevatorControlsSensitivityCoef = 3; rudderInfluence = 0.897; rudderCoef[] = {0.0,0.8,1.5,1.8,2.1,2.3,2.4,2.4,2.4,2.3,2.2}; rudderControlsSensitivityCoef = 4; draconicForceXCoef = 7.0; draconicForceYCoef = 0.4; draconicForceZCoef = 1.0; draconicTorqueXCoef[] = {2.9,3.0,3.1,3.2,3.5,3.8,4.2,4.6,4.9,5.2,5.4,5.6,5.7,5.8,5.9,6.0}; draconicTorqueYCoef[] = {4.0,0.8,0.5,0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; airFrictionCoefs0[] = {0.0,0.0,0.0}; airFrictionCoefs1[] = {0.1,0.05,0.0066}; airFrictionCoefs2[] = {0.001,0.005,6.4e-005}; maxOmega = 2000; memoryPointLMissile = "Missile_1"; memoryPointRMissile = "Missile_2"; memoryPointCM[] = {"flare_launcher1","flare_launcher2"}; memoryPointCMDir[] = {"flare_launcher1_dir","flare_launcher2_dir"}; driverCompartments = "Compartment1"; namesound = "Plane"; sensitivity = 2.5; driverCanSee = 31; extCameraPosition[] = {0,2,-20}; irScanRangeMax = 10000; cameraBegin = "rtd1_pos"; cameraEnd = "rtd1_dir"; memoryPointDriverOptics = "slingCamera"; memoryPointGun[] = {"z_gunL_muzzle","z_gunR_muzzle"}; gunBeg[] = {"z_gunL_muzzle","z_gunR_muzzle"}; gunEnd[] = {"z_gunL_chamber","z_gunR_chamber"}; laserScanner = 1; epeImpulseDamageCoef = 20; hiddenSelectionsTextures[] = {}; brakeDistance = 150; antiRollbarForceCoef = 24; antiRollbarForceLimit = 12; antiRollbarSpeedMin = 30; antiRollbarSpeedMax = 55; driveOnComponent[] = {}; clutchStrength = 100.0; class Wheels { class Wheel_1 { boneName = "wheel_1"; steering = 1; side = "left"; center = "Wheel_1_center"; boundary = "Wheel_1_rim"; width = 0.1; mass = 10; //150; MOI = 3; dampingRate = 0.1; //2; dampingRateDamaged = 1; dampingRateDestroyed = 1000; maxBrakeTorque = 1000; maxHandBrakeTorque = 0; suspTravelDirection[] = {0,-1,0}; suspForceAppPointOffset = "Wheel_1_center"; tireForceAppPointOffset = "Wheel_1_center"; maxCompression = 0.5; maxDroop = 0.01; sprungMass = 381; springStrength = 6100; //9525; springDamperRate = 28900; longitudinalStiffnessPerUnitGravity = 4000; latStiffX = 3; latStiffY = 20; frictionVsSlipGraph[] = {{0,0.6},{0.2,1.0},{0.6,0.8}}; }; class Wheel_2: Wheel_1 { boneName = "wheel_2"; steering = 0; side = "left"; center = "Wheel_2_center"; boundary = "Wheel_2_rim"; width = 0.11; mass = 15; maxBrakeTorque = 8500; suspForceAppPointOffset = "Wheel_2_center"; tireForceAppPointOffset = "Wheel_2_center"; maxCompression = 0.5; maxDroop = 0.01 sprungMass = 452; springStrength = 10700; //11300; springDamperRate = 32300; }; class Wheel_3: Wheel_2 { boneName = "wheel_3"; side = "right"; center = "Wheel_3_center"; boundary = "Wheel_3_rim"; suspForceAppPointOffset = "Wheel_3_center"; tireForceAppPointOffset = "Wheel_3_center"; }; }; #include "sounds.hpp" class RenderTargets { class LowerMirror { renderTarget = "rendertarget1"; class CameraView { pointPosition = "rtd1_pos"; pointDirection = "rtd1_dir"; renderQuality = 0; renderVisionMode = 0; fov = 0.7; }; }; }; class Reflectors { class Middle { color[] = {7000,7500,10000,1}; ambient[] = {100,100,100,0}; position = "L svetlo"; direction = "konec L svetla"; hitpoint = "L svetlo"; selection = "L svetlo"; size = 1; innerAngle = 20; outerAngle = 60; coneFadeCoef = 10; intensity = 50; useFlare = 1; dayLight = 0; FlareSize = 6; class Attenuation { start = 1; constant = 0; linear = 0; quadratic = 4; }; }; }; class Exhausts { class Exhaust1 { position = "exhaust1"; direction = "exhaust1_dir"; effect = "ExhaustsEffectJet"; }; }; class WingVortices { class StabilizerLeft { effectName = "BodyVortices"; position = "pos_vortex_vStab_L"; }; class StabilizerRight { effectName = "BodyVortices"; position = "pos_vortex_vStab_R"; }; class WingTipLeft { effectName = "WingVortices"; position = "pos_vortex_wTip_L"; }; class WingTipRight { effectName = "WingVortices"; position = "pos_vortex_wTip_R"; }; }; class MarkerLights { class WhiteStill { name = "bily pozicni"; color[] = {1.0,1.0,1.0}; ambient[] = {0.1,0.1,0.1}; blinking = 1; intensity = 75; blinkingPattern[] = {0.1,0.9}; blinkingPatternGuarantee = 0; drawLightSize = 0.2; drawLightCenterSize = 0.04; }; class RedStill { name = "cerveny pozicni"; color[] = {0.8,0.0,0.0}; ambient[] = {0.08,0.0,0.0}; intensity = 75; drawLight = 1; drawLightSize = 0.15; drawLightCenterSize = 0.04; activeLight = 0; blinking = 0; dayLight = 0; useFlare = 0; }; class GreenStill { name = "zeleny pozicni"; color[] = {0.0,0.8,0.0}; ambient[] = {0.0,0.08,0.0}; intensity = 75; drawLight = 1; drawLightSize = 0.15; drawLightCenterSize = 0.04; activeLight = 0; blinking = 0; dayLight = 0; useFlare = 0; }; class RedBlinking { name = "bily pozicni blik"; color[] = {0.9,0.15,0.1}; ambient[] = {0.09,0.015,0.01}; intensity = 75; blinking = 1; blinkingPattern[] = {0.1,0.9}; blinkingPatternGuarantee = 0; drawLightSize = 0.2; drawLightCenterSize = 0.04; }; class WhiteBlinking { name = "cerveny pozicni blik"; color[] = {0.9,0.15,0.1}; intensity = 75; ambient[] = {0.09,0.015,0.01}; blinking = 1; blinkingPattern[] = {0.2,1.3}; blinkingPatternGuarantee = 0; drawLightSize = 0.25; drawLightCenterSize = 0.08; }; }; class Damage { tex[] = {}; mat[] = {}; }; class UserActions { class firebat1_fold_wings { priority = 0.05; displayName = "Wings Up"; shortcut = "ToggleRaiseWeapon"; condition = "this animationPhase 'Leftwing' < 0.1 and (speed this) < 100 and player in this"; statement = "this animate ['Leftwing',1]; this animate ['Rightwing',1]; this say3D 'Plane_Fighter_01_foldwing_sound'"; position = "pilotcontrol"; radius = 10; onlyforplayer = 1; showWindow = 0; hideOnUse = 1; }; class firebat1_unfold_wings: firebat1_fold_wings { displayName = "Wings Out"; condition = "this animationPhase 'Leftwing' > 0.9 and (speed this) < 100 and player in this"; statement = "this animate ['Leftwing',0]; this animate ['Rightwing',0]; this say3D 'Plane_Fighter_01_foldwing_sound'"; shortcut = "ToggleRaiseWeapon"; }; }; class AnimationSources: AnimationSources { class Leftwing { source = "user"; animPeriod = 1.2; initPhase = 1; displayName = "Wings"; mass = 0; forceAnimatePhase = 1; forceAnimatePhase2 = 0; forceAnimate[] = {"Leftwing",1,"Rightwing",1}; forceAnimate2[] = {"Leftwing",0,"Rightwing",0}; }; class Rightwing { source = "user"; animPeriod = 1.2; initPhase = 1; }; class AddScreen1 { source = "user"; animPeriod = 1e-006; initPhase = 0; }; class Damper_1_source { source = "damper"; wheel = "Wheel_1"; }; class Damper_2_source { source = "damper"; wheel = "Wheel_2"; }; class Damper_3_source { source = "damper"; wheel = "Wheel_3"; }; class Wheel_1_source { source = "wheel"; wheel = "Wheel_1"; }; class Wheel_2_source { source = "wheel"; wheel = "Wheel_2"; }; class Wheel_3_source { source = "wheel"; wheel = "Wheel_3"; }; class HitGlass1 { source = "Hit"; hitpoint = "HitGlass1"; raw = 1; }; class HitGlass2: HitGlass1 { hitpoint = "HitGlass2"; }; }; class AircraftAutomatedSystems { wingStateControl = 1; wingFoldAnimations[] = {"Leftwing","Rightwing"}; wingStateFolded = 1; wingStateUnFolded = 0; wingAutoUnFoldSpeed = 100; }; class Eventhandlers: Eventhandlers { hit = "_this call bis_fnc_planeAiEject"; //landing = "[_this,true] call bis_fnc_aircraftTailhookAi"; //landingcanceled = "[_this,false] call bis_fnc_aircraftTailhookAi"; engine = "_this call bis_fnc_aircraftFoldingWings"; gear = "_this call bis_fnc_aircraftFoldingWings"; }; }; class plane_hellwing_bomber_F: firebat1_base_F { author = "Scot Gilmore"; displayName = "-- Hellwing --"; scope = 2; side = 2; faction = "VIBORA"; vehicleClass = "Vibora_Air"; hiddenSelections[] = {"Camo1","Camo2"}; }; }; And here's the model.cfg: Spoiler class cfgSkeletons { class firebatbones { isDiscrete = 0; skeletonInherit = ""; SkeletonBones[]= { "fan_1" ,"", "exhaust1" ,"", "flapArmL" ,"", "flapArmR" ,"", "flapL" ,"flapArmL", "flapR" ,"flapArmR", "i_mph" ,"", "i_bank" ,"", "i_horizont" ,"i_bank", "i_alt_100f" ,"", "i_alt_1000f" ,"", "i_alt_10000f" ,"", "i_compass" ,"", "i_vSpeed" ,"", "i_fuel" ,"", "dg_pitch" ,"", "dg_bank" ,"", "dg_pitch2" ,"", "dg_bank2" ,"", "dg_vertspeed" ,"", "dg_vertspeed2" ,"", "barrel_1" ,"", "barrel_2" ,"", "muzzleflash_1" ,"barrel_1", "muzzleflash_2" ,"barrel_2", "l svetlo" ,"", "konec l svetla" ,"", "machinegun" ,"", "otochlavne" ,"", "zasleh" ,"", "damagehide" ,"", "gear_1" ,"", "gear_1_damper" ,"gear_1", "gDoor1_3" ,"gear_1", "gear_1_2" ,"gear_1", "gear_1_3" ,"gear_1_2", "gear_1_steer" ,"gear_1_damper", "wheel_1" ,"gear_1_steer", "gDoor1_1" ,"", "gDoor1_2" ,"gDoor1_1", "gear_2" ,"", "gear_2_damper" ,"gear_2", "gear_2_2" ,"gear_2", "gear_2_3" ,"gear_2_2", "wheel_2" ,"gear_2_damper", "gArm2_1" ,"", "gArm2_2" ,"gArm2_1", "gear_3" ,"", "gear_3_damper" ,"gear_3", "gear_3_2" ,"gear_3", "gear_3_3" ,"gear_3_2", "wheel_3" ,"gear_3_damper", "gArm3_1" ,"", "gArm3_2" ,"gArm3_1", "canopyB" ,"canopyA", "canopyA" ,"canopyC", "canopyC" ,"", "glass1" ,"canopyA", "glass2" , "", "stick_pilot" ,"", "stick_bank_axis" ,"", "stick_dive_axis" ,"stick_bank_axis", "lever_pilot" ,"", "throttle_pilot" ,"lever_pilot", "throttle_switch_pilot" ,"lever_pilot", "display_off" ,"", "rudderL" ,"", "rudderR" ,"", "canardL" , "", "canardR" , "", "wingL" , "", "alrnL" , "wingL", "wingR" , "", "alrnR" , "wingR" }; }; }; class CfgModels { class Default { sections[] = {}; sectionsInherit=""; skeletonName = ""; }; class firebat1: default { skeletonName="firebatbones"; sections[]= { "elektronika", "glass1", "glass2", "glass3", "glass4", "glass5", "zbytek", "mala vrtule", "velka vrtule", "motor", "munice", "vez", "zbran", "trup", "muzzleflash", "zasleh" }; class Animations { class I_Speed { type="rotation"; source="speed"; selection="i_mph"; axis="i_mph_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 10.288889;//rad 589.5099 angle0 = -0.034906585;//rad -2.0; angle1 = 0.19198622;//rad 11.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Speed_02 { type="rotation"; source="speed"; selection="i_mph"; axis="i_mph_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 10.28889;//rad 589.50995 maxValue = 41.155556;//rad 2358.0396 angle0 = 0.0;//rad 0.0; angle1 = 2.9496064;//rad 169.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Speed_03 { type="rotation"; source="speed"; selection="i_mph"; axis="i_mph_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 41.155556;//rad 2358.0396 maxValue = 46.3;//rad 2652.7944 angle0 = 0.0;//rad 0.0; angle1 = 0.36651915;//rad 21.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Speed_04 { type="rotation"; source="speed"; selection="i_mph"; axis="i_mph_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 46.3;//rad 2652.7944 maxValue = 92.6;//rad 5305.589 angle0 = 0.0;//rad 0.0; angle1 = 2.1816616;//rad 125.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Bank { type="rotation"; source="horizonBank"; selection="i_bank"; axis="i_bank_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -6.2831855;//rad -360.0 maxValue = 6.2831855;//rad 360.0 angle0 = 6.2831855;//rad 360.0; angle1 = -6.2831855;//rad -360.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Horizont_Dive { type="translation"; source="horizonDive"; selection="i_horizont"; axis="i_horizont_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -6.2831855;//rad -360.0 maxValue = 6.2831855;//rad 360.0 offset0 = -0.25;//rad -360.0; offset1 = 0.25;//rad 360.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Altitude_100f { type="rotation"; source="altBaro"; selection="i_alt_100f"; axis="i_alt_axis";//*probably* sourceAddress = loop; minValue = 0.0;//rad 0.0 maxValue = 304.8;//rad 17463.752 angle0 = 0.0;//rad 0.0; angle1 = 6.2831855;//rad 360.0; animPeriod = 1.4013e-045/*#DEN*/; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Altitude_1000f { type="rotation"; source="altBaro"; selection="i_alt_1000f"; axis="i_alt_axis";//*probably* sourceAddress = loop; minValue = 0.0;//rad 0.0 maxValue = 3048.0;//rad 174637.53 angle0 = 0.0;//rad 0.0; angle1 = 6.2831855;//rad 360.0; animPeriod = 1.4013e-045/*#DEN*/; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Altitude_10000f { type="rotation"; source="altBaro"; selection="i_alt_10000f"; axis="i_alt_axis";//*probably* sourceAddress = loop; minValue = 0.0;//rad 0.0 maxValue = 30480.0;//rad 1746375.4 angle0 = 0.0;//rad 0.0; angle1 = 6.2831855;//rad 360.0; animPeriod = 1.4013e-045/*#DEN*/; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Compass { type="rotation"; source="direction"; selection="i_compass"; axis="i_compass_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -3.1415927;//rad -180.0 maxValue = 3.1415927;//rad 180.0 angle0 = -3.1415927;//rad -180.0; angle1 = 3.1415927;//rad 180.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class I_VSpeed { type="rotation"; source="vertSpeed"; selection="i_vSpeed"; axis="i_vSpeed_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -15.24;//rad -873.1877 maxValue = 15.24;//rad 873.1877 angle0 = 4.6076694;//rad -264.0; angle1 = -1.43117;//rad 82.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class I_Fuel { type="rotation"; source="fuel"; selection="i_fuel"; axis="i_fuel_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 1.0;//rad 57.29578 angle0 = -0.6109;//rad -35.0; angle1 = 0.6109;//rad 35.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class dg_pitch { type="rotation"; source="horizonDive"; selection="dg_pitch"; axis="dg_pitch_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -6.2831855;//rad -360.0 maxValue = 6.2831855;//rad 360.0 angle0 = 1.5707964;//rad 90.0; angle1 = -1.5707964;//rad -90.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class dg_bank { type="rotation"; source="horizonBank"; selection="dg_bank"; axis="dg_bank_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -3.1415927;//rad -180.0 maxValue = 3.1415927;//rad 180.0 angle0 = -1.5707964;//rad -90.0; angle1 = 1.5707964;//rad 90.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class dg_pitch2 { type="rotation"; source="horizonDive"; selection="dg_pitch2"; axis="dg_pitch2_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -6.2831855;//rad -360.0 maxValue = 6.2831855;//rad 360.0 angle0 = 1.5707964;//rad 90.0; angle1 = -1.5707964;//rad -90.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class dg_bank2 { type="rotation"; source="horizonBank"; selection="dg_bank2"; axis="dg_bank2_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -3.1415927;//rad -180.0 maxValue = 3.1415927;//rad 180.0 angle0 = -1.5707964;//rad -90.0; angle1 = 1.5707964;//rad 90.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class dg_vertspeed { type="translation"; source="vertSpeed"; selection="dg_vertspeed"; axis="dg_vertspeed_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -30.0;//rad -1718.8734 maxValue = 30.0;//rad 1718.8734 offset0 = -0.5; offset1 = 0.5; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class dg_vertspeed2 { type="translation"; source="vertSpeed"; selection="dg_vertspeed2"; axis="dg_vertspeed2_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -30.0;//rad -1718.8734 maxValue = 30.0;//rad 1718.8734 offset0 = -0.5; offset1 = 0.5; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class display_on { type="hide"; source="rpm"; selection="display_off"; // sourceAddress = clamp;// (default) minValue = -0.8;//rad -45.836624 maxValue = 0.2;//rad 11.459156 hideValue = 0.99; // unHideValue = -1.0;//(default) animPeriod = 0.0; initPhase = 0.0; }; class Canopy_rot_p1 { type="rotation"; source="cabin"; selection="canopyA"; axis="canopyA_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 2.001;//rad 429.71835 maxValue = 4.0;//rad 859.4367 angle0 = 1.0;//rad 115.0; angle1 = 0.0;//rad 0.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Canopy_rot_p2 { type="rotation"; source="cabin"; selection="canopyA"; axis="canopyA_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.0;//rad 429.71835 maxValue = 2.0;//rad 859.4367 angle0 = 0.76;//rad 115.0; angle1 = 0.0;//rad 0.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Canopy_hinge1_rot { type="rotation"; source="cabin"; selection="canopyB"; axis="canopyB_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.0;//rad 429.71835 maxValue = 4.0;//rad 859.4367 angle0 = -2.32;//rad -115.0; angle1 = 0.0;//rad 0.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Canopy_hinge2_rot { type="rotation"; source="cabin"; selection="canopyC"; axis="canopyC_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.0;//rad 429.71835 maxValue = 4.0;//rad 859.4367 angle0 = -2.007;//rad -115.0; angle1 = 0.0;//rad 0.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// class Wheel_1_rot { type="rotation"; source="wheel"; selection="wheel_1"; axis="wheel_1_axis";//*probably* sourceAddress = loop; minValue = 0.0;//rad 0.0 maxValue = 1.0;//rad 57.29578 angle0 = 0.0;//rad 0.0; angle1 = -6.2831855;//rad -360.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Wheel_2_rot { type="rotation"; source="wheel"; selection="wheel_2"; axis="wheel_2_axis";//*probably* sourceAddress = loop; minValue = 0.0;//rad 0.0 maxValue = 1.0;//rad 57.29578 angle0 = 0.0;//rad 0.0; angle1 = 6.2831855;//rad 360.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Wheel_3_rot { type="rotation"; source="wheel"; selection="wheel_3"; axis="wheel_3_axis";//*probably* sourceAddress = loop; minValue = 0.0;//rad 0.0 maxValue = 1.0;//rad 57.29578 angle0 = 0.0;//rad 0.0; angle1 = -6.2831855;//rad -360.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Gear_1_rot { type="rotation"; source="gear"; selection="gear_1"; axis="gear_1_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 1.0;//rad 40.107044 angle0 = 0.0;//rad 0.0; angle1 = -1.885;//rad -108.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Gear_1_hatch_1_rot: Gear_1_rot { selection="gDoor1_1"; axis="gDoor1_1_axis";//*probably* angle0 = 0.0;//rad 0.0; angle1 = -2.094;//rad -120.0; }; class Gear_1_hatch_2_rot: Gear_1_rot { selection="gDoor1_2"; axis="gDoor1_2_axis";//*probably* angle0 = 0.0;//rad 0.0; angle1 = -1.453;//rad -83.25; }; class Gear_1_hatch_hinge_rot: Gear_1_rot { selection="gDoor1_3"; axis="gDoor1_3_axis";//*probably* angle0 = 0.0;//rad 0.0; angle1 = -1.117;//rad -64; }; class gear_1_damper_move { type="translation"; source="damper_1_source"; selection="gear_1_damper"; axis="gear_1_damper_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.0; maxValue = 1.0; offset0 = 0.0; offset1 = -1.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class gear_1_stabil_1_rot: gear_1_damper_move { type="rotation"; selection="gear_1_2"; axis="gear_1_2_axis";//*probably* angle0 = 0.0; angle1 = 1.134;//rad 65; }; class gear_1_stabil_2_rot: gear_1_damper_move { type="rotation"; selection="gear_1_3"; axis="gear_1_3_axis";//*probably* angle0 = 0.0; angle1 = 2.268;//rad 130.0; }; class Gear_1_hatch_2_susp { type="rotation"; source="damper_1_source"; selection="gDoor1_2"; axis="gDoor1_2_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.0; maxValue = 1.0; angle0 = 0.0; angle1 = 0.7854;//rad 45.0; animPeriod = 0.0; initPhase = 0.0; // memory = true; }; class gear_1_steering_rot { type="rotation"; source="noseWheelTurn"; selection="gear_1_steer"; axis="gear_1_steer_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -1.0;//rad -57.29578 maxValue = 1.0;//rad 57.29578 angle0 = -0.6981317;//rad -40.0; angle1 = 0.6981317;//rad 40.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; //////// MAIN GEARS //////// class Gear_2_rot { type="rotation"; source="gear"; selection="gear_2"; axis="gear_2_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 1.0;//rad 40.107044 angle0 = 0.0;//rad 0.0; angle1 = -2.094;//rad -120.37; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Gear_2_piston_1_rot1 { type="rotation"; source="gear"; selection="gArm2_1"; axis="gArm2_1_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 0.5;//rad 40.107044 angle0 = 0.0;//rad 0.0 angle1 = -0.07854;//rad -4.5 animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Gear_2_piston_1_rot2 { type="rotation"; source="gear"; selection="gArm2_1"; axis="gArm2_1_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.5001;//rad 0.0 maxValue = 0.7;//rad 40.107044 angle0 = 0.0;//rad 0.0 angle1 = 0.05236;//rad 3 animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Gear_2_piston_1_rot3 { type="rotation"; source="gear"; selection="gArm2_1"; axis="gArm2_1_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.7001;//rad 0.0 maxValue = 1.0;//rad 40.107044 angle0 = 0.0;//rad 0.0; angle1 = 0.1222;//rad 7; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Gear_2_piston_2 { type="translation"; source="gear"; selection="gArm2_2"; axis="gArm2_2_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 1.0;//rad 40.107044 offset0 = 0.0; offset1 = -0.87; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class gear_2_damper_move { type="translation"; source="damper_2_source"; selection="gear_2_damper"; axis="gear_2_damper_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.0; maxValue = 1.0; offset0 = 0.0; offset1 = -1.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Gear_2_stabil_1_1_rot: gear_2_damper_move { type="rotation"; selection="gear_2_2"; axis="gear_2_2_axis";//*probably* angle0 = 0.0; angle1 = 1.23;//rad 70.5; }; class Gear_2_stabil_1_2_rot: gear_2_damper_move { type="rotation"; selection="gear_2_3"; axis="gear_2_3_axis";//*probably* angle0 = 0.0; angle1 = 2.46;//rad 141.0; }; class Gear_3_rot: Gear_2_rot { selection="gear_3"; axis="gear_3_axis";//*probably* }; class Gear_3_piston_1_rot1: Gear_2_piston_1_rot1 { selection="gArm3_1"; axis="gArm3_1_axis";//*probably* }; class Gear_3_piston_1_rot2: Gear_2_piston_1_rot2 { selection="gArm3_1"; axis="gArm3_1_axis";//*probably* }; class Gear_3_piston_1_rot3: Gear_2_piston_1_rot3 { selection="gArm3_1"; axis="gArm3_1_axis";//*probably* }; class Gear_3_piston_2: Gear_2_piston_2 { source="gear"; selection="gArm3_2"; axis="gArm3_2_axis";//*probably* }; class gear_3_damper_move: gear_2_damper_move { source="damper_3_source"; selection="gear_3_damper"; axis="gear_3_damper_axis";//*probably* }; class Gear_3_stabil_1_1_rot: gear_3_damper_move { type="rotation"; selection="gear_3_2"; axis="gear_3_2_axis";//*probably* angle0 = 0.0; angle1 = 1.23;//rad 70.5; }; class Gear_3_stabil_1_2_rot: gear_3_damper_move { type="rotation"; selection="gear_3_3"; axis="gear_3_3_axis";//*probably* angle0 = 0.0; angle1 = 2.46;//rad 141.0; }; //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// class Flap_L_move { type="translation"; source="flap"; selection="flapArmL"; axis="flapArmL_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 0.5;//rad 28.64789 offset0 = 0.0; offset1 = 0.6; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Flap_R_move { type="translation"; source="flap"; selection="flapArmR"; axis="flapArmR_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 0.5;//rad 28.64789 offset0 = 0.0; offset1 = 0.6; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Flap_L_rot { type="rotation"; source="flap"; selection="flapL"; axis="flapL_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.5;//rad 28.64789 maxValue = 1.0;//rad 57.29578 angle0 = 0.0;//rad 0.0; angle1 = -0.34906584;//rad -20.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Flap_R_rot { type="rotation"; source="flap"; selection="flapR"; axis="flapR_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.5;//rad 28.64789 maxValue = 1.0;//rad 57.29578 angle0 = 0.0;//rad 0.0; angle1 = 0.34906584;//rad 20.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Stick_Pilot_Dive { type="rotation"; source="elevator"; selection="stick_pilot"; axis="stick_dive_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -1.0;//rad -57.29578 maxValue = 1.0;//rad 57.29578 angle0 = -0.05235988;//rad -3.0; angle1 = 0.05235988;//rad 3.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Stick_Pilot_Bank { type="rotation"; source="aileron"; selection="stick_pilot"; axis="stick_bank_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -0.5;//rad -28.64789 maxValue = 0.5;//rad 28.64789 angle0 = -0.05235988;//rad -3.0; angle1 = 0.05235988;//rad 3.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class aileron_1 { type="rotation"; source="aileron"; selection="alrnL"; axis="alrnL_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -0.5;//rad -28.64789 maxValue = 0.5;//rad 28.64789 angle0 = -0.34906584;//rad -20.0; angle1 = 0.34906584;//rad 20.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class aileron_2 { type="rotation"; source="aileron"; selection="alrnR"; axis="alrnR_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -0.5;//rad -28.64789 maxValue = 0.5;//rad 28.64789 angle0 = -0.34906584;//rad -20.0; angle1 = 0.34906584;//rad 20.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Elevator_L { type="rotation"; source="elevator"; selection="canardL"; axis="canardL_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -1.0;//rad -57.29578 maxValue = 1.0;//rad 57.29578 angle0 = 0.24434611;//rad -14.000001; angle1 = -0.24434611;//rad 14.000001; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Elevator_R { type="rotation"; source="elevator"; selection="canardR"; axis="canardR_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -1.0;//rad -57.29578 maxValue = 1.0;//rad 57.29578 angle0 = -0.24434611;//rad -14.000001; angle1 = 0.24434611;//rad 14.000001; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class RudderL { type="rotation"; source="rudder"; selection="rudderL"; axis="rudderL_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -1.0;//rad -57.29578 maxValue = 1.0;//rad 57.29578 angle0 = 0.39968044;//rad 22.900002; angle1 = -0.39968044;//rad -22.900002; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class RudderR { type="rotation"; source="rudder"; selection="rudderR"; axis="rudderR_axis";//*probably* // sourceAddress = clamp;// (default) minValue = -1.0;//rad -57.29578 maxValue = 1.0;//rad 57.29578 angle0 = 0.39968044;//rad 22.900002; angle1 = -0.39968044;//rad -22.900002; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Leftwing { type = "rotation"; source="user"; selection="wingL"; axis="wingL_axis"; minValue=0; maxValue=1; angle0=0; angle1=1.571;// i.e.: 90 deg animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Rightwing { type = "rotation"; source="user"; selection="wingR"; axis="wingR_axis"; minValue=0; maxValue=1; angle0=0; angle1=-1.571;// i.e.: -90 deg animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Rotor_1 { type="rotation"; source="rotor"; selection="fan_1"; axis="fan_1_axis";//*probably* // sourceAddress = clamp;// (default) minValue = 0.0;//rad 0.0 maxValue = 1.0;//rad 57.29578 angle0 = 0.0;//rad 0.0; angle1 = -6.2831855;//rad -360.0; animPeriod = 0.0; initPhase = 0.0; // memory = true;//(default assumed) }; class Glass1_destruct { type="hide"; source="HitGlass1"; selection="glass1"; minValue=0; maxValue=1; hideValue=0.99000001; animPeriod=0; initPhase=0; }; class Glass2_destruct { type="hide"; source="HitGlass2"; selection="glass2"; minValue=0; maxValue=1; hideValue=0.99000001; animPeriod=0; initPhase=0; }; }; }; }; As always, any help is much appreciated! Share this post Link to post Share on other sites
DSabre 2332 Posted October 5, 2018 It's a great little jet - How did it go for you? Did you manage to make it work the way you want it to? If you find the elevator being to harsh you can try reduce this value draconicForceYCoef = 3; instead of elevator sensitivity (the value 3 works well for my planes, it also depends on weight distribution in the model and you may need another value) Share this post Link to post Share on other sites
scotg 204 Posted October 5, 2018 Thanks! I was able to get its flight handling more controllable, but it's still far from perfect. The elevator force is important, but first I need to smooth out the vertical bouncing that occurs after a climb or descent. I found an error - a missing semicolon - that was being dismissed by the compiler. When I fixed it, there were some things that suddenly started working differently with the dampers. Mind you this is all physical handling. I think the visual stuff is right, but it will likely need adjusting once the physical handling is behaving right. I have to make another video to explain what's still wrong, I think it'll be easier to explain, and get my memory jogged over it. I have moved back to working on my tanks for the time being, and since I am finding new success with them it's easier to keep on them. Share this post Link to post Share on other sites
Noks - Ohliger 4 Posted October 6, 2018 Every cargo unit (pilot, crew, turrets) is placed in your visual LODs (here 1.000 + ViewPilot). Make sure you do not have a turret or commander proxy in those LODs. Share this post Link to post Share on other sites
scotg 204 Posted October 7, 2018 4 hours ago, Noks - Ohliger said: Every cargo unit (pilot, crew, turrets) is placed in your visual LODs (here 1.000 + ViewPilot). Make sure you do not have a turret or commander proxy in those LODs. Thanks for watching the video! I have corrected the co-pilot problem. It turns out that airplane class inherits a vehicle turret with an added crewman position. The solution was to create an empty turret class. BTW, thanks to @DSabre and others for pointing that out to me in PM. Share this post Link to post Share on other sites