> For the complete documentation index, see [llms.txt](https://reflective-roommanager.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://reflective-roommanager.gitbook.io/docs/user-manual/network/managers/reflective-network-manager.md).

# Reflective Network Manager

This class inherits the `NetworkManager` class, a base class that provides Mirror's networking capabilities. This code customizes the basic network functionality required for network games.

### Members

`public bool IsAutoPrefabSearcher;`

* When it is active, it searches for a folder named Spawnable Prefabs in the resources folder and loads all objects in it.

`public bool IsFolderSearch;`

* When it is active, it allows you to select a folder and the objects in the folder are loaded.

`public string SpawnablePrefabsPath;`

* It keeps the path information where the prefabs are located.

### Methods

1. ```csharp
   OnStartServer()
   ```
   * A function called when the server starts.
   * Get the list of spawnable objects using `NetworkSpawnUtilities.GetSpawnablePrefabs()`.
   * `ConnectionManager.networkConnections.OnStartedServer` event is triggered.
   * If IsAutoPrefabSearcher is true, we take the list of spawnable prefabs and assign them to the spawnPrefabs variable.
2. ```csharp
   OnStartClient()
   ```
   * A function that is called when the client is started.
   * A list of spawnable objects is received.
   * The `ConnectionManager.networkConnections.OnStartedClient` event is triggered.
3. ```csharp
   OnStopServer()
   ```
   * A function called when the server is stopped.
   * The `ConnectionManager.networkConnections.OnStoppedServer` event is triggered.
4. ```csharp
   OnStopClient()
   ```
   * A function called when the client is stopped.
   * The `ConnectionManager.networkConnections.OnStoppedClient` event is triggered.
   * If the network server is active, we return it because this means it is the host.
   * If IsAutoPrefabSearcher is true, we get the list of spawnable prefabs and register them to the client.
5. ```csharp
   OnServerConnect()
   ```
   * A function that is called when a client connects to the server.
   * With the `NetworkConnectionToClient` parameter, the `ConnectionManager.networkConnections.OnServerConnected` event is triggered.
6. ```csharp
   OnServerDisconnect()
   ```
   * A function called when a client leaves the server.
   * First, the base class is called to this operation with the `NetworkConnectionToClient` parameter.
   * The `ConnectionManager.networkConnections.OnServerDisconnected` event is triggered.
7. ```csharp
   OnClientConnect()
   ```
   * A function that is called when the client successfully connects to the server.
   * First, the base class is called to this operation.
   * The `ConnectionManager.networkConnections.OnClientConnected` event is triggered.
8. ```csharp
   OnClientDisconnect()
   ```
   * A function called when the client leaves the server.
   * First, the base class is called to this operation.
   * The `ConnectionManager.networkConnections.OnClientDisconnected` event is triggered.
9. ```csharp
   OnClientSceneChanged()
   ```
   * If the AutoCreatePlayer variable is true for the client during scene changes,
   * it performs the operation of adding a player.
   * Since this operation conflicts with the scene changing process of the scene room,
   * we override the method.
