Re: Nasalを知ろう、使おう!
inomaty
投稿数: 164
こんばんは
現在進入灯の真ん中で滑走路進入方向に向けて光点が次々移動する連鎖式閃光灯(Sequenced Flashing Lights(SFL))をLOWI インスブルック空港カスタムシーナリーを参考に作っていますが、nasalをxmlに組み込んで数字が0,1,2・・・27,28,0,1,2・・・と無限ループするカウンタープログラムを作りその数字を元に何番目のライトを点灯ということをやっています。
ほとんどそのままLOWIのSFLの記述を持ってきて光点が流れていく動作は作れたのですが、仙台空港を10km(5nm)超離れてから戻ってくるといった飛行をするとバグが発生してしまいます(具体的には0,1,2・・・となるところを2重3重に読み込んで0,13,1,14,2,15,・・・となってしまう)。
元プログラムだと誤った表記になっていたload/unloadをこちらのWikiページを参考に修正して何とか50kmちょっと(28nmあたり)まで離れて戻ってくればプログラムを一旦停止して再度読み込みでバグが発生しないように出来たのですが、現状下手すると一旦アプローチしてゴーアラウンドしてから再度アプローチするとSFLが荒ぶる可能性があります。
listenerを使えば何とかなりそうという書き込みは発見したのですが、リンク先のページが結構長い英語文章で難航し、私自身プログラムなんてCを齧った程度でもあり、Tatさんによるマニュアルを見ても読み取るプロパティがどこの値を取れば良いのか分からずという有様です。
うまい解決方法が見つかれば他のことにも応用できそう(例えば東京スカイツリーの夜間照明で展望台部分を光がぐるぐる回るものとか)なので、よろしければプログラミング詳しい方とかも含めてご教授お願いします。現状一番うまく行っているnasalコードは最後に載せますが、分かりづらいので一連のSFLシステム(3Dモデル(未完成)、ライトイフェクト、プログラミング本体と付随するxmlファイル等)をまとめたファイルをこちらhttp://1drv.ms/1PJ07di
に上げておきます。解凍したModelsファイルをTerrainとかObjectsのあるScenery用のフォルダに保存し、Objects\e140n30\e140n38\5251083.stgをテキストエディタで開き最後に
と記述すれば仙台空港RWY27の本来進入灯のある位置から少し南に進入灯が設置され、(仙台空港から24km(13nm)以内にいるときには)ターミナル画面に仙台空港からの距離やらカウンターの数字やらがうるさいように表示されるはずです。
↓nasalコード(xmlファイル用にnasalヘッダがあります)
現在進入灯の真ん中で滑走路進入方向に向けて光点が次々移動する連鎖式閃光灯(Sequenced Flashing Lights(SFL))をLOWI インスブルック空港カスタムシーナリーを参考に作っていますが、nasalをxmlに組み込んで数字が0,1,2・・・27,28,0,1,2・・・と無限ループするカウンタープログラムを作りその数字を元に何番目のライトを点灯ということをやっています。
ほとんどそのままLOWIのSFLの記述を持ってきて光点が流れていく動作は作れたのですが、仙台空港を10km(5nm)超離れてから戻ってくるといった飛行をするとバグが発生してしまいます(具体的には0,1,2・・・となるところを2重3重に読み込んで0,13,1,14,2,15,・・・となってしまう)。
元プログラムだと誤った表記になっていたload/unloadをこちらのWikiページを参考に修正して何とか50kmちょっと(28nmあたり)まで離れて戻ってくればプログラムを一旦停止して再度読み込みでバグが発生しないように出来たのですが、現状下手すると一旦アプローチしてゴーアラウンドしてから再度アプローチするとSFLが荒ぶる可能性があります。
listenerを使えば何とかなりそうという書き込みは発見したのですが、リンク先のページが結構長い英語文章で難航し、私自身プログラムなんてCを齧った程度でもあり、Tatさんによるマニュアルを見ても読み取るプロパティがどこの値を取れば良いのか分からずという有様です。
うまい解決方法が見つかれば他のことにも応用できそう(例えば東京スカイツリーの夜間照明で展望台部分を光がぐるぐる回るものとか)なので、よろしければプログラミング詳しい方とかも含めてご教授お願いします。現状一番うまく行っているnasalコードは最後に載せますが、分かりづらいので一連のSFLシステム(3Dモデル(未完成)、ライトイフェクト、プログラミング本体と付随するxmlファイル等)をまとめたファイルをこちらhttp://1drv.ms/1PJ07di
に上げておきます。解凍したModelsファイルをTerrainとかObjectsのあるScenery用のフォルダに保存し、Objects\e140n30\e140n38\5251083.stgをテキストエディタで開き最後に
OBJECT_SHARED Models/Airport/RJSS/RJSS_app_light_poles_rwy27_set.xml 140.9339 38.14152 10 97.45
と記述すれば仙台空港RWY27の本来進入灯のある位置から少し南に進入灯が設置され、(仙台空港から24km(13nm)以内にいるときには)ターミナル画面に仙台空港からの距離やらカウンターの数字やらがうるさいように表示されるはずです。
↓nasalコード(xmlファイル用にnasalヘッダがあります)
<nasal>
<load>
loaded = 1;
print("setting FLASH COUNTER");
var loop_id = 0;
var flash_count = 0;
var info = airportinfo("RJSS");
var RJSS_pos = geo.Coord.new();
RJSS_pos.set_latlon( info.lat, info.lon, info.elevation);
var aircraft_pos = geo.aircraft_position();
var RJSS_distance =RJSS_pos.direct_distance_to(aircraft_pos);
var loop1 = func(id) {
id == loop_id or return;
#aircraft_pos = geo.aircraft_position();
#RJSS_distance =RJSS_pos.direct_distance_to(aircraft_pos);
var flash_num = (flash_count += 1);
print ("flash_num ", flash_num);
setprop("/scenery/RJSS/RJSS_r27_app_flash/light-number", flash_num);
if (flash_num == 28){
flash_count = 0;
#print("resetting FLASH COUNTER");
};
aircraft_pos = geo.aircraft_position();
RJSS_distance =RJSS_pos.direct_distance_to(aircraft_pos);
print(RJSS_distance);
settimer(func { loop1(id) }, 1);
}
loop1(loop_id += 1);
print("Check point3");
</load>
<unload>
loaded = 0;
print("Bye, bye!");
loop_id += 1
</unload>
</nasal>
投票数:16
平均点:8.13
投稿ツリー
-
Nasalを知ろう、使おう!
(Tat, 2008-4-11 0:54)
-
Re: Nasalを知ろう、使おう!
(Tat, 2008-4-22 20:54)
-
Re: Nasalを知ろう、使おう!
(sambar, 2008-4-22 22:38)
-
Re: Nasalを知ろう、使おう!
(hide, 2008-4-23 10:12)
- Re: Nasalを知ろう、使おう! (hide, 2008-4-23 12:55)
-
Re: Nasalを知ろう、使おう!
(Tat, 2008-4-24 18:55)
-
Re: Nasalを知ろう、使おう!
(toshi, 2008-4-25 3:04)
-
Re: Nasalを知ろう、使おう!
(hide, 2008-4-25 4:02)
-
Re: Nasalを知ろう、使おう!
(Tat, 2008-4-26 8:07)
-
Re: Nasalを知ろう、使おう!
(hide, 2008-4-29 17:04)
-
Re: Nasalを知ろう、使おう!
(Tat, 2008-4-30 1:02)
-
Re: Nasalを知ろう、使おう!
(hide, 2008-4-30 20:44)
-
Re: Nasalを知ろう、使おう!
(Tat, 2008-4-30 23:11)
-
Re: Nasalを知ろう、使おう!
(sambar, 2008-5-1 23:25)
-
Re: Nasalを知ろう、使おう!
(Tat, 2008-5-2 0:13)
-
Re: Nasalを知ろう、使おう!
(Tat, 2008-5-5 14:36)
-
Re: Nasalを知ろう、使おう!
(hide, 2008-5-7 15:23)
- Re: Nasalを知ろう、使おう! (Tat, 2008-5-8 1:19)
-
Re: Nasalを知ろう、使おう!
(hide, 2008-5-7 15:23)
-
Re: Nasalを知ろう、使おう!
(Tat, 2008-5-5 14:36)
-
Re: Nasalを知ろう、使おう!
(Tat, 2008-5-2 0:13)
-
Re: Nasalを知ろう、使おう!
(sambar, 2008-5-1 23:25)
-
Re: Nasalを知ろう、使おう!
(Tat, 2008-4-30 23:11)
-
Re: Nasalを知ろう、使おう!
(hide, 2008-4-30 20:44)
-
Re: Nasalを知ろう、使おう!
(Tat, 2008-4-30 1:02)
-
Re: Nasalを知ろう、使おう!
(hide, 2008-4-29 17:04)
-
Re: Nasalを知ろう、使おう!
(Tat, 2008-4-26 8:07)
-
Re: Nasalを知ろう、使おう!
(hide, 2008-4-25 4:02)
-
Re: Nasalを知ろう、使おう!
(toshi, 2008-4-25 3:04)
-
Re: Nasalを知ろう、使おう!
(hide, 2008-4-23 10:12)
-
Re: Nasalを知ろう、使おう!
(sambar, 2008-4-22 22:38)
-
Re: Nasalを知ろう、使おう!
(sambar, 2008-7-1 22:25)
- Re: Nasalを知ろう、使おう! (toshi, 2008-7-2 23:50)
-
Re: Nasalを知ろう、使おう!
(sambar, 2008-7-3 22:46)
- Re: Nasalを知ろう、使おう! (toshi, 2008-7-4 1:54)
-
Re: Nasalを知ろう、使おう!
(Tat, 2008-7-4 1:52)
- Re: Nasalを知ろう、使おう! (Tat, 2008-7-4 15:16)
- Re: Nasalを知ろう、使おう! (sambar, 2008-7-5 1:19)
- 揺れる空母の着艦に挑戦 :-) (Tat, 2008-7-30 10:03)
- Nasal の落とし穴 (Tat, 2008-8-9 16:13)
-
Re: Nasalを知ろう、使おう!
(sambar, 2008-11-9 2:34)
-
Re: Nasalを知ろう、使おう!
(Tat, 2008-11-9 14:41)
-
Re: Nasalを知ろう、使おう!
(sambar, 2008-11-9 22:50)
- Re: Nasalを知ろう、使おう! (Tat, 2008-11-9 23:59)
-
Re: Nasalを知ろう、使おう!
(sambar, 2008-11-9 22:50)
-
Re: Nasalを知ろう、使おう!
(Tat, 2008-11-9 14:41)
- Re: Nasalを知ろう、使おう! (sambar, 2008-11-10 19:58)
- Re: ジョイスティック設定とNasal (sambar, 2009-7-11 1:25)
-
Re: Nasalを知ろう、使おう!
(inomaty, 2015-11-16 2:06)
- Re: Nasalを知ろう、使おう! (inomaty, 2015-11-18 22:42)
-
Re: Nasalを知ろう、使おう!
(Tat, 2008-4-22 20:54)