ver2.0.8 のリリース後、重大な不具合の報告などなく、一定程度安定して動作していることが確認できたため、本バージョンをもって正式版となります。
BveEX についてはこちら→ BveEX BVE拡張キット - 岡オカ営業所
ver2.0.8 (v2.0.50428.1) からの主な更新内容
クラスラッパー
- 【重要】
null == nullが false になってしまう不具合を修正しました。→ fde7a6a - VehicleStepper クラスを追加しました。→ cc1e43c
- 自列車の制御段の選択処理を操作できるようになりました。
- CarInfo.PowerCreap プロパティ、CarInfo.BrakeCreap プロパティ、CarInfo.UpdateCreap メソッド、CarInfo.Tick メソッドを追加しました。→ fbe35d8
- 自列車の車両の縦クリープ力を操作できるようになりました。
- AssistantText.Draw メソッド、ClockText.Draw メソッド、DetailText.Draw メソッド、GeometryText.Draw メソッド、InstructionText.Dispose メソッド、InstructionText.Draw メソッド、LeverText.Draw メソッド、SpeedLimitText.Dispose メソッド、SpeedLimitText.Draw メソッド、StationText.Dispose メソッド、StationText.Draw メソッド、TimeTable.Dispose メソッド、TimeTable.Draw メソッドを追加しました。→ cd5510f
- 補助表示類のオーバーライドされたメソッドを参照できるようになりました。
- MyTrackAlignment クラス、VehicleDynamics.TrackAlignment プロパティを追加しました。→ 1b3727e
- 自列車の走行位置における軌道形状を操作できるようになりました。
- Section クラスのコンストラクタを追加しました。→ 477b3ad
- StationText.Stations プロパティ、StationText.Location プロパティ、StationText.NextText プロパティ、StationText.Next プロパティ、StationText.Doors プロパティ、StationText.Update メソッド、StationText.UpdateText メソッドを追加しました。→ d9d8e9e
- AdhesionObject クラスを追加しました。→ 9f3547b
FastMember
- 基底型のメソッドを強制的に呼び出す FastMethod.InvokeDeclaredOnly メソッドを追加しました。→ 734f035
ver2.0.7 (v2.0.50331.1) からの主な更新内容
BveEX 本体
マップファイルの構文関連
- 【重要】 BveEX 本体組み込みのマップ構文の解析処理を全てコア拡張機能 MapStatements に分離しました。→ 005d4a0
BveEX 経由で ATS プラグインを読み込む機能
- SetPower 関数、SetBrake 関数、SetReverser 関数を呼び出すタイミングを変更しました。→ 3686f47
- これにより、ATS ハンドル出力が無視されることがある問題が解消しました。
BveEX コア拡張機能
ビルトイン マップ構文
- 【重要】
ex_using文を追加しました。→ ec13c37 - 【重要】
ex_while文を追加しました。→ c496462 - 【重要】
BveEx.Error.Throw(string message)構文を追加しました。→ dd51e5d- マップからオリジナルのエラーを発生させられるようになりました。
クラスラッパー
- 【破壊的変更】 VehiclePositioner.BlockToCarCenterTransform プロパティの set アクセサ、VehicleVibration.HalfOfCarLength プロパティ、VehicleVibration.HalfOfBogieDistance プロパティを追加しました。→ 7d08ecc
- VehiclePositioner.BlockToCarCenterTransform プロパティからリフレクション情報を取得している場合のみ影響があります。呼び出すことは引き続き可能です。
- MapObjectList.GetNext メソッド、MapObjectList.GoToAndGetNext メソッド、MapObjectList.GetCurrent メソッドを追加しました。→ 0888810
- 現在の距離程に対応するマップオブジェクトがシンプルなコードで取得できるようになりました。
- ObjectDrawer クラスに IDisposable インターフェイス、IDrawable インターフェイスを実装し、ObjectDrawer.VehicleLocation プロパティ、ObjectDrawer.Background プロパティ、ObjectDrawer.CameraLocation プロパティ、ObjectDrawer.Trains プロパティ、ObjectDrawer.Map プロパティ、ObjectDrawer.OnDeviceLost メソッド、ObjectDrawer.OnDeviceReset メソッド、ObjectDrawer.Dispose メソッドを追加しました。→ 6e0118c
- OtherTrack クラス、TrackPosition クラス、TrackPositionList クラス、CantList.Translation プロパティ、CantList.Rotation プロパティ、Map.OtherTracks プロパティ、Map.GetPosition メソッドを追加しました。→ 3c524fe
- 他軌道を操作できるようになりました。
- Transform クラスが誤って MapObjectBase を継承していたため、修正しました。→ 03cecd2
- Scenario.Trains プロパティが null だと正しく取得できない不具合を修正しました。→ 764a78e
- MapGrammar.Src プロパティが null を許容しない不具合を修正しました。→ e85655f
- MapObjectList.ObjectPassed イベントが購読できない不具合を修正しました。→ 5ef5ec1
- Sound3DObject クラスのコンストラクタが動作しない不具合を修正しました。→ ea41150
サンプル
RichLoad サンプル
- 画像のパスが誤っていた不具合を修正しました。→ 265a016
マップ if 文・演算子等サンプル
- ex_using 文、ex_while 文など追加構文の例を追加し、「BveEX オリジナルマップ文法サンプル」に改称しました。→ 8e63e8b
ver2.0.6 (v2.0.50314.1) からの主な更新内容
クラスラッパー
- 【破壊的変更】 VehicleLocation.BlockIndex プロパティの set アクセサ、VehicleLocation.LocationInBlock プロパティ、VehicleLocation.LimitLocation プロパティ、VehicleLocation.Location プロパティの set アクセサ、VehicleLocation.BlockChanged イベント、VehicleLocation.LocationChanged イベントを追加しました。→ 8c51977
- VehicleLocation.BlockIndex プロパティ、VehicleLocation.Location プロパティからリフレクション情報を取得している場合のみ影響があります。呼び出すことは引き続き可能です。
- VehicleBogieWheel.VehicleLocation プロパティ、VehicleBogieWheel.MyTrack プロパティを追加しました。→ aa85be5
- ValueEventArgs<T> クラスのコンストラクタを追加しました。→ b50d4bc
- AssistantBase クラスおよびその派生クラスに IDisposable インターフェイスを実装しました。→ 101588c
==演算子の左辺が null だとエラーが発生する不具合を修正しました。→ fbf48b8- Physical クラスの演算子が使用できない不具合を修正しました。→ 3e45017
同梱拡張機能
複数ストラクチャーリストプラグイン
- ストラクチャーリスト、サウンドリストを複数回読み込むとエラーが発生することがある問題に対応するパッチを実装しました。
ver2.0.5 (v2.0.50204.1) からの主な更新内容
共通
BveEX 本体
- バージョン情報ダイアログを高 DPI 環境に完全対応しました。→ f0e3fda
- 高 DPI 環境下でダイアログのレイアウトが崩れる不具合が解消しました。
- プラグインのコンストラクタの呼出中に例外がスローされた場合のエラー文面を変更しました。→ 7af67d6
- 旧:
初期化に失敗しました。古いバージョン (バージョン x.x.x.x) の BveEX に準拠していることが原因の可能性があります。 - 新:
初期化に失敗しました。BveEX 本体のバージョン (x.x.x.x) とプラグインが準拠しているバージョン (x.x.x.x) が異なっていることが原因の可能性があります。 - 「準拠」という表現が分かりづらかったため、より具体的な説明に変更しました。
- 旧:
クラスラッパー
- 【破壊的変更】 ObjectDrawer.SetMap メソッドを Build メソッドに改名しました。→ 79d0c91
- 同メソッドからリフレクション情報を取得している場合のみ影響があります。呼び出すことは引き続き可能です。
- TractionMotor クラス、JerkRegulator.TractionMotor プロパティ、VehicleElectricity.TractionMotor プロパティを追加しました。→ 92cbf53
- 主電動機を操作できるようになりました。
- StructureDrawer.BuildBlocks プロパティ、StructureDrawer.BuildBlock プロパティを追加しました。→ 79d0c91
- 個々のストラクチャーブロックの初期化処理を操作できるようになりました。
- WrappedList<TWrapper> クラスの一部コンストラクタが動作しない不具合を修正しました。→ 270fee1
WrappedList()、WrappedList(IEnumerable collection)、WrappedList(int capacity)が対象です。
- LocatableModel.Model プロパティ、TimeTable.Model プロパティに null が代入できない不具合を修正しました。→ 2a40d2c
- MapObjectList クラスのコンストラクタを追加しました。→ 77376bd
- CabBase.ReverserTexts プロパティ、CabBase.PowerTexts プロパティ、CabBase.BrakeTexts プロパティ、CabBase.HoldingSpeedTexts プロパティを追加しました。→ 9078bbb
- ハンドルの表示文字列を操作できるようになりました。
- MapLight クラスを追加しました。→ 0957010
- マップ上の光を操作できるようになりました。
- ScenarioSelectionForm.SaveSettings メソッドを追加しました。→ 66aec7b
- 「シナリオの選択」フォームの設定を保存する処理を操作できるようになりました。
TypeWrapping
- ソースメンバーが見つからなかった場合のエラー文面を変更しました。→ f7574a5
- 旧:
オリジナルフィールドが見つかりませんでした。wrapperName 'Model' は無効なキーです。など - 新:
オリジナルフィールドが見つかりませんでした。型 BveTypes.ClassWrappers.TimeTable にフィールド 'Model' は存在しません。など - エラーの出元を明示することで、原因がより円滑に究明できるようになりました。
- 旧:
サンプル
- NOMPI の説明文が古い表記のままだったため修正しました。→ 12fe413
レガシーモード
- 【重要】 全画面表示下でレガシーモードへ移行するとフリーズしてしまう不具合を修正しました。→ 8437c84
- レガシーモードに移行する条件を、「特定ファイルが存在するかどうか」から「特定コマンドライン引数が指定されているかどうか」に変更しました。→ 24aa1c5
ver2.0.4 (v2.0.50104.1) からの主な更新内容
共通
- 参照する Harmony のバージョンを 2.2.2 から 2.3.3 にアップデートしました。→ 07eee56
BveEX 本体
- 【破壊的変更】 同一プラグインを複数回読み込んだとき、AssemblyPluginBase.Location プロパティが「そのプラグインが初めて読み込まれたときのパス」ではなく「PluginUsing などで指定されたパスそのもの」を返すようになりました。→ a99693b
- 従来の戻り値は直感に反するものですが、これは .NET Framework のアセンブリ (dll) 読込の仕様に起因するものです。
マップファイルの構文関連
- 【重要】 2 項演算子
<、>、<=、>=、==、!=、&&、||を追加しました。→ af8d846 - 【重要】 単項演算子
!(否定) を追加しました。→ af8d846 - 【重要】 if 文を新しい書式で追加しました。→ 3053ce8
ex_if (condition) { ~ } ex_elif (condition) { ~ } ex_else { ~ }のように記述します。BveEx.If.BeginIf(int condition)などによる旧書式の if 文と異なり、条件分岐の中でも正常に変数への代入や距離程の変更を行うことができます。
- 【重要】 引数を付加可能な拡張 include 文を実装しました。→ 8cec62a
BveEX コア拡張機能
ビルトイン マップ構文
クラスラッパー
- 【破壊的変更】 BasicBrake クラスを BrakePiston に改名しました。→ 897f1bb
- 【重要】 BpValve クラス、CircuitBreaker クラス、Compressor クラス、CscFilteredTimeDelayedHandleSet クラス、LoadCompensator クラス、TimeDelayedHandleSet クラス、BcValve.IsBcServo プロパティ、BcValve.RapidReleaseSpeed プロパティ、BcValve.RapidApplySpeed プロパティ、BrakePiston.Stroke プロパティ、BrakePiston.Force プロパティ、BrakeSystem.TimeDelayedHandles プロパティ、BrakeSystem.BrakeBlender プロパティの set アクセサ、BrakeSystem.BrakeController プロパティの set アクセサ、BrakeSystem.Compressor プロパティ、CarInfo.Tachogenerator プロパティ、CarInfo.MotorState プロパティ、CarInfo.BrakePistonForce プロパティ、Cl.Er プロパティ、Cl.Bp プロパティ、ConstantSpeedRelay.Input プロパティ、ConstantSpeedRelay.Output プロパティ、ConstantSpeedRelay.Initialize メソッド、HandleSet クラスのコンストラクタ、HandleSet.Sync メソッド、JerkRegulator.ElectricBrakeCommand プロパティ、JerkRegulator.CurrentIncrease プロパティ、JerkRegulator.CurrentDecrease プロパティ、NotchInfo クラスのコンストラクタ、OneLeverCab クラスのコンストラクタ、Passenger.Load プロパティ、Passenger.BodyWeight プロパティ、Passenger.BoardingSpeed プロパティ、Passenger.AlightingSpeed プロパティ、ReAdhesionControl.SlipAcceleration プロパティ、ReAdhesionControl.SlipDeceleration プロパティ、ReAdhesionControl.SlipVelocity プロパティ、ReAdhesionControl.BalanceAcceleration プロパティ、ReAdhesionControl.HoldingTime プロパティ、ReAdhesionControl.ReferenceAcceleration プロパティ、ReAdhesionControl.ReferenceDeceleration プロパティ、Smee.Sap プロパティ、Smee.Bp プロパティ、Tachogenerator クラスのコンストラクタ、Tachogenerator.Acceleration プロパティ、Tachogenerator.ResistanceAcceleration プロパティ、TwoLeverCab クラスのコンストラクタ、Vehicle.Initialize メソッドのオーバーロード、Vehicle.Tick メソッド、VehicleDynamics クラスのコンストラクタ、VehicleDynamics.InertiaRatio プロパティ、VehicleDynamics.TotalMass プロパティ、VehicleDynamics.TotalInertia プロパティ、VehicleDynamics.MassRatio プロパティ、VehicleDynamics.Tick メソッド、VehicleDynamics.Initialize メソッド、VehicleDynamics.Setup メソッド、VehicleElectricity.TimeDelayedHandles プロパティ、VehicleElectricity.Breaker プロパティ、VehicleInstrumentSet クラスのコンストラクタ、VehicleInstrumentSet.LoadCompensator プロパティ、VehicleInstrumentSet.Initialize メソッドのオーバーロード、VehicleLocation クラスのコンストラクタ、VehiclePerformanceBase.LoadFromFile メソッド、VehicleVibration クラスのコンストラクタ、VehicleVibration.Initialize メソッドを追加しました。→ 71a93bb
- 車両データのパラメーターファイルで設定する値を全て操作できるようになりました。
- AirSupplement クラス、BrakeBlenderBase クラス、BrakeControllerBase クラス、BrakePiston クラス、BrakeSystem クラス、CarBrake クラス、Cl クラス、Ecb クラス、LockoutValve クラス、Smee クラス、VehicleElectricity クラス、VehicleInstrumentSet クラスに ITickable インターフェイスを実装しました。→ b2e1064 / 49e4d35 / 71a93bb / a62248d
- これにより、各クラスに Initialize メソッド、Tick メソッドが追加されました。
- ElectricBrakeCommand クラス、BrakeBlenderBase.ElectricBrakeCommand プロパティを追加しました。→ 085220d
- 電気ブレーキ力の目標値が操作できるようになりました。
- VehicleLocation.Tick メソッド、Tachogenerator.Tick メソッドを追加しました。→ 6c1583a
- Map.AdhesionObjects プロパティ、Map.BrakeShoeFrictionObjects プロパティを追加しました。→ 465064e
- CabBase クラス、VehicleInstrumentSet クラスに IDisposable インターフェイスを実装しました。→ 71a93bb
- これにより、各クラスに Dispose メソッドが追加されました。
- Model.CreateRectangleWithTexture メソッドのオーバーロード、Model.FromMesh メソッドを追加しました。→ 2e5af71
- これまで以上に様々な方法で Model オブジェクトを作成できるようになりました。
- IniReader クラスを追加しました。→ 4d94324
- BVE 標準の INI ファイルの読込ロジックを参照できるようになりました。
- SpeedLimitList.VehicleLength プロパティを追加しました。→ 258a663
- 速度制限を解除する位置を計算するための自列車長さを操作できるようになりました。
- IMapLoader インターフェイス、MapGrammar クラス、ClassicMapParser.Parse メソッド、MapLoader.ThrowError メソッド、MapParser.Parse メソッド、MapParserBase.Parent プロパティを追加しました。→ 7180a77
- マップファイルの構文解析ロジックを根本から操作できるようになりました。
- ValveMode 列挙型、Valve.Pressure プロパティ、Valve.Mode プロパティを追加しました。→ 4e37c46
- BrakeControllerBase.Handles プロパティ、BrakeControllerBase.OutputPressure プロパティを追加しました。→ a62248d
TypeWrapping
- 読込時のエラーで、文面が分かりづらいものの一部を修正しました。→ 2719c17
サンプル
- 駅のホームの方向を逆転しました。→ 1736e51
- 見た目上は右側にあるものの、Station.Put 構文では左側に設定されていたため、見た目に合わせて右側へ統一しました。
マップ if 文
ver2.0.3 (v2.0.50103.3) からの主な更新内容
BveEX 本体
- 【重要】 プラグインの Tick メソッドから ATS ハンドル出力が上書きできない問題を修正しました。→ 78c8733
- Markdig が正常に動作していなかったため、参照する System.Runtime.CompilerServices.Unsafe パッケージのバージョンを調整しました。→ d728e1c
- Markdown変換に失敗した場合でも、アップデート情報ダイアログが表示されるようになりました。→ 3ad67d9
BveEX コア拡張機能
SoundFactory
- 内部実装を変更し、ISoundFactory.LoadFrom メソッドを使用できる期間を延長しました。→ 093456e
- AtsPlugin クラスのコンストラクタの実行後から BveHacker.ScenarioClosed イベントの発生まで使用可能です。
- 呼出タイミングの関係により、車両プラグインのコンストラクタからは直接呼び出せるようになりました (マッププラグイン、拡張機能のコンストラクタからの呼出は引き続き不可です)。
- 使用可能かどうかを ISoundFactory.IsAvailable プロパティから取得できるようになりました。
- 使用不可能なタイミングで ISoundFactory.LoadFrom メソッドを呼び出した場合、独自の InvalidOperationException がスローされるようになりました。
ver2.0.2 (v2.0.50103.2) からの主な更新内容
レガシーモード
ver2.0.1 (v2.0.50103.1) からの主な更新内容
レガシーモード
ver2.0 (v2.0.41222.1) からの主な更新内容
BveEX 本体
- バージョン情報ダイアログ内のリンクを修正しました。→ 7e36293
BveEX Launcher
- IPC チャンネルの登録解除忘れを修正しました。→ fda4571
- これにより、「チャネル 'ipc client' は既に登録されています」エラーが解消されました。
- BveEX 本体の読込に時間がかかると IPC 通信がタイムアウトし、エラーとなる不具合を修正しました。→ 07f4bd0
- これにより、「IPC ポートに接続できません」エラーが解消されました。
- アップデート情報の取得先が旧名リポジトリのままであったため修正しました。→ 0356d37
クラスラッパー
- XML ドキュメントの誤りを修正しました。→ 66c4fb4
サンプル
マップ if 文サンプル
- AtsEX 向けの古い構文が残っていたため修正しました。→ 1fde1cb
レガシーモード
- 【重要】 レガシーモード下で BVE を終了した場合でも、次回起動時には自動で通常モードへ復帰するようになりました。→ 05fc250
- 【重要】 AtsEX 向け・BveEX 向けのコードが混在していると再起動を繰り返し、無限ループしてしまう不具合を修正しました。→ 9bc779b / 8673eb4
- 【重要】 AtsEx.Caller.x**.VehiclePluginUsing.xml からの車両プラグインの自動読込に再対応しました。→ 1e2ebda
- AtsEX ATS プラグイン版向けの車両プラグイン組込方法です。古い機能のためレガシーモードでは実装しなかったのですが、多くのご要望を頂いたため予定を変更して実装しました。
同梱プラグイン一覧
拡張機能
- BveEX コア拡張機能
- ConductorPatch
- 車掌の動作を自由に変更できるようにするパッチを提供します。
- ContextMenuHacker
- メインフォームの右クリックメニューを編集するための機能を提供します。
- DiagramUpdater
- 時刻表、ダイヤグラムなどの行路に関わるオブジェクトの更新機能を提供します。
- MapStatements
- プラグインからオリジナルのマップ構文を簡単に定義・参照できるようにします。
- PreTrainPatch
- 先行列車の走行位置を自由に変更できるようにするパッチを提供します。
- SignalPatch
- 閉塞の信号現示を自由に変更できるようにするパッチを提供します。
- SoundFactory
- プラグインから音声を簡単に読み込めるようにします。
- StructureModelFinder
- ストラクチャーの 3D モデルを簡単に検索するための機能を提供します。
- TrainDrawPatch
- 他列車を自由に移動・回転できるようにするパッチを提供します。
- ConductorPatch
- AtsArrayExtender
- ATS パネル・サウンドで使用可能なインデックスを、従来の 4 倍の範囲 (0 ~ 1023) に拡張します。詳しいことは ホームページ をご覧ください。
- DXDynamicTexture
- MultiStructureList
- 複数のストラクチャーリストを読み込めるようにするプラグインです。
- RichLoad
- リッチなシナリオ読込画面を実装できるようにするプラグインです。
車両プラグイン
- 運転台パネルに値を渡すサンプル
- 車掌サンプル
- マッププラグイン連携サンプル
- 運転台パネル操作サンプル
- シンプルな ATS サンプル
- 状態取得・設定サンプル
マッププラグイン
- 車両プラグイン連携サンプル
- DXDynamicTexture 連携サンプル
- 新・マップ構文サンプル
- 先行列車操作サンプル
- 信号現示操作サンプル
- SoundFactory サンプル
- 駅リスト編集サンプル
- 他列車操作サンプル
- 他列車操作サンプル EX (自動制御版)
- 他列車操作サンプル EX (手動制御版)
ダウンロード
【推奨】BveEX 本体+サンプルシナリオ+BveEX SDK exe インストーラー版
BveEX 本体に加えて、車両プラグイン・マッププラグインの動作が確認できるサンプルシナリオ、BveEX SDK (サンプルプラグインのソースコードのセット) を同梱しています。
下の Assets より BveEX_v2.1.51225.1_Setup.exe をダウンロードし、実行してください。
BveEX 本体+サンプルシナリオ 7z 手動インストール版
BveEX 本体に加えて、車両プラグイン・マッププラグインの動作が確認できるサンプルシナリオを同梱しています。
※手動インストール版には BveEX SDK は同梱されません
下の Assets より BveEX_v2.1.51225.1.7z をダウンロード・解凍し、シナリオフォルダおよび BVE 本体の Input Devices フォルダに配置してください。
インストール方法の説明はこちら→ BveEXインストールガイド - BveEX - 岡オカ営業所
BveEX SDK
サンプルプラグインのソースコードのセットです。
下の Assets より BveEX_v2.1.51225.1_SDK.7z をダウンロード・解凍してください。実行には別途 BveEX 本体のダウンロードが必要です。
※自動インストーラー版には BveEX SDK が初めから同梱されているため、こちらを別途ダウンロードする必要はありません。
解凍には 7-zip などの解凍ソフトが必要です。