summaryrefslogtreecommitdiffstats
path: root/src/render/geometry/joint_p.h
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2017-08-11 10:16:07 +0100
committerSean Harmer <sean.harmer@kdab.com>2017-08-16 13:19:35 +0000
commit2302a59c0f8eab97310ff25a7bff545fd56162c4 (patch)
tree1a528aa82d70e589189853d30a9745e4f952044d /src/render/geometry/joint_p.h
parentebd28adaaadd82395e82281eeee21fef3a0414db (diff)
Trigger a skeleton re-load when an inverse bind matrix changes
This is a rare operation so should not be a problem to do a full skeleton rebuild when it happens. Change-Id: I00c3293dfff91d99bda762051714cb9eaae2c40f Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/geometry/joint_p.h')
-rw-r--r--src/render/geometry/joint_p.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/render/geometry/joint_p.h b/src/render/geometry/joint_p.h
index c5b6737a1..e144ac489 100644
--- a/src/render/geometry/joint_p.h
+++ b/src/render/geometry/joint_p.h
@@ -61,6 +61,7 @@ namespace Qt3DRender {
namespace Render {
class JointManager;
+class SkeletonManager;
class Q_AUTOTEST_EXPORT Joint : public BackendNode
{
@@ -85,6 +86,9 @@ public:
void setJointManager(JointManager *jointManager) { m_jointManager = jointManager; }
JointManager *jointManager() const { return m_jointManager; }
+ void setSkeletonManager(SkeletonManager *skeletonManager) { m_skeletonManager = skeletonManager; }
+ SkeletonManager *skeletonManager() const { return m_skeletonManager; }
+
private:
void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) final;
@@ -93,13 +97,16 @@ private:
QVector<Qt3DCore::QNodeId> m_childJointIds;
QString m_name;
JointManager *m_jointManager;
+ SkeletonManager *m_skeletonManager;
HSkeleton m_owningSkeleton;
};
class JointFunctor : public Qt3DCore::QBackendNodeMapper
{
public:
- explicit JointFunctor(AbstractRenderer *renderer, JointManager *jointManager);
+ explicit JointFunctor(AbstractRenderer *renderer,
+ JointManager *jointManager,
+ SkeletonManager *skeletonManager);
Qt3DCore::QBackendNode *create(const Qt3DCore::QNodeCreatedChangeBasePtr &change) const final;
Qt3DCore::QBackendNode *get(Qt3DCore::QNodeId id) const final;
void destroy(Qt3DCore::QNodeId id) const final;
@@ -107,6 +114,7 @@ public:
private:
AbstractRenderer *m_renderer;
JointManager *m_jointManager;
+ SkeletonManager *m_skeletonManager;
};
} // namespace Render