📄️ Overview
The result of neighbor behaviors depends on an entity, and it's neighbors given by the Neighbor Query. Both the entity and the neighbors can have a component which parametrizes the behavior. For example, CohesionJobWrapper depends on CohesionAuthoring on the entity and SteeringEntityTagComponent on the neighbors. SteeringEntityTagComponent is used because this behavior does not need any special data and any entity in the simulation will have this tag. Any component which is required on the neighbor will show up in the All/(required) section of the neighbor group. This can be seen in the image below.
📄️ INeighborBehaviorJobWrapper
Neighbor behaviors are implementations of INeighborBehaviorJobWrapper. The BaseSteeringSystem schedules them after their corresponding neighbor query is done, passing in its results. There are three interfaces relevant in creating a neighbor behavior. The most important one is a custom job INeighborBehaviorJob, which significantly simplifies creating the behaviors.