private static void loadRefs(List <XmlNode > objectRefs, List <XmlNode > boneRefs, com.discobeard.spriter.dom.Key key) { for (int i = 0; i < boneRefs.Count; i++) { XmlNode o = boneRefs[i]; com.discobeard.spriter.dom.BoneRef bone = new com.discobeard.spriter.dom.BoneRef( ); bone.setId(XmlReader.getInt(o, "id")); bone.setKey(XmlReader.getInt(o, "key")); int par = XmlReader.getInt(o, "parent", -1); bone.setParent(par); bone.setTimeline(XmlReader.getInt(o, "timeline")); key.getBoneRef().Add(bone); } for (int i_1 = 0; i_1 < objectRefs.Count; i_1++) { XmlNode o = objectRefs[i_1]; com.discobeard.spriter.dom.AnimationObjectRef @object = new com.discobeard.spriter.dom.AnimationObjectRef (); @object.setId(XmlReader.getInt(o, "id")); @object.setKey(XmlReader.getInt(o, "key")); int par = XmlReader.getInt(o, "parent", -1); @object.setParent(par); @object.setTimeline(XmlReader.getInt(o, "timeline")); @object.setZIndex(XmlReader.getInt(o, "z_index")); key.getObjectRef().Add(@object); } }
private static void loadTimelineKeys(List <XmlNode> keys, com.discobeard.spriter.dom.TimeLine timeline) { for (int i = 0; i < keys.Count; i++) { XmlNode k = keys[i]; XmlNode obj = XmlReader.getChildByName(k, "bone"); com.discobeard.spriter.dom.Key key = new com.discobeard.spriter.dom.Key(); key.setId(XmlReader.getInt(k, "id")); key.setSpin(XmlReader.getInt(k, "spin", 1)); key.setTime(System.Convert.ToInt64(XmlReader.getInt(k, "time", 0))); string name = XmlReader.getAttribute(k.ParentNode, "name"); timeline.setName(name); if (obj != null) { com.discobeard.spriter.dom.Bone bone = new com.discobeard.spriter.dom.Bone(); bone.setAngle(new java.math.BigDecimal(XmlReader.getFloat(obj, "angle", 0f))); bone.setX(new java.math.BigDecimal(XmlReader.getFloat(obj, "x", 0f))); bone.setY(new java.math.BigDecimal(XmlReader.getFloat(obj, "y", 0f))); bone.setScaleX(new java.math.BigDecimal(XmlReader.getFloat(obj, "scale_x", 1f))); bone.setScaleY(new java.math.BigDecimal(XmlReader.getFloat(obj, "scale_y", 1f))); key.setBone(bone); } else { com.discobeard.spriter.dom.AnimationObject @object = new com.discobeard.spriter.dom.AnimationObject (); obj = XmlReader.getChildByName(k, "object"); @object.setAngle(new java.math.BigDecimal(XmlReader.getFloat(obj, "angle", 0f))); @object.setX(new java.math.BigDecimal(XmlReader.getFloat(obj, "x", 0f))); @object.setY(new java.math.BigDecimal(XmlReader.getFloat(obj, "y", 0f))); @object.setScaleX(new java.math.BigDecimal(XmlReader.getFloat(obj, "scale_x", 1f))); @object.setScaleY(new java.math.BigDecimal(XmlReader.getFloat(obj, "scale_y", 1f))); @object.setFolder(XmlReader.getInt(obj, "folder")); @object.setFile(XmlReader.getInt(obj, "file")); com.discobeard.spriter.dom.File f = data.getFolder()[@object.getFolder()].getFile ()[@object.getFile()]; @object.setPivotX(new java.math.BigDecimal(XmlReader.getFloat(obj, "pivot_x", f.getPivotX( )) )); @object.setPivotY(new java.math.BigDecimal(XmlReader.getFloat(obj, "pivot_y", f.getPivotY( )) )); key.getObject().Add(@object); } timeline.getKey().Add(key); } }
private static void loadMainlineKeys(List <XmlNode > keys, com.discobeard.spriter.dom.MainLine main) { for (int i = 0; i < keys.Count; i++) { XmlNode k = keys[i]; com.discobeard.spriter.dom.Key key = new com.discobeard.spriter.dom.Key(); key.setId(XmlReader.getInt(k, "id")); int time = XmlReader.getInt(k, "time", -1); if (time == -1) { key.setTime(0); } else { key.setTime(System.Convert.ToInt64(time)); } main.getKey().Add(key); loadRefs(XmlReader.getChildrenByName(k, "object_ref"), XmlReader.getChildrenByName(k, "bone_ref"), key); } }
//import com.brashmonkey.spriter.converters.SpriterObjectConverter; //import com.discobeard.spriter.dom.AnimationObject; //final private SpriterObjectConverter objectConverter = new SpriterObjectConverter(); public virtual com.brashmonkey.spriter.animation.SpriterAnimation buildAnimation( com.discobeard.spriter.dom.Animation animation) { com.discobeard.spriter.dom.MainLine mainline = animation.getMainline(); System.Collections.Generic.IList <com.discobeard.spriter.dom.TimeLine> timeLines = animation.getTimeline(); System.Collections.Generic.IList <com.discobeard.spriter.dom.Key> keyFrames = mainline .getKey(); bonesToTween = new System.Collections.Generic.Dictionary <com.brashmonkey.spriter.objects.SpriterBone , int>(); objectsToTween = new System.Collections.Generic.Dictionary <com.brashmonkey.spriter.objects.SpriterObject , int>(); com.brashmonkey.spriter.animation.SpriterAnimation spriterAnimation = new com.brashmonkey.spriter.animation.SpriterAnimation (animation.getId(), animation.getName(), animation.getLength()); for (int k = 0; k < keyFrames.Count; k++) { com.discobeard.spriter.dom.Key mainlineKey = keyFrames[k]; System.Collections.Generic.IList <com.brashmonkey.spriter.objects.SpriterObject> tempObjects = new System.Collections.Generic.List <com.brashmonkey.spriter.objects.SpriterObject >(); System.Collections.Generic.IList <com.brashmonkey.spriter.objects.SpriterBone> tempBones = new System.Collections.Generic.List <com.brashmonkey.spriter.objects.SpriterBone >(); com.brashmonkey.spriter.animation.SpriterKeyFrame frame = new com.brashmonkey.spriter.animation.SpriterKeyFrame (); frame.setTime(mainlineKey.getTime()); frame.setId(mainlineKey.getId()); foreach (com.discobeard.spriter.dom.BoneRef boneRef in mainlineKey.getBoneRef()) { com.discobeard.spriter.dom.TimeLine timeline = timeLines[boneRef.getTimeline()]; com.discobeard.spriter.dom.Key timelineKey = timeline.getKey()[boneRef.getKey()]; com.brashmonkey.spriter.objects.SpriterBone bone = boneMerger.merge(boneRef, timelineKey ); bone.setName(timeline.getName()); if (mainlineKey.getTime() != timelineKey.getTime()) { bonesToTween.Add(bone, k); } else { tempBones.Add(bone); } } //} foreach (com.discobeard.spriter.dom.AnimationObjectRef objectRef in mainlineKey.getObjectRef ()) { com.discobeard.spriter.dom.TimeLine timeline = timeLines[objectRef.getTimeline()]; com.discobeard.spriter.dom.Key timelineKey = timeline.getKey()[objectRef.getKey() ]; com.brashmonkey.spriter.objects.SpriterObject @object = objectMerger.merge(objectRef , timelineKey); @object.setName(timeline.getName()); if (mainlineKey.getTime() != timelineKey.getTime()) { objectsToTween.Add(@object, k); } else { tempObjects.Add(@object); } } //} frame.setObjects(Sharpen.Collections.ToArray(tempObjects, new com.brashmonkey.spriter.objects.SpriterObject [tempObjects.Count])); frame.setBones(Sharpen.Collections.ToArray(tempBones, new com.brashmonkey.spriter.objects.SpriterBone [tempBones.Count])); spriterAnimation.frames.Add(frame); } this.tweenBones(spriterAnimation); this.tweenObjects(spriterAnimation); return(spriterAnimation); }
private static void loadTimelineKeys(List<XmlNode> keys, com.discobeard.spriter.dom.TimeLine timeline) { for (int i = 0; i < keys.Count; i++) { XmlNode k = keys[i]; XmlNode obj = XmlReader.getChildByName(k, "bone"); com.discobeard.spriter.dom.Key key = new com.discobeard.spriter.dom.Key(); key.setId(XmlReader.getInt(k,"id" )); key.setSpin(XmlReader.getInt(k,"spin", 1)); key.setTime(System.Convert.ToInt64(XmlReader.getInt(k,"time", 0 ))); string name = XmlReader.getAttribute(k.ParentNode, "name"); timeline.setName(name); if (obj != null) { com.discobeard.spriter.dom.Bone bone = new com.discobeard.spriter.dom.Bone(); bone.setAngle(new java.math.BigDecimal(XmlReader.getFloat(obj,"angle", 0f ))); bone.setX(new java.math.BigDecimal(XmlReader.getFloat(obj,"x", 0f ))); bone.setY(new java.math.BigDecimal(XmlReader.getFloat(obj,"y", 0f ))); bone.setScaleX(new java.math.BigDecimal(XmlReader.getFloat(obj,"scale_x", 1f ))); bone.setScaleY(new java.math.BigDecimal(XmlReader.getFloat(obj,"scale_y", 1f ))); key.setBone(bone); } else { com.discobeard.spriter.dom.AnimationObject @object = new com.discobeard.spriter.dom.AnimationObject (); obj = XmlReader.getChildByName(k, "object"); @object.setAngle(new java.math.BigDecimal(XmlReader.getFloat(obj,"angle", 0f ))); @object.setX(new java.math.BigDecimal(XmlReader.getFloat(obj,"x", 0f ))); @object.setY(new java.math.BigDecimal(XmlReader.getFloat(obj,"y", 0f ))); @object.setScaleX(new java.math.BigDecimal(XmlReader.getFloat(obj,"scale_x", 1f ))); @object.setScaleY(new java.math.BigDecimal(XmlReader.getFloat(obj,"scale_y", 1f ))); @object.setFolder(XmlReader.getInt(obj,"folder" )); @object.setFile(XmlReader.getInt(obj,"file" )); com.discobeard.spriter.dom.File f = data.getFolder()[@object.getFolder()].getFile ()[@object.getFile()]; @object.setPivotX(new java.math.BigDecimal(XmlReader.getFloat(obj,"pivot_x", f.getPivotX( )) )); @object.setPivotY(new java.math.BigDecimal(XmlReader.getFloat(obj,"pivot_y", f.getPivotY( )) )); key.getObject().Add(@object); } timeline.getKey().Add(key); } }
private static void loadMainlineKeys(List<XmlNode > keys, com.discobeard.spriter.dom.MainLine main) { for (int i = 0; i < keys.Count; i++) { XmlNode k = keys[i]; com.discobeard.spriter.dom.Key key = new com.discobeard.spriter.dom.Key(); key.setId(XmlReader.getInt(k,"id" )); int time = XmlReader.getInt(k, "time", -1); if (time == -1) key.setTime(0); else key.setTime(System.Convert.ToInt64(time)); main.getKey().Add(key); loadRefs(XmlReader.getChildrenByName(k, "object_ref"), XmlReader.getChildrenByName(k, "bone_ref"), key); } }