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; }
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); } }
private static void loadMainline(XmlNode mainline , Animation animation) { MainLine main = new MainLine (); animation.setMainline(main); loadMainlineKeys(XmlReader.getChildrenByName(mainline, "key"), main); }