Получить rootNode узла - PullRequest
       7

Получить rootNode узла

0 голосов
/ 17 сентября 2018

В проекте ARKit, когда пользователь касается экрана, я хочу получить rootNode элемента, с которым пользователь хочет взаимодействовать.

Тест Gesture & Hit

func screenTapped(_ sender: UITapGestureRecognizer) {
    let hitTestResult = sceneView.hitTest(touchLocation)
    if let result = hitTestResult.first {
        guard let rootNode = getRoot(for: result.node) else {return}
        ...
    }

Рекурсивная функция для получения корневого узла

func getRoot(for node: SCNNode) -> SCNNode? {
    if let node = node.parent {
        return getRoot(for: node)
    }
    else {
        return node
    }
}

Но мне кажется странным, что Swift не предлагает что-то по умолчанию, предлагая рекурсивные методы для дочерних узлов.

  • Есть ли альтернативный / лучший подход к этому?
  • Должен ли я написать эту функцию как расширение для SCNNode?

1 Ответ

0 голосов
/ 19 сентября 2018

Разве это не эквивалентно sceneView.scene.rootNode?

...