public RulePaceLaps(CameraControl cameraControl, EditMarker restartMarker, EditMarker battleMarker) { this.cameraControl = cameraControl; this.restartMarker = restartMarker; this.battleMarker = battleMarker; wasUnderPaceCar = false; }
public RuleBattle(CameraControl cameraControl, EditMarker editMarker, TimeSpan cameraStickyPeriod, TimeSpan battleStickyPeriod, TimeSpan battleGap, double battleFactor) { this.cameraControl = cameraControl; this.editMarker = editMarker; this.battleStickyPeriod = battleStickyPeriod; this.battleCameraChangePeriod = cameraStickyPeriod; this.battleGap = battleGap; this.battleFactor = battleFactor; }
public RuleIncident(CameraControl cameraControl, RemovalEdits removalEdits, Incidents incidents, int limitDownTo) { this.editMarker = removalEdits.For(InterestState.Incident); this.cameraControl = cameraControl; this.limitDownTo = limitDownTo; nextIncident = incidents.GetEnumerator(); nextIncident.MoveNext(); if (nextIncident.Current != null) TraceInfo.WriteLine("First incident at {0}", nextIncident.Current.StartSessionTime); }
public RuleRandomDriver(CameraControl cameraControl, SessionData sessionData, TimeSpan stickyTime) { this.cameraControl = cameraControl; this.sessionData = sessionData; this.stickyTime = stickyTime; allCarIndexes = sessionData.DriverInfo.CompetingDrivers.Where(x => !x.IsPaceCar).Select(x => x.CarIdx).ToArray(); if (Settings.Default.PreferredDriverNames != null && Settings.Default.PreferredDriverNames.Length > 0) { preferredCarIndexes = sessionData.DriverInfo.CompetingDrivers .Where(x => Settings.Default.PreferredDrivers.Contains(x.UserName.ToLower())) .Select(x => x.CarIdx) .ToArray(); } else preferredCarIndexes = allCarIndexes; randomDriverNumber = new Random(); }
public ReplayControl(SessionData sessionData, Incidents incidents, RemovalEdits removalEdits, TrackCameras trackCameras) { var cameras = trackCameras.Where(tc => tc.TrackName == sessionData.WeekendInfo.TrackDisplayName).ToArray(); TraceInfo.WriteLineIf(cameras.Count() <= 0, "Track Cameras not defined for {0}", sessionData.WeekendInfo.TrackDisplayName); Debug.Assert(cameras.Count() > 0, "Track Cameras not defined for {0}".F(sessionData.WeekendInfo.TrackDisplayName)); foreach (var tc in cameras) tc.CameraNumber = (short)sessionData.CameraInfo.Groups.First(g => g.GroupName.ToLower() == tc.CameraName.ToLower()).GroupNum; var camera = cameras.First(tc => tc.IsRaceStart); var cameraControl = new CameraControl(cameras); cameraControl.CameraOnPositon(1, camera.CameraNumber); var battleMarker = removalEdits.For(InterestState.Battle); var restartMarker = removalEdits.For(InterestState.Restart); var ruleLastSectors = new RuleLastLapPeriod(cameraControl, removalEdits); var ruleUnlimitedIncident = new RuleIncident(cameraControl, removalEdits, incidents, 999); var ruleLimitedIncident = new RuleIncident(cameraControl, removalEdits, incidents, Settings.Default.IgnoreIncidentsBelowPosition); var ruleFirstSectors = new RuleFirstLapPeriod(cameraControl, removalEdits); var rulePaceLaps = new RulePaceLaps(cameraControl, restartMarker, battleMarker); var ruleBattle = new RuleBattle(cameraControl, battleMarker, Settings.Default.CameraStickyPeriod, Settings.Default.BattleStickyPeriod, Settings.Default.BattleGap, Settings.Default.BattleFactor2); ruleRandom = new RuleRandomDriver(cameraControl, sessionData, Settings.Default.CameraStickyPeriod); var ruleForFirstSectors = Settings.Default.IgnoreIncidentsDuringRaceStart ? ruleFirstSectors : ruleFirstSectors.WithVeto(ruleUnlimitedIncident); directionRules = new IDirectionRule[] { ruleLastSectors, ruleForFirstSectors, rulePaceLaps.WithVeto(ruleUnlimitedIncident.WithVeto(ruleLastSectors)), ruleBattle.WithVeto(ruleLimitedIncident.WithVeto(ruleLastSectors)), ruleUnlimitedIncident.WithVeto(ruleLastSectors), ruleRandom.WithVeto(ruleLastSectors) }; currentRule = directionRules[0]; }
public RuleLastLapPeriod(CameraControl cameraControl, RemovalEdits removalEdits) { this.editMarker = removalEdits.For(InterestState.LastLap); this.cameraControl = cameraControl; }
public RuleFirstLapPeriod(CameraControl cameraControl, RemovalEdits removalEdits) { editMarker = removalEdits.For(InterestState.FirstLap); this.cameraControl = cameraControl; }