// starts playing
    public bool StartPlaying()
    {
        filePath = FileManager.path;
        loadFile();

        if (isPlaying)
        {
            return(false);
        }

        isPlaying = true;

        // avoid recording an playing at the same time
        if (isRecording && isPlaying)
        {
            isRecording = false;
            Debug.Log("Recording stopped.");
        }

        // stop playing if there is no file name specified
        if (filePath.Length == 0 || !File.Exists(filePath))
        {
            isPlaying = false;
            Debug.LogError("No file to play.");

            if (infoText != null)
            {
                infoText.text = "No file to play.";
            }
        }

        if (isPlaying)
        {
            Debug.Log("Playing started.");
            if (infoText != null)
            {
                infoText.text = "Playing... Say 'Stop' to stop the player.";
            }

            // initialize times
            fStartTime    = fCurrentTime = 0f;
            fCurrentFrame = -1;

            // open the file and read a line
#if !UNITY_WSA
            fileReader = new StreamReader(filePath);
#endif
            ReadLineFromFile();

            // enable the play mode
            if (manager)
            {
                manager.EnablePlayMode(true);
            }
        }

        return(isPlaying);
    }
示例#2
0
    void OnDestroy()
    {
        try
        {
            if (connected)
            {
                byte error = 0;
                if (!NetworkTransport.Disconnect(clientHostId, clientConnId, out error))
                {
                    Debug.Log("Error while disconnecting: " + (NetworkError)error);
                }
            }

            if (clientHostId >= 0)
            {
                NetworkTransport.RemoveHost(clientHostId);
                clientHostId = -1;
            }

            if (bcastHostId >= 0)
            {
                NetworkTransport.RemoveHost(bcastHostId);
                bcastHostId = -1;
            }
        }
        catch (System.Exception ex)
        {
            Debug.LogError(ex.Message + "\n" + ex.StackTrace);
        }

        // shitdown the transport layer
        NetworkTransport.Shutdown();

        // disable play mode, as needed
        if (manager && manager.IsPlayModeEnabled())
        {
            manager.EnablePlayMode(false);
        }
    }
示例#3
0
    // starts playing
    public bool StartPlaying()
    {
        if (isPlaying)
        {
            return(false);
        }

        isPlaying = true;

        // stop playing if there is no file name specified
        if (currFilePath.Length == 0 || !File.Exists(currFilePath))
        {
            isPlaying = false;
        }

        if (isPlaying)
        {
            // initialize times
            fStartTime    = fCurrentTime = Time.time;
            fCurrentFrame = -1;

            // open the file and read a line
#if !UNITY_WSA
            fileReader = new StreamReader(currFilePath);
#endif
            ReadLineFromFile();

            // enable the play mode
            if (manager)
            {
                manager.EnablePlayMode(true);
            }
        }

        return(isPlaying);
    }
