示例#1
0
        public static IVolume[] GetBelowVolumes(IBuilding building, IVolume volume)
        {
            List <IVolume> output = new List <IVolume>();

            IVolume[] volumeList  = building.AllPlans();
            int       volumeCount = volumeList.Length;

            for (int v = 0; v < volumeCount; v++)
            {
                IVolume other = volumeList[v];
                if (other == volume)
                {
                    continue;
                }

                if (other.ContainsPlanAbove(volume))
                {
                    output.Add(other);
                    output.AddRange(other.LinkPlanList());
                    break;
                }
            }
            output.Remove(volume);
            return(output.ToArray());
        }
示例#2
0
        public static List <IVolume> GetLinkablePlans(IBuilding building, IVolume plan)
        {
            List <IVolume> output    = new List <IVolume>(building.AllPlans());
            int            planCount = building.numberOfPlans;

            for (int p = 0; p < planCount; p++)
            {
                if (building[p] == plan)
                {
                    continue;                    //cannot link to oneself
                }
                if (building[p].ContainsPlanAbove(plan))
                {
                    return(building[p].AbovePlanList());
                }

                int aPlans = building[p].abovePlanCount;
                for (int ap = 0; ap < aPlans; ap++)
                {
                    output.Remove(building[p].AbovePlanList()[ap]);
                }

                if (plan.IsLinkedPlan(building[p]))
                {
                    output.Remove(building[p]);
                }
            }

            return(output);//return base plans
        }