public static DependentPyramid dPyramid(AbstractPolygon basePoly, AbstractPoint apex) { DependentPyramid pyramid = DependentPyramid.Constructor(); pyramid.basePolygon = basePoly; pyramid.apex = apex; List <AbstractPolygon> sideList = new List <AbstractPolygon>(); foreach (AbstractLineSegment baseLine in basePoly.lineList) { if (baseLine.GetComponent <InteractableLineSegment>() != null) { List <AbstractPoint> vertexList = new List <AbstractPoint>(); List <AbstractLineSegment> lineList = new List <AbstractLineSegment>(); vertexList.Add(apex); vertexList.Add(baseLine.GetComponent <InteractableLineSegment>().point1); vertexList.Add(baseLine.GetComponent <InteractableLineSegment>().point2); lineList.Add(baseLine); lineList.Add(iLineSegment(apex, baseLine.GetComponent <InteractableLineSegment>().point1)); lineList.Add(iLineSegment(apex, baseLine.GetComponent <InteractableLineSegment>().point2)); sideList.Add(dPolygon(lineList, vertexList)); } else { List <AbstractPoint> vertexList = new List <AbstractPoint>(); List <AbstractLineSegment> lineList = new List <AbstractLineSegment>(); vertexList.Add(apex); vertexList.Add(baseLine.GetComponent <DependentLineSegment>().point1); vertexList.Add(baseLine.GetComponent <DependentLineSegment>().point2); lineList.Add(baseLine); lineList.Add(iLineSegment(apex, baseLine.GetComponent <DependentLineSegment>().point1)); lineList.Add(iLineSegment(apex, baseLine.GetComponent <DependentLineSegment>().point2)); sideList.Add(dPolygon(lineList, vertexList)); } } pyramid.sides = sideList; HW_GeoSolver.ins.AddDependence(pyramid, basePoly);//This dependency must be first on the list for XMLManager Loading to operate correctly foreach (AbstractPolygon poly in sideList) { HW_GeoSolver.ins.AddDependence(pyramid, poly); } return(pyramid); }