1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-19 15:09:43 +00:00

Add methods to get a node's local and full transform as a 4x4 matrix

This commit is contained in:
Chris Robinson 2012-07-15 15:23:49 -07:00
parent 441a5c2da2
commit 61f32eca77
2 changed files with 19 additions and 0 deletions

View file

@ -210,3 +210,17 @@ void NiSkinInstance::post(NIFFile *nif)
bones[i]->makeBone(i, data->bones[i]);
}
}
Ogre::Matrix4 Node::getLocalTransform()
{
Ogre::Matrix4 mat4;
mat4.makeTransform(trafo.pos, Ogre::Vector3(trafo.scale), Ogre::Quaternion(trafo.rotation));
return mat4;
}
Ogre::Matrix4 Node::getWorldTransform()
{
if(parent != NULL)
return getLocalTransform() * parent->getWorldTransform();
return getLocalTransform();
}

View file

@ -24,6 +24,8 @@
#ifndef _NIF_NODE_H_
#define _NIF_NODE_H_
#include <OgreMatrix4.h>
#include "controlled.hpp"
#include "data.hpp"
#include "property.hpp"
@ -108,6 +110,9 @@ public:
boneTrafo = &bi.trafo;
boneIndex = ind;
}
Ogre::Matrix4 getLocalTransform();
Ogre::Matrix4 getWorldTransform();
};
struct NiNode : Node