Esempio n. 1
0
        /// <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
         });
     }
 }
Esempio n. 3
0
        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]);
        }