Example #1
0
        public FuncDoor(Entity entity, GameWorld world, FuncDoorFactory factory) : base(entity, world)
        {
            this.world = world;

            fxStart = factory.FXStart;
            fxMove  = factory.FXMove;
            fxStop  = factory.FXStop;

            model = world.Atoms[factory.Model];

            kinematic = world.Physics.AddKinematicModel(model, entity);

            once     = factory.Once;
            doorMode = factory.DoorMode;

            framesPerSecond   = factory.FramesPerSecond;
            openingStartFrame = factory.OpeningStartFrame;
            openingEndFrame   = factory.OpeningEndFrame;
            closingStartFrame = factory.ClosingStartFrame;
            closingEndFrame   = factory.ClosingEndFrame;
            waitingDelay      = factory.WaitingDelay;

            frame = openingStartFrame;

            Reset();
        }
Example #2
0
        public StandardWorld(ITrack track, TimeSpan simulationTime, double safetyMargin = 1)
        {
            Track             = track;
            VehicleModel      = new Porsche911VehicleModel(track.Circuit.Radius / 3);
            MotionModel       = new KinematicModel(VehicleModel, simulationTime);
            CollisionDetector = new AccurateCollisionDetector(track, VehicleModel, safetyMargin);
            WayPoints         = track.Circuit.WayPoints.Count > 4
                ? new[]
            {
                track.Circuit.WayPoints[0],
                track.Circuit.WayPoints.ElementAt(track.Circuit.WayPoints.Count / 3),
                track.Circuit.WayPoints.ElementAt(2 * track.Circuit.WayPoints.Count / 3),
                track.Circuit.WayPoints.Last()
            }.ToList().AsReadOnly()
                : track.Circuit.WayPoints.ToList().AsReadOnly();

            StateClassificator = new StateClassificator(CollisionDetector, WayPoints.Last());
            InitialState       = track.Circuit.StartingPosition;
            Actions            = new SteeringInputs(throttleSteps: 7, steeringSteps: 31);
        }
Example #3
0
        public FuncMotor(Entity entity, GameWorld world, FuncMotorFactory factory) : base(entity, world)
        {
            fxStart = factory.FXStart;
            fxMove  = factory.FXMove;
            fxStop  = factory.FXStop;

            model = world.Atoms[factory.Model];

            kinematic = world.Physics.AddKinematicModel(model, entity);

            once    = factory.Once;
            enabled = factory.Start;

            startFrame = factory.StartFrame;
            endFrame   = factory.EndFrame;
            animLength = (short)(endFrame - startFrame);

            framesPerSecond = factory.FramesPerSecond;

            Reset();
        }