# Migration from Arbor3

We will explain the migration from “Arbor 3: FSM & BT Graph Editor (hereinafter referred to as Arbor3)".

Arbor3 and Logic Toolkit are not compatible.
If you want to switch a project developed with Arbor3 to Logic Toolkit, you will need to reassemble it with reference to the following points.

## Architecture differences

Element | Arbor3 | Logic Toolkit
--- | --- | ---
State Machine | ArborFSM Component | State
Behavior Tree | BehaviourTree component | BehaviorTree
Data Flow | DataSlot FlexibleField Calculator | OutputDataPort [InputDataPort]({{ < relref “/manual/architecture/ports/inputdataport.md” >}}) InputField Data calculation nodes Data conversion nodes
Graph Hierarchy | SubStateMachine SubBehaviorTree | Function Graph (Task Graph, Evaluate Graph)
Variable | ParameterContainer | Blackboard
API call | Built-in script Call by reflection Create your own script | Built-in script Script generation Scripting
Script for nodes | MonoBehaviour | SerializeReference

## Graph differences

### Arbor3

- State machine and behavior tree are available as graph types.
- Managed by “Unity object” derived from MonoBehaviour.
- Child graphs are also realized internally by adding components to the same GameObject.
- Graphs can be reused in a pseudo manner by creating a prefab with a graph component.

### Logic Toolkit

- How it is executed is controlled only by the node type.
  - State machine is realized with State.
  - Behavior tree is realized with BehaviorTree.
- Managed by SerializeReference.
- Child graphs can be added without restrictions on Unity objects.
- Logic Asset and Task Graph Asset, Evaluate Graph Asset allows graph reuse.

## Differences in scripts for nodes

### Arbor3

- Managed by “Unity object” derived from MonoBehaviour.
- MonoBehaviour messages (such as OnCollisionEnter) are also called.
- Node scripts cannot be used
  Only the StateBehaviour script can be used for State, so if you want to create the same process in BehaviorTree, you must also create an ActionBehaviour script separately.
- To access API members, a high-load reflection call or script writing is required.

### Logic Toolkit

- Managed by SerializeReference.
- MonoBehaviour messages (such as OnCollisionEnter) are not called.
  - Requires replacement such as waiting for events via MonoBehaviour script that receives messages.
- Node scripts can be used
  ActionComponent and TaskComponent can be used for both State and BehaviorTree.
- Scripts can be generated to access API members.

## About built-in features

### Arbor3

- Supported by various components and related scripts. *For unsupported functions, users are required to write scripts for each function.

### Logic Toolkit

- In order to narrow down the functions of the asset itself, only the minimum built-in functions are implemented.
- Since member access is possible through the script generation function, there are fewer cases where it is necessary to write individual scripts.
- Compatible packages will be provided separately if necessary.