Как изменить свойство Entity при наведении на него курсора мыши в Ogre3d? ⇐ C++
-
Гость
Как изменить свойство Entity при наведении на него курсора мыши в Ogre3d?
Я загрузил базовую модель куба при запуске приложения:
Entity* Cube = scnMgr->createEntity("box.glb"); CubeNode = scnMgr->getRootSceneNode()->createChildSceneNode(); CubeNode->attachObject(куб); CubeNode->setPosition(Vector3(0.0f, 0.0f, 0.0f)); Затем в методе InputListener mouseMoved(evt):
int x = evt.x; int y = evt.y; // получаем луч из позиции мыши Ogre::Camera* camera = scnMgr->getCamera("MainCamera"); Ogre::Ray ray = camera->getCameraToViewportRay(x / float(getRenderWindow()->getWidth()), y / float(getRenderWindow()->getHeight())); // Выполняем приведение лучей, чтобы проверить, находится ли курсор мыши над объектом Ogre::RaySceneQuery* query = scnMgr->createRayQuery(ray); запрос->setSortByDistance(истина); // Выполняем запрос Ogre::RaySceneQueryResult& queryResult = query->execute(); если (!queryResult.empty()) { // Курсор мыши находится над объектом Ogre::RaySceneQueryResult::iterator it = queryResult.begin(); Ogre::MovableObject* object = it->movable; // Изменяем цвет наведенного объекта если (объект) { если (hoveredNode) { // Сбрасываем цвет предыдущего объекта Объект MovableObject* = hoveredNode->getAttachedObject(0); Ogre::Entity* hoveredEntity = Dynamic_cast(hoveredNode->getAttachedObject(0)); если (hoveredEntity) { ChangeColor(hoveredEntity, ColourValue(1.0f,0.0f,0.0f)); //ЦВЕТ НЕ МЕНЯЕТСЯ printf("Здесь измените цвет"); } } hoveredNode = объект->getParentSceneNode(); //printf("здесь измените цвет"); // Изменяем цвет } } еще { // Ни один объект не наведен если (hoveredNode) { //printf("здесь измените цвет"); // Сбрасываем цвет предыдущего объекта hoveredNode = nullptr; } } Обнаружено наведение мыши, но цвет объекта не меняется, и я не могу понять, почему Пожалуйста, сообщите
Я загрузил базовую модель куба при запуске приложения:
Entity* Cube = scnMgr->createEntity("box.glb"); CubeNode = scnMgr->getRootSceneNode()->createChildSceneNode(); CubeNode->attachObject(куб); CubeNode->setPosition(Vector3(0.0f, 0.0f, 0.0f)); Затем в методе InputListener mouseMoved(evt):
int x = evt.x; int y = evt.y; // получаем луч из позиции мыши Ogre::Camera* camera = scnMgr->getCamera("MainCamera"); Ogre::Ray ray = camera->getCameraToViewportRay(x / float(getRenderWindow()->getWidth()), y / float(getRenderWindow()->getHeight())); // Выполняем приведение лучей, чтобы проверить, находится ли курсор мыши над объектом Ogre::RaySceneQuery* query = scnMgr->createRayQuery(ray); запрос->setSortByDistance(истина); // Выполняем запрос Ogre::RaySceneQueryResult& queryResult = query->execute(); если (!queryResult.empty()) { // Курсор мыши находится над объектом Ogre::RaySceneQueryResult::iterator it = queryResult.begin(); Ogre::MovableObject* object = it->movable; // Изменяем цвет наведенного объекта если (объект) { если (hoveredNode) { // Сбрасываем цвет предыдущего объекта Объект MovableObject* = hoveredNode->getAttachedObject(0); Ogre::Entity* hoveredEntity = Dynamic_cast(hoveredNode->getAttachedObject(0)); если (hoveredEntity) { ChangeColor(hoveredEntity, ColourValue(1.0f,0.0f,0.0f)); //ЦВЕТ НЕ МЕНЯЕТСЯ printf("Здесь измените цвет"); } } hoveredNode = объект->getParentSceneNode(); //printf("здесь измените цвет"); // Изменяем цвет } } еще { // Ни один объект не наведен если (hoveredNode) { //printf("здесь измените цвет"); // Сбрасываем цвет предыдущего объекта hoveredNode = nullptr; } } Обнаружено наведение мыши, но цвет объекта не меняется, и я не могу понять, почему Пожалуйста, сообщите
Мобильная версия