예제 #1
0
        private static StageElement WriteSelectorView(SelectorView sv)
        {
            var sve = new StageElement(
                ElementName.SelectorView,
                SerializationMaster.Stage(ElementName.ViewArea, sv.viewArea));

            sve.AddTextValue(ElementName.Name, sv.name);
            sve.AddTextValue(ElementName.Description, sv.description);

            var qualifierViews = sv.qualifierViews;
            int qvCount        = qualifierViews.Count;

            for (int i = 0; i < qvCount; i++)
            {
                var qv = WriteQualifierView(qualifierViews[i]);

                sve.Add(qv);
            }

            var defQv = WriteQualifierView(sv.defaultQualifierView);

            sve.Add(defQv);

            return(sve);
        }
예제 #2
0
        internal static string Serialize(IList <TopLevelView> items)
        {
            var aiPart = new StageElement(ElementName.AIPart);
            var uiPart = new StageElement(ElementName.UIPart);
            var root   = new StageElement(ElementName.ViewSnippet, aiPart, uiPart);

            root.AddTextAttribute(AttributeName.SnippetType, ElementName.ViewSnippet);

            var referencePos = new Vector2(float.MaxValue, float.MaxValue);

            for (int i = 0; i < items.Count; i++)
            {
                var view = items[i];

                var selectorView = view as SelectorView;
                if (selectorView != null)
                {
                    var item = selectorView.selector;

                    var aiItem = SerializationMaster.Stage(typeof(Selector).Name, item);
                    aiPart.Add(aiItem);

                    var viewItem = WriteSelectorView(selectorView);
                    uiPart.Add(viewItem);

                    //Even though reid also happens on paste we have to do it here as well, otherwise copying linked selectors will fail.
                    item.RegenerateId();
                }

                var linkView = view as AILinkView;
                if (linkView != null)
                {
                    var viewItem = WriteAILinkView(linkView);
                    uiPart.Add(viewItem);
                }

                if (view.viewArea.xMin < referencePos.x)
                {
                    referencePos.x = view.viewArea.xMin;
                }

                if (view.viewArea.yMin < referencePos.y)
                {
                    referencePos.y = view.viewArea.yMin;
                }
            }

            uiPart.AddValue(ElementName.ReferencePosition, referencePos);

            return(SerializationMaster.Serialize(root));
        }
예제 #3
0
        internal static string Serialize(AICanvas canvas)
        {
            var root = new StageElement(
                ElementName.Canvas,
                SerializationMaster.Stage(ElementName.Offset, canvas.offset),
                SerializationMaster.ToStageValue(ElementName.Zoom, canvas.zoom));

            var views   = canvas.views;
            int svCount = views.Count;

            for (int i = 0; i < svCount; i++)
            {
                var          view = views[i];
                StageElement viewElement;

                if (view is SelectorView)
                {
                    viewElement = WriteSelectorView((SelectorView)view);
                }
                else if (view is AILinkView)
                {
                    viewElement = WriteAILinkView((AILinkView)view);
                }
                else
                {
                    throw new NotImplementedException("The view type has not been implemented for serialization.");
                }

                root.Add(viewElement);
            }

            return(SerializationMaster.Serialize(root));
        }
        public StageItem StageValue(string name, object value)
        {
            Keyframe[]   keyframeArray = ((AnimationCurve)value).keys;
            StageElement stageElement  = new StageElement(name);

            for (int i = 0; i < (int)keyframeArray.Length; i++)
            {
                Keyframe keyframe = keyframeArray[i];
                stageElement.Add(new StageElement("key", new StageItem[] { SerializationMaster.ToStageAttribute("time", keyframe.time), SerializationMaster.ToStageAttribute("value", keyframe.@value), SerializationMaster.ToStageAttribute("inTangent", keyframe.inTangent), SerializationMaster.ToStageAttribute("outTangent", keyframe.outTangent), SerializationMaster.ToStageAttribute("tangentMode", keyframe.tangentMode) }));
            }
            return(stageElement);
        }
예제 #5
0
        internal static string Serialize(QualifierView qualifier)
        {
            var aiPart = new StageElement(ElementName.AIPart);
            var uiPart = new StageElement(ElementName.UIPart);
            var root   = new StageElement(ElementName.QualifierSnippet, aiPart, uiPart);

            root.AddTextAttribute(AttributeName.SnippetType, ElementName.QualifierSnippet);

            var aiItem = SerializationMaster.Stage(ElementName.Qualifier, qualifier.qualifier);

            aiPart.Add(aiItem);

            var viewItem = WriteQualifierView(qualifier);

            uiPart.Add(viewItem);

            return(SerializationMaster.Serialize(root));
        }
예제 #6
0
        private static StageElement WriteQualifierView(QualifierView qv)
        {
            var name = qv.isDefault ? ElementName.DefaultQualifier : ElementName.QualifierView;
            var qve  = new StageElement(name);

            qve.AddTextValue(ElementName.Name, qv.name);
            qve.AddTextValue(ElementName.Description, qv.description);

            var av = qv.actionView;

            if (av != null)
            {
                var ae = WriteActionView(av);
                qve.Add(ae);
            }

            return(qve);
        }
예제 #7
0
        internal static string Serialize(ActionView action)
        {
            var aiPart = new StageElement(ElementName.AIPart);
            var uiPart = new StageElement(ElementName.UIPart);
            var root   = new StageElement(ElementName.ActionSnippet, aiPart, uiPart);

            root.AddTextAttribute(AttributeName.SnippetType, ElementName.ActionSnippet);

            var aiItem = SerializationMaster.Stage(ElementName.Action, action.action);

            aiPart.Add(aiItem);

            var viewItem = WriteActionView(action);

            uiPart.Add(viewItem);

            return(SerializationMaster.Serialize(root));
        }
        /// <summary>
        /// Stages the value.
        /// </summary>
        /// <param name="name">The name to give the resulting <see cref="StageItem" />.</param>
        /// <param name="value">The value to stage</param>
        /// <returns>
        /// The element containing the staged value.
        /// </returns>
        public StageItem StageValue(string name, object value)
        {
            var val  = (AnimationCurve)value;
            var keys = val.keys;

            var curveElement = new StageElement(name);

            for (int i = 0; i < keys.Length; i++)
            {
                var key  = keys[i];
                var item = new StageElement(
                    "key",
                    SerializationMaster.ToStageAttribute("time", key.time),
                    SerializationMaster.ToStageAttribute("value", key.value),
                    SerializationMaster.ToStageAttribute("inTangent", key.inTangent),
                    SerializationMaster.ToStageAttribute("outTangent", key.outTangent),
                    SerializationMaster.ToStageAttribute("tangentMode", key.tangentMode));

                curveElement.Add(item);
            }

            return(curveElement);
        }