昨日(ってか今朝?)リリースした"お座敷レイアウトver0.1"を作ってて、「VRM4のScriptとScrollで、これがあればいいのに!」って思ったことが幾つかあるので、今日はそれを垂れ流してみようと思う。
(以下妄想が大半を占めるので、あまり本気で考えないように。万が一にも中の人が見てたら本気で考えて欲しいけど)
そうそう、今日はいつもに増して文字ばっかりなんで、続きを読むときにはそれなりに覚悟を。^^;
(以下、"お座敷レイアウトver0.1"の内容を元に進めていく。)
まずは、Scriptに関してだが、「if文」で、「<>」(等しくない)を追加して欲しい。
例えば、レイアウトカメラから強制的に視点を戻すとき、編成Scriptで現在アクティブになっている編成が、自身が選択した編成か否かを判定している。
この場合、イコールであるのなら、強制修正は必要ないので何の処理もしなくていいのだが、現在のScriptではオブジェクト変数の比較では「ifeq」しか使えないため、わざわざ「else」のあとに、処理を記載しなければならない。
他にも、通常の数値比較で、変数Aと変数Bが等しくないとき(例えばターンテーブルの回転位置決定とか)に、わざわざ、「if>」と「if<」をネストで書かねばならず、無駄に行数を増やす結果となってしまっている。
次に、配列。変数で配列指定ってかIndex指定したい。
レイアウトScriptを見てもらうと判るが、編成指定のメソッドが編成が増えるたびに追加される為、やたら長くなってしまう。配列が可能になれば、変数宣言も簡単になるし、編成指定も「SetEventAfter」でループ処理できるんじゃないかと思うのだが…。
あとは、ターンテーブルで、ターンテーブル上に編成があるかどうか、編成のオブジェクト名以外で知りたい。「GetTrainOnTurntable」では、編成がターンテーブルに乗る前に実行すると、センサーからターンテーブルに渡したTrain変数がClearされてしまうので、使い物にならない。かといって、「GetTurntableStatus」では、ターンテーブル上に編成がない場合でも、ターンテーブルが回転可能な位置に編成があると判断され、「1」が返されてしまうのでこれも使えない。
カメラに関しても、以前書いたが、出来れば「SetEventFocusIn」と「SetEventFocusOut」を実装して欲しい。そうすれば、カメラごとにFOVコントロールが出来るので。
Scrollに関しては、ほとんど実現不可能だとは思うが、設定時に「Loop」のような処理が出来るとありがたい。
これも、編成選択に関することだが、現状のScrollではレイアウト上の1編成しかキー指定できない。複数編成を配置した場合は、自分で書き加える手間がかかるだけでなく、編成を入れ替えた場合、手作業でオブジェクト名を書き換えなければならず、この手間が、ユーザーがレイアウトを配布する際の足枷になるのではないかと思うので。
あと、蛇足だが、今回のレイアウトに添付したScrollは、「variableセクション」を使っていない。(いや、マニュアル読んでて今気が付いたって訳じゃないよ(核爆))
このセクション、「既存のスクリプトと比較して、同一名にならないよう、自動的に変更されます。」って、それだと編成Scriptで使ってる外部変数を、他のオブジェクトで参照するときやばいじゃん。ましてや編成は複数あるんだから、当然全部の編成で同じ変数使うし。
ってか、外部変数って、参照時はオブジェクト変数とセットでしょ。ならユニークである必要ないじゃん。
しかも、こんなの編成Scriptで使った日にゃ〜、どんだけScrollの行数が増えることか。
ま〜、使わなきゃいいだけなんで、あまり実害はないが、このセクションをまじめに記述して、「変数名変わっちゃって、参照できなくなっちゃった〜!」ってことはないのか?
…なんか、和尚様に突っ込まれまくりそうな内容になったが、やっとある程度のレイアウトが完成して、今迄溜まってたストレスが一気に愚痴となって噴出したってことで、ご勘弁を。
さて、"お座敷レイアウト"とScrollのアップデートしようっと。
追記:Scriptとかじゃないが、もうひとつあった。それは、ビュアーのメッセージウィンドウ。あと2行ぐらい増やしてくれんかな〜。
追記の追記:コキフの車掌室、室内灯点けてくれ〜!