# NetworkObserver

## Description <a href="#conditions" id="conditions"></a>

The **NetworkObserver** uses conditions to determine if a client qualifies to be an observer of an object; any number of conditions may be used and a client will be considered an observer of the object if he passes all active conditions. The NetworkObserver component can be used to override the [ObserverManager](/docs/fishnet-building-blocks/components/managers/observermanager.md), or add additional conditions onto the object to which the NetworkObserver is added.

{% hint style="warning" %}
When adding this component manually, be careful not to unintentionally override the default scene observer condition of the object by using the **Ignore Manager** override type setting.
{% endhint %}

This component will be added to a network object at run-time if it doesn't already exist.

{% hint style="success" %}
Check out the API page for specific methods, and properties [here](https://fish-networking.com/FishNet/api/api/FishNet.Observing.NetworkObserver.html).
{% endhint %}

## Conditions <a href="#conditions" id="conditions"></a>

There are [several included conditions](/docs/fishnet-building-blocks/scriptableobjects/observerconditions.md), which may be used together. ObserverCondition may also be inherited from [to make your own conditions](/docs/guides/features/observers/custom-conditions.md). When all conditions are true, the object will become visible to the client.

Each condition must be created as a scriptable object, and dropped into the Network Observer component.

## Settings <a href="#component-settings" id="component-settings"></a>

<div align="left"><figure><img src="/files/vINPiQPsf7geZmwxoknZ" alt=""><figcaption><p>Default settings</p></figcaption></figure></div>

### :gear: **Override Type**

> This is used to change how the **NetworkObserver** component uses the [ObserverManager](/docs/fishnet-building-blocks/components/managers/observermanager.md) settings. *Add Missing* will add any conditions from the ObserverManager which are not already on the NetworkObserver. *UseManager* replaces conditions with those from the manager. *Ignore Manager* will keep the NetworkObserver conditions, ignoring the ObserverManager entirely.
>
> *Add Missing* is usually the recommended option.

### :gear: **Update Host Visibility**

> This will change the visibility of renderers for the host client when server objects are not visible to the client. If you wish to enable and disable other aspects during a visibility change consider using the [`NetworkObject.OnHostVisibilityUpdated`](https://fish-networking.com/FishNet/api/api/FishNet.Object.NetworkObject.html#FishNet_Object_NetworkObject_OnHostVisibilityUpdated) event.

### :gear: **Observer Conditions**

> This is a list of which observer conditions to use. You can find out more about the specific ones here: [ObserverConditions](/docs/fishnet-building-blocks/scriptableobjects/observerconditions.md)


---

# 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://fish-networking.gitbook.io/docs/fishnet-building-blocks/components/network-observer.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.
