Tralsys / BIDSSMemLib

BIDS用SharedMemoryを簡単に扱うためのLibrary
https://tralsys.github.io/BIDSSMemLib/
Other
7 stars 0 forks source link

ブレーキが 1 以上になっているとマスコンを 1 以上に上げようとしても反応しない #11

Closed a-gota closed 3 years ago

a-gota commented 3 years ago

BIDSSMemLib を介して BVE5 の操作ができるようなアプリを作っているのですが、CtrlInput.SetHandD() でブレーキ(CtrlInput.HandType.Brake)に 1 以上の値を設定している時にマスコン(CtrlInput.HandType.Power)に 1 以上の値を設定しようとしても、無視されてしまいます。

キー操作で同様のことを行なうと問題なくできるので、BVE 本体はそういった操作を禁止していないはずです。一方、BIDSSMemInputTester で試してみると、同じ事象が発生しました。そこで、BIDSSMemLib と入力プラグインのソースをざっと追ってみたのですが、すぐにはそのような制御を行っている個所を見つけられませんでした。

ちなみに、どのような場合にこれができないと困るかというと、「自動空気ブレーキ車で機関ブレーキと通常のブレーキを併用する時」が該当します。

機関ブレーキの起動と解除には以下の操作を行ないます。

自動空気ブレーキを併用する場合、機関ブレーキ起動より先に空気ブレーキを作用させてしまうと、制動中はブレーキが「重なり」位置(B = 1)にあるためマスコンの投入が無視されてしまい、機関ブレーキを起動することができません。一方、解除の際にも一旦空気ブレーキを緩解しないと機関ブレーキを解除できない状況になってしまっています。

もし「ブレーキのノッチ投入中はマスコンの操作を無効化する」というような処理を BIDSSMemLib もしくは入力プラグインで行なっているとしたら、これの廃止か設定による無効化ができると助かります。

a-gota commented 3 years ago

原因がわかりました。「ワンハンドマスコンである」と認識されていました(SetAxisRanges() の中で IsOneHandle が true に設定される)。SetAxisRanges() の引数にどのような値が渡されてくるのか仕様が不明なので、シナリオとの相性なのかどうなのかわかりませんが……。

TetsuOtter commented 3 years ago

@a-gota ご報告ありがとうございます。確かに、SMemLibのバグです。来月末辺りには修正版を出せるようにします