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);
                }
            }
        }
Example #7
0
        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;
                }
            }
        }
Example #8
0
        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();
                }
            }
        }
Example #10
0
 public static string GetIndexKey(AnimationTarget target, int parameterIndex, double time)
 {
     return(target.TargetID + "\t" + parameterIndex.ToString() + "\t" + KeyGroup.Quant(time).ToString());
 }