Настройка ray-caster
Я добавляю QRayCaster к моей корневой сущности и подключаю его сигнал к слоту:
void MySceneClass::createRootEntity()
{
// ...
// Add ray caster to root entity
m_rayCaster = new Qt3DRender::QRayCaster(m_rootEntity);
m_rayCaster->setRunMode(Qt3DRender::QAbstractRayCaster::SingleShot);
m_rootEntity->addComponent(m_rayCaster);
// Set up signal to slot connection
QObject::connect(m_rayCaster, &Qt3DRender::QRayCaster::hitsChanged,
this, &MySceneClass::handleRayCasterHits);
// ...
}
Я регистрирую попадания ray-casterпо слоту:
void MySceneClass::handleRayCasterHits(const Qt3DRender::QAbstractRayCaster::Hits hits)
{
qDebug() << "Ray casting resulted in hits";
}
Включение заклинателя лучей
Я запускаю заклинатель лучей внутри цикла:
void MyOtherClass::triggerRayCaster()
{
for (int i = 0; i < 100; ++i) {
m_mySceneClass->castRay(QVector3D(i, i, 50.0f), // origin
QVector3D(0.0f, 0.0f, -1.0f), // direction
-1 // length (-1 means infinite)
);
}
}
Проблема
Проблема заключается в том, что во всех тестах только последняя итерация цикла триггера внутри triggerRayCaster()
захватывается и регистрируется слотом внутри handleRayCasterHits()
.
Не понимаю, почему.Я что-то упустил?