Определить, была ли камера подключена или отсоединена клавиатура для управления на холсте в Babylonjs

У меня есть программа в BabylonJS, которая имеет несколько камер (бесплатная камера, сцена, следите, а иногда и дуговая камера). Я устанавливаю активную камеру (камеры) и прикрепляю управление (движение на основе клавиатуры), используя следующее:

scene.activeCameras[0] = camera;
camera.attachControl(canvas);

Бывают случаи, когда я вызываю html-формы в своей программе и позволяю пользователю печатать форму (или временно переключаю элементы управления на пользовательские элементы управления keydown / keyup), поэтому я использую следующее для отсоединения элемента управления (чтобы набранные клавиши были не перехвачен холст сцены)

for (var i = 0;i < scene.activeCameras.length;i++) {
    scene.activeCameras[i].detachControl(canvas);
}

Затем я присоединяюсь снова, когда закончите. Это прекрасно работает, но бывают случаи, когда мне нужно проверить, подключен элемент управления или нет.

В настоящее время я установил внешнюю переменную (но я должен разместить ее во многих местах в моем коде), но мне было интересно , есть ли функция в BabylonJS, которая сообщает вам имя подключенной контрольной камеры или логическое значение true / false, если элемент управления камерой в данный момент используется прилагается?

2 ответа

Решение

Вы можете протестировать scene.activeCameras[i].inputs.attachedElement

Используя ответ #DavidCatuhe, я смог написать эту функцию, которую другие могли бы найти полезной. Спасибо!

function iscamaraattached() {
    var attached = false;
    if (scene.activeCameras != null) {
        for (var i=0;i < scene.activeCameras.length;i++) {
            if (scene.activeCameras[i].inputs.attachedElement != null) {
console.log("i=" + i + " - " + scene.activeCameras[i].inputs.attachedElement.id);
                attached = true;
            }
        }
    }
    return attached;
}
Другие вопросы по тегам