Example #1
0
    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;
    }
Example #2
0
    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;
        }
    }