public void SaveToXml(XmlTextWriter xmlWriter, Dictionary<string, VisibleKey> selectedKeys, AnimationTarget target, int parameterIndex) { var anythingToWrite = false; foreach (var key in Keys.Values) { if (selectedKeys.ContainsKey(VisibleKey.GetIndexKey(target, parameterIndex, key.Time))) { anythingToWrite = true; } } if (anythingToWrite) { xmlWriter.WriteStartElement("Keys"); xmlWriter.WriteAttributeString("ParameterName", ParameterName); foreach (var key in Keys.Values) { if (selectedKeys.ContainsKey(VisibleKey.GetIndexKey(target, parameterIndex, key.Time))) { key.SaveToXml(xmlWriter); } } xmlWriter.WriteEndElement(); } }
public VisibleKey(AnimationTarget target, int parameterIndex, string propertyName, double time, Point point) { Target = target; ParameterIndex = parameterIndex; Time = time; Point = point; PropertyName = propertyName; }
private void FromXml(System.Xml.XmlNode node) { Id = node.Attributes["Id"].Value; Name = node.Attributes["Name"].Value; x = Convert.ToSingle(node.Attributes["X"].Value); y = Convert.ToSingle(node.Attributes["Y"].Value); width = Convert.ToSingle(node.Attributes["Width"].Value); height = Convert.ToSingle(node.Attributes["Height"].Value); rotationAngle = Convert.ToSingle(node.Attributes["Rotation"].Value); color = SavedColor.Load(node.Attributes["Color"].Value); if (node.Attributes["Url"] != null) { Url = node.Attributes["Url"].Value; } if (node.Attributes["LinkID"] != null) { LinkID = node.Attributes["LinkID"].Value; } if (node.Attributes["Anchor"] != null) { anchor = (OverlayAnchor)Enum.Parse(typeof(OverlayAnchor), node.Attributes["Anchor"].Value); } else { anchor = OverlayAnchor.Screen; } if (node.Attributes["Animate"] != null) { animate = Convert.ToBoolean(node.Attributes["Animate"].Value); if (animate) { endX = Convert.ToSingle(node.Attributes["EndX"].Value); endY = Convert.ToSingle(node.Attributes["EndY"].Value); endColor = SavedColor.Load(node.Attributes["EndColor"].Value); endWidth = Convert.ToSingle(node.Attributes["EndWidth"].Value); endHeight = Convert.ToSingle(node.Attributes["EndHeight"].Value); endRotationAngle = Convert.ToSingle(node.Attributes["EndRotation"].Value); if (node.Attributes["InterpolationType"] != null) { InterpolationType = (InterpolationType)Enum.Parse(typeof(InterpolationType), node.Attributes["InterpolationType"].Value); } } } if (node["KeyFrames"] != null) { AnimationTarget = new AnimationTarget(owner); AnimationTarget.FromXml(node["KeyFrames"]); AnimationTarget.Target = this; AnimationTarget.TargetID = this.GetIndentifier(); } InitializeFromXml(node); }
public AnimationTarget Clone(Overlay newTarget) { StringBuilder sb = new StringBuilder(); using (System.IO.StringWriter textWriter = new System.IO.StringWriter(sb)) { using (System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(textWriter)) { writer.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); this.SaveToXml(writer); } } System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); doc.LoadXml(sb.ToString()); AnimationTarget at = new AnimationTarget(owner); System.Xml.XmlNode node = doc["KeyFrames"]; at.FromXml(node); at.Target = newTarget; at.TargetID = newTarget.GetIndentifier(); return at; }
public static string GetIndexKey(AnimationTarget target, int parameterIndex, double time) { return target.TargetID + "\t" + parameterIndex + "\t" + KeyGroup.Quant(time); }
void addToTimeline_Click(object sender, EventArgs e) { IAnimatable target = layerTree.SelectedNode.Tag as IAnimatable; AnimationTarget.AnimationTargetTypes type = AnimationTarget.AnimationTargetTypes.Layer; if (target == null) { if (layerTree.SelectedNode.Tag is LayerMap) { target = ((LayerMap)layerTree.SelectedNode.Tag).Frame; type = AnimationTarget.AnimationTargetTypes.ReferenceFrame; } } if (Earth3d.MainWindow.TourEdit != null && target != null) { if (Earth3d.MainWindow.TourEdit.Tour.EditMode && Earth3d.MainWindow.TourEdit.Tour.CurrentTourStop != null) { Undo.Push(new UndoTourStopChange(Language.GetLocalizedText(1290, "Add to Timeline"), Earth3d.MainWindow.TourEdit.Tour)); Earth3d.MainWindow.TourEdit.Tour.CurrentTourStop.KeyFramed = true; AnimationTarget aniTarget = new AnimationTarget(Earth3d.MainWindow.TourEdit.Tour.CurrentTourStop); aniTarget.Target = target; aniTarget.TargetType = type; aniTarget.ParameterNames.AddRange(target.GetParamNames()); aniTarget.CurrentParameters = target.GetParams(); aniTarget.SetKeyFrame(0, Key.KeyType.Linear); //todo add end frames? Earth3d.MainWindow.TourEdit.Tour.CurrentTourStop.AnimationTargets.Add(aniTarget); TimeLine.RefreshUi(false); } } }
private void LoadAnimationTargets(XmlNode animationTargetsNode) { keyFramed = true; foreach (XmlNode child in animationTargetsNode.ChildNodes) { AnimationTarget aniTarget = new AnimationTarget(this); aniTarget.FromXml(child); AnimationTargets.Add(aniTarget); switch (aniTarget.TargetType) { case AnimationTarget.AnimationTargetTypes.Overlay: aniTarget.Target = GetOverlayById(aniTarget.TargetID); ((Overlay)aniTarget.Target).AnimationTarget = aniTarget; break; case AnimationTarget.AnimationTargetTypes.Layer: break; case AnimationTarget.AnimationTargetTypes.Setting: break; case AnimationTarget.AnimationTargetTypes.Camera: aniTarget.Target = this.KeyFrameMover; break; default: break; } } }
public void SaveToXml(System.Xml.XmlTextWriter xmlWriter, Dictionary <string, VisibleKey> selectedKeys, AnimationTarget target, int parameterIndex) { bool anythingToWrite = false; foreach (Key key in Keys.Values) { if (selectedKeys.ContainsKey(VisibleKey.GetIndexKey(target, parameterIndex, key.Time))) { anythingToWrite = true; } } if (anythingToWrite) { xmlWriter.WriteStartElement("Keys"); xmlWriter.WriteAttributeString("ParameterName", ParameterName.ToString()); foreach (Key key in Keys.Values) { if (selectedKeys.ContainsKey(VisibleKey.GetIndexKey(target, parameterIndex, key.Time))) { key.SaveToXml(xmlWriter); } } xmlWriter.WriteEndElement(); } }
void setupMenuK_MenuItemSelected(LayerUIMenuItem item) { var sso = item.Tag as StockSkyOverlay; if (Earth3d.MainWindow.TourEdit != null && sso != null) { if (Earth3d.MainWindow.TourEdit.Tour.EditMode && Earth3d.MainWindow.TourEdit.Tour.CurrentTourStop != null) { var target = Earth3d.MainWindow.TourEdit.Tour.CurrentTourStop.GetSettingAnimator(sso.StockType.ToString()); var type = AnimationTarget.AnimationTargetTypes.StockSkyOverlay; Undo.Push(new UndoTourStopChange(Language.GetLocalizedText(1290, "Add to Timeline"), Earth3d.MainWindow.TourEdit.Tour)); Earth3d.MainWindow.TourEdit.Tour.CurrentTourStop.KeyFramed = true; var aniTarget = new AnimationTarget(Earth3d.MainWindow.TourEdit.Tour.CurrentTourStop); aniTarget.Target = target; aniTarget.TargetType = type; aniTarget.ParameterNames.AddRange(target.GetParamNames()); aniTarget.CurrentParameters = target.GetParams(); aniTarget.SetKeyFrame(0, Key.KeyType.Linear); //todo add end frames? Earth3d.MainWindow.TourEdit.Tour.CurrentTourStop.AnimationTargets.Add(aniTarget); TimeLine.RefreshUi(); } } }
public static string GetIndexKey(AnimationTarget target, int parameterIndex, double time) { return(target.TargetID + "\t" + parameterIndex.ToString() + "\t" + KeyGroup.Quant(time).ToString()); }