private static ArmatureData parseArmatureData(Dictionary<String, Object> armatureObject, SkeletonData data, uint frameRate) { ArmatureData armatureData = new ArmatureData(); armatureData.Name = armatureObject[ConstValues.A_NAME] as String; //Logger.Log("ObjectDataParser::: " + armatureObject[ConstValues.BONE].ToString()); foreach(Dictionary<String, Object> boneObject in armatureObject[ConstValues.BONE] as List<object>) { armatureData.AddBoneData(parseBoneData(boneObject as Dictionary<string, object>)); } foreach(Dictionary<String, Object> skinObject in armatureObject[ConstValues.SKIN] as List<object>) { armatureData.AddSkinData(parseSkinData(skinObject as Dictionary<string, object>, data)); } DBDataUtil.TransformArmatureData(armatureData); armatureData.SortBoneDataList(); foreach(Dictionary<String, Object> animationObject in armatureObject[ConstValues.ANIMATION] as List<object>) { armatureData.AddAnimationData(parseAnimationData(animationObject as Dictionary<string, object>, armatureData, frameRate)); } return armatureData; }
private static ArmatureData parseArmatureData(Dictionary <String, Object> armatureObject, SkeletonData data, uint frameRate) { ArmatureData armatureData = new ArmatureData(); armatureData.Name = armatureObject[ConstValues.A_NAME] as String; //Logger.Log("ObjectDataParser::: " + armatureObject[ConstValues.BONE].ToString()); foreach (Dictionary <String, Object> boneObject in armatureObject[ConstValues.BONE] as List <object> ) { armatureData.AddBoneData(parseBoneData(boneObject as Dictionary <string, object>)); } foreach (Dictionary <String, Object> skinObject in armatureObject[ConstValues.SKIN] as List <object> ) { armatureData.AddSkinData(parseSkinData(skinObject as Dictionary <string, object>, data)); } DBDataUtil.TransformArmatureData(armatureData); armatureData.SortBoneDataList(); foreach (Dictionary <String, Object> animationObject in armatureObject[ConstValues.ANIMATION] as List <object> ) { armatureData.AddAnimationData(parseAnimationData(animationObject as Dictionary <string, object>, armatureData, frameRate)); } return(armatureData); }
public static void transformArmatureDataAnimations(ArmatureData armatureData) { List<AnimationData> animationDataList = armatureData.AnimationDataList; int i = animationDataList.Count; while(i -- >0) { TransformAnimationData(animationDataList[i], armatureData); } }
public void RemoveArmatureData(ArmatureData armatureData) { int index = _armatureDataList.IndexOf(armatureData); if (index >= 0) { _armatureDataList.RemoveAt(index); } }
public void AddArmatureData(ArmatureData armatureData) { if (armatureData == null) { throw new ArgumentException(); } if (_armatureDataList.IndexOf(armatureData) < 0) { _armatureDataList.Add(armatureData); } else { throw new ArgumentException(); } }
public void AddArmatureData(ArmatureData armatureData) { if(armatureData == null) { throw new ArgumentException(); } if(_armatureDataList.IndexOf(armatureData) < 0) { _armatureDataList.Add(armatureData); } else { throw new ArgumentException(); } }
public static void TransformArmatureData(ArmatureData armatureData) { List<BoneData> boneDataList = armatureData.BoneDataList; int i = boneDataList.Count; BoneData boneData; BoneData parentBoneData; while(i -- >0) { boneData = boneDataList[i]; if(boneData.Parent!=null) { parentBoneData = armatureData.GetBoneData(boneData.Parent); if(parentBoneData!=null) { boneData.Transform.Copy(boneData.Global); //Logger.Log(boneData.Name + " " + boneData.Transform.X + " " + boneData.Transform.Y); TransformUtil.TransformPointWithParent(boneData.Transform, parentBoneData.Global); //Logger.Log(boneData.Name + " " + boneData.Transform.X + " " + boneData.Transform.Y); } } } }
public static void TransformAnimationData(AnimationData animationData, ArmatureData armatureData) { SkinData skinData = armatureData.GetSkinData(null); List<BoneData> boneDataList = armatureData.BoneDataList; List<SlotData> slotDataList = skinData.SlotDataList; int i = boneDataList.Count; BoneData boneData; TransformTimeline timeline; SlotData slotData; DisplayData displayData; TransformTimeline parentTimeline; List<Frame> frameList; DBTransform originTransform; Point originPivot; TransformFrame prevFrame; uint frameListLength; TransformFrame frame; while(i -- >0) { boneData = boneDataList[i]; timeline = animationData.GetTimeline(boneData.Name); if(timeline == null) { continue; } slotData = null; foreach(SlotData slotDataObj in slotDataList) { if(slotDataObj.Parent == boneData.Name) { slotData = slotDataObj; break; } } parentTimeline = boneData.Parent!=null?animationData.GetTimeline(boneData.Parent):null; frameList = timeline.FrameList; originTransform = null; originPivot = null; prevFrame = null; frameListLength = (uint)frameList.Count; for(int j = 0;j < frameListLength;j ++) { frame = frameList[j] as TransformFrame; if(parentTimeline!=null) { //tweenValues to transform. _helpTransform1.Copy(frame.Global); //get transform from parent timeline. GetTimelineTransform(parentTimeline, frame.Position, _helpTransform2); TransformUtil.TransformPointWithParent(_helpTransform1, _helpTransform2); //transform to tweenValues. frame.Transform.Copy(_helpTransform1); } else { frame.Transform.Copy(frame.Global); } frame.Transform.X -= boneData.Transform.X; frame.Transform.Y -= boneData.Transform.Y; frame.Transform.SkewX -= boneData.Transform.SkewX; frame.Transform.SkewY -= boneData.Transform.SkewY; frame.Transform.ScaleX -= boneData.Transform.ScaleX; frame.Transform.ScaleY -= boneData.Transform.ScaleY; if(!timeline.Transformed) { if(slotData!=null) { frame.ZOrder -= slotData.ZOrder; } } if(originTransform == null) { originTransform = timeline.OriginTransform; originTransform.Copy(frame.Transform); originTransform.SkewX = TransformUtil.FormatRadian(originTransform.SkewX); originTransform.SkewY = TransformUtil.FormatRadian(originTransform.SkewY); originPivot = timeline.OriginPivot; originPivot.X = frame.Pivot.X; originPivot.Y = frame.Pivot.Y; } frame.Transform.X -= originTransform.X; frame.Transform.Y -= originTransform.Y; frame.Transform.SkewX = TransformUtil.FormatRadian(frame.Transform.SkewX - originTransform.SkewX); frame.Transform.SkewY = TransformUtil.FormatRadian(frame.Transform.SkewY - originTransform.SkewY); frame.Transform.ScaleX -= originTransform.ScaleX; frame.Transform.ScaleY -= originTransform.ScaleY; if(!timeline.Transformed) { frame.Pivot.Y -= originPivot.X; frame.Pivot.Y -= originPivot.Y; } if(prevFrame!=null) { float dLX = frame.Transform.SkewX - prevFrame.Transform.SkewX; if(prevFrame.TweenRotate!=0) { if(prevFrame.TweenRotate > 0) { if(dLX < 0) { frame.Transform.SkewX += (float)Math.PI * 2f; frame.Transform.SkewY += (float)Math.PI * 2f; } if(prevFrame.TweenRotate > 1) { frame.Transform.SkewX += (float)Math.PI * 2f * ((float)prevFrame.TweenRotate - 1f); frame.Transform.SkewY += (float)Math.PI * 2f * ((float)prevFrame.TweenRotate - 1f); } } else { if(dLX > 0) { frame.Transform.SkewX -= (float)Math.PI * 2f; frame.Transform.SkewY -= (float)Math.PI * 2f; } if(prevFrame.TweenRotate < 1) { frame.Transform.SkewX += (float)Math.PI * 2f * ((float)prevFrame.TweenRotate + 1f); frame.Transform.SkewY += (float)Math.PI * 2f * ((float)prevFrame.TweenRotate + 1f); } } } else { frame.Transform.SkewX = prevFrame.Transform.SkewX + TransformUtil.FormatRadian(frame.Transform.SkewX - prevFrame.Transform.SkewX); frame.Transform.SkewY = prevFrame.Transform.SkewY + TransformUtil.FormatRadian(frame.Transform.SkewY - prevFrame.Transform.SkewY); } } prevFrame = frame; } timeline.Transformed = true; } }
public static void AddHideTimeline(AnimationData animationData, ArmatureData armatureData) { List<BoneData> boneDataList =armatureData.BoneDataList; int i = boneDataList.Count; BoneData boneData; string boneName; while(i -- >0) { boneData = boneDataList[i]; boneName = boneData.Name; if(animationData.GetTimeline(boneName)==null) { animationData.AddTimeline(TransformTimeline.HIDE_TIMELINE, boneName); } } }
private static AnimationData parseAnimationData(Dictionary<String, Object> animationObject, ArmatureData armatureData, uint frameRate) { AnimationData animationData = new AnimationData(); animationData.Name = animationObject[ConstValues.A_NAME] as String; animationData.FrameRate = (uint)frameRate; animationData.Loop = int.Parse(animationObject[ConstValues.A_LOOP].ToString()); animationData.FadeInTime = (float)animationObject[ConstValues.A_FADE_IN_TIME]; animationData.Duration = (float)animationObject [ConstValues.A_DURATION] /frameRate; animationData.Scale = (float)animationObject[ConstValues.A_SCALE]; if(animationObject.ContainsKey(ConstValues.A_TWEEN_EASING)) { Object tweenEase = animationObject[ConstValues.A_TWEEN_EASING]; if( tweenEase == null ) { animationData.TweenEasing = float.NaN; } else { animationData.TweenEasing = (float)tweenEase; } } else { animationData.TweenEasing = float.NaN; } parseTimeline(animationObject as Dictionary<string, object>, animationData, parseMainFrame, frameRate); TransformTimeline timeline; string timelineName; foreach(Dictionary<String, Object> timelineObject in animationObject[ConstValues.TIMELINE] as List<object>) { timeline = parseTransformTimeline(timelineObject as Dictionary<string, object>, animationData.Duration, frameRate); timelineName = (timelineObject as Dictionary<string, object>)[ConstValues.A_NAME] as String; animationData.AddTimeline(timeline, timelineName); } DBDataUtil.AddHideTimeline(animationData, armatureData); DBDataUtil.TransformAnimationData(animationData, armatureData); return animationData; }
public void RemoveArmatureData(ArmatureData armatureData) { int index = _armatureDataList.IndexOf(armatureData); if(index >= 0) { _armatureDataList.RemoveAt(index); } }
private static AnimationData parseAnimationData(Dictionary <String,Object> animationObject,ArmatureData armatureData,uint frameRate) { AnimationData animationData = new AnimationData(); animationData.Name = animationObject[ConstValues.A_NAME] as String; animationData.FrameRate = (uint)frameRate; animationData.Loop = int.Parse(animationObject[ConstValues.A_LOOP].ToString()); animationData.FadeInTime = (float)animationObject[ConstValues.A_FADE_IN_TIME]; animationData.Duration = (float)animationObject [ConstValues.A_DURATION] / frameRate; animationData.Scale = (float)animationObject[ConstValues.A_SCALE]; if (animationObject.ContainsKey(ConstValues.A_TWEEN_EASING)) { Object tweenEase = animationObject[ConstValues.A_TWEEN_EASING]; if ( tweenEase == null ) { animationData.TweenEasing = float.NaN; } else { animationData.TweenEasing = (float)tweenEase; } } else { animationData.TweenEasing = float.NaN; } parseTimeline(animationObject as Dictionary <string,object>,animationData,parseMainFrame,frameRate); TransformTimeline timeline; string timelineName; foreach (Dictionary <String,Object> timelineObject in animationObject[ConstValues.TIMELINE] as List <object> ) { timeline = parseTransformTimeline(timelineObject as Dictionary <string,object>,animationData.Duration,frameRate); timelineName = (timelineObject as Dictionary <string,object>)[ConstValues.A_NAME] as String; animationData.AddTimeline(timeline,timelineName); } DBDataUtil.AddHideTimeline(animationData,armatureData); DBDataUtil.TransformAnimationData(animationData,armatureData); return(animationData); }