Пример #1
0
        private static void loadAnimations(List<XmlNode
			> animations, Entity entity)
        {
            for (int i = 0; i < animations.Count; i++)
            {
                XmlNode a = animations[i];
                Animation animation = new Animation
                    ();
                animation.setId(XmlReader.getInt(a,"id" ));
                animation.setName(XmlReader.getAttribute(a,"name" ));
                animation.setLength(XmlReader.getInt(a,"length" ));
                animation.setLooping(XmlReader.getBool(a,"looping"));
                entity.getAnimation().Add(animation);
                loadMainline(XmlReader.getChildByName(a,"mainline"), animation);
                loadTimelines(XmlReader.getChildrenByName(a,"timeline"), animation);
            }
        }
 //import Com.Brashmonkey.Spriter.converters.SpriterObjectConverter;
 //import AnimationObject;
 //final private SpriterObjectConverter objectConverter = new SpriterObjectConverter();
 public virtual SpriterAnimation buildAnimation(
     Animation animation)
 {
     MainLine mainline = animation.getMainline();
     IList<TimeLine> timeLines =
         animation.getTimeline();
     IList<Key> keyFrames = mainline
         .getKey();
     bonesToTween = new Dictionary<SpriterBone
         , int>();
     objectsToTween = new Dictionary<SpriterObject
         , int>();
     SpriterAnimation spriterAnimation = new SpriterAnimation(animation.getId(), animation.getName(), animation.getLength());
     for (int k = 0; k < keyFrames.Count; k++)
     {
         Key mainlineKey = keyFrames[k];
         IList<SpriterObject> tempObjects
              = new List<SpriterObject
             >();
         IList<SpriterBone> tempBones
              = new List<SpriterBone
             >();
         SpriterKeyFrame frame = new SpriterKeyFrame
             ();
         frame.setTime(mainlineKey.getTime());
         frame.setId(mainlineKey.getId());
         foreach (BoneRef boneRef in mainlineKey.getBoneRef())
         {
             TimeLine timeline = timeLines[boneRef.getTimeline()];
             Key timelineKey = timeline.getKey()[boneRef.getKey()];
             SpriterBone bone = boneMerger.merge(boneRef, timelineKey
                 );
             bone.setName(timeline.getName());
             if (mainlineKey.getTime() != timelineKey.getTime())
             {
                 bonesToTween.Add(bone, k);
             }
             else
             {
                 tempBones.Add(bone);
             }
         }
         //}
         foreach (AnimationObjectRef objectRef in mainlineKey.getObjectRef
             ())
         {
             TimeLine timeline = timeLines[objectRef.getTimeline()];
             Key timelineKey = timeline.getKey()[objectRef.getKey()
                 ];
             SpriterObject @object = objectMerger.merge(objectRef
                 , timelineKey);
             @object.setName(timeline.getName());
             if (mainlineKey.getTime() != timelineKey.getTime())
             {
                 objectsToTween.Add(@object, k);
             }
             else
             {
                 tempObjects.Add(@object);
             }
         }
         //}
         SpriterObject[] objArray = new SpriterObject[tempObjects.Count];
         tempObjects.CopyTo(objArray,0);
         frame.setObjects(objArray);
         SpriterBone[] boneArray = new SpriterBone[tempBones.Count];
         tempBones.CopyTo(boneArray, 0);
         frame.setBones(boneArray);
         spriterAnimation.frames.Add(frame);
     }
     this.tweenBones(spriterAnimation);
     this.tweenObjects(spriterAnimation);
     return spriterAnimation;
 }
Пример #3
0
        private static void loadTimelines(List<XmlNode
			> timelines, Animation animation)
        {
            for (int i = 0; i < timelines.Count; i++)
            {
                TimeLine timeline = new TimeLine
                    ();
                timeline.setId(XmlReader.getInt(timelines[i],"id" ));
                animation.getTimeline().Add(timeline);
                loadTimelineKeys(XmlReader.getChildrenByName(timelines[i],"key"), timeline);
            }
        }
Пример #4
0
        private static void loadMainline(XmlNode mainline
			, Animation animation)
        {
            MainLine main = new MainLine
                ();
            animation.setMainline(main);
            loadMainlineKeys(XmlReader.getChildrenByName(mainline, "key"), main);
        }