忍者ブログ

slack diary

鉄道模型シミュレーター(VRM)を紹介するホームページ「CaldiaのVRM Room」の更新情報と、Caldia本人の日常ぐだぐだ日記。

VRMNX システムカメラ記憶くん 公開

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

VRMNX システムカメラ記憶くん 公開

先日のUSOさんのVRMNX作業を見てふと思い付き、「システムカメラ記憶くん」なるスクリプトを作成しました。
名前がしっくりこなかったので3回ぐらいリネームしてます。(苦笑)

一言で言うと「ビュワーのシステムカメラ位置を自動セーブ&ロードする」スクリプトで、中断セーブみたいな感じで毎回のカメラ移動を省いてくれる機能です。
スクリプトは毎度同様にGitHubからどうぞ。



ここからはPythonなお話。

今回から公開スクリプトはスクリプト同士の重複を避けるように2つのポイントで気を付けています。

1つ目はDict変数の重複回避。
グローバル関数で定義しなくても値を保持できるオブジェクトのDict関数ですが、
他の全スクリプトと共有されるオブジェクトのため、Keyが重複して正しく動かなくなる可能性があります。
Dict['a']等の他でも使われそうなKey名を避けるため、少々名前は長くなりますが頭文字を付与してなるべく重複しないKey名を付けるように考えています。

また、「システムカメラ記憶くん」でも使用していますが、レイアウトファイルに紐付く外部ファイル名でそのままレイアウトファイル名を使ってしまうと色々問題になりそうなため、こちらもファイル名に適当な固定文字を付与して重複回避をしています。


2つ目はイベントのユーザーID定義です。
「SetEventTimer」等のイベント定義は既存イベントがある場合、特定条件でイベントを上書きしてしまうリスクがあります。
そのイベント重複を防ぐために一部のイベントにユーザーIDを定義して区別するようにしています。
今のところ、対象は「SetEventTimer」「SetEventTime」「SetEventAfter」あたりに限定し、「SetEventFrame」「SetEventKeyDown」は(特に根拠ないですが)上書きされて悪化するリスクが低そうなのでそのままにしています。(SetEventFrameはフレーム毎に条件分岐入れたくないなーという気持ちもあります)

イベントのユーザーIDは機能ごとに一意(ユニーク)である必要があるため、Caldia公開スクリプトには「1100001~1100100」あたりのUIDを割り当てようと考えています。


上記2点は「ベンチマーク」「パワーユニットくん」にも反映しています。
PR

コメント

最新コメント

[05/30 Caldia]
[05/19 C-PON]
[10/03 vrmkyobuilding]
[05/10 Caldia]
[05/04 USO800鉄道]