//! //! 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.."); }
//! //! 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.."); }