# 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));
                }
            }
        }
    }