Support proper actuator animation

This commit is contained in:
2025-09-27 01:23:16 +03:00
parent 7e06da700a
commit 25280a9cbe
16 changed files with 528 additions and 103 deletions

View File

@@ -561,6 +561,43 @@ void SceneLoader::processNode(pugi::xml_node &XMLNode, SceneNode *pParent)
r = Ogre::any_cast<float>(anyr);
e.set<ECS::EventTrigger>(
{ pNode, Ogre::Vector3(0, 0, 0), h, r, event, pNode });
Ogre::Node::ChildNodeMap children = pNode->getChildren();
if (children.size() == 1)
pNode->getUserObjectBindings().setUserAny(
"target",
static_cast<Ogre::SceneNode *>(children[0]));
else if (children.size() == 0)
pNode->getUserObjectBindings().setUserAny("target",
pNode);
else {
int i;
bool ok = false;
for (i = 0; i < children.size(); i++) {
Ogre::Any nodeName =
children[i]
->getUserObjectBindings()
.getUserAny("name");
if (nodeName.has_value()) {
Ogre::String snodeName =
Ogre::any_cast<Ogre::String>(
nodeName);
if (snodeName == "target") {
pNode->getUserObjectBindings().setUserAny(
"target",
static_cast<Ogre::SceneNode
*>(
children[i]));
ok = true;
break;
}
}
}
if (!ok)
pNode->getUserObjectBindings().setUserAny(
"target",
static_cast<Ogre::SceneNode *>(
children[0]));
}
}
}