public World( IGameInstance gameInstance, Streaming sharedStreaming, WorldChunkComponent chunkComponent, Transform sceneGroup, GameObject defaultActorPrefab, GetObjectPoolRootDelegate getStaticPoolRoot, GetObjectPoolRootDelegate getTransientPoolRoot, SerializableObjectFactory objectFactory, INetDriver netDriver, NetMsgFactory netMsgFactory ) { this.gameInstance = gameInstance; _sceneGroup = sceneGroup; _netDriver = netDriver; _rpcReferenceCollector = new RPCObjectReferenceCollector(this); _objectFactory = objectFactory; _netMsgFactory = netMsgFactory; _getStaticPoolRoot = getStaticPoolRoot; _getTransientPoolRoot = getTransientPoolRoot; _defaultActorPrefab = defaultActorPrefab; CacheNetworkDispatchMethods(); _netArchiveBytes = new byte[MAX_RELIABLE_MESSAGE_SIZE]; _netArchive = new NetMsgArchive(_netArchiveBytes); _nextNetID = 0; _worldStreaming = sharedStreaming ?? new Streaming(chunkComponent, CreateGenVoxelsJob, MMapChunkData, WriteChunkData); _sharedWorldStreaming = sharedStreaming != null; }
protected virtual void Dispose(bool disposing) { _netArchive.Dispose(); _netArchive = null; _taskQueue.Clear(); _loadingQueue.Clear(); for (int i = 0; i < _actors.Count; ++i) { var actor = _actors[i]; actor.Dispose(); actor.internal_ClearReplicators(); } _actors.Clear(); _replicatedActors.Clear(); _replicatedObjects.Clear(); _travelActors = null; spawnTags = null; if (!_sharedWorldStreaming) { _worldStreaming.Dispose(); _worldStreaming = null; } }