diff --git a/BUK-M2/BUK-M2-set.xml b/BUK-M2/BUK-M2-set.xml
index 6f47649..bf110a8 100644
--- a/BUK-M2/BUK-M2-set.xml
+++ b/BUK-M2/BUK-M2-set.xml
@@ -258,44 +258,6 @@
station
true
true
-
-
- 0.00
- 0.15
- radar
- APN0506
- true
- 31
- 360
- 170
- 24
- 16500
- 0
- 15
- 0
- 1576
- 145
- 900
- 0.25
- 1.312336
- 2
- 0.5
- 60
- 3000
- 0
- 1.6
- 200
- true
- 5.5
- false
- 24
- 0.95
- 3
- 1
- A
- Bird away
- true
-
@@ -352,18 +314,6 @@
Aircraft/BUK-M2/Nasal/damage.nas
-
- Aircraft/BUK-M2/Nasal/radar-logic.nas
-
-
- Aircraft/BUK-M2/Nasal/vector.nas
-
-
- Aircraft/BUK-M2/Nasal/guided-missiles.nas
-
-
- Aircraft/BUK-M2/Nasal/fire-control.nas
-
diff --git a/BUK-M2/Nasal/radar-logic.nas b/BUK-M2/Nasal/radar-logic.nas
deleted file mode 100644
index dab71a1..0000000
--- a/BUK-M2/Nasal/radar-logic.nas
+++ /dev/null
@@ -1,403 +0,0 @@
-var clamp = func(v, min, max) { v < min ? min : v > max ? max : v }
-var encode3bits = func(first, second, third) {
- var integer = first;
- integer = integer + 2 * second;
- integer = integer + 4 * third;
- return integer;
-}
-
-var FALSE = 0;
-var TRUE = 1;
-
-var AIR = 0;
-var MARINE = 1;
-var SURFACE = 2;
-var ORDNANCE = 3;
-
-var Contact = {
- # For now only used in guided missiles, to make it compatible with Mirage 2000-5.
- new: func(c, class) {
- var obj = { parents : [Contact]};
-#debug.benchmark("radar process1", func {
- obj.rdrProp = c.getNode("radar");
- obj.oriProp = c.getNode("orientation");
- obj.velProp = c.getNode("velocities");
- obj.posProp = c.getNode("position");
- obj.heading = obj.oriProp.getNode("true-heading-deg");
-#});
-#debug.benchmark("radar process2", func {
- obj.alt = obj.posProp.getNode("altitude-ft");
- obj.lat = obj.posProp.getNode("latitude-deg");
- obj.lon = obj.posProp.getNode("longitude-deg");
-#});
-#debug.benchmark("radar process3", func {
- #As it is a geo.Coord object, we have to update lat/lon/alt ->and alt is in meters
- obj.coord = geo.Coord.new();
- obj.coord.set_latlon(obj.lat.getValue(), obj.lon.getValue(), obj.alt.getValue() * FT2M);
-#});
-#debug.benchmark("radar process4", func {
- obj.pitch = obj.oriProp.getNode("pitch-deg");
- obj.speed = obj.velProp.getNode("true-airspeed-kt");
- obj.vSpeed = obj.velProp.getNode("vertical-speed-fps");
- obj.callsign = c.getNode("callsign", 1);
- obj.shorter = c.getNode("model-shorter");
- obj.orig_callsign = obj.callsign.getValue();
- obj.name = c.getNode("name");
- obj.sign = c.getNode("sign",1);
- obj.valid = c.getNode("valid");
- obj.painted = c.getNode("painted");
- obj.unique = c.getNode("unique");
- obj.validTree = 0;
-#});
-#debug.benchmark("radar process5", func {
- #obj.transponderID = c.getNode("instrumentation/transponder/transmitted-id");
-#});
-#debug.benchmark("radar process6", func {
- obj.acType = c.getNode("sim/model/ac-type");
- obj.type = c.getName();
- obj.index = c.getIndex();
- obj.string = "ai/models/" ~ obj.type ~ "[" ~ obj.index ~ "]";
- obj.shortString = obj.type ~ "[" ~ obj.index ~ "]";
-#});
-#debug.benchmark("radar process7", func {
- obj.range = obj.rdrProp.getNode("range-nm");
- obj.bearing = obj.rdrProp.getNode("bearing-deg");
- obj.elevation = obj.rdrProp.getNode("elevation-deg");
-#});
- obj.deviation = nil;
-
- obj.node = c;
- obj.class = class;
-
- obj.polar = [0,0];
- obj.cartesian = [0,0];
-
- return obj;
- },
-
- isValid: func () {
- var valid = me.valid.getValue();
- if (valid == nil) {
- valid = FALSE;
- }
- if (me.callsign.getValue() != me.orig_callsign) {
- valid = FALSE;
- }
- return valid;
- },
-
- isPainted: func () {
- if (me.painted == nil) {
- me.painted = me.node.getNode("painted");
- }
- if (me.painted == nil) {
- return nil;
- }
- var p = me.painted.getValue();
- return p;
- },
-
- getUnique: func () {
- if (me.unique == nil) {
- me.unique = me.node.getNode("unique");
- }
- if (me.unique == nil) {
- return nil;
- }
- var u = me.unique.getValue();
- return u;
- },
-
- getElevation: func() {
- var e = 0;
- e = me.elevation.getValue();
- if(e == nil or e == 0) {
- # AI/MP has no radar properties
- var self = geo.aircraft_position();
- me.get_Coord();
- var angleInv = clamp(self.distance_to(me.coord)/self.direct_distance_to(me.coord), -1, 1);
- e = (self.alt()>me.coord.alt()?-1:1)*math.acos(angleInv)*R2D;
- }
- return e;
- },
-
- getNode: func () {
- return me.node;
- },
-
- getFlareNode: func () {
- return me.node.getNode("sim/multiplay/generic/string[10]");
- },
-
- setPolar: func(dist, angle) {
- me.polar = [dist,angle];
- },
-
- setCartesian: func(x, y) {
- me.cartesian = [x,y];
- },
-
- remove: func(){
- if(me.validTree != 0){
- me.validTree.setValue(0);
- }
- },
-
- get_Coord: func(){
- me.coord.set_latlon(me.lat.getValue(), me.lon.getValue(), me.alt.getValue() * FT2M);
- var TgTCoord = geo.Coord.new(me.coord);
- return TgTCoord;
- },
-
- get_Callsign: func(){
- var n = me.callsign.getValue();
- if(n != "" and n != nil) {
- return n;
- }
- if (me.name == nil) {
- me.name = me.getNode().getNode("name");
- }
- if (me.name == nil) {
- n = "";
- } else {
- n = me.name.getValue();
- }
- if(n != "" and n != nil) {
- return n;
- }
- n = me.sign.getValue();
- if(n != "" and n != nil) {
- return n;
- }
- return "UFO";
- },
-
- get_model: func(){
- var n = "";
- if (me.shorter == nil) {
- me.shorter = me.node.getNode("model-shorter");
- }
- if (me.shorter != nil) {
- n = me.shorter.getValue();
- }
- if(n != "" and n != nil) {
- return n;
- }
- n = me.sign.getValue();
- if(n != "" and n != nil) {
- return n;
- }
- if (me.name == nil) {
- me.name = me.getNode().getNode("name");
- }
- if (me.name == nil) {
- n = "";
- } else {
- n = me.name.getValue();
- }
- if(n != "" and n != nil) {
- return n;
- }
- return me.get_Callsign();
- },
-
- get_Speed: func(){
- # return true airspeed
- var n = me.speed.getValue();
- return n;
- },
-
- get_Longitude: func(){
- var n = me.lon.getValue();
- return n;
- },
-
- get_Latitude: func(){
- var n = me.lat.getValue();
- return n;
- },
-
- get_Pitch: func(){
- var n = me.pitch.getValue();
- return n;
- },
-
- get_heading : func(){
- var n = me.heading.getValue();
- if(n == nil)
- {
- n = 0;
- }
- return n;
- },
-
- get_bearing: func(){
- var n = 0;
- n = me.bearing.getValue();
- if(n == nil or n == 0) {
- # AI/MP has no radar properties
- n = me.get_bearing_from_Coord(geo.aircraft_position());
- }
- return n;
- },
-
- get_bearing_from_Coord: func(MyAircraftCoord){
- me.get_Coord();
- var myBearing = 0;
- if(me.coord.is_defined()) {
- myBearing = MyAircraftCoord.course_to(me.coord);
- }
- return myBearing;
- },
-
- get_reciprocal_bearing: func(){
- return geo.normdeg(me.get_bearing() + 180);
- },
-
- get_deviation: func(true_heading_ref, coord){
- me.deviation = - deviation_normdeg(true_heading_ref, me.get_bearing_from_Coord(coord));
- return me.deviation;
- },
-
- get_altitude: func(){
- #Return Alt in feet
- return me.alt.getValue();
- },
-
- get_Elevation_from_Coord: func(MyAircraftCoord) {
- me.get_Coord();
- var value = (me.coord.alt() - MyAircraftCoord.alt()) / me.coord.direct_distance_to(MyAircraftCoord);
- if (math.abs(value) > 1) {
- # warning this else will fail if logged in as observer and see aircraft on other side of globe
- return 0;
- }
- var myPitch = math.asin(value) * R2D;
- return myPitch;
- },
-
- get_total_elevation_from_Coord: func(own_pitch, MyAircraftCoord){
- var myTotalElevation = - deviation_normdeg(own_pitch, me.get_Elevation_from_Coord(MyAircraftCoord));
- return myTotalElevation;
- },
-
- get_total_elevation: func(own_pitch) {
- me.deviation = - deviation_normdeg(own_pitch, me.getElevation());
- return me.deviation;
- },
-
- get_range: func() {
- var r = 0;
- if(me.range == nil or me.range.getValue() == nil or me.range.getValue() == 0) {
- # AI/MP has no radar properties
- me.get_Coord();
- r = me.coord.direct_distance_to(geo.aircraft_position()) * M2NM;
- } else {
- r = me.range.getValue();
- }
- return r;
- },
-
- get_range_from_Coord: func(MyAircraftCoord) {
- var myCoord = me.get_Coord();
- var myDistance = 0;
- if(myCoord.is_defined()) {
- myDistance = MyAircraftCoord.direct_distance_to(myCoord) * M2NM;
- }
- return myDistance;
- },
-
- get_type: func () {
- return me.class;
- },
-
- get_cartesian: func() {
- return me.cartesian;
- },
-
- get_polar: func() {
- return me.polar;
- },
-};
-
-var isNotBehindTerrain = func( mp ) {
-
-###########
- var pos = mp.getNode("position");
- var alt = pos.getNode("altitude-ft").getValue();
- var lat = pos.getNode("latitude-deg").getValue();
- var lon = pos.getNode("longitude-deg").getValue();
- if(alt == nil or lat == nil or lon == nil) {
- return isVisible = 0;
- }
- var aircraftPos = geo.Coord.new().set_latlon(lat, lon, alt*0.3048);
-#################
-
-
- var isVisible = 0;
- var MyCoord = geo.aircraft_position();
-
- # Because there is no terrain on earth that can be between these 2
- if(MyCoord.alt() < 8900 and aircraftPos.alt() < 8900)
- {
- # Temporary variable
- # A (our plane) coord in meters
- var a = MyCoord.x();
- var b = MyCoord.y();
- var c = MyCoord.z();
- # B (target) coord in meters
- var d = aircraftPos.x();
- var e = aircraftPos.y();
- var f = aircraftPos.z();
- var difa = d - a;
- var difb = e - b;
- var difc = f - c;
- # direct Distance in meters
- var myDistance = math.sqrt( math.pow((d-a),2) + math.pow((e-b),2) + math.pow((f-c),2)); #calculating distance ourselves to avoid another call to geo.nas (read: speed, probably).
- var Aprime = geo.Coord.new();
-
- # Here is to limit FPS drop on very long distance
- var L = 500;
- if(myDistance > 50000)
- {
- L = myDistance / 15;
- }
- var step = L;
- var maxLoops = int(myDistance / L);
-
- isVisible = 1;
- # This loop will make travel a point between us and the target and check if there is terrain
- for(var i = 1 ; i <= maxLoops ; i += 1)
- {
- #calculate intermediate step
- #basically dividing the line into maxLoops number of steps, and checking at each step
- #to ascii-art explain it:
- # |us|----------|step 1|-----------|step 2|--------|step 3|----------|them|
- #there will be as many steps as there is i
- #every step will be equidistant
-
- #also, if i == 0 then the first step will be our plane
-
- var x = ((difa/(maxLoops+1))*i)+a;
- var y = ((difb/(maxLoops+1))*i)+b;
- var z = ((difc/(maxLoops+1))*i)+c;
- #print("i:" ~ i ~ "|x,y,z | " ~ x ~ "," ~ y ~ "," ~ z);
- Aprime.set_xyz(x,y,z);
- var AprimeTerrainAlt = geo.elevation(Aprime.lat(), Aprime.lon());
- if(AprimeTerrainAlt == nil)
- {
- AprimeTerrainAlt = 0;
- }
-
- if(AprimeTerrainAlt > Aprime.alt())
- {
- #print("behind terrain");
- return 0;
- }
- }
- }
- else
- {
- isVisible = 1;
- }
- return isVisible;
-}
\ No newline at end of file
diff --git a/S-300/S-300-set.xml b/S-300/S-300-set.xml
index 2eec9a0..4778fae 100644
--- a/S-300/S-300-set.xml
+++ b/S-300/S-300-set.xml
@@ -246,56 +246,14 @@
- Aircraft/S-300/Models/Armament/Weapons/
- true
- true
+
rotors/main/blade[0]/flap-deg
rotors/main/blade[1]/flap-deg
rotors/main/blade[2]/flap-deg
- true
- 1
- controls/armament
- station
+
true
true
-
- 0.00
- 0.15
- 0.1
- radar
- APN
- true
- 85
- 360
- 220
- 22
- 90000
- 77000
- 0.25
- 8.0
- 3920
- 315
- 2800
- 0.20
- 2.11349
- 2
- 0.25
- 160
- true
- 3000
- 75000
- 0.85
- 200
- true
- 7.5
- false
- 90
- 0.95
- 3
- A
- Bird away
- true
-
+
@@ -352,18 +310,6 @@
Aircraft/S-300/Nasal/damage.nas
-
- Aircraft/S-300/Nasal/radar-logic.nas
-
-
- Aircraft/S-300/Nasal/vector.nas
-
-
- Aircraft/S-300/Nasal/guided-missiles.nas
-
-
- Aircraft/S-300/Nasal/fire-control.nas
-