示例#1
0
    protected override AirVRMessage ParseMessageImpl(IntPtr source, string message)
    {
        AirVRServerMessage result = JsonUtility.FromJson <AirVRServerMessage>(message);

        result.source = source;

        return(result);
    }
    public static AirVRServerMessage Parse(IntPtr source, string message)
    {
        AirVRServerMessage result = JsonUtility.FromJson <AirVRServerMessage>(message);

        Assert.IsFalse(string.IsNullOrEmpty(result.Type));
        result.source = source;
        result.postParse();
        return(result);
    }
    private void onAirVRPlayerUserDataReceived(int playerID, AirVRServerMessage message)
    {
        AirVRCameraRig cameraRig = _cameraRigList.GetBoundCameraRig(playerID);

        if (cameraRig != null && Delegate != null)
        {
            Delegate.AirVRCameraRigUserDataReceived(cameraRig, message.Data_Decoded);
        }
    }
    private void onAirVRPlayerDeactivated(int playerID, AirVRServerMessage message)
    {
        AirVRCameraRig cameraRig = _cameraRigList.GetBoundCameraRig(playerID);

        if (cameraRig != null && Delegate != null)
        {
            Delegate.AirVRCameraRigDeactivated(cameraRig);
        }

        updateApplicationTargetFrameRate();
    }
示例#5
0
    private void onAirVRMediaStreamStopped(AirVRServerMessage message)
    {
        onStopRender();
        disableCameras();

        _mediaStreamJustStopped = true; // StopCoroutine(_CallPluginEndOfFrame) executes the routine one more in the next frame after the call.
                                        // so use a flag to completely stop the routine.

        GL.IssuePluginEvent(onairvr_ResetStreams_RenderThread_Func(), AirVRServerPlugin.RenderEventArg((uint)playerID));

        inputStream.Stop();
    }
示例#6
0
    private void onAirVRMediaStreamInitialized(AirVRServerMessage message)
    {
        Assert.IsNull(mediaStream);

        initializeCamerasForMediaStream();
        onairvr_SendCameraClipPlanes(playerID, cameras[0].nearClipPlane, cameras[0].farClipPlane);

        mediaStream = new AirVRServerMediaStream(playerID, _config, cameras.Length);
        GL.IssuePluginEvent(onairvr_InitStreams_RenderThread_Func(), AirVRServerPlugin.RenderEventArg((uint)playerID));

        inputStream.Init();
    }
    // handle AirVRMessages
    private void onAirVRMessageReceived(AirVRMessage message)
    {
        AirVRServerMessage serverMessage = message as AirVRServerMessage;
        int playerID = serverMessage.source.ToInt32();

        if (serverMessage.IsSessionEvent())
        {
            if (serverMessage.Name.Equals(AirVRServerMessage.NameConnected))
            {
                onAirVRSessionConnected(playerID, serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameDisconnected))
            {
                onAirVRSessionDisconnected(playerID, serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameProfilerFrame))
            {
                onAirVRProfilerFrameReceived(playerID, serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameProfilerReport))
            {
                onAirVRProfilerReportReceived(playerID, serverMessage);
            }
        }
        else if (serverMessage.IsPlayerEvent())
        {
            if (serverMessage.Name.Equals(AirVRServerMessage.NameCreated))
            {
                onAirVRPlayerCreated(playerID, serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameActivated))
            {
                onAirVRPlayerActivated(playerID, serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameDeactivated))
            {
                onAirVRPlayerDeactivated(playerID, serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameDestroyed))
            {
                onAirVRPlayerDestroyed(playerID, serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameShowCopyright))
            {
                onAirVRPlayerShowCopyright(playerID, serverMessage);
            }
        }
        else if (message.Type.Equals(AirVRMessage.TypeUserData))
        {
            onAirVRPlayerUserDataReceived(playerID, serverMessage);
        }
    }
    private void onAirVRPlayerCreated(int playerID, AirVRServerMessage message)
    {
        AirVRCameraRig selected = notifyCameraRigWillBeBound(playerID);

        if (selected != null)
        {
            _cameraRigList.RetainCameraRig(selected);
            selected.BindPlayer(playerID);

            onairvr_AcceptPlayer(playerID);
        }
        else
        {
            onairvr_Disconnect(playerID);
        }
    }
示例#9
0
    private void onAirVRMediaStreamCleanedUp(AirVRServerMessage message)
    {
        Assert.IsTrue(_mediaStreamJustStopped);
        Assert.IsNotNull(mediaStream);

        inputStream.Cleanup();

        GL.IssuePluginEvent(onairvr_CleanupStreams_RenderThread_Func(), AirVRServerPlugin.RenderEventArg((uint)playerID));

        mediaStream.Destroy();
        mediaStream = null;

        foreach (Camera cam in cameras)
        {
            cam.targetTexture = null;
        }
    }
