PaisleyParkはHTTPサーバを通じたREST APIでの操作が可能です。
REST API · LeonBlade/PaisleyPark Wiki · GitHub
このREST APIをタイムライン定義からコールすることでフェーズ移行等に応じた任意のマーカー配置を自動化することが可能です。シンプルにタイムラインに組み込む例を紹介します。
スペスペたいむのexec機能について
トリガーにマッチした際に任意のパスのアプリケーション、またはURLへのリクエストを実行する機能です。アプリケーションであったりスクリプトであったり、Windowsの関連付けによって操作できるものであれば特に制約なく動かせます。
SpespeTime_Reference · anoyetta/ACT.Hojoring Wiki · GitHub
PaisleyParkのHTTPサーバ機能の有効化
REST APIによるコントロールのリクエストを受け付けるためのHTTPサーバ機能を有効化する必要があります。
- 任意のポートを指定してStartを押すとHTTPサーバが起動します。
- 画像の例では1337ですが、既存アプリケーションと被らなければ何でもOK
- 右のチェックボックスにチェックを入れるとアプリケーションの起動時に自動的にHTTPサーバ機能が有効になります。
プリセット名を指定する場合
execプロパティにURLを指定すると、指定したトリガにマッチングした時に当該URLへリクエストを送信します。preset/プリセット名/load
でプリセットを読み込んで配置するリクエストになります。
<t name="初期マーカー" sync="00:[id4]:戦闘開始まで" exec="http://localhost:1337/preset/bahamut_turn4/load" />
JSONによる任意のマーカー配置定義を使用する場合
マーカー配置を記述したJSONをPOSTすることで任意の場所にマーカーを置くこともできます。既存マーカーを動かさず特定のマーカーだけを再配置する場合なんかに便利かもしれないですが、前述のプリセット指定の方が楽だと思います。
スクリプトを実行する場合、スクリプトのパスをexec
に、引数となるプリセット名を args
に指定します。リファレンスにも書いてありますが、exec
実行時の作業ディレクトリはtimeline
となります。
scripts\set_waymarks.ps1
# 実行時に引数として与えられたjsonファイルからペイロードを生成 Param( [parameter(mandatory=$true)][String] $file) $uri = "http://localhost:1337/place" $payload = ConvertFrom-Json (Get-Content (Convert-Path $file) -Encoding UTF8 -Raw) | ConvertTo-Json -Compress Invoke-RestMethod -Uri $uri -Body $payload -Method POST -ContentType "application/json"
引数として受け取ったJSONファイルを元にPOSTリクエストで投げるワンライナーなペイロードを組み立てています。
ちなみに、全マーカーを定義した場合のJSONファイルの全体像はこんな感じになります。%APPDATA%\PaisleyPark\settings.json
内に記述された既存プリセットをベースにJSONを組み立てると楽です。
{ "A": { "X": 7.056696, "Y": 0.0581359863, "Z": -7.041502, "ID": 0, "Active": true }, "B": { "X": 7.25711632, "Y": 0.0581359863, "Z": 6.970316, "ID": 1, "Active": true }, "C": { "X": -7.05540562, "Y": 0.05813694, "Z": 7.002947, "ID": 2, "Active": true }, "D": { "X": -6.939519, "Y": 0.0581378937, "Z": -7.17268944, "ID": 3, "Active": true }, "One": { "X": -0.03871727, "Y": -0.0500011444, "Z": -0.0106658936, "ID": 4, "Active": true }, "Two": { "X": 0.0, "Y": 0.0, "Z": 0.0, "ID": 5, "Active": false } }
2マーカーだけを追加で置きたい場合はこんな具合でしょうか。他のマーカーはそのままです。
{ "Two": { "X": -0.03871727, "Y": -0.0500011444, "Z": -0.0106658936, "ID": 4, "Active": true } }
タイムラインからの呼び出し例
スクリプトのパスをexec
に、引数となるJSONファイル名を args
に指定します。どちらもtimelineフォルダからの相対パスである点に注意が必要です。
<t name="初期マーカー" sync="00:[id4]:戦闘開始まで" exec="scripts\set_waymarks.ps1" args="scripts\bahamut_turn4.json" exec-hidden="true" />
技術評論社
売り上げランキング: 2,453
売り上げランキング: 46,550