SetNodeTree(ai_scene, geom);
geom::NodeMap nodemap;
- AssimpUtil::CreateBoneTree(nodemap, &geom->m_Nodes.m_RootNodes[0]);
+ AssimpUtil::CreateBoneTree(nodemap, &geom->m_GNodes.GetRoot());
SetBoneNodeRef(nodemap, geom);
void AssimpReader::SetNodeTree(const aiScene* ai_scene, geom::GeomObject* geom)
{
- geom->m_Nodes.Clear();
- geom->m_Nodes.m_RootNodes.resize(1);
- SceneNode* n = &geom->m_Nodes.m_RootNodes[0];
+ GeoNodeTree& nodes = geom->m_GNodes;
+ nodes.ResetRoot();
+
const aiNode* root = ai_scene->mRootNode;
+ SceneNode* n = &nodes.GetRoot();
+
SetNodeTreeSub(ai_scene, root, geom, n);
}
void AssimpReader::LoadAnimation(geom::NodeMap& nodemap, const aiScene* ai_scene, geom::GeomObject* geom, bool Interpolate)
{
- if (geom->m_Nodes.m_RootNodes.empty())
+ if (!geom->m_GNodes.HasRoot())
return;
if (ai_scene->mNumAnimations <= 0)
m_TextureLib.Clear();
- m_Nodes.Clear();
+ m_GNodes.Clear();
}
const lm::range3f GeomObject::GetGeomBBox(bool for_ini) const
m.m_Mesh.m_Verts = m.m_Bones.m_SrcVertPos;
}
- for (SceneNode& n : m_Nodes.m_RootNodes)
+ if (m_GNodes.HasRoot())
{
+ SceneNode& n = m_GNodes.GetRoot();
ApplyTrans(n, n.GetFrameTransform(a_frame), a_frame);
}
bool m_VertexOnlyMode;
boost::ptr_vector<MeshBuf> m_MeshAry;
- GeoNodeTree m_Nodes;
+ GeoNodeTree m_GNodes;
TextureLib m_TextureLib;
};
int kf = 0;
for (const GeomObject& obj : m_Objects)
{
- kf = (std::max)(kf, obj.m_Nodes.GetKeyframeMax());
+ kf = (std::max)(kf, obj.m_GNodes.GetKeyframeMax());
}
return kf;
void TraceNodeTree(void);
void TraceNodeTreeN(SceneNode* bn);
-public:
+ bool HasRoot(void) const
+ {
+ return !m_RootNodes.empty();
+ }
+
+ SceneNode& GetRoot(void)
+ {
+ return m_RootNodes.front();
+ }
+ const SceneNode& GetRoot(void) const
+ {
+ return m_RootNodes.front();
+ }
+
+ void ResetRoot(void)
+ {
+ m_RootNodes.clear();
+ m_RootNodes.resize(1);
+ }
+
+private:
+ // \8b\8c\8eÀ\91\95\82Å\95¡\90\94\97v\91f\82ª\82 \82é\89Â\94\\90«\82ª\82 \82Á\82½\82ª\8c»\8fó\82Å\82Í0or1
boost::ptr_vector<SceneNode> m_RootNodes;
};
for (GeomObject& g : m_Scene->m_Objects)
{
- for (SceneNode& n : g.m_Nodes.m_RootNodes)
+ if (g.m_GNodes.HasRoot())
{
+ SceneNode& n = g.m_GNodes.GetRoot();
DrawBone(&n, af, lm::matrix4f::get_identity());
}
}