AssemblyCSharp.MasterStream.ThreadRun C# (CSharp) Method

ThreadRun() private method

private ThreadRun ( ) : void
return void
        private void ThreadRun()
        {
            stopReceive = false;
            Socket socket =new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            ipEndPoint = new IPEndPoint (IPAddress.Any, BLACK_BOX_CLIENT_PORT);
            socket.Bind (ipEndPoint);
            MulticastOption mo = new MulticastOption (IPAddress.Parse ("224.1.1.1"));
            socket.SetSocketOption (SocketOptionLevel.IP, SocketOptionName.AddMembership, mo);

            nBytesReceived = 0;
            lastLoadedBuffer = b1;
            lastLoadedBufferMS = b1ms;
            lastLoadedFrame = 0;

            byte[] newPacketBuffer = b2;
            MemoryStream newPacketBufferMS = b2ms;
            long newPacketFrame = 0;

            byte[] tempBuffer;
            MemoryStream tempBufferMS;

            while (true) {
                Debug.Log("PRERECV");

                nBytesReceived = socket.Receive(newPacketBuffer);
                Debug.Log("RECV");
                nPackets++;
                newPacketBufferMS.Position = 0;

                update_protocol.Update update = Serializer.Deserialize<update_protocol.Update>(new MemoryStream(newPacketBuffer, 0, nBytesReceived));

                newPacketFrame = update.mod_version;

                if(newPacketFrame > lastLoadedFrame) {
                    // Swap the buffers and reset the positions.
                    lastLoadedBufferMS.Position = 0;
                    newPacketBufferMS.Position = 0;
                    tempBuffer = lastLoadedBuffer;
                    tempBufferMS = lastLoadedBufferMS;
                    lastLoadedBuffer = newPacketBuffer;
                    lastLoadedBufferMS = newPacketBufferMS;
                    newPacketBuffer = tempBuffer;
                    newPacketBufferMS = tempBufferMS;
                    lastLoadedFrame = newPacketFrame;

                    Mocap mocap = update.mocap;
                    if (mocap != null) {

                        for (int j = 0; j < mocap.tracked_bodies.Count; j++) {
                            TrackedBody body = mocap.tracked_bodies[j];
                            string label = body.label;
                            RigidBody rb;
                            if (!labelToRigidBody.TryGetValue(label, out rb)) {
                                rb = new RigidBody();
                                labelToRigidBody[label] = rb;
                            } else {
                                rb = labelToRigidBody[label];
                            }
                            rb.pos = new Vector3(-(float)body.position.x, (float)body.position.y, (float)body.position.z);

                            rb.rot = new Quaternion(-(float)body.rotation.x, (float)body.rotation.y, (float)body.rotation.z, -(float)body.rotation.w);
                        }
                    }
                    for (int j = 0; j < update.motes.Count; j++) {
                        Mote m = update.motes[j];
                        buttons[m.label] = m.button_bits;
                    }

                }

                if (stopReceive) {
                    break;
                }
            }
            socket.Close ();
        }