summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorSergey Dubitskiy <sergey.dubitskiy@nokia.com>2012-02-02 12:04:28 +1000
committerQt by Nokia <qt-info@nokia.com>2012-02-06 02:54:36 +0100
commit39c00aae6857bf083f4b746f4b8f05b37367b3b9 (patch)
treef67d223d6d503b2fbc116a1d62e7c6c706a4d99f /src/plugins
parentcac19e094ce1a5b92e1dd0a02647fb039fe7d9f0 (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.cpp15
-rw-r--r--src/plugins/sceneformats/assimp/qailoader.h3
-rw-r--r--src/plugins/sceneformats/assimp/qaiscene.cpp6
-rw-r--r--src/plugins/sceneformats/assimp/qaiscene.h2
-rw-r--r--src/plugins/sceneformats/assimp/qaiscenehandler.cpp3
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)
{