示例#1
0
        /// <summary>
        /// Соединяет крайний пилар с sourcePillar пиларом разлома fault.
        /// </summary>
        /// <param name="fault">Разлом содержащий sourcePillar.</param>
        /// <param name="sourcePillar">Пиллар с которым производится соединение.</param>
        /// <param name="childPillar">Крайний пиллар в текущем разломе.</param>
        /// <returns></returns>
        public bool ConnectEndPillar(SuperFault fault, Pillar sourcePillar, Pillar childPillar)
        {
            bool res = false;

            // проверка на то что пилар от этого разлома
            if (!IsMyPillar(childPillar))
            {
                return(false);
            }

            if (childPillar.Equals(LeftPillar))
            {
                sourcePillar.Attached = true;
                leftConnectedPillar.Add(sourcePillar);
                return(true);
            }
            else if (childPillar.Equals(RightPillar))
            {
                sourcePillar.Attached = true;
                rightConnectedPillar.Add(sourcePillar);
                return(true);
            }

            return(res);
        }
示例#2
0
        /// <summary>
        /// Соединяет пилар с sourcePillar пиларом разлома fault
        /// с созданием нового пустого разлома с двумя присоединенными пиларами.
        /// </summary>
        /// <param name="fault">Разлом содержащий sourcePillar.</param>
        /// <param name="sourcePillar">Пиллар с которым производится соединение.</param>
        /// <param name="childPillar">Крайний пиллар в текущем разломе.</param>
        /// <returns></returns>
        public SuperFault ConnectWithCreateNewFault(SuperFault fault, Pillar sourcePillar, Pillar childPillar)
        {
            SuperFault res = new SuperFault(this.Project, "fault");

            sourcePillar.Attached = true;
            childPillar.Attached  = true;
            res.leftConnectedPillar.Add(sourcePillar);
            res.rightConnectedPillar.Add(childPillar);

            return(res);
        }
示例#3
0
        public override object Clone()
        {
            SuperFault fault = new SuperFault(this.Project, this.Title);

            fault.items      = ((DataList <Pillar>)base.Clone()).Items;
            fault.currentMax = this.currentMax;
            fault.currentMin = this.currentMin;
            fault.faultType  = this.faultType;

            List <Pillar> pillars = new List <Pillar>(rightConnectedPillar.Count);

            foreach (Pillar pillar in rightConnectedPillar)
            {
                pillars.Add((Pillar)pillar.Clone());
            }
            fault.rightConnectedPillar = pillars;

            pillars = new List <Pillar>(leftConnectedPillar.Count);
            foreach (Pillar pillar in leftConnectedPillar)
            {
                pillars.Add((Pillar)pillar.Clone());
            }
            fault.leftConnectedPillar = pillars;

            pillars = new List <Pillar>(leftConnectedPillarWrapper.Count);
            foreach (Pillar pillar in leftConnectedPillarWrapper)
            {
                pillars.Add((Pillar)pillar.Clone());
            }
            fault.leftConnectedPillarWrapper = new ReadOnlyCollection <Pillar>(pillars);

            pillars = new List <Pillar>(rightConnectedPillarWrapper.Count);
            foreach (Pillar pillar in rightConnectedPillarWrapper)
            {
                pillars.Add((Pillar)pillar.Clone());
            }
            fault.rightConnectedPillarWrapper = new ReadOnlyCollection <Pillar>(pillars);

            return(fault);
        }