diff --git a/Nasal/steering.nas b/Nasal/steering.nas index ad50890..a17d152 100644 --- a/Nasal/steering.nas +++ b/Nasal/steering.nas @@ -21,49 +21,51 @@ memoize.lookup = func(value) { } var Steering = { - + new: func() { print("Steering system initialized!"); - return {parents:[Steering]}; + var steering = { parents:[Steering] }; + props.getNode("/controls/steering_wheel/steering_limit-deg", 1).setValue(steering.steeringLimit * R2D); + return steering; }, - + mode: 0, #//0: direct; 1: advanced - + debugMode: 0, - + input: 0, #//-1: left, 1:right, 0: none command: 0, #//Steering command, range from -1 to 1 steeringAngle: 0, #//in rad - steeringAngleDeg: 0, #//in degrees - + #steeringAngleDeg: 0, #//in degrees + steeringLimit: 15.707963, #// 5 * 3.1415926 - - + + powPointThree: memoize.new( func(value){ return math.pow(value, 0.3); }), - + powPointOne: memoize.new( func(value){ return math.pow(value, 0.1); }), - + steeringStep:func(rad){ return 0.1 * me.powPointOne.lookup(sprintf("%.1f", math.abs(rad))) + 0.04; }, neutralStep: func(rad){ var speed = props.getNode("/", 1).getValue("sim/multiplay/generic/float[15]"); - return 0.01 * me.powPointThree.lookup(sprintf("%.1f", math.abs(speed))) * math.abs(rad); + return 0.03 * me.powPointThree.lookup(sprintf("%.1f", math.abs(speed))) * math.abs(rad); }, - + mainLoop: func(){ if(me.input == 0) { if(math.abs(me.steeringAngle) <=0.2) { me.steeringAngle = 0; - me.steeringAngleDeg = me.steeringAngle * R2D; props.getNode("/",1).setValue("/controls/flight/rudder", me.command); - props.getNode("/",1).setValue("/controls/steering_wheel", me.steeringAngleDeg); + #me.steeringAngleDeg = me.steeringAngle * R2D; + #props.getNode("/",1).setValue("/controls/steering_wheel", me.steeringAngleDeg); } if(me.steeringAngle == 0) { @@ -95,11 +97,11 @@ var Steering = { else me.steeringAngle -= me.steeringStep(me.steeringAngle); } - + me.command = me.steeringAngle / me.steeringLimit; #//The steering wheel could rotate for two circles and a half - me.steeringAngleDeg = me.steeringAngle * R2D; + #me.steeringAngleDeg = me.steeringAngle * R2D; props.getNode("/",1).setValue("/controls/flight/rudder", me.command); - props.getNode("/",1).setValue("/controls/steering_wheel", me.steeringAngleDeg); + #props.getNode("/",1).setValue("/controls/steering_wheel", me.steeringAngleDeg); if(me.debugMode) { print("Steering system command:" ~ me.command); @@ -107,14 +109,14 @@ var Steering = { print("Steering system angle degrees:" ~ me.steeringAngleDeg); } }, - + inputLeft: func(){ me.input = -1; if(!me.mode){ - me.command = -0.5; - me.steeringAngleDeg = me.steeringLimit * me.command * R2D; + me.command = -0.5; props.getNode("/",1).setValue("/controls/flight/rudder", me.command); - props.getNode("/",1).setValue("/controls/steering_wheel", me.steeringAngleDeg); + #me.steeringAngleDeg = me.steeringLimit * me.command * R2D; + #props.getNode("/",1).setValue("/controls/steering_wheel", me.steeringAngleDeg); }else if(me.mode and !me.timerStarted){ me.startTimer(); } @@ -123,9 +125,9 @@ var Steering = { me.input = 1; if(!me.mode){ me.command = 0.5; - me.steeringAngleDeg = me.steeringLimit * me.command * R2D; props.getNode("/",1).setValue("/controls/flight/rudder", me.command); - props.getNode("/",1).setValue("/controls/steering_wheel", me.steeringAngleDeg); + #me.steeringAngleDeg = me.steeringLimit * me.command * R2D; + #props.getNode("/",1).setValue("/controls/steering_wheel", me.steeringAngleDeg); }else if(me.mode and !me.timerStarted){ me.startTimer(); } @@ -134,14 +136,14 @@ var Steering = { me.input = 0; if(!me.mode){ me.command = 0; - me.steeringAngleDeg = me.steeringLimit * me.command * R2D; props.getNode("/",1).setValue("/controls/flight/rudder", me.command); - props.getNode("/",1).setValue("/controls/steering_wheel", me.steeringAngleDeg); + #me.steeringAngleDeg = me.steeringLimit * me.command * R2D; + #props.getNode("/",1).setValue("/controls/steering_wheel", me.steeringAngleDeg); }else if(me.mode and !me.timerStarted){ me.startTimer(); } }, - + steeringTimer: nil, timerCreated: 0, timerStarted: 0, @@ -172,4 +174,4 @@ addcommand("enableAdvancedSteering", func() { addcommand("disableAdvancedSteering", func() { steeringAssistance.mode = 0; print("Advanced Steering Disabled"); -}); \ No newline at end of file +}); diff --git a/Nasal/systems.nas b/Nasal/systems.nas index 8565b12..be129e7 100644 --- a/Nasal/systems.nas +++ b/Nasal/systems.nas @@ -109,6 +109,7 @@ props.getNode("systems/plate/file", 1).setValue("NONE"); props.getNode("systems/plate/name", 1).setValue("NONE"); props.getNode("controls/lighting/headlight-als", 1).setValue(0); props.getNode("controls/lighting/highBeam", 1).setValue(0); +props.getNode("/controls/steering_wheel", 1).setValue(0); props.getNode("controls/interior/luxury/storage_cover_pos", 1).setValue(0); props.getNode("sim/remote/pilot-callsign", 1).setValue(""); props.getNode("systems/codriver-enable", 1).setValue(0); diff --git a/followme_e-tron-set.xml b/followme_e-tron-set.xml index ebe58f6..c41c0f5 100644 --- a/followme_e-tron-set.xml +++ b/followme_e-tron-set.xml @@ -563,6 +563,9 @@ + + + diff --git a/followme_e-tron.xml b/followme_e-tron.xml index 38dc0b7..33a9d52 100644 --- a/followme_e-tron.xml +++ b/followme_e-tron.xml @@ -430,6 +430,10 @@ fcs/rudder-pos-norm + + fcs/rudder-cmd-norm + 30 + @@ -500,7 +504,7 @@ - + @@ -522,5 +526,17 @@ 3 + + + + + + /controls/steering_wheel/steering_limit-deg + /controls/flight/rudder + + + + +