Ejemplo n.º 1
0
    // スタート時に呼ばれる
    void Start()
    {
        _bTexturesInitialized = false;

        _editorConnection = EditorConnection.instance;
        _editorConnection.Initialize();
        _editorConnection.RegisterConnection(PlayerConnected);
        _editorConnection.RegisterDisconnection(PlayerDisconnected);
        _editorConnection.Register(ConnectionMessageIds.updateCameraFrameMsgId, UpdateCameraFrame);
        _editorConnection.Register(ConnectionMessageIds.addFaceAnchorMsgeId, AddFaceAnchor);
        _editorConnection.Register(ConnectionMessageIds.updateFaceAnchorMsgeId, UpdateFaceAnchor);
        _editorConnection.Register(ConnectionMessageIds.removePlaneAnchorMsgeId, RemoveFaceAnchor);
        _editorConnection.Register(ConnectionMessageIds.screenCaptureYMsgId, ReceiveRemoteScreenYTex);
        _editorConnection.Register(ConnectionMessageIds.screenCaptureUVMsgId, ReceiveRemoteScreenUVTex);

        _savePath  = Application.dataPath + "/" + _saveFilePath;
        _timeCount = 0;
        if (_recordingMode == RecordingMode.PLAYING)
        {
            _playingFileStream      = new FileStream(_savePath, FileMode.Open, FileAccess.Read);
            _playingBinaryFormatter = new BinaryFormatter();

            if (_playingFileStream.CanRead)
            {
                _nowFaceTrackingData = _playingBinaryFormatter.Deserialize(_playingFileStream) as FaceTrackingData;
            }

            _isStart = true;
        }
    }
Ejemplo n.º 2
0
    private void PlayTrackingData(ref FaceTrackingData faceTrackingData)
    {
        switch (faceTrackingData.TypeId)
        {
        case CallMethodTypeId.SendInitToPlayer:
            break;

        case CallMethodTypeId.UpdateCameraFrame:
            UpdateCameraFrame(faceTrackingData.Data);
            break;

        case CallMethodTypeId.AddFaceAnchor:
            AddFaceAnchor(faceTrackingData.Data);
            break;

        case CallMethodTypeId.UpdateFaceAnchor:
            UpdateFaceAnchor(faceTrackingData.Data);
            break;

        case CallMethodTypeId.RemoveFaceAnchor:
            RemoveFaceAnchor(faceTrackingData.Data);
            break;

        case CallMethodTypeId.ReceiveRemoteScreenYTex:
            ReceiveRemoteScreenYTex(faceTrackingData.Data);
            break;

        case CallMethodTypeId.ReceiveRemoteScreenUVTex:
            ReceiveRemoteScreenUVTex(faceTrackingData.Data);
            break;
        }
    }
Ejemplo n.º 3
0
    void Update()
    {
        if (_isStart)
        {
            if (_recordingMode == RecordingMode.PLAYING)
            {
                while (_playingFileStream.Position < _playingFileStream.Length &&
                       _timeCount >= _nowFaceTrackingData.TimeCount)
                {
                    PlayTrackingData(ref _nowFaceTrackingData);
                    _nowFaceTrackingData = _playingBinaryFormatter.Deserialize(_playingFileStream) as FaceTrackingData;
                }
            }

            _timeCount++;
        }
    }
Ejemplo n.º 4
0
    private void SaveData(int timeCount, CallMethodTypeId typeId, MessageEventArgs data, bool isFirst)
    {
        if (_recordingMode != RecordingMode.RECORDING)
        {
            return;
        }

        FaceTrackingData faceTrackingData = new FaceTrackingData();

        faceTrackingData.TimeCount = timeCount;
        faceTrackingData.TypeId    = typeId;
        faceTrackingData.Data      = data;
        using (FileStream fs = new FileStream(_savePath, isFirst ? FileMode.Create : FileMode.Append, FileAccess.Write))
        {
            BinaryFormatter bf = new BinaryFormatter();
            bf.Serialize(fs, faceTrackingData);
        }
    }