示例#10
0
    private void onAirVRMessageReceived(AirVRMessage message)
    {
        AirVRServerMessage serverMessage = message as AirVRServerMessage;
        int srcPlayerID = serverMessage.source.ToInt32();

        if (srcPlayerID != playerID)
        {
            return;
        }

        if (serverMessage.IsMediaStreamEvent())
        {
            if (serverMessage.Name.Equals(AirVRServerMessage.NameInitialized))
            {
                onAirVRMediaStreamInitialized(serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameStarted))
            {
                onAirVRMediaStreamStarted(serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameEncodeVideoFrame))
            {
                onAirVRMediaStreamEncodeVideoFrame(serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameStopped))
            {
                onAirVRMediaStreamStopped(serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameCleanupUp))
            {
                onAirVRMediaStreamCleanedUp(serverMessage);
            }
        }
        else if (serverMessage.IsInputStreamEvent())
        {
            if (serverMessage.Name.Equals(AirVRServerMessage.NameRemoteInputDeviceRegistered))
            {
                onAirVRInputStreamRemoteInputDeviceRegistered(serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameRemoteInputDeviceUnregistered))
            {
                onAirVRInputStreamRemoteInputDeviceUnregistered(serverMessage);
            }
        }
    }
    private void onAirVRPlayerDestroyed(int playerID, AirVRServerMessage message)
    {
        AirVRCameraRig unboundCameraRig = _cameraRigList.GetBoundCameraRig(playerID);

        if (unboundCameraRig != null)
        {
            if (unboundCameraRig.isStreaming && Delegate != null)
            {
                Delegate.AirVRCameraRigDeactivated(unboundCameraRig);
            }

            unboundCameraRig.UnbindPlayer();
            _cameraRigList.ReleaseCameraRig(unboundCameraRig);

            if (Delegate != null)
            {
                Delegate.AirVRCameraRigHasBeenUnbound(unboundCameraRig);
            }
        }
    }
    private void onAirVRMessageReceived(AirVRMessage message)
    {
        AirVRServerMessage serverMessage = message as AirVRServerMessage;
        int srcPlayerID = serverMessage.source.ToInt32();

        if (srcPlayerID != playerID)
        {
            return;
        }

        if (serverMessage.IsMediaStreamEvent())
        {
            if (serverMessage.Name.Equals(AirVRServerMessage.NameInitialized))
            {
                onAirVRMediaStreamInitialized(serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameStarted))
            {
                onAirVRMediaStreamStarted(serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameEncodeVideoFrame))
            {
                onAirVRMediaStreamEncodeVideoFrame(serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameSetCameraProjection))
            {
                onAirVRMediaStreamSetCameraProjection(serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameStopped))
            {
                onAirVRMediaStreamStopped(serverMessage);
            }
            else if (serverMessage.Name.Equals(AirVRServerMessage.NameCleanupUp))
            {
                onAirVRMediaStreamCleanedUp(serverMessage);
            }
        }
    }
示例#13
0
 private void onAirVRMediaStreamEncodeVideoFrame(AirVRServerMessage message)
 {
     _encodeVideoFrameRequested = true;
 }
示例#14
0
 private void onAirVRMediaStreamStarted(AirVRServerMessage message)
 {
     startToRenderCamerasForMediaStream();
     inputStream.Start();
 }
 private void onAirVRProfilerFrameReceived(int playerID, AirVRServerMessage message)
 {
     //Debug.Log(string.Format("profiler frame: latency: overall {0:0.000} = network {1:0.000} + decode {2:0.000}",
     //                        message.OverallLatency, message.NetworkLatency, message.DecodeLatency));
 }
 private void onAirVRProfilerReportReceived(int playerID, AirVRServerMessage message)
 {
     Debug.Log(string.Format("profiler report: fps {0:0.0} ({1}/{2:0.000}), avg latency: overall {3:0.000} = network {4:0.000} + decode {5:0.000}",
                             message.FrameCount / message.Duration, message.FrameCount, message.Duration,
                             message.AvgOverallLatency, message.AvgNetworkLatency, message.AvgDecodeLatency));
 }
 private void onAirVRMediaStreamSetCameraProjection(AirVRServerMessage message)
 {
     updateCameraProjection(_config, message.CameraProjection);
 }
示例#18
0
    private void onAirVRInputStreamRemoteInputDeviceRegistered(AirVRServerMessage message)
    {
        Assert.IsTrue(string.IsNullOrEmpty(message.DeviceName) == false);

        inputStream.HandleRemoteInputDeviceRegistered(message.DeviceName, (byte)message.DeviceID, message.Arguments);
    }
 private void onAirVRPlayerShowCopyright(int playerID, AirVRServerMessage message)
 {
     Debug.Log("(C) 2016-2018 onAirVR. All right reserved.");
 }
 private void onAirVRSessionDisconnected(int playerID, AirVRServerMessage message)
 {
     AirVRServer.NotifyClientDisconnected(playerID);
 }
示例#21
0
 private void onAirVRInputStreamRemoteInputDeviceUnregistered(AirVRServerMessage message)
 {
     inputStream.HandleRemoteInputDeviceUnregistered((byte)message.DeviceID);
 }
示例#22
0
 protected override AirVRMessage ParseMessageImpl(IntPtr source, string message)
 {
     return(AirVRServerMessage.Parse(source, message));
 }