Пример #1
0
    public override void OnEvent(PlayerJoined evnt)
    {
        if (!BoltNetwork.IsServer)
        {
            return;
        }

        LoadAggregationContainer loadData = new LoadAggregationContainer(GlobalReferences.FrozenParts.Values.ToList <GameObject>());

        loadData.data.AddRange(NetworkPartSpawner.LoadData.data);

        loadData.StreamData(false, NetworkCallbacks.StreamAggregationChannel, evnt.RaisedBy);
    }
Пример #2
0
    // Update is called once per frame
    void Update()
    {
        if (data.Count > spawnPerFrame)
        {
            for (int i = spawnPerFrame - 1; i >= 0; --i)
            {
                PartSpawnData d = data[i];

                if (d.Token.GetType() == typeof(PartToken))
                {
                    SpawnBlock((PartToken)d.Token, d.Position, d.Rotation, d.owner);
                }
                else if (d.Token.GetType() == typeof(PartTokenParent))
                {
                    SpawnBlockParent((PartTokenParent)d.Token, d.Position, d.Rotation, d.owner);
                }

                data.RemoveAt(i);
            }
        }
        else
        {
            foreach (PartSpawnData d in data)
            {
                if (d.Token.GetType() == typeof(PartTokenParent))
                {
                    SpawnBlockParent((PartTokenParent)d.Token, d.Position, d.Rotation, d.owner);
                }
                else if (d.Token.GetType() == typeof(PartToken))
                {
                    SpawnBlock((PartToken)d.Token, d.Position, d.Rotation, d.owner);
                }
            }

            data.Clear();
        }


        if (loadData.data.Count > 0)
        {
            loadData.StreamData(true, NetworkCallbacks.StreamAggregationChannel);
        }
    }