システムとツール
システム
FlowFieldsの実行には、以下のシステムが必要です(SystemSetup内と同じ順序で記載しています)。
FlowFieldPathfinderSystem_Requests: シングルスレッドシステム。FlowFieldPathfinderからの要求に応じて、FlowFieldControllersに新たな目的地を追加します。FlowFieldMapSystem_UpdateMap: マルチスレッドシステム。ダーティなコントローラを再計算します。コストやポータルが変更されたり、FlowFieldPathfinderSystem_Requestsによって新しい目的地が追加されたりすると、コントローラーはダーティとなります。FlowFieldPathfinderSystem_RequestPath: マルチスレッドシステム。要求されたパス(開始位置と目的地の組み合わせ)の識別子(パスキャッシングに使用)を計算し、FlowFieldMapに登録します。同じフレーム内で2つのパスファインダーが同じ識別子を持つパスを要求した場合、エンティティインデックスが最も低いパスファインダーの位置と目的地がナビゲーションの最初のステップに使用されます(A*)。FlowFieldMapSystem_FindPaths:FlowFieldPathfinderSystem_RequestPathが要求するパスを計算し、パスキャッシュに追加します。FlowFieldPathfinderSystem_CopyPaths: シングルスレッドシステム。FlowFieldMapSystem_FindPathsが計算したパスをFlowFieldPathfinderにコピーします。FlowFieldPathfinderSystem_SmoothPath:マルチスレッドシステム。目的地を設定したパスファインダーと、最新のコーナーに到着したパスファインダーの次のコーナーを計算します。FlowFieldPathfinderSystem_Removes: シングルスレッドシステム。FlowFieldPathfinderSystem_Requestsが追加したFlowFieldControllersから目的地リクエストを削除します。FlowFieldMapSystem_ClearCache: シングルスレッドシステム。カウントが高くなりすぎた場合に、キャッシュされたパスをクリアします。遅れて参加/再接続するスナップショットが大きくなりすぎる可能性があるため、キャッシュを過度に大きくすることはできません。FlowFieldPathfinderSystem: シグナルのみのシステム。`FlowFieldPathfinder*の初期化および非初期化をおこないます。
ツール
FlowFieldMapDebug
コントローラー間のナビゲーションに使用するA*グラフを表示するツール。
FlowFieldControllerDebug
FlowFieldControllerのデバッグビュー。
以下のデータを表示できます:
- Cost Original - ダイナミックモディファイアを使わない場合のタイルのコスト;
- Cost - ダイナミックモディファイアを適用する場合のタイルのコスト;
- Integration - タイルのインテグレーション (直近で計算されたフローのデータのみを含みます、コントローラー全体には1つの配列が使用されます);
- Flow - 特定の目的地またはポータルへのタイルの方向;
- Controller Location - コントローラー内のタイルの位置;
- Map Location - マップ内のタイルの位置;