6,566
edits
No edit summary |
(Switch from {{git link}} to {{fgaddon source}} to provide a functional link to the correct infrastructure.) |
||
(4 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
<!-- | |||
{{WIP}} | {{WIP}} | ||
--> | |||
{{DeQuote}} | |||
{{ | == Motivation == | ||
| | I wish we could share more of our development on these things. Having lots of logic for route management and performance data and autopilot stuff re-implemented in every new "realistic" plane kinda sucks. It would be nice if we could build up the built-in system that covers 90% of the cases and any specialiation can be handled by refining the built-in system. Adding a new aircraft should be throw up a couple of displays and live with the built-in default ND and MFD in the first iteration, and then progressively refine it to match the real deal. | ||
In basic terms, you are merely telling the system that you want a certain component, and how you want it to look - and you are doing that using a "configuration file" that could just as well be in a different format (it merely happens to be using JSON/hash syntax, because that's easy to support using Nasal hashes): [[Canvas ND Framework]] | <ref> {{cite web | ||
| url = http://forum.flightgear.org/viewtopic.php?p=277481#p277481 | |||
| title = <nowiki>Re: FMC</nowiki> | |||
| author = <nowiki>alge</nowiki> | |||
| date = Feb 24th, 2016 | |||
| added = Feb 24th, 2016 | |||
| script_version = 0.25 | |||
}} | |||
</ref> | |||
The whole point of developing frameworks and encapsulating functionality there is to allow people to merely "request" a certain component (think ND, PFD, map, EICAS) and "configure" it as needed (think fonts, colors, symbols, events, images etc). And once you look at the integration "code" that loads a working ND, you will see that it is merely a mark-up dialect sligthly different from XML (in fact, it could be XML just as well, but it doesn't yet make sense to provide an XML dialect currently). | |||
In basic terms, you are merely telling the system that you want a certain component, and how you want it to look - and you are doing that using a "configuration file" that could just as well be in a different format (it merely happens to be using JSON/hash syntax, because that's easy to support using Nasal hashes): [[Canvas ND Framework]]<ref> {{cite web | |||
| url = http://forum.flightgear.org/viewtopic.php?p=250211#p250211 | | url = http://forum.flightgear.org/viewtopic.php?p=250211#p250211 | ||
| title = <nowiki>Re: Developing a Canvas Cockpit for the CRJ700</nowiki> | | title = <nowiki>Re: Developing a Canvas Cockpit for the CRJ700</nowiki> | ||
Line 10: | Line 23: | ||
| date = Jul 7th, 2015 | | date = Jul 7th, 2015 | ||
}} | }} | ||
}} | </ref> | ||
It would be helpful if someone would bootstrap such a framework. Having something there may create enough intertia to have people join the effort, otherwise there's simply no such project and I suppose some aircraft developers would rather do something of their own, at their own pace instead of waiting for such framework to maybe materialise one of these days. | |||
<ref>{{cite web | |||
| url = http://forum.flightgear.org/viewtopic.php?p=277524#p277524 | |||
| title = <nowiki>Re: FMC</nowiki> | |||
| author = <nowiki>CaptB</nowiki> | |||
| date = Feb 25th, 2016 | |||
| added = Feb 25th, 2016 | |||
| script_version = 0.25 | |||
}} | |||
</ref> | |||
{{FGCquote | {{FGCquote | ||
Line 22: | Line 46: | ||
}} | }} | ||
}} | }} | ||
What would make sense is to assist the people who come second or third and want to re-use an existing framework where possible in implementing and re-factoring. Or people who just want to work on the framework and don't have a particular use case in mind. Because then you can make it work with a well-defined set of requirements in mind, rather than trying to guess what the requirements are ahead of time.<ref>{{cite web | |||
| url = http://forum.flightgear.org/viewtopic.php?p=277685#p277685 | |||
| title = <nowiki>Re: FMC</nowiki> | |||
| author = <nowiki>Thorsten</nowiki> | |||
| date = Feb 26th, 2016 | |||
| added = Feb 26th, 2016 | |||
| script_version = 0.25 | |||
}} | |||
</ref> | |||
{{FGCquote | {{FGCquote | ||
Line 35: | Line 68: | ||
}} | }} | ||
}} | }} | ||
== Objective == | == Objective == | ||
Illustrate the basic thought process required to come up with Nasal/Canvas code that is sufficiently generic to meet the following requirements | Illustrate the basic thought process required to come up with Nasal/Canvas code that is sufficiently generic to meet the following requirements | ||
Line 232: | Line 266: | ||
== Moving huge conditionals into hash functions == | == Moving huge conditionals into hash functions == | ||
The next problem we want to tackle is getting rid of huge conditional blocks inside the '''update()''' method: {{ | The next problem we want to tackle is getting rid of huge conditional blocks inside the '''update()''' method: {{fgaddon source|path=Aircraft/747-400/Models/Cockpit/Instruments/PFD/PFD.nas}} | ||
<syntaxhighlight lang="nasal" line="GESHI_FANCY_LINE_NUMBERS" start="258"> | <syntaxhighlight lang="nasal" line="GESHI_FANCY_LINE_NUMBERS" start="258"> |