Ejemplo n.º 1
0
        public void OnNetworkInstantiatedServer(string type, string owner, NetDataWriter writer)
        {
            netStates.Clear();
            netIDs.Clear();

            netStates.Add(SerializeNetworkState(writer));
            netIDs.Add(ID);

            foreach (NetComponent nComponent in Owner.GetAllComponents <NetComponent>())
            {
                // Skip NetworkIdentity component since it's already processed.
                if (nComponent is NetworkIdentity)
                {
                    continue;
                }

                nComponent.Setup(CurrentNetworkID, owner == "SERVER");
                NetworkObjects.TryAdd(CurrentNetworkID, nComponent);
                CurrentNetworkID++;
                if (nComponent is INetPersistable netPersist)
                {
                    netStates.Add(NetLogicHelper.SerializePersistable(netPersist));
                }
                else
                {
                    netStates.Add(null); // Padding for deserialization.
                }

                netIDs.Add(nComponent.ID);
            }
        }
Ejemplo n.º 2
0
        public void OnNetworkInstantiatedClient(string type, bool isOwner, NetDataReader reader)
        {
            InstantiateData buffer    = new InstantiateData(reader);
            List <byte[]>   netStates = buffer.NetStates;

            uint[] netIDs = buffer.NetIDs;

            // Handle any NetComponents on the GameObject.
            int index = 1;

            foreach (NetComponent nComponent in Owner.GetAllComponents <NetComponent>())
            {
                // Skip NetworkIdentity component since it's already processed.
                if (nComponent is NetworkIdentity)
                {
                    continue;
                }

                nComponent.Setup(netIDs[index], isOwner);
                if (nComponent is INetPersistable persist && netStates[index] != null)
                {
                    NetLogicHelper.RestorePersistable(persist, netStates[index]);
                }

                NetworkObjects.TryAdd(netIDs[index], nComponent);
                index++;
            }
        }
Ejemplo n.º 3
0
        public byte[] GetBufferedData(NetDataWriter writer)
        {
            netStates.Clear();
            netIDs.Clear();

            netStates.Add(SerializeNetworkState(writer));
            netIDs.Add(ID);
            foreach (NetComponent nComponent in Owner.GetAllComponents <NetComponent>())
            {
                if (nComponent is INetPersistable netPersist)
                {
                    netStates.Add(NetLogicHelper.SerializePersistable(netPersist));
                }
                else
                {
                    netStates.Add(null); // Padding for deserialization.
                }
                netIDs.Add(nComponent.ID);
            }

            InstantiateData buffer = new InstantiateData(netStates, netIDs.ToArray());

            return(buffer.Serialize(new NetDataWriter()));
        }