StateGoで出力されたソースの編集
ソースに編集をしようとしたら、そのソースはStateGoで作られていた。
ベテランプログラマがStateGoが初めてで戸惑った。
そんなベテランプログラマのための解説です。
ソースを直接編集してよいのか?
StateGoは、ソースコードの決まった場所に出力します。
例えば、Unity C#の場合、
#region // [PSGG OUTPUT START] indent(4) $/./$
:
( この間に出力されます。つまり、ここが編集禁止!! )
:
#endregion // [PSGG OUTPUT END]
出力開始と終了に使われる文字列([PSGG OUTPUT START])は、設定で変更が可能です。
そのため、スタートキットとサンプルでは次の3パターンが使われています。
3パターンもあるのは歴史的な経緯のためです。
パターン1 ※旧ツール名(SYN-G-GEN)が使われているもの
[SYN-G-GEN OUTPUT START] ~ [SYN-G-GEN OUTPUT END]
パターン2 ※プロジェクト名(PSGG)が使われているもの
[PSGG OUTPUT START] ~ [PSGG OUTPUT END]
パターン3 ※正式ツール名(STATEGO)が使われているもの
[STATEGO OUTPUT START] ~ [STATEGO OUTPUT END]
つまり、出力ヵ所以外でのソースコード編集は自由に行ってください。
StateGoからの出力部分を編集するには?
ソースコードを開いて編集しようとしらStateGoの編集部分だった。
そんな場合は元となるStateGoデータファイルをStateGoでオープンする必要があります。
StateGoデータファイルをオープンする
StateGoがエディタの外部ツールとして登録されている場合は、ショートカットキーでオープンすることができます。
以下の記事を参考にして下さい。
Visual Studio Codeとの連携
Visual Studio 2015,2017,2019との連携
エディタとの連携がない場合は、変換結果の出力部分の最初の1行目のコメントでStateGoデータファイルのローケーションを知ることができます。
(例)
変換結果1行目より、本ソース直下のdocフォルダのMoveControl.psggより変換されたことが判明
#region // [PSGG OUTPUT START] indent(4) $/./$
// psggConverterLib.dl…psgg-file:doc\MoveControl.psgg←変換結果1行目
:
:
#endregion // [PSGG OUTPUT END]
ファイルをエクスプローラで表示し、ダブルクリックでオープンします。
ステートはどこ?
StateGoが立ち上がるとフローが表示されます。
ステート数が膨大になると、編集対象のステートが何処だかわかりません。
まず、ソースコードよりステート名を確認します。
多くの場合、関数名がステート名です。
ステート名が分かった所で、StateGoで検索を行います。
ウインドウメニューの"ツール"→"検索"から検索ダイアログを開きます。
ステート名で検索し、結果をダブルクリックすると対象ステートがフォーカスされます。
どこを変更すればいいのか?
ステートの内容はアイテム編集ダイアログで行います。
以下の説明をお読みください。クリックで該当ページに移動します。
アイテムはテンプレートにより変換されます。
次の記事をお読みください。
テンプレートと変換について
現在のステートに使用されているテンプレートをソースパネルから確認することができます。
①ステートをクリックしてフォーカス
結果:ソースパネルにソースが表示
②ソースパネルのテンプレートをクリック
結果:現在使用中のテンプレートが表示
対象となるアイテムを探し編集してください。
編集後には、"保存と変換"ボタンをクリックして出力させます。
以上で完了です。
番外編:basestateが使われている場合
ステートの継承機能がbasestateです。
basestateが指定されている場合、元のbasestateを編集するか、あるいは、現ステートのアイテムに変更内容を追加して修正します。
以下の記事をお読みください。
以上