예제 #1
0
    public void Init(UgData.ArmatureData data)
    {
        this.name      = data.name;
        this.frameRate = data.frameRate;
        this.type      = data.type;


        for (int i = 0; i < data.boneDatas.Length; i++)
        {
            UgData.BoneData boneData = data.boneDatas[i];
            UgBone          bone     = new UgBone();
            //if (boneData.parent != null)
            //{
            //    UgBone parent;
            //    bones.TryGetValue(boneData.parent, out parent);
            //    if (null != parent)
            //    {
            //        parent.AddChild(bone);
            //    }
            //}
            //else
            //{
            //    AddChild(bone);
            //    //bone.parent = this;
            //}
            bone.Init(boneData);
            bones.Add(boneData.name, bone);
            bonesList.Add(bone);
        }

        for (int i = 0; i < data.slotDatas.Length; i++)
        {
            UgData.SlotData slotData = data.slotDatas[i];
            UgSlot          slot     = new UgSlot();
            slot.Init(slotData);
            slots.Add(slot.name, slot);
            //UgBone parent;
            //bones.TryGetValue(slotData.parent, out parent);
            //parent.AddChild(slot);
            slotList.Add(slot);
        }

        for (int i = 0; i < data.displayDatas.Length; i++)
        {
            UgData.DisplayData disData = data.displayDatas[i];
            UgSprite           sprite  = new UgSprite();
            sprite.Init(disData);
            sprites.Add(disData.name, sprite);
            //UgSlot parent;
            //slots.TryGetValue(disData.parent, out parent);
            //parent.AddChild(sprite);
            spriteList.Add(sprite);
        }

        for (int i = 0; i < data.animations.Length; i++)
        {
            UgData.AnimationData animData = data.animations[i];
            animations.Add(animData.name, animData);
        }

        foreach (var item in bones)
        {
            UgTrans trans = item.Value;
            if (trans.parentName != "")
            {
                bones[trans.parentName].AddChild(trans);
            }
            else
            {
                this.AddChild(trans);
            }
        }

        foreach (var item in slots)
        {
            UgTrans trans = item.Value;
            bones[trans.parentName].AddChild(trans);
        }

        foreach (var item in sprites)
        {
            UgTrans trans = item.Value;
            slots[trans.parentName].AddChild(trans);
        }
        updateMatrix();
    }
예제 #2
0
 public void AddChild(UgTrans trans)
 {
     trans.parent = this;
     children.Add(trans);
 }