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;
		}
Пример #2
0
        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);
        }
Пример #3
0
		public static void transformArmatureDataAnimations(ArmatureData armatureData)
		{
			List<AnimationData> animationDataList = armatureData.AnimationDataList;
			int i = animationDataList.Count;
			while(i -- >0)
			{
				TransformAnimationData(animationDataList[i], armatureData);
			}
		}
Пример #4
0
        public void RemoveArmatureData(ArmatureData armatureData)
        {
            int index = _armatureDataList.IndexOf(armatureData);

            if (index >= 0)
            {
                _armatureDataList.RemoveAt(index);
            }
        }
Пример #5
0
        public void AddArmatureData(ArmatureData armatureData)
        {
            if (armatureData == null)
            {
                throw new ArgumentException();
            }

            if (_armatureDataList.IndexOf(armatureData) < 0)
            {
                _armatureDataList.Add(armatureData);
            }
            else
            {
                throw new ArgumentException();
            }
        }
Пример #6
0
		public void AddArmatureData(ArmatureData armatureData)
		{
			if(armatureData == null)
			{
				throw new ArgumentException();
			}
			
			if(_armatureDataList.IndexOf(armatureData) < 0)
			{
				_armatureDataList.Add(armatureData);
			}
			else
			{
				throw new ArgumentException();
			}
		}
Пример #7
0
		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);
					}
				}
			}
		}
Пример #8
0
		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;
			}
		}
Пример #9
0
		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;
		}
Пример #11
0
		public void RemoveArmatureData(ArmatureData armatureData)
		{
			int index = _armatureDataList.IndexOf(armatureData);
			if(index >= 0)
			{
				_armatureDataList.RemoveAt(index);
			}
		}
Пример #12
0
        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);
        }