Как должно вести себя удаление узла glTF? - PullRequest
0 голосов
/ 07 января 2020

Я работаю над Rest Api, который предоставляет схему glTF 3d-сцены. Хотя GET и POST кажутся простыми, я не могу решить, как обрабатывать операции DELETE.

Удаление узла не так просто, как удаление всех ссылок на его методы доступа ID, bufferViews и буферы. Кроме того, ссылки последующих узлов также нуждаются в обновлении. Кроме того, необходимо также решить, как обращаться с дочерними элементами этого узла; Рассмотрим следующий пример:

           root
          |    | 
        n1     n2
       |  |    |
      n3  n4   n5

Когда n1 удаляется, что должно произойти с его дочерними элементами (n3, n4)? Одна идея состоит в том, чтобы выполнить каскадное удаление и, следовательно, удалить n3 и n4.

              root
               | 
               n2
               |
               n5

Другая идея - оставить n3 и n4 без изменений, но добавить их в список дочерних элементов родительского элемента n1 (здесь: root) .

          root
        |  |    | 
      n3   n4   n2
                |
               n5

Наконец, я не смог добавить n3 и n4 ни к одному из родителей, что означает, что они будут добавлены вверху рядом с root. С одной стороны, это разрушило бы иерархию узлов. С другой стороны, мы уже настроены на иерархию сцены, поэтому, где мы рисуем линию?

          n3 n4 root
                 | 
                 n2
                 |
                n5

Поскольку перевод родительского узла также влияет на детей, я склонен следовать тому же поведению для Удалить операцию. Следовательно, я бы соответствующим образом задокументировал API, чтобы разработчики знали об этом (потенциально неожиданном) побочном эффекте.

...