Page 1 of 1

Enum型への対応

Posted: 2018/11/29 02:16
by kag
先日はお世話になりました。
ParameterConatinerのEnum型を使うために、いくつか拡張してほしいStateがあります。

・SendMessageGameObject
 引数にEnum型を渡せるようにしてほしい。
 ※できれば、他にもParameterContainerで使える型にも対応してほしい

・CalcParameter
 EnumでもAdd的な機能がほしい。
 その場合、Enum範囲を超えないように自動的にループやリミットしてほしい。
 ※Intの場合、Add:1やAdd:-1として、受け取る側で範囲チェックしてループやリミットをかけ、キャストして使っています。

ひとまず、IntからEnumに変更しようとしたら詰まってしまったもので。
ご検討よろしくお願いします。

Re: Enum型への対応

Posted: 2018/11/29 10:27
by caitsithware
ご要望ありがとうございます。
kag wrote: 2018/11/29 02:16 ・SendMessageGameObject
 引数にEnum型を渡せるようにしてほしい。
 ※できれば、他にもParameterContainerで使える型にも対応してほしい
SendMessageGameObjectやSendMessageUpwardsGameObject、BroadcastMessageGameObjectあたりについてですね。
検討いたします。

また、SendMessageGameObjectにつきましては、より高機能なInvokeMethodもあります。
こちらはEnum引数の対応だけでなくoutやref引数、戻り値の出力などにも対応しております。
もしよろしければInvokeMethodも使用してみてください。

Arborリファレンス : InvokeMethod
kag wrote: 2018/11/29 02:16 ・CalcParameter
 EnumでもAdd的な機能がほしい。
 その場合、Enum範囲を超えないように自動的にループやリミットしてほしい。
 ※Intの場合、Add:1やAdd:-1として、受け取る側で範囲チェックしてループやリミットをかけ、キャストして使っています。
こちらにつきましては、Arborの組み込み処理として対応するべきかどうか悩ましいですね。
本来enum型は加減算などの数値演算しないのが一般的であり、必ずenumの値が連続しているとも限らないため、意図しない問題を引き起こしかねません。
また、ループやリミットについてどちらを行いたいかも含めて考えると、kag様のプロジェクト固有の仕様に依存した問題のように思います。
パラメータを初めからIntにするか、どうしてもenum型の加減算が必要であれば演算ノードやStateBehaviourを自作してみてはいかがでしょうか。

Arborマニュアル : 演算ノード
Arborマニュアル : StateBehaviour