diff options
author | Sergey Dubitskiy <sergey.dubitskiy@nokia.com> | 2012-02-02 12:04:28 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-06 02:54:36 +0100 |
commit | 39c00aae6857bf083f4b746f4b8f05b37367b3b9 (patch) | |
tree | f67d223d6d503b2fbc116a1d62e7c6c706a4d99f /src/plugins | |
parent | cac19e094ce1a5b92e1dd0a02647fb039fe7d9f0 (diff) |
Added a declarative animation property; and example application.
Task-number: QTBUG-22194
Change-Id: I3a16c3220decd6328ad85504cab5fa259feda982
Reviewed-by: Sarah Jane Smith <sarah.j.smith@nokia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/sceneformats/assimp/qailoader.cpp | 15 | ||||
-rw-r--r-- | src/plugins/sceneformats/assimp/qailoader.h | 3 | ||||
-rw-r--r-- | src/plugins/sceneformats/assimp/qaiscene.cpp | 6 | ||||
-rw-r--r-- | src/plugins/sceneformats/assimp/qaiscene.h | 2 | ||||
-rw-r--r-- | src/plugins/sceneformats/assimp/qaiscenehandler.cpp | 3 |
5 files changed, 29 insertions, 0 deletions
diff --git a/src/plugins/sceneformats/assimp/qailoader.cpp b/src/plugins/sceneformats/assimp/qailoader.cpp index fcb9b7db5..d8882c512 100644 --- a/src/plugins/sceneformats/assimp/qailoader.cpp +++ b/src/plugins/sceneformats/assimp/qailoader.cpp @@ -308,6 +308,21 @@ QGLSceneNode *QAiLoader::loadMeshes() } /*! + TODO: docs + */ +QList<QGLSceneAnimation *> QAiLoader::loadAnimations() +{ + Q_ASSERT(m_scene); + m_animations.clear(); + + for (unsigned int i=0; i<m_scene->mNumAnimations; ++i) { + m_animations.append( new QGLSceneAnimation( QString(m_scene->mAnimations[i]->mName.data), 0 ) ); + } + + return m_animations; +} + +/*! \internal Search for a resource based on the given \a path. diff --git a/src/plugins/sceneformats/assimp/qailoader.h b/src/plugins/sceneformats/assimp/qailoader.h index b8cfe79a0..ed80da3e2 100644 --- a/src/plugins/sceneformats/assimp/qailoader.h +++ b/src/plugins/sceneformats/assimp/qailoader.h @@ -57,6 +57,7 @@ QT_BEGIN_NAMESPACE class QAiMesh; class QGLSceneNode; class QAiSceneHandler; +class QGLSceneAnimation; class QGLMaterial; class QAiLoader @@ -65,6 +66,7 @@ public: QAiLoader(const aiScene *scene, QAiSceneHandler* handler); ~QAiLoader(); QGLSceneNode *loadMeshes(); + QList<QGLSceneAnimation *> loadAnimations(); private: void loadMesh(aiMesh *); @@ -84,6 +86,7 @@ private: QList<QGLSceneNode *> m_meshes; QMap<aiNode *, QGLSceneNode *> m_nodeMap; QMap<QGLSceneNode *, int> m_refCounts; + QList<QGLSceneAnimation *> m_animations; bool m_hasTextures; bool m_hasLitMaterials; QGLBuilder m_builder; diff --git a/src/plugins/sceneformats/assimp/qaiscene.cpp b/src/plugins/sceneformats/assimp/qaiscene.cpp index 7bd7639d6..cdf1ac49f 100644 --- a/src/plugins/sceneformats/assimp/qaiscene.cpp +++ b/src/plugins/sceneformats/assimp/qaiscene.cpp @@ -69,6 +69,7 @@ QAiScene::QAiScene(const aiScene *scene, QAiSceneHandler *handler) Q_ASSERT(scene); QAiLoader loader(scene, handler); m_root = loader.loadMeshes(); + m_animations = loader.loadAnimations(); } /*! @@ -109,4 +110,9 @@ QGLSceneNode *QAiScene::mainNode() const return m_root; } +QList<QGLSceneAnimation *> QAiScene::animations() const +{ + return m_animations; +} + QT_END_NAMESPACE diff --git a/src/plugins/sceneformats/assimp/qaiscene.h b/src/plugins/sceneformats/assimp/qaiscene.h index 4a2cc61d8..6707ddefa 100644 --- a/src/plugins/sceneformats/assimp/qaiscene.h +++ b/src/plugins/sceneformats/assimp/qaiscene.h @@ -66,8 +66,10 @@ public: QList<QObject *> objects() const; QGLSceneNode *mainNode() const; + QList<QGLSceneAnimation *> animations() const; private: QGLSceneNode *m_root; + QList<QGLSceneAnimation *> m_animations; }; QT_END_NAMESPACE diff --git a/src/plugins/sceneformats/assimp/qaiscenehandler.cpp b/src/plugins/sceneformats/assimp/qaiscenehandler.cpp index 8c1d9c6dc..ff16ee1b5 100644 --- a/src/plugins/sceneformats/assimp/qaiscenehandler.cpp +++ b/src/plugins/sceneformats/assimp/qaiscenehandler.cpp @@ -324,6 +324,9 @@ void DumpMesh(int i, const aiMesh* pMesh, const aiScene* pScene) LogPrint(" Mesh %d",i); LogPrint(" name = '%s'",pMesh->mName.data); LogPrint(" has bones: %s (%d)",pMesh->HasBones()?"YES":"no ",pMesh->mNumBones); + for (unsigned int i=0; i<pMesh->mNumBones; ++i) { + LogPrint(" bone(%02d): '%s'", i, pMesh->mBones[i]->mName.data); + } } void DumpNodeRecursive(int level, const aiNode* pNode, const aiScene* pScene) { |