UI アノテーション
このアノテーションを使用して、エフェクト パラメーターをホスト環境の UI コントロールに割り当てます。これにより、ユーザーはホスト アプリケーションを介してエフェクト パラメーターを対話的に制御できます。
DXSAS では、データ モデルおよびホスト アプリケーションから想定される基本的な動作という観点から標準のコントロールのセットを定義しています。コントロール アノテーションは、次のように使用します。
string SasUiControl = "ControlType";
ここで、ControlType には次のいずれかを指定します。
ControlType | 説明 | 内部データ型 | コントロール プロパティ アノテーション |
---|---|---|---|
なし | コントロールを表示しません。SasUiVisible が True で、コントロール タイプが None 以外のタイプであれば、コントロールは表示されます。 | N/A | N/A |
任意 | これは、特別なコントロールが不要ということを意味します。ここで表示されるコントロールは、アプリケーションで定義された動作の結果です。 | N/A | N/A |
ColorPicker | カラー見本としてカラー値が示されます。値は、関連するベクトルの XYZ 要素にパックされます。関連するベクトルの W 要素は、常に 1 に設定されます。 | floatN (N は 1 ~ 4)。 | SasUiEnum |
Direction | 方向ベクトル。 | floatN (N は 2 ~ 4)。 | なし |
FilePicker | ユーザーがファイルを参照および選択できるようにするためのダイアログ ボックス。 | string | なし |
ListPicker | ユーザーが 1 つのエントリを選択できるようにするための文字列値のリスト。値は、SasUiEnum アノテーションから生成されます。 | 選択した文字列値のインデックスが入る整数値を伴う文字列の配列。 | SasUiEnum |
Numeric | 数値入力コントロールのセット (テキスト ボックスなど)。 | floatMxN。(M および N は 1 ~ 4)。 | SasUiMin、SasUiMax、SasUiStride |
スライダー | スライダーのセット。 | floatMxN。(M および N は 1 ~ 4)。 | SasUiMin、SasUiMax、SasUiSteps、SasUiStepsPower |
文字列 | 文字列コンテンツを編集するためのテキスト ボックス。 | string | なし |
内部データ型が関連するパラメーターの型と異なる場合、データをホスト アプリケーション パラメーターからエフェクト パラメーターに変換する際にキャストが発生します。
既定は、文字列 "None" です。
UI 共通プロパティ
SasUiDescription
このアノテーションを使用して、ツールの説明の文字列を指定します。これは、ツール チップなどの UI 要素で使用できます。
string SasUiDescription = "descriptive string";
次に例を示します。
float3 UpNormal
<
string SasUiDescription = "The normalized up vector";
>;
既定は空の文字列です。
SasUiLabel
このアノテーションを使用して、任意の UI コントロールのラベルの文字列を指定します。
string SasUiLabel = "some label;
次に、1 つの例を示します。
float3 UpNormal
<
string SasUiLabel = "Normal that points up.";
>;
既定は空の文字列です。
SasUiVisible
このアノテーションを使用して、関連するパラメーターをユーザーに対して表示するかどうかを指定します。
bool SasUiVisible = false;
True に設定すると、ホスト アプリケーションは注釈付きのパラメーターを編集するための UI コントロールを表示する必要があります。False の場合、ホスト アプリケーションで UI は表示されません。
次に、1 つの例を示します。
float3 UpNormal
<
string SasUiVisible = false;
>;
既定では True です。
UI コントロール プロパティ
コントロール プロパティ アノテーションは、特定のコントロールの操作方法の決定に役立つ追加の修飾子です。
SasUiEnum
このアノテーションにより、コントロールの値の範囲を制限できます。アノテーションには、コンマ区切りの文字列の値を格納します。
既定は空の文字列です。
SasUiMax
このアノテーションで、関連するパラメーターの最大値を指定します。数値タイプのパラメーターにのみ関連付けることができます。パラメーターの最大値は、実際は次のように計算されます。
MaxValue = min(FLT_MAX, PARAMETER_TYPE_MAX);
PARAMETER_TYPE_MAX は、関連するパラメーターで使用されるタイプの最大値です。つまりパラメーターの値は、SasUiMax アノテーションを考慮すると、次のように計算されます。
ParameterValue = min(NewParameterValue, MaxValue);
既定値は、Math.h で定義されているとおり、FLT_MAX です。
SasUiMin
このアノテーションで、関連するパラメーターの最小値を指定します。数値タイプのパラメーターにのみ関連付けることができます。パラメーターの最小値は、実際は次のように計算されます。
MinValue = max(-FLT_MAX, PARAMETER_TYPE_MIN);
PARAMETER_TYPE_MIN は、関連するパラメーターで使用されるタイプの最小値です。つまりパラメーターの値は、SasUiMin アノテーションを考慮すると、次のように計算されます。
ParameterValue = max(NewParameterValue, MinValue);
既定値は、Math.h で定義されているとおり、-FLT_MAX です。
SasUiSteps
このアノテーションで、関連するパラメーター値をインクリメントまたはデクリメントする際に使用できる段階数を指定します。このアノテーションは、数値タイプのパラメーターでのみ有効です。0 を指定すると、ホスト アプリケーションで適切な段階数を選択することになります。
規定値は 0 です。
SasUiStepsPower
このアノテーションで、指数関数の指数を [0.0f, 1.0f] の範囲で指定します。ホスト アプリケーションは、パラメーター値を計算する際に、次の方法を実装する必要があります。
ParameterValue = ((SasUiMax - SasUiMin) x pow(UI_VALUE, SasUiStepsPower) + SasUiMin
既定値は 1.0f です。
SasUiStride
このアノテーションで、この値をインクリメントまたはデクリメントする際に使用する刻み幅を指定します。SasUiSteps と異なり、SasUiStride はスピナー コントロールなどに有用です。ここでは、データはバインドされず、ユーザーはパラメーター値を、あらかじめ定義された段階数でなく、ストライドでインクリメントします。ホスト アプリケーションで、コントロールの動作に応じて、次のように SasUiStride の値でインクリメントまたはデクリメントする必要があります。
ParameterValue = ParameterValue +/- SasUiStride
既定値は 1.0f です。