private static bool UpdateResourcesInAnimationData(TimelineActionData timelineActionData, ChangedResourceCollection changedResourceCollection) { bool flag = false; foreach (TimelineData timeline in timelineActionData.Timelines) { if (!(timeline.FrameType != typeof(TextureFrame).Name)) { foreach (TextureFrameData frame in timeline.Frames) { ResourceItemData textureFile = frame.TextureFile; if (!((ResourceData)textureFile == (ResourceData)null)) { ResourceFile resourceFile = (ResourceFile)null; if (changedResourceCollection.TryGetValue((ResourceData)textureFile, out resourceFile)) { if (resourceFile != null) { textureFile.Update(resourceFile.GetResourceData()); } else { frame.TextureFile = (ResourceItemData)null; } if (!flag) { flag = true; } } } } } } return(flag); }
private static TimelineAction ConvertTimeLineAction(TimelineActionData objectData, VisualObject vObject, Dictionary <int, VisualObject> objectTagDictionary) { TimelineAction timelineAction = new TimelineAction(); timelineAction.Duration = objectData.Duration; timelineAction.Speed = objectData.Speed; if (objectData.Timelines == null || objectData.Timelines.Count <= 0) { return(timelineAction); } foreach (TimelineData timeline1 in objectData.Timelines) { if (objectTagDictionary.ContainsKey(timeline1.ActionTag)) { NodeObject objectTag = objectTagDictionary[timeline1.ActionTag] as NodeObject; if (objectTag != null) { Timeline timeline2 = Timeline.CreateTimeline(timeline1.FrameType, objectTag); if (timeline1.Frames != null && timeline1.Frames.Count > 0) { foreach (FrameData frame1 in timeline1.Frames) { Frame frame2 = GameProjectLoader.ConvertTimeLineFrame(frame1, timeline1.FrameType); timeline2.Frames.Add(frame2); } } } } } return(timelineAction); }
private static HashSet <ResourceData> ScanAnimationData(TimelineActionData timelineActionData) { HashSet <ResourceData> result; if (timelineActionData == null) { result = null; } else { HashSet <ResourceData> hashSet = new HashSet <ResourceData>(); foreach (TimelineData current in timelineActionData.Timelines) { if (current.FrameType == typeof(TextureFrame).Name) { using (List <FrameData> .Enumerator enumerator2 = current.Frames.GetEnumerator()) { while (enumerator2.MoveNext()) { TextureFrameData textureFrameData = (TextureFrameData)enumerator2.Current; hashSet.Add(textureFrameData.TextureFile); } } } } result = hashSet; } return(result); }
private static void ConvertTimeLineActionData(NodeObject nObject, TimelineActionData nTimelineActionData) { foreach (NodeObject current in nObject.Children) { GameProjectLoader.ConvertTimeLineActionData(current, nTimelineActionData); foreach (Timeline current2 in current.Timelines) { if (current2.Frames.Count > 0) { TimelineData timelineData = new TimelineData(); timelineData.ActionTag = current.ActionTag; timelineData.FrameType = current2.FrameType; timelineData.Frames = new List <FrameData>(); foreach (Frame current3 in current2.OrderedFrames) { string name = current3.GetType().BaseType.Name; if (name == "Frame") { name = current3.GetType().Name; } string newValue = name + "Data"; string typeName = current3.GetType().FullName.Replace("CocoStudio.Model.ViewModel", "CocoStudio.Model.DataModel").Replace(current3.GetType().Name, newValue); FrameData frameData = Activator.CreateInstance(Type.GetType(typeName), true) as FrameData; if (frameData != null) { PropertyInfo[] properties = current3.GetType().GetProperties(); PropertyInfo[] array = properties; for (int i = 0; i < array.Length; i++) { PropertyInfo propertyInfo = array[i]; string name2 = propertyInfo.Name; if (!(name2 == "Children")) { PropertyInfo property = frameData.GetType().GetProperty(name2); object value = propertyInfo.GetValue(current3, null); if (property != null && value != null) { object obj = value; if (!property.PropertyType.Equals(propertyInfo.PropertyType)) { obj = Activator.CreateInstance(property.PropertyType, true); if (!(obj is IDataConvert)) { string message = string.Format("Property type are not same, the item is {0}, ViewType is {1}, DataType is {2}, Can use IDataConvert interface to convert.", nObject.GetType().Name, propertyInfo.PropertyType.Name, property.PropertyType.Name); throw new InvalidCastException(message); } ((IDataConvert)obj).SetData(value); } property.SetValue(frameData, obj, null); } } } timelineData.Frames.Add(frameData); } } nTimelineActionData.Timelines.Add(timelineData); } } } }
private static void ConvertTimeLineActionData(NodeObject nObject, TimelineActionData nTimelineActionData) { foreach (NodeObject child in (Collection <NodeObject>)nObject.Children) { GameProjectLoader.ConvertTimeLineActionData(child, nTimelineActionData); foreach (Timeline timeline in (Collection <Timeline>)child.Timelines) { if (timeline.Frames.Count > 0) { TimelineData timelineData = new TimelineData(); timelineData.ActionTag = child.ActionTag; timelineData.FrameType = timeline.FrameType; timelineData.Frames = new List <FrameData>(); foreach (Frame orderedFrame in timeline.OrderedFrames) { string name1 = orderedFrame.GetType().BaseType.Name; if (name1 == "Frame") { name1 = orderedFrame.GetType().Name; } string newValue = name1 + "Data"; FrameData instance = Activator.CreateInstance(Type.GetType(orderedFrame.GetType().FullName.Replace("CocoStudio.Model.ViewModel", "CocoStudio.Model.DataModel").Replace(orderedFrame.GetType().Name, newValue)), true) as FrameData; if (instance != null) { foreach (PropertyInfo property1 in orderedFrame.GetType().GetProperties()) { string name2 = property1.Name; if (!(name2 == "Children")) { PropertyInfo property2 = instance.GetType().GetProperty(name2); object viewObject = property1.GetValue((object)orderedFrame, (object[])null); if (property2 != (PropertyInfo)null && viewObject != null) { object obj = viewObject; if (!property2.PropertyType.Equals(property1.PropertyType)) { obj = Activator.CreateInstance(property2.PropertyType, true); if (!(obj is IDataConvert)) { throw new InvalidCastException(string.Format("Property type are not same, the item is {0}, ViewType is {1}, DataType is {2}, Can use IDataConvert interface to convert.", (object)nObject.GetType().Name, (object)property1.PropertyType.Name, (object)property2.PropertyType.Name)); } ((IDataConvert)obj).SetData(viewObject); } property2.SetValue((object)instance, obj, (object[])null); } } } timelineData.Frames.Add(instance); } } nTimelineActionData.Timelines.Add(timelineData); } } } }
public static GameProjectData SaveProject(NodeObject vObject, TimelineAction action) { if (vObject == null) { return((GameProjectData)null); } NodeObjectData nodeObjectData = GameProjectLoader.ConvertObjectData(vObject); TimelineActionData nTimelineActionData = new TimelineActionData(); nTimelineActionData.Duration = action.Duration; nTimelineActionData.Speed = action.Speed; GameProjectLoader.ConvertTimeLineActionData(vObject, nTimelineActionData); return(new GameProjectData() { ObjectData = nodeObjectData, Animation = nTimelineActionData }); }
private static HashSet <ResourceData> ScanAnimationData(TimelineActionData timelineActionData) { if (timelineActionData == null) { return((HashSet <ResourceData>)null); } HashSet <ResourceData> resourceDataSet = new HashSet <ResourceData>(); foreach (TimelineData timeline in timelineActionData.Timelines) { if (timeline.FrameType == typeof(TextureFrame).Name) { foreach (TextureFrameData frame in timeline.Frames) { resourceDataSet.Add((ResourceData)frame.TextureFile); } } } return(resourceDataSet); }
private static bool UpdateResourcesInAnimationData(TimelineActionData timelineActionData, ChangedResourceCollection changedResourceCollection) { bool flag = false; foreach (TimelineData current in timelineActionData.Timelines) { if (!(current.FrameType != typeof(TextureFrame).Name)) { using (List <FrameData> .Enumerator enumerator2 = current.Frames.GetEnumerator()) { while (enumerator2.MoveNext()) { TextureFrameData textureFrameData = (TextureFrameData)enumerator2.Current; ResourceItemData textureFile = textureFrameData.TextureFile; if (!(textureFile == null)) { ResourceFile resourceFile = null; if (changedResourceCollection.TryGetValue(textureFile, out resourceFile)) { if (resourceFile != null) { textureFile.Update(resourceFile.GetResourceData()); } else { textureFrameData.TextureFile = null; } if (!flag) { flag = true; } } } } } } } return(flag); }
public static GameProjectData SaveProject(NodeObject vObject, TimelineAction action) { GameProjectData result; if (vObject == null) { result = null; } else { NodeObjectData objectData = GameProjectLoader.ConvertObjectData(vObject); TimelineActionData timelineActionData = new TimelineActionData(); timelineActionData.Duration = action.Duration; timelineActionData.Speed = action.Speed; GameProjectLoader.ConvertTimeLineActionData(vObject, timelineActionData); result = new GameProjectData { ObjectData = objectData, Animation = timelineActionData }; } return(result); }
private static TimelineAction ConvertTimeLineAction(TimelineActionData objectData, VisualObject vObject, Dictionary <int, VisualObject> objectTagDictionary) { TimelineAction timelineAction = new TimelineAction(); timelineAction.Duration = objectData.Duration; timelineAction.Speed = objectData.Speed; TimelineAction result; if (objectData.Timelines == null || objectData.Timelines.Count <= 0) { result = timelineAction; } else { foreach (TimelineData current in objectData.Timelines) { if (objectTagDictionary.ContainsKey(current.ActionTag)) { NodeObject nodeObject = objectTagDictionary[current.ActionTag] as NodeObject; if (nodeObject != null) { Timeline timeline = Timeline.CreateTimeline(current.FrameType, nodeObject); if (current.Frames != null && current.Frames.Count > 0) { foreach (FrameData current2 in current.Frames) { Frame item = GameProjectLoader.ConvertTimeLineFrame(current2, current.FrameType); timeline.Frames.Add(item); } } } } } result = timelineAction; } return(result); }