# SwapComponents(ArchetypeChunk, int, ArchetypeChunk, int)

> Swaps the components of two entities.

## Definition

* **Type:** Method
* **Namespace:** [Unity.Entities](/engine/7000.0/script-reference/unity/entities.md)
* **Assembly:** UnityEngine.EntitiesModule

```csharp
public void SwapComponents(ArchetypeChunk leftChunk, int leftIndex, ArchetypeChunk rightChunk, int rightIndex)
```

### Parameters

**** (\[ArchetypeChunk]\(/engine/7000.0/script-reference/unity/entities/archetypechunk)): A chunk containing one of the entities to swap.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The index within the `leftChunk` of the entity and components to swap. Must be in the range \[0,leftChunk.Count).**** (\[ArchetypeChunk]\(/engine/7000.0/script-reference/unity/entities/archetypechunk)): The chunk containing the other entity to swap. This chunk can be the same as the `leftChunk`. It also does not need to be in the same World as `leftChunk`.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The index within the `rightChunk`  of the entity and components to swap. Must be in the range \[0,rightChunk.Count).

### Remarks

The entities must have the same components. However, this function can swap the components of entities in different worlds, so they do not need to have identical archetype instances.

**Important:** This method creates a sync point, which means that the EntityManager waits for all currently running jobs to complete before swapping the component. No additional jobs can start before the method is finished. A sync point can cause a drop in performance because the ECS framework might not be able to use the processing power of all available cores.
