コード例 #1
0
        protected override void DoRecursivelyResolve(Dictionary <string, DataDefinition> local, Dictionary <string, DataDefinition> global, Dictionary <string, Dictionary <string, DataDefinition> > referenceableDefinitions)
        {
            if (DefKey != null)
            {
                var key = DefKey.ToLower();

                Dictionary <string, DataDefinition> defs = null;
                if (local.ContainsKey(key))
                {
                    defs = local;
                }
                else if (global.ContainsKey(key))
                {
                    defs = global;
                }

                if (defs != null)
                {
                    var def = defs[key] as ReferenceDefinition;

                    foreach (var keydef in def.Keys)
                    {
                        var childDef = def.Definitions[keydef.Item1];
                        childDef.RecursivelyResolve(local, global, referenceableDefinitions);

                        var keyframeDef = new KeyframeDefinition();
                        keyframeDef.CreateFrom(childDef);

                        KeyframeDefinitions.Add(keyframeDef);
                        Keys.Add(new Tuple <KeyframeDefinition, string>(keyframeDef, keydef.Item2));
                    }
                }
                else
                {
                    throw new Exception("Failed to find key " + DefKey + "!");
                }
            }

            foreach (var key in DefKeys)
            {
                Dictionary <string, DataDefinition> defs = null;
                if (local.ContainsKey(key.Item1.ToLower()))
                {
                    defs = local;
                }
                else if (global.ContainsKey(key.Item1.ToLower()))
                {
                    defs = global;
                }

                if (defs != null)
                {
                    var childDef = defs[key.Item1.ToLower()];
                    childDef.RecursivelyResolve(local, global, referenceableDefinitions);

                    var keyframeDef = new KeyframeDefinition();
                    keyframeDef.CreateFrom(childDef);

                    KeyframeDefinitions.Add(keyframeDef);
                    Keys.Add(new Tuple <KeyframeDefinition, string>(keyframeDef, key.Item2));
                }
                else if (key.Item1 != "---")
                {
                    throw new Exception("Failed to find key " + key.Item1 + "!");
                }
            }

            foreach (var def in KeyframeDefinitions)
            {
                def.RecursivelyResolve(local, global, referenceableDefinitions);
            }
        }
コード例 #2
0
        protected override void DoRecursivelyResolve(Dictionary <string, DataDefinition> local, Dictionary <string, DataDefinition> global, Dictionary <string, Dictionary <string, DataDefinition> > referenceableDefinitions)
        {
            if (DefKey != null)
            {
                var key = DefKey.ToLower();

                Dictionary <string, DataDefinition> defs = null;
                if (local.ContainsKey(key))
                {
                    defs = local;
                }
                else if (global.ContainsKey(key))
                {
                    defs = global;
                }

                if (defs != null)
                {
                    var def = defs[key] as ReferenceDefinition;
                    Keys = def.Keys;

                    ListCollectionView lcv = new ListCollectionView(Keys);
                    lcv.GroupDescriptions.Add(new PropertyGroupDescription("Item2"));
                    ItemsSource = lcv;
                }
                else
                {
                    throw new Exception("Failed to find key " + DefKey + "!");
                }
            }

            foreach (var key in Keys)
            {
                Dictionary <string, DataDefinition> defs = null;
                if (local.ContainsKey(key.Item1.ToLower()))
                {
                    defs = local;
                }
                else if (global.ContainsKey(key.Item1.ToLower()))
                {
                    defs = global;
                }

                if (defs != null)
                {
                    var def = defs[key.Item1.ToLower()];

                    if (def is GraphNodeDefinition)
                    {
                        Definitions[key.Item1] = def as GraphNodeDefinition;
                    }
                    else if (key.Item1 != "---")
                    {
                        throw new Exception("Tried to add definition of type " + def.GetType() + " (key = " + key.Item1 + ") to graph reference!");
                    }
                }
                else
                {
                    throw new Exception("Failed to find key " + key.Item1 + "!");
                }
            }

            if (Keys.Count == 0)
            {
                Keys.Add(new Tuple <string, string>("---", "---"));

                ListCollectionView lcv = new ListCollectionView(Keys);
                lcv.GroupDescriptions.Add(new PropertyGroupDescription("Item2"));
                ItemsSource = lcv;

                Definitions["---"] = new GraphStructDefinition();
            }
        }
コード例 #3
0
        public override void RecursivelyResolve(Dictionary <string, DataDefinition> local, Dictionary <string, DataDefinition> global, Dictionary <string, Dictionary <string, DataDefinition> > referenceableDefinitions)
        {
            if (DefKey != null)
            {
                var key = DefKey.ToLower();

                Dictionary <string, DataDefinition> defs = null;
                if (local.ContainsKey(key))
                {
                    defs = local;
                }
                else if (global.ContainsKey(key))
                {
                    defs = global;
                }

                if (defs != null)
                {
                    var def = defs[key] as ReferenceDefinition;
                    Keys = def.Keys;

                    ListCollectionView lcv = new ListCollectionView(Keys);
                    lcv.GroupDescriptions.Add(new PropertyGroupDescription("Item2"));
                    ItemsSource = lcv;
                }
                else
                {
                    Message.Show("Failed to find key " + DefKey + "!", "Reference Resolve Failed", "Ok");
                }
            }

            foreach (var key in Keys)
            {
                Dictionary <string, DataDefinition> defs = null;
                if (local.ContainsKey(key.Item1.ToLower()))
                {
                    defs = local;
                }
                else if (global.ContainsKey(key.Item1.ToLower()))
                {
                    defs = global;
                }

                if (defs != null)
                {
                    Definitions[key.Item1] = defs[key.Item1.ToLower()];
                }
                else if (key.Item1 != "---")
                {
                    Message.Show("Failed to find key " + key.Item1 + "!", "Reference Resolve Failed", "Ok");
                }
            }

            if (Keys.Count == 0)
            {
                Keys.Add(new Tuple <string, string>("---", "---"));

                ListCollectionView lcv = new ListCollectionView(Keys);
                lcv.GroupDescriptions.Add(new PropertyGroupDescription("Item2"));
                ItemsSource = lcv;

                Definitions["---"] = new DummyDefinition();
            }
        }