Example #1
0
        //!
        //! receiver function, receiving the initial scene from the katana server (executed in separate thread)
        //!
        public void sceneReceiver()
        {
            //create NetMQ context
            NetMQContext ctx = NetMQContext.Create();

            print("Trying to receive scene.");

            OnProgress(0.1f, "Init Scene Receiver..");


            NetMQ.Sockets.RequestSocket sceneReceiver = ctx.CreateRequestSocket();
            sceneReceiver.Connect("tcp://" + VPETSettings.Instance.serverIP + ":5565");

            print("Server set up.");


            byte[] byteStream;


            // HEader
            print("header");
            sceneReceiver.Send("header");
            byteStream = sceneReceiver.Receive() as byte[];
            print("byteStreamHeader size: " + byteStream.Length);
            if (doWriteScene)
            {
                writeBinary(byteStream, "header");
            }

            int dataIdx = 0;

            VPETSettings.Instance.lightIntensityFactor = BitConverter.ToSingle(byteStream, dataIdx);
            print("VPETSettings.Instance.lightIntensityFactor " + VPETSettings.Instance.lightIntensityFactor);
            dataIdx += sizeof(float);
            VPETSettings.Instance.textureBinaryType = BitConverter.ToInt32(byteStream, dataIdx);

            OnProgress(0.15f, "..Received Header..");


            //VpetHeader vpetHeader = SceneDataHandler.ByteArrayToStructure<VpetHeader>(byteStream, ref dataIdx);
            //VPETSettings.Instance.lightIntensityFactor = vpetHeader.lightIntensityFactor;
            //VPETSettings.Instance.textureBinaryType = vpetHeader.textureBinaryType;

            // Textures
            if (VPETSettings.Instance.doLoadTextures)
            {
                print("textures");
                sceneReceiver.Send("textures");
                byteStream = sceneReceiver.Receive() as byte[];
                print("byteStreamTextures size: " + byteStream.Length);
                if (doWriteScene)
                {
                    writeBinary(byteStream, "textu");
                }
                sceneLoader.SceneDataHandler.TexturesByteData = byteStream;

                OnProgress(0.33f, "..Received Texture..");
            }


            // Objects
            print("objects");
            sceneReceiver.Send("objects");
            byteStream = sceneReceiver.Receive() as byte[];
            print("byteStreamObjects size: " + byteStream.Length);
            if (doWriteScene)
            {
                writeBinary(byteStream, "objec");
            }
            sceneLoader.SceneDataHandler.ObjectsByteData = byteStream;

            OnProgress(0.80f, "..Received Objects..");


            // Nodes
            print("nodes");
            sceneReceiver.Send("nodes");
            byteStream = sceneReceiver.Receive() as byte[];
            print("byteStreamNodess size: " + byteStream.Length);
            if (doWriteScene)
            {
                writeBinary(byteStream, "nodes");
            }
            sceneLoader.SceneDataHandler.NodesByteData = byteStream;

            OnProgress(0.9f, "..Received Nodes..");



            sceneReceiver.Disconnect("tcp://" + VPETSettings.Instance.serverIP + ":5565");
            sceneReceiver.Close();

            print("done receive scene");

            m_sceneTransferDirty = true;

            OnProgress(1.0f, "..Building Scene..");
        }
Example #2
0
        //!
        //! receiver function, receiving the initial scene from the katana server (executed in separate thread)
        //!
        public void sceneReceiver()
        {
            //create NetMQ context
            NetMQContext ctx = NetMQContext.Create();

            print("Trying to receive scene.");

            OnProgress(0.1f, "Init Scene Receiver..");


            NetMQ.Sockets.RequestSocket sceneReceiver = ctx.CreateRequestSocket();
            sceneReceiver.Connect("tcp://" + VPETSettings.Instance.serverIP + ":5565");

            print("Server set up.");


            SceneObjectKatana sceneObjectKatana = new SceneObjectKatana();
            bool success = false;

            if (VPETSettings.Instance.doLoadTextures)
            {
                print("textu");
                sceneReceiver.Send("textu");
                byte[] byteStreamTextures = sceneReceiver.Receive() as byte[];
                print("byteStreamTextures size: " + byteStreamTextures.Length);
                success = sceneObjectKatana.parseTexture(byteStreamTextures);
                print("Texture Count: " + sceneObjectKatana.rawTextureList.Count);
                if (doWriteScene)
                {
                    writeBinary(byteStreamTextures, "textu");
                }

                OnProgress(0.33f, "..Received Texture..");
            }


            print("objec");
            sceneReceiver.Send("objec");
            byte[] byteStreamObjects = sceneReceiver.Receive() as byte[];
            print("byteStreamObjects size: " + byteStreamObjects.Length);
            success = sceneObjectKatana.parseObject(byteStreamObjects);
            print("Object Count: " + sceneObjectKatana.rawVertexList.Count);
            if (doWriteScene)
            {
                writeBinary(byteStreamObjects, "objec");
            }

            OnProgress(0.80f, "..Received Objects..");

            print("nodes");
            sceneReceiver.Send("nodes");
            byte[] byteStreamNodes = sceneReceiver.Receive() as byte[];
            print("byteStreamNodess size: " + byteStreamNodes.Length);
            success = sceneObjectKatana.parseNode(byteStreamNodes);
            print("Node count: " + sceneObjectKatana.rawNodeList.Count);
            if (doWriteScene)
            {
                writeBinary(byteStreamNodes, "nodes");
            }


            OnProgress(0.9f, "..Received Nodes..");



            if (success)
            {
                receiveObjectQueue.Add(sceneObjectKatana);
            }


            sceneReceiver.Disconnect("tcp://" + VPETSettings.Instance.serverIP + ":5565");
            sceneReceiver.Close();

            print("done receive scene");

            OnProgress(1.0f, "..Building Scene..");
        }