ConvertNode

データポート同士の接続を行う際に、データの型変換を行うノードをスクリプトで作成できます。

スクリプトの書き方

  • LogicToolkit.ConvertNodeを継承したクラスを作成します。
  • 型にSystem.SerializableAttributeを適用します。
  • static bool Convertible(System.Type from, System.Type to)というメソッドを定義し、型変換が可能かを判定します。
  • protected override void Convert(IInputDataPort input, IOutputDataPort output)というメソッドを定義し、型変換処理を記述します。

条件を満たすデータ型のポートを接続した際に、自動的に変換ノードが挟み込まれます。
各入出力ポートは接続した際のデータの型から作成されます。

コード例

組み込まれているEvaluateToQuaternionNodeは以下のように実装しています。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace LogicToolkit
{
    [System.Serializable]
    public class EulerToQuaternionNode : ConvertNode
    {
        static bool Convertible(System.Type from, System.Type to)
        {
            return from == typeof(Vector3) && to == typeof(Quaternion);
        }

        protected override void Convert(IInputDataPort input, IOutputDataPort output)
        {
            if (input.TryGetValue<Vector3>(out var value))
            {
                output.TrySetValue(Quaternion.Euler(value));
            }
        }
    }
}