Проверьте, работает ли ARSession (ARKit) - PullRequest
0 голосов
/ 02 мая 2018

У меня есть ARSCNView, который может периодически приостанавливать его session в зависимости от ситуации. Есть ли способ проверить, работает ли его session?

Примерно так:

class myARView: ARSCNView {
    ...
    func foo() {

        if(session.running) {
            // do stuff
        }
    }
    ...
}

1 Ответ

0 голосов
/ 02 мая 2018

В данный момент кажется, что нет способа проверить, запущен ли сеанс, с помощью ARSession самого объекта. Однако, реализовав ARSCNViewDelegate, вы можете получать уведомления, когда ваш сеанс прерывается или прерывание заканчивается.

Один из способов достижения вашей цели - установить логическое значение и обновлять его всякий раз, когда вы приостанавливаете / возобновляете сеанс, и проверяйте его значение в ваших функциях.

class ViewController: UIViewController, ARSCNViewDelegate {

    var isSessionRunning: Bool

    func foo() {
        if self.isSessionRunning {
            // do stuff
        }
    }

    func pauseSession() {
        self.sceneView.session.pause()
        self.isSessionRunning = false
    }

    func runSession() {
        let configuration = ARWorldTrackingConfiguration()
        sceneView.session.run(configuration)
        self.isSessionRunning = true
    }

    // ARSCNViewDelegate:
    func sessionWasInterrupted(_ session: ARSession) {
        self.isSessionRunning = false
    }

    func sessionInterruptionEnded(_ session: ARSession) {
        self.isSessionRunning = true
    }
}
...