# CoherenceNode

While the basic case of direct parent-child relationships between entities is handled automatically by coherence, more complex hierarchies (with multiple levels) need a little extra work.

An example of such a hierarchy would be a synced Player prefab with a hierarchical bone structure, where you want to place an item (e.g. a flashlight) in the hand:

`Player > Shoulder > Arm > Hand`

A prefab can only have a single `CoherenceSync` script on it (and only on it's root node), so you can't add an additional one to the hand. Instead, you need to add the `CoherenceNode` component to **another** prefab so that it can be parented. Please note that this parenting relationship can only be set up in the scene or at runtime; you can't store it in the parent prefab since that would break the rule of only one `CoherenceSync` per prefab.

To prepare the child prefab that you want to place in the hierarchy, add the `CoherenceNode` component to it (it also has to have a `CoherenceSync`.) In the example above, that would be the flashlight you want your player to be able to pick up. You don't need to do any changes to the Player prefab, just make sure it has a `CoherenceSync` script in the root.

This setup allows you to place instances of the flashlight prefab anywhere in the hierarchy of the Player (you could even move it from one hand to the other, and it will work.) The one important constraint is that the hierarchies have to be identical on all clients.

To recap, for CoherenceNode to work you need to things:

1. One or more prefabs with `CoherenceSync` that have some kind of hierarchy of child transforms (the child transforms can't have CoherenceSyncs on them.)
2. Another prefab with `CoherenceSync` and `CoherenceNode`. Instances of this prefab can now be parented to any transform of the prefabs with just CoherenceSync (in step 1.)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.coherence.io/0.8/connected-entities/coherencenode.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
