Определить, была ли камера подключена или отсоединена клавиатура для управления на холсте в 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;
}