Пример #1
0
        private static void GetMergedPropertiesForSelection(IEnumerable <SceneNode> selectedSceneNodes, List <TargetedReferenceStep> properties)
        {
            PropertyMerger.ReferenceStepComparer referenceStepComparer = new PropertyMerger.ReferenceStepComparer();
            HashSet <IType> hashSet = new HashSet <IType>();
            bool            flag    = true;

            foreach (SceneNode sceneNode in selectedSceneNodes)
            {
                IType typeFromSceneNode = PropertyMerger.GetTypeFromSceneNode(sceneNode);
                if (hashSet.Add(typeFromSceneNode))
                {
                    List <TargetedReferenceStep> list = new List <TargetedReferenceStep>();
                    foreach (ReferenceStep referenceStep in PropertyMerger.GetPropertiesForSceneNode(sceneNode))
                    {
                        list.Add(new TargetedReferenceStep(referenceStep, typeFromSceneNode));
                    }
                    list.Sort((IComparer <TargetedReferenceStep>)referenceStepComparer);
                    if (flag)
                    {
                        properties.AddRange((IEnumerable <TargetedReferenceStep>)list);
                        flag = false;
                    }
                    else
                    {
                        for (int index = properties.Count - 1; index >= 0; --index)
                        {
                            if (list.BinarySearch(properties[index], (IComparer <TargetedReferenceStep>)referenceStepComparer) < 0)
                            {
                                properties.RemoveAt(index);
                            }
                        }
                    }
                }
            }
        }