/// <summary> /// /// </summary> /// <param name="stairs"></param> /// <param name="liftSvc"></param> private void MakeLifts(List <CompassBox> stairs, int liftSvc) { var liftMatl = new Material(new Color(1.0f, 0.9f, 0.4f, 0.8f), 0.0f, 0.0f, false, null, false, Guid.NewGuid(), "lift"); var liftPolys = new List <Polygon>() { Polygon.Rectangle(liftSize, liftSize) }; for (var i = 0; i < (LiftQuantity * 0.5) - 1; i++) { var liftPerim = Polygon.Rectangle(liftSize, liftSize); var liftTopo = new CompassBox(liftPerim); var lastTopo = new CompassBox(liftPolys.Last()); liftPolys.Add(liftPerim.MoveFromTo(liftTopo.SW, lastTopo.SE)); } var firstTopo = new CompassBox(liftPolys.First()); var stairTopo = stairs.First(); var makePolys = new List <Polygon>(); foreach (var polygon in liftPolys) { makePolys.Add(polygon.MoveFromTo(firstTopo.SW, stairTopo.SE).Rotate(Position, Rotation)); } liftPolys.Clear(); liftPolys.Add(Polygon.Rectangle(liftSize, liftSize)); for (var i = 0; i < (LiftQuantity * 0.5) - 1; i++) { var liftPerim = Polygon.Rectangle(liftSize, liftSize); var liftTopo = new CompassBox(liftPerim); var lastTopo = new CompassBox(liftPolys.Last()); liftPolys.Add(liftPerim.MoveFromTo(liftTopo.SW, lastTopo.SE)); } firstTopo = new CompassBox(liftPolys.First()); stairTopo = stairs.Last(); foreach (var polygon in liftPolys) { makePolys.Add(polygon.MoveFromTo(firstTopo.NW, stairTopo.NE).Rotate(Position, Rotation)); } var liftSvcFactor = 0; foreach (var polygon in makePolys) { var lastLevel = Levels.SkipLast((int)liftSvc * liftSvcFactor).Last(); var liftHeight = lastLevel.Elevation - Levels.First().Elevation; if (liftHeight > 10.0) { var extrude = new Elements.Geometry.Solids.Extrude(polygon, liftHeight, Vector3.ZAxis, false); var geomRep = new Representation(new List <Elements.Geometry.Solids.SolidOperation>() { extrude }); Lifts.Add(new LiftShaft(polygon, Vector3.ZAxis, Rotation, Levels.First().Elevation, liftHeight, polygon.Area() * liftHeight, "", new Transform(0.0, 0.0, Levels.First().Elevation), liftMatl, geomRep, false, Guid.NewGuid(), "")); } liftSvcFactor++; } }
private void Fill(JourneyTemplate journeyTemplate) { RouteDistance = journeyTemplate.RouteDistance; Lifts.Clear(); foreach (var liftTemplate in journeyTemplate.Lifts) { Lifts.Add(new LiftViewModel { LiftDistance = liftTemplate.LiftDistance, PassengerName = liftTemplate.PassengerName }); } }
public void Tick() { if (((Calls == null) || Calls.Count < 1)) { return; } Lift elevator = new Lift(Lifts[0].Id, Lifts[0].Floor, doorsOpen: true); Lifts.Remove(Lifts[0]); Lifts.Add(elevator); Calls.Remove(Calls[0]); }