# 演算ノード

演算ノードをカスタマイズするには、演算ノード用のスクリプトファイルを作成し、行いたい処理を記述する必要があります。

## Calculatorスクリプトファイルの作成

- Projectウィンドウから作成したい場所で右クリック。
- 右クリックメニューから、「Create > Arbor > Calculator C# Script」を選択。
- ファイル名を入力して決定

## 呼び出される関数

作成したCalculatorをArborEditorにて演算ノードに割り当てると、スクリプトの各関数が呼び出されるようになります。

- OnCalculate
  演算が必要な際に呼ばれます。
  ここで演算処理を記述し、OutputSlot.SetValueにてデータを出力してください。
- OnCheckDirty
  再演算が必要かどうかの判定に呼ばれます。必要に応じてoverrideしてください。
  演算に必要なデータが変更されており再演算が必要かどうかを返してください。
  入力スロットの接続状態による再演算はArborの内部的に判定しているため意識する必要はありません。
  (Transform.positionなど、外部オブジェクトの値を取り扱う際にtrueを返すようにする必要があります)
- MonoBehaviourのメッセージ関数
  詳しくはUnity ScriptReferenceのMonoBehaviourのMessagesを参照してください。

## 演算の流れ

- 必要に応じてInputSlot.GetValue()を呼び出します。
- 再演算が必要かどうかの判定にOnCheckDirtyが呼ばれます。
  (ステートなどからOutputSlot.SetValueによって事前に値が変更されていた場合はOnCheckDirtyの結果にかかわらず再演算が行われます)
- 再演算が必要な場合にOnCalculateが呼ばれます。
  - OnCaluculateの中で必要に応じてInputSlot.GetValue()を呼び出します。
  - 以下、再演算が必要なくなるまでInputSlotを辿って値を取得します。

## 変数とArbor Editor

基本はStateBehaviourの変数とArbor Editorと同じく、変数を宣言することでArbor Editorに表示され編集可能になります。

## データフロー

演算ノードを活用するには、データフローによる値の入出力が重要です。

詳しくは、「スクリプティング : データフロー」を参照してください。

スクリプティング : データフロー]