示例#4
0
    void Update()
    {
        int recHostId;
        int connectionId;
        int recChannelId;
        int dataSize;

        // enable play mode if needed
        if (manager && manager.IsInitialized() && !manager.IsPlayModeEnabled())
        {
            manager.EnablePlayMode(true);
        }

        // connect after broadcast discovery, if needed
        if (clientConnId < 0 && serverHost != string.Empty && serverHost != "0.0.0.0" && serverPort != 0)
        {
            Start();
        }

        try
        {
            byte error = 0;

            // disconnect if no data received for the last 10 seconds
            if (connected && (Time.time - dataReceivedAt) >= 10f)
            {
                NetworkTransport.Disconnect(clientHostId, clientConnId, out error);
                dataReceivedAt = Time.time;

                if (error != (byte)NetworkError.Ok)
                {
                    throw new UnityException("Disconnect: " + (NetworkError)error);
                }
            }

            if (connected && keepAliveIndex < keepAliveCount)
            {
                if (sendKeepAlive[keepAliveIndex] && !string.IsNullOrEmpty(keepAliveData[keepAliveIndex]))
                {
                    // send keep-alive to the server
                    sendKeepAlive[keepAliveIndex] = false;
                    byte[] btSendMessage = System.Text.Encoding.UTF8.GetBytes(keepAliveData[keepAliveIndex]);

                    int compSize = 0;
                    if (compressor != null && btSendMessage.Length >= 100)
                    {
                        compSize = compressor.Compress(btSendMessage, 0, btSendMessage.Length, compressBuffer, 0);
                    }
                    else
                    {
                        System.Buffer.BlockCopy(btSendMessage, 0, compressBuffer, 0, btSendMessage.Length);
                        compSize = btSendMessage.Length;
                    }

                    NetworkTransport.Send(clientHostId, clientConnId, clientChannelId, compressBuffer, compSize, out error);
                    //Debug.Log(clientConnId + "-keep: " + keepAliveData[keepAliveIndex]);

                    if (error != (byte)NetworkError.Ok)
                    {
                        throw new UnityException("Keep-alive: " + (NetworkError)error);
                    }

                    // make sure sr-message is sent just once
                    if (keepAliveIndex == 0 && keepAliveData[0].IndexOf(",sr") >= 0)
                    {
                        RemoveResponseMsg(",sr");
                    }
                }

                keepAliveIndex++;
                if (keepAliveIndex >= keepAliveCount)
                {
                    keepAliveIndex = 0;
                }
            }

            // get next receive event
            NetworkEventType recData;

            if (serverHost != string.Empty && serverHost != "0.0.0.0" && serverPort != 0)
            {
                recData = NetworkTransport.ReceiveFromHost(clientHostId, out connectionId, out recChannelId, recBuffer, bufferSize, out dataSize, out error);
            }
            else
            {
                recData = NetworkTransport.Receive(out recHostId, out connectionId, out recChannelId, recBuffer, bufferSize, out dataSize, out error);                  // wait for broadcast
            }
            switch (recData)
            {
            case NetworkEventType.Nothing:
                break;

            case NetworkEventType.ConnectEvent:
                if (connectionId == clientConnId)
                {
                    connected = true;
                    //connectedOnce = true;

                    disconnectedAt = 0f;
                    dataReceivedAt = Time.time;
                    //sendKeepAlive = false;

                    Debug.Log("Connected.");

                    if (statusText)
                    {
                        statusText.text = "Connected.";
                    }
                }
                break;

            case NetworkEventType.DataEvent:
                if (connectionId == clientConnId)
                {
                    if (error != (byte)NetworkError.Ok)
                    {
                        Debug.Log("Receive error on connection " + connectionId + ": " + (NetworkError)error);
                    }
                    else
                    {
                        dataReceivedAt = Time.time;
                        //sendKeepAlive = true;

                        //string sRecvMessage = System.Text.Encoding.UTF8.GetString(recBuffer, 0, dataSize);
                        int decompSize = 0;
                        if (decompressor != null && (recBuffer[0] > 127 || recBuffer[0] < 32))
                        {
                            decompSize = decompressor.Decompress(recBuffer, 0, compressBuffer, 0, dataSize);
                        }
                        else
                        {
                            System.Buffer.BlockCopy(recBuffer, 0, compressBuffer, 0, dataSize);
                            decompSize = dataSize;
                        }

                        string sRecvMessage = System.Text.Encoding.UTF8.GetString(compressBuffer, 0, decompSize);

//						if(sRecvMessage.StartsWith("pv"))
//						{
//							//Debug.Log("Got part face verts - " + sRecvMessage.Substring(0, 3));
//
//							// part of face-vertices msg
//							sRecvMessage = ProcessPvMessage(sRecvMessage);
//
//							if(sRecvMessage.Length == 0)
//								EnableNextKeepAlive(2);
//						}
//						else if(sRecvMessage.StartsWith("pt"))
//						{
//							//Debug.Log("Got part face tris - " + sRecvMessage.Substring(0, 3));
//
//							// part of face-triangles msg
//							sRecvMessage = ProcessPtMessage(sRecvMessage);
//
//							if(sRecvMessage.Length == 0)
//								EnableNextKeepAlive(3);
//						}

                        if (!string.IsNullOrEmpty(sRecvMessage))
                        {
                            char[]   msgDelim   = { '|' };
                            string[] asMessages = sRecvMessage.Split(msgDelim);

                            char[] partDelim = { ',' };
                            for (int i = 0; i < asMessages.Length; i++)
                            {
                                if (manager && asMessages[i].Length > 3)
                                {
                                    if (asMessages[i].StartsWith("kb,"))
                                    {
                                        //Debug.Log("Got body data");
                                        manager.SetBodyFrameData(asMessages[i]);
                                        EnableNextKeepAlive(0);
                                    }
                                    else if (asMessages[i].StartsWith("kh,"))
                                    {
                                        manager.SetBodyHandData(asMessages[i]);
                                    }
                                    else if (asMessages[i].StartsWith("km,"))
                                    {
                                        manager.SetWorldMatrixData(asMessages[i]);
                                    }
                                    else if (asMessages[i].StartsWith("vg,") && gestureManager != null)
                                    {
                                        gestureManager.SetGestureDataFromCsv(asMessages[i], partDelim);
                                    }
                                    else if (asMessages[i].StartsWith("sr,") && speechManager != null)
                                    {
                                        speechManager.SetSpeechDataFromCsv(asMessages[i], partDelim);
                                    }
//									else if(asMessages[i].StartsWith("fp,") && faceManager != null)
//									{
//										//Debug.Log("Got face params");
//										faceManager.SetFaceParamsFromCsv(asMessages[i]);
//										EnableNextKeepAlive(1);
//									}
//									else if(asMessages[i].StartsWith("fv,") && faceManager != null)
//									{
//										//Debug.Log("Got face vertices");
//										faceManager.SetFaceVerticesFromCsv(asMessages[i]);
//										EnableNextKeepAlive(2);
//									}
//									else if(asMessages[i].StartsWith("fu,") && faceManager != null)
//									{
//										//Debug.Log("Got face uvs");
//										faceManager.SetFaceUvsFromCsv(asMessages[i]);
//										EnableNextKeepAlive(2);
//									}
//									else if(asMessages[i].StartsWith("ft,") && faceManager != null)
//									{
//										//Debug.Log("Got face triangles");
//										faceManager.SetFaceTrianglesFromCsv(asMessages[i]);
//
//										keepAliveData[3] = null;  // clear index 3 - one set of tris is enough
//										EnableNextKeepAlive(3);
//									}
                                }
                            }
                        }
                    }
                }
                break;

            case NetworkEventType.DisconnectEvent:
                if (connectionId == clientConnId)
                {
                    connected = false;
                    //connectedOnce = true;  // anyway, try to reconnect

                    disconnectedAt = Time.time;
                    dataReceivedAt = 0f;
                    //sendKeepAlive = false;

                    Debug.Log("Disconnected: " + (NetworkError)error);

                    if (error != (byte)NetworkError.Ok)
                    {
                        throw new UnityException("Disconnected: " + (NetworkError)error);
                    }
                }
                break;

            case NetworkEventType.BroadcastEvent:
                int receivedSize;
                NetworkTransport.GetBroadcastConnectionMessage(bcastHostId, bcastBuffer, bcastBuffer.Length, out receivedSize, out error);

                string senderAddr;
                int    senderPort;
                NetworkTransport.GetBroadcastConnectionInfo(bcastHostId, out senderAddr, out senderPort, out error);

                if (serverHost == string.Empty || serverHost == "0.0.0.0" || serverPort == 0)
                {
                    string sData = System.Text.Encoding.UTF8.GetString(bcastBuffer, 0, bcastBuffer.Length).Trim();
                    OnReceivedBroadcast(senderAddr, sData);
                }
                break;
            }

            // try to reconnect, if disconnected
            if (!connected && /**connectedOnce &&*/ disconnectedAt > 0f && (Time.time - disconnectedAt) >= reconnectAfter)
            {
                disconnectedAt = 0f;

                error        = 0;
                clientConnId = NetworkTransport.Connect(clientHostId, serverHost, serverPort, 0, out error);

                if (error == (byte)NetworkError.Ok)
                {
                    Debug.Log("Reconnecting to the server - " + serverHost + ":" + serverPort);

                    if (statusText)
                    {
                        statusText.text = "Reconnecting to the server...";
                    }
                }
                else
                {
                    throw new UnityException("Error while reconnecting: " + (NetworkError)error);
                }
            }
        }
        catch (System.Exception ex)
        {
            Debug.LogError(ex.Message + "\n" + ex.StackTrace);

            if (statusText)
            {
                statusText.text = ex.Message;
            }
        }
    }
示例#5
0
        // starts playing
        public void StartPlaying()
        {
            if (isPlaying)
            {
                return;
            }

            isPlaying = true;

            // avoid recording an playing at the same time
            if (isRecording && isPlaying)
            {
                isRecording = false;
                Debug.Log("Recording stopped.");
            }

            if (filePath.Length > 0 && filePath.IndexOf('/') < 0 && filePath.IndexOf('\\') < 0)
            {
#if UNITY_EDITOR || UNITY_STANDALONE
                string saveFolder = ".";
#else
                string saveFolder = Application.persistentDataPath;
#endif
                if (saveFolder.Length > 0 && saveFolder[saveFolder.Length - 1] != '/' && saveFolder[saveFolder.Length - 1] != '\\')
                {
                    saveFolder += "/";
                }

                filePath = saveFolder + filePath;
            }

            // stop playing if there is no file name specified
            if (filePath.Length == 0 || !File.Exists(filePath))
            {
                isPlaying = false;
                Debug.LogError("File not found: " + filePath);

                if (infoText != null)
                {
                    infoText.text = "File not found: " + filePath;
                }
            }

            if (isPlaying)
            {
                Debug.Log("Playing started.");
                if (infoText != null)
                {
                    infoText.text = "Playing...";
                }

                // initialize times
                fStartTime    = fCurrentTime = Time.time;
                fCurrentFrame = -1;

                // open the file and read a line
#if !UNITY_WSA
                fileReader = new StreamReader(filePath);
#endif
                ReadLineFromFile();

                // enable the play mode
                if (kinectManager)
                {
                    kinectManager.EnablePlayMode(true);
                }
            }

            //return isPlaying;
        }
    // starts playing
    public bool StartPlaying()
    {
        if (isPlaying)
        {
            return(false);
        }

        isPlaying    = true;
        inicializado = true;
        //para terminar de leer la misma frase
        move_finished = false;

        if (!_vista_previa && !_Movimiento_registrado_play)
        {
            // Movimientos
            Gesture_Action movimiento = Gesture_Action.Instance;
            movimiento.LeerMovimiento(filePath);


            movimiento.Comparar = true;
        }



        // avoid recording an playing at the same time
        if (isRecording && isPlaying)
        {
            isRecording = false;
            Debug.Log("Recording stopped.");
        }

        // stop playing if there is no file name specified
        //if(filePath.Length == 0 || !File.Exists(filePath))
        //{
        //	isPlaying = false;
        //	Debug.LogError("No file to play.");

        //	if(infoText != null)
        //	{
        //		infoText.text = "No file to play.";
        //	}
        //}

        if (isPlaying)
        {
            Debug.Log("Playing started.");
            if (infoText != null)
            {
                infoText.text = "Playing... Say 'Stop' to stop the player.";
            }

            // initialize times
            fStartTime    = fCurrentTime = Time.time;
            fCurrentFrame = -1;

            // open the file and read a line
#if !UNITY_WSA
            TextAsset asset = Resources.Load("movimientos/" + filePath) as TextAsset;
            // convert string to stream
            byte[] byteArray = Encoding.UTF8.GetBytes(asset.text);
            //byte[] byteArray = Encoding.ASCII.GetBytes(contents);
            MemoryStream stream = new MemoryStream(byteArray);

            // convert stream to string

            fileReader = new StreamReader(stream);
#endif
            ReadLineFromFile();

            // enable the play mode
            if (manager)
            {
                manager.maxTrackedUsers = 2;

                if (_registro_comparacion)
                {
                    //para reproducir el movimiento con el usuario a la vez para ver errores
                    manager.EnablePlayMode(true);
                    _registro_comparacion = false;
                }
                else
                {
                    // para reproducir la grabacion y usuario captado con la kinect
                    manager.EnableCompareMode(true);
                }
            }
        }

        return(isPlaying);
    }