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()); }
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 }