/*
------------------------------------------------------------------------------------------------------------
Copyright (c) 2006 YanLiang
CSkeleton对象代表骨骼动画的数据和操作.包括:
骨骼数据信息.
动画(作)信息.
-------------------------------
骨骼数据信息 是构成该骨骼动画所需骨(bone)的集合.如:行走动画(作)中的人体骨的集合.
骨(bone)之间或者独立,或者存在依赖关系. 存在依赖关系的bone, 处于parent地位的bone的运动会影响到它的child bone,
所有直接或间接相连的bone构成了一个骨骼树, 独立的bone则不会,它变换时,不会受其它bone影响, 也不会影响其它bone.
bone是CNode类的实例, CNode具有添加和储存child CNode的方法. 所有的bone储存在m_BonesMap中, 以bone name作索引.
存储完成后, 遍历所有bone完成非独立bone的连接ParentAddChild(CNode* parent, CNode* child), 构成bone树.
所有独立的bone(可将其视为深度为1的树的根部的bone)和位于bone树根部的bone都被视为主骨(root bone), 存储在m_RootBonesList中.
以后的遍历,可视为bone森林的遍历. 所有的根bone都可以在m_RootBonesList中找到. 可以实现多主骨骨胳动画.
----------------------------------
动画(作)信息 是与骨骼有关的Animation的集合.
Animation存储在m_AnimationMap中, 以Animation name为索引.
----------------------------------
特别需要注意的: 在骨骼动画(作)中bone的运动是由 Animation的成员AnimationTrack的方法驱动的,
AnimationTrack计算出某一时刻的变换,并将变换直接赋值给相关联的bone. 该bone应是CSkeleton对象中的某一bone.
须将其连接. 否则动画(作)不会影响骨骼. CSkeleton对象将不会有实际意义.
----------------------------------
CSkeleton对象需要有名称,以便于数据保存,加载及查询检索时使用,大多数情况下CSkeleton名称是键值.
-------------------------------------------------------------------------------------------------------------
*/