IDK if you're still interested, but designer menu folders are created automatically if they're not empty.
To put something in folder you need to change category of DesignerPart xml tag, that's used both for vanilla parts (AppData/LocalLow/Jundroo/SimplePlanes/DesignerParts.xml), mods (somewhere within mod file) and sub-assemblies (in sub-assembly file, in AppData/LocalLow/Jundroo/SimplePlanes/SubAssemblies folder)
You can also put description there and change icon, but AFAIK you can't use external file as icon.
Vanilla parts also use studioScale/studioRotation/studioOffset for preview, but it doesn't works for sub-assemblies.
DebugExpression tan(deltaangle(Heading,TargetHeading))*TargetDistance DebugExpression tan(deltaangle(PitchAngle+AngleOfAttack,TargetElevation))*TargetDistance
Could actually hit Tiny around 20m away from center
You've got 27 successors (at the moment, 2025-01-26 22-47UTC), but that's not a line, that's tree with 12 leaf nodes, so it mostly goes around, not further.
Nicky brewed this up in his experimental laboratory. They aren't your traditional trees, but rather an expression parser so you can write actual code that is evaluated for input controllers. Intended for XML modders, these allow you to blend inputs in any way you can imagine.
And now you wish to turn it into local variation of unityscript?
I remember on one of airplanes i coded for TVC was only enabled after 30deg AoA and that was mix of symmetric and semi-symmetric wings, so perhaps with flat-bottom wings or properly linearized lift curves it'll work without hidden mechanics or magic.
Version tree at 2024-11-17T08:01Z: https://imgur.com/a/yPjfUFw
JSON (starting at a7bta6 (here)): {"uXG6QL":{"Juqh0F":{"yUqF40":{"V7mG41":{"CAiXMf":{"rVbbR6":{"6t93Bx":{"3gzkmM":{"lK9P1j":{"Iwbo7a":{"6csf1s":{"1qS1l7":{"107i4I":{"hVNvmA":{"86gnwh":{"Wk3a92":{"yi1Fs5":{"zgO3lP":{"ReQ53F":{"BiQO9o":{"Y71Du7":{"Y03wZj":{"oKuPV3":{"HmD5Eb":{"curO5f":{"fWqxB0":{"0hE2s9":{"EEU7OU":{"d4O2lO":{}}}}},"o9Y216":{"5dGUjf":{"LVzyx7":{}}},"z07iGr":{},"vCfb0G":{}},"UChFa4":{"rY957g":{}}},"7s1zIT":{"y58pg5":{"fJvU3W":{"YA13zl":{}}}}},"YRyM8N":{},"GOVncl":{"wmONxo":{}},"74e1BJ":{}},"l15867":{},"V3d46F":{},"AVCY24":{}}},"jAffBm":{"k9nMbp":{"V9r3f3":{"iQ27gM":{}}}}}},"w2V1Jw":{"B0741s":{"DenG2i":{}}}}}}}}},"7hhqJ2":{"JMEc48":{"a9976O":{"lJ25nM":{"I83BTS":{}}}}}}},"Xd40z0":{}},"l6J2Y7":{"99Cgr1":{"ATKJa1":{"y7qaP7":{"iBz858":{}}},"250Ug3":{"zZO4s2":{}}},"JW32OA":{},"8RYxBA":{}},"66qjqO":{}}}}}}}},"P9TM0B":{}}
Version tree at 2024-11-17T08:01Z: https://imgur.com/a/yPjfUFw
JSON (starting at a7bta6): {"uXG6QL":{"Juqh0F":{"yUqF40":{"V7mG41":{"CAiXMf":{"rVbbR6":{"6t93Bx":{"3gzkmM":{"lK9P1j":{"Iwbo7a":{"6csf1s":{"1qS1l7":{"107i4I":{"hVNvmA":{"86gnwh":{"Wk3a92":{"yi1Fs5":{"zgO3lP":{"ReQ53F":{"BiQO9o":{"Y71Du7":{"Y03wZj":{"oKuPV3":{"HmD5Eb":{"curO5f":{"fWqxB0":{"0hE2s9":{"EEU7OU":{"d4O2lO":{}}}}},"o9Y216":{"5dGUjf":{"LVzyx7":{}}},"z07iGr":{},"vCfb0G":{}},"UChFa4":{"rY957g":{}}},"7s1zIT":{"y58pg5":{"fJvU3W":{"YA13zl":{}}}}},"YRyM8N":{},"GOVncl":{"wmONxo":{}},"74e1BJ":{}},"l15867":{},"V3d46F":{},"AVCY24":{}}},"jAffBm":{"k9nMbp":{"V9r3f3":{"iQ27gM":{}}}}}},"w2V1Jw":{"B0741s":{"DenG2i":{}}}}}}}}},"7hhqJ2":{"JMEc48":{"a9976O":{"lJ25nM":{"I83BTS":{}}}}}}},"Xd40z0":{}},"l6J2Y7":{"99Cgr1":{"ATKJa1":{"y7qaP7":{"iBz858":{}}},"250Ug3":{"zZO4s2":{}}},"JW32OA":{},"8RYxBA":{}},"66qjqO":{}}}}}}}},"P9TM0B":{}}
Multiplayer event isn't really something that depends on tech, it more depends on humans who plan it, and that can be someone from community.
For tech it's perhaps possible to add tooling for parametric design (that's like defining part properties with FT), and since it's build-time stuff it mustn't really affect in-level performance.
@126 some variables are lists in index=a?xa:(index=b?xb:... form. to make them shorter i omitted closing parenthesis. it works fine with ft interpreter, but variable editor widget has it's own checker that says that such code isn't correct. to pass it you need to add those parenthesis back, e.g. turn
p_tgt.i=1?6020:(p_tgt.i=2?5885:(p_tgt.i=3?5805:(p_tgt.i=4?5805:(p_tgt.i=5?5805:(p_tgt.i=6?5805:(p_tgt.i=7?5805:(p_tgt.i=8?5805:(p_tgt.i=9?5805:(p_tgt.i=10?5805:(p_tgt.i=11?5885:(p_tgt.i=12?6020:(p_tgt.i=13?6020:(p_tgt.i=14?6020:(p_tgt.i=15?6020:(p_tgt.i=16?5880:(p_tgt.i=17?5670:(p_tgt.i=18?5670:(p_tgt.i=19?5670:(p_tgt.i=20?5685:(p_tgt.i=21?5600:(p_tgt.i=22?5600:(p_tgt.i=23?5635:0
into
p_tgt.i=1?6020:(p_tgt.i=2?5885:(p_tgt.i=3?5805:(p_tgt.i=4?5805:(p_tgt.i=5?5805:(p_tgt.i=6?5805:(p_tgt.i=7?5805:(p_tgt.i=8?5805:(p_tgt.i=9?5805:(p_tgt.i=10?5805:(p_tgt.i=11?5885:(p_tgt.i=12?6020:(p_tgt.i=13?6020:(p_tgt.i=14?6020:(p_tgt.i=15?6020:(p_tgt.i=16?5880:(p_tgt.i=17?5670:(p_tgt.i=18?5670:(p_tgt.i=19?5670:(p_tgt.i=20?5685:(p_tgt.i=21?5600:(p_tgt.i=22?5600:(p_tgt.i=23?5635:0))))))))))))))))))))))
(for debug purposes)
print(re.sub(r"\<#(?:([A-F0-9])([A-F0-9])([A-F0-9])[A-F0-9]?|([A-F0-9][A-F0-9])([A-F0-9][A-F0-9])([A-F0-9][A-F0-9])(?:[A-F0-9][A-F0-9])?)>",lambda m:"\x1b[48;2;"+str(int(m[1] or m[4],16))+";"+str(int(m[2] or m[5],16))+";"+str(int(m[3] or m[6],16))+"m",s).replace("<br>","\n").replace("."," "))
Replaces color tags with ANSI ones.
Idk if you guys will answer this, but:
Q: Will you use SP xml format but with higher xmlVersion and new sections or will you make new one?
Q: Perhaps it's too early to ask, but will you keep format of DesignerParts and setting files?
Q: Not related, but how do i download crafts from SR2 with curl?
@TRS051
If code's generated but doesn't shows in SP, try to:
- increase label's width and height;
- set label's alignment to top-left;
if image's displayed but is cut off, try to decrease image's size and generate code again. apparently label's limited to 100k dots and it's not something i can change
If it doesn't generates label's code, try to:
- make sure image isn't svg;
- if you're using image link, make sure that hosting allows cross-origin resource sharing (or download image and try again);
- check browser's dev console (usually F12) to see what's wrong
@Mousewithamachinegun122 Yes, it is possible to switch frames to get animation ({T=1?"frame":""}{T=2?"frame":""}...), but the program won't do it and idk if it'll be possible to run resulting craft at reasonable fps..
@Matteosiufromfifakit
Just raise your hand
And reach out for the spell
Find the door to the promised land
Just believe in yourself
Close your eyes and your will find
The way out of the dark
...Or read the post again, there's two links to github.
Perhaps it can be better if you'll say it's unity's C# and miss some parts of description but tell it basic info about flight dynamics and geometry instead.
And as Redrocktumbler said you'll perhaps need to repeat your description once in a while, because ANN itself is stateless and "memory" of that one is just last ~3k of tokens glued to your message.
And no, you must not overestimate ANN, it's more like polynomial approximation than AI you wish to see.
Well, you're right that label will be recalculated every SP frame, but it will select one (very long) string instead of checking (and sometimes recalculating) hundreds of separate pixels. I don't really know if ternary with floats is equivalent to ternary with (very long) string at runtime, but either way i think there's more pixels than frames.
Is it really faster to use a variable and format string for each pixel (<#{!pixel?"0000":pixel}>...) instead of using an expression for each frame ({t=0?frame:""}{t=1?frame:""}...)?
@DatMaluchGuy19
Try to add 22 closing parentheses in the end of p_tgt.next.z,p_tgt.next.x,p_tgt.links.z,p_tgt.links.x and 3 closing parentheses in the end of p_tgt.next
@DatMaluchGuy19 VC variable, it's in meters per second, and it's signed i.e. negative value means it must go backwards. TC controls engine directly, you can set it to 1 if you want to go as fast as possible.
Husky's right, SP build files aren't that large.
If you want, you can upload them as hidden ("Visibility" button in uploading widget), they'll be saved on SP site but will only be visible for you.
@winterro p_tgt.i stores id of currently selected point
p_tgt.x, p_tgt.z are coords of currently selected point p_tgt.links.x, p_tgt.links.z are ids of points where it can go from currently selected one.
p_tgt.i switches to one of p_tgt.links.x%100, p_tgt.links.x//100, p_tgt.links.y%100, and p_tgt.links.y//100 every time car gets close-enough to currently selected point
Other variables aren't significant for routing, they're used to tame car itself, to make it unable to go to previous point, to make it not headbutt others, to make it stop at dead ends, to make it remember gifts without leaving too much inside label...
Link to txt file CameraPosX variable must be camera's horizontal offset in meters
IDK if it'll work, but if it will it must be 5cm orange circle clamped by two vertical edges located 10cm away from label's left edge.
__D is dampener, __P is gain PCi=(lerp(TAlt,h,pow(TD/200,2))-FCAltitude+rate(lerp(TAlt,h,pow(TD/200,2))-FCAltitude)*__D)*__P
40 here is some distance after which missile surely can't damage airplane
Missile's pitch angle=smooth((abs(Longitude-FCLongitude)+abs(Latitude-FCLatitude))<40|(PCi!=PCi)?0:sign(PCi)*90,(PCi!=PCi)?0:abs(PCi))
Be carefull, SP forum might not display full expressions
1:19 Is it racetrack autopilot with imported model (spawnable by player) or is it a part of map (like SP1 convoys)?
P hotkey by default
Actually just read all hotkeys (settings/controls IIRC), maybe you'll find something useful
Piston is fixed and it's oscillation period is constant, so it also allows enemy to get accurate heading of your cockpit part.
@MrCOPTY Maybe, but why?
+1Maybe you can reduce cpu load if you'll use one-two triangle blocks instead of fuselage?
IDK if you're still interested, but designer menu folders are created automatically if they're not empty.
To put something in folder you need to change
category
ofDesignerPart
xml tag, that's used both for vanilla parts (AppData/LocalLow/Jundroo/SimplePlanes/DesignerParts.xml
), mods (somewhere within mod file) and sub-assemblies (in sub-assembly file, inAppData/LocalLow/Jundroo/SimplePlanes/SubAssemblies
folder)You can also put description there and change icon, but AFAIK you can't use external file as icon.
Vanilla parts also use
studioScale
/studioRotation
/studioOffset
for preview, but it doesn't works for sub-assemblies.No brakes at all. It's okay for self-piloting, it's just that we humans need to remember about it.
+2DebugExpression tan(deltaangle(Heading,TargetHeading))*TargetDistance
DebugExpression tan(deltaangle(PitchAngle+AngleOfAttack,TargetElevation))*TargetDistance
Could actually hit Tiny around 20m away from center
You've got 27 successors (at the moment, 2025-01-26 22-47UTC), but that's not a line, that's tree with 12 leaf nodes, so it mostly goes around, not further.
Archeology is fun
It seems so ancient now
And now you wish to turn it into local variation of unityscript?
T
?But what about flight data? GS/IAS/TAS and every thing that depends on it?
+2I remember on one of airplanes i coded for TVC was only enabled after 30deg AoA and that was mix of symmetric and semi-symmetric wings, so perhaps with flat-bottom wings or properly linearized lift curves it'll work without hidden mechanics or magic.
Yes, iirc Randomusername used that.
+1Hey-hey-hey, i know there's spheres/wireframes/images, but airplane doesn't fits into block and it adds 2x more parts than there was.
High-speed part is kind of PD with
+1smooth(...)-smooth(...)
being dampener.Version tree at 2024-11-17T08:01Z: https://imgur.com/a/yPjfUFw
JSON (starting at a7bta6 (here)): {"uXG6QL":{"Juqh0F":{"yUqF40":{"V7mG41":{"CAiXMf":{"rVbbR6":{"6t93Bx":{"3gzkmM":{"lK9P1j":{"Iwbo7a":{"6csf1s":{"1qS1l7":{"107i4I":{"hVNvmA":{"86gnwh":{"Wk3a92":{"yi1Fs5":{"zgO3lP":{"ReQ53F":{"BiQO9o":{"Y71Du7":{"Y03wZj":{"oKuPV3":{"HmD5Eb":{"curO5f":{"fWqxB0":{"0hE2s9":{"EEU7OU":{"d4O2lO":{}}}}},"o9Y216":{"5dGUjf":{"LVzyx7":{}}},"z07iGr":{},"vCfb0G":{}},"UChFa4":{"rY957g":{}}},"7s1zIT":{"y58pg5":{"fJvU3W":{"YA13zl":{}}}}},"YRyM8N":{},"GOVncl":{"wmONxo":{}},"74e1BJ":{}},"l15867":{},"V3d46F":{},"AVCY24":{}}},"jAffBm":{"k9nMbp":{"V9r3f3":{"iQ27gM":{}}}}}},"w2V1Jw":{"B0741s":{"DenG2i":{}}}}}}}}},"7hhqJ2":{"JMEc48":{"a9976O":{"lJ25nM":{"I83BTS":{}}}}}}},"Xd40z0":{}},"l6J2Y7":{"99Cgr1":{"ATKJa1":{"y7qaP7":{"iBz858":{}}},"250Ug3":{"zZO4s2":{}}},"JW32OA":{},"8RYxBA":{}},"66qjqO":{}}}}}}}},"P9TM0B":{}}
Version tree at 2024-11-17T08:01Z: https://imgur.com/a/yPjfUFw
+1JSON (starting at a7bta6): {"uXG6QL":{"Juqh0F":{"yUqF40":{"V7mG41":{"CAiXMf":{"rVbbR6":{"6t93Bx":{"3gzkmM":{"lK9P1j":{"Iwbo7a":{"6csf1s":{"1qS1l7":{"107i4I":{"hVNvmA":{"86gnwh":{"Wk3a92":{"yi1Fs5":{"zgO3lP":{"ReQ53F":{"BiQO9o":{"Y71Du7":{"Y03wZj":{"oKuPV3":{"HmD5Eb":{"curO5f":{"fWqxB0":{"0hE2s9":{"EEU7OU":{"d4O2lO":{}}}}},"o9Y216":{"5dGUjf":{"LVzyx7":{}}},"z07iGr":{},"vCfb0G":{}},"UChFa4":{"rY957g":{}}},"7s1zIT":{"y58pg5":{"fJvU3W":{"YA13zl":{}}}}},"YRyM8N":{},"GOVncl":{"wmONxo":{}},"74e1BJ":{}},"l15867":{},"V3d46F":{},"AVCY24":{}}},"jAffBm":{"k9nMbp":{"V9r3f3":{"iQ27gM":{}}}}}},"w2V1Jw":{"B0741s":{"DenG2i":{}}}}}}}}},"7hhqJ2":{"JMEc48":{"a9976O":{"lJ25nM":{"I83BTS":{}}}}}}},"Xd40z0":{}},"l6J2Y7":{"99Cgr1":{"ATKJa1":{"y7qaP7":{"iBz858":{}}},"250Ug3":{"zZO4s2":{}}},"JW32OA":{},"8RYxBA":{}},"66qjqO":{}}}}}}}},"P9TM0B":{}}
Multiplayer event isn't really something that depends on tech, it more depends on humans who plan it, and that can be someone from community.
For tech it's perhaps possible to add tooling for parametric design (that's like defining part properties with FT), and since it's build-time stuff it mustn't really affect in-level performance.
Some of these are just bots.
That must be a ton of labels. XML file weights ~2mb, and that's usual weight of 2000-2500-part build.
+1@RMZSPFan [un]fortunately she is the one with tentacles here.
+1@126 some variables are lists in
index=a?xa:(index=b?xb:...
form. to make them shorter i omitted closing parenthesis. it works fine with ft interpreter, but variable editor widget has it's own checker that says that such code isn't correct. to pass it you need to add those parenthesis back, e.g. turnp_tgt.i=1?6020:(p_tgt.i=2?5885:(p_tgt.i=3?5805:(p_tgt.i=4?5805:(p_tgt.i=5?5805:(p_tgt.i=6?5805:(p_tgt.i=7?5805:(p_tgt.i=8?5805:(p_tgt.i=9?5805:(p_tgt.i=10?5805:(p_tgt.i=11?5885:(p_tgt.i=12?6020:(p_tgt.i=13?6020:(p_tgt.i=14?6020:(p_tgt.i=15?6020:(p_tgt.i=16?5880:(p_tgt.i=17?5670:(p_tgt.i=18?5670:(p_tgt.i=19?5670:(p_tgt.i=20?5685:(p_tgt.i=21?5600:(p_tgt.i=22?5600:(p_tgt.i=23?5635:0
into
p_tgt.i=1?6020:(p_tgt.i=2?5885:(p_tgt.i=3?5805:(p_tgt.i=4?5805:(p_tgt.i=5?5805:(p_tgt.i=6?5805:(p_tgt.i=7?5805:(p_tgt.i=8?5805:(p_tgt.i=9?5805:(p_tgt.i=10?5805:(p_tgt.i=11?5885:(p_tgt.i=12?6020:(p_tgt.i=13?6020:(p_tgt.i=14?6020:(p_tgt.i=15?6020:(p_tgt.i=16?5880:(p_tgt.i=17?5670:(p_tgt.i=18?5670:(p_tgt.i=19?5670:(p_tgt.i=20?5685:(p_tgt.i=21?5600:(p_tgt.i=22?5600:(p_tgt.i=23?5635:0))))))))))))))))))))))
Well, history tends to repeat itself.
It's sale again and i ask again: Who's this girl on banner?
(for debug purposes)
print(re.sub(r"\<#(?:([A-F0-9])([A-F0-9])([A-F0-9])[A-F0-9]?|([A-F0-9][A-F0-9])([A-F0-9][A-F0-9])([A-F0-9][A-F0-9])(?:[A-F0-9][A-F0-9])?)>",lambda m:"\x1b[48;2;"+str(int(m[1] or m[4],16))+";"+str(int(m[2] or m[5],16))+";"+str(int(m[3] or m[6],16))+"m",s).replace("<br>","\n").replace("."," "))
Replaces color tags with ANSI ones.
Idk if you guys will answer this, but:
Q: Will you use SP xml format but with higher xmlVersion and new sections or will you make new one?
Q: Perhaps it's too early to ask, but will you keep format of DesignerParts and setting files?
Q: Not related, but how do i download crafts from SR2 with curl?
+1@TRS051
If code's generated but doesn't shows in SP, try to:
- increase label's width and height;
- set label's alignment to top-left;
if image's displayed but is cut off, try to decrease image's size and generate code again. apparently label's limited to 100k dots and it's not something i can change
If it doesn't generates label's code, try to:
- make sure image isn't svg;
- if you're using image link, make sure that hosting allows cross-origin resource sharing (or download image and try again);
- check browser's dev console (usually F12) to see what's wrong
@Mousewithamachinegun122 Yes, it is possible to switch frames to get animation (
+1{T=1?"frame":""}{T=2?"frame":""}
...), but the program won't do it and idk if it'll be possible to run resulting craft at reasonable fps..@TheAviator77 Can you please send image you used and result you got?
@Mousewithamachinegun123 IDK. Try to increase size of label and set it's alignment to top-left.
+1I remember spectrogram of jet engine, it was very wide and noisy, so it's a wonder you can play music with it.
@Matteosiufromfifakit
Just raise your hand
And reach out for the spell
Find the door to the promised land
Just believe in yourself
Close your eyes and your will find
The way out of the dark
...Or read the post again, there's two links to github.
@UnidentifiedStapler that's sad, but i can't (and i don't wish to) fix GBoard, so perhaps it's not my business.
@Yish42 TargetSelected, so it's about you having target, not about target locking you.
+1@Speedhunter
+2https://www.simpleplanes.com/Forums/View/1683931
https://www.simpleplanes.com/Forums/View/1454422
Perhaps it can be better if you'll say it's unity's C# and miss some parts of description but tell it basic info about flight dynamics and geometry instead.
And as Redrocktumbler said you'll perhaps need to repeat your description once in a while, because ANN itself is stateless and "memory" of that one is just last ~3k of tokens glued to your message.
And no, you must not overestimate ANN, it's more like polynomial approximation than AI you wish to see.
Well, you're right that label will be recalculated every SP frame, but it will select one (very long) string instead of checking (and sometimes recalculating) hundreds of separate pixels. I don't really know if ternary with floats is equivalent to ternary with (very long) string at runtime, but either way i think there's more pixels than frames.
+1Is it really faster to use a variable and format string for each pixel (<#{!pixel?"0000":pixel}>...) instead of using an expression for each frame ({t=0?frame:""}{t=1?frame:""}...)?
source?
+1I mean, i didn't saw her with cat ears, and style seems wrong (although maybe it's because of low resolution).
@DatMaluchGuy19
+1Try to add 22 closing parentheses in the end of
p_tgt.next.z
,p_tgt.next.x
,p_tgt.links.z
,p_tgt.links.x
and 3 closing parentheses in the end ofp_tgt.next
@DatMaluchGuy19
VC
variable, it's in meters per second, and it's signed i.e. negative value means it must go backwards.TC
controls engine directly, you can set it to 1 if you want to go as fast as possible.Ehm, you do know there's (builtin)
atan
function for angle and pythagorian addition for distance, right?Husky's right, SP build files aren't that large.
If you want, you can upload them as hidden ("Visibility" button in uploading widget), they'll be saved on SP site but will only be visible for you.
@winterro
p_tgt.i
stores id of currently selected pointp_tgt.x
,p_tgt.z
are coords of currently selected pointp_tgt.links.x
,p_tgt.links.z
are ids of points where it can go from currently selected one.p_tgt.i
switches to one ofp_tgt.links.x%100
,p_tgt.links.x//100
,p_tgt.links.y%100
, andp_tgt.links.y//100
every time car gets close-enough to currently selected pointOther variables aren't significant for routing, they're used to tame car itself, to make it unable to go to previous point, to make it not headbutt others, to make it stop at dead ends, to make it remember gifts without leaving too much inside label...
@DatMaluchGuy19 Yes, you can.
+1Link to txt file
CameraPosX
variable must be camera's horizontal offset in metersIDK if it'll work, but if it will it must be 5cm orange circle clamped by two vertical edges located 10cm away from label's left edge.
FCLongitude
,FCAltitude
,FCLatitude
are coords of missileTD=sqrt( pow(Longitude-FCLongitude+TargetDistance*cos(TargetElevation)*sin(TargetHeading),2) + pow(Latitude-FCLatitude+TargetDistance*cos(TargetElevation)*cos(TargetHeading),2) )
TAlt
=Altitude+TargetDistance*sin(TargetElevation)
h
=5+195*(.5+.5*cos(clamp(0.1*TD+20,0,340)))+1800*(.5+.5*cos(clamp(.01*(TD-45000),0,180)))
__D
is dampener,__P
is gainPCi
=(lerp(TAlt,h,pow(TD/200,2))-FCAltitude+rate(lerp(TAlt,h,pow(TD/200,2))-FCAltitude)*__D)*__P
40
here is some distance after which missile surely can't damage airplaneMissile's pitch angle=
smooth((abs(Longitude-FCLongitude)+abs(Latitude-FCLatitude))<40|(PCi!=PCi)?0:sign(PCi)*90,(PCi!=PCi)?0:abs(PCi))
Be carefull, SP forum might not display full expressions
+1