Support proper actuator animation
This commit is contained in:
@@ -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]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user