Example #1
0
        private void ReadStateful(NetPacketReader reader, int length, int frame, bool discardOutOfOrderPackets)
        {
            int startPosition = reader.Position;

            while (reader.Position - startPosition < length)
            {
                int id   = reader.GetInt();
                int guid = reader.GetInt();

                if (!world.statefulObjects.ContainsKey(id))
                {
                    IdentifiableObject clone = Object.Instantiate(world.registeredPrefabsMap[guid], Vector3.zero, Quaternion.identity);
                    world.Add(clone.GetComponent <StatefulObject>(), id);
                }

                if (world.statefulObjects[id].GetComponent <IStreamable>().LastReadFrame < frame || !discardOutOfOrderPackets)
                {
                    world.statefulObjects[id].GetComponent <IStreamable>().Read(reader);
                    world.statefulObjects[id].GetComponent <IStreamable>().LastReadFrame = frame;
                }
                else
                {
                    world.statefulObjects[id].GetComponent <IStreamable>().Pass(reader);
                }
            }
        }
Example #2
0
        private void ReadSpawns(NetDataReader reader, int length)
        {
            if (listenRemote)
            {
                reader.SkipBytes(length);
                return;
            }

            int startPosition = reader.Position;

            while (reader.Position - startPosition < length)
            {
                // Instantiate, etc.
                int id   = reader.GetInt();
                int GUID = reader.GetInt();

                // Check if it's already been spawned.
                if (!world.statefulObjects.ContainsKey(id))
                {
                    IdentifiableObject clone = Object.Instantiate(world.registeredPrefabsMap[GUID], Vector3.zero, Quaternion.identity);
                    clone.GetComponent <StatefulObject>().IsDirty = false;
                    world.Add(clone.GetComponent <StatefulObject>(), id);
                }
            }
        }