Skip to content

Commit 51cfa5a

Browse files
committed
Fix NPEs with tracker data
1 parent 50d6496 commit 51cfa5a

File tree

3 files changed

+7
-3
lines changed

3 files changed

+7
-3
lines changed

internal/app/engine/common.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func addDur(duration *duration.Duration, delta time.Duration) {
7373
}
7474

7575
func (e *Engine) ballSteady() bool {
76-
if e.gcState.TrackerStateGc.Ball.Vel == nil {
76+
if e.gcState.TrackerStateGc.Ball == nil || e.gcState.TrackerStateGc.Ball.Vel == nil {
7777
return true
7878
}
7979
return e.gcState.TrackerStateGc.Ball.Vel.ToVector2().Length() < ballSteadyThreshold

internal/app/engine/consume_tracker.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ func (e *Engine) ProcessTrackerFrame(wrapperFrame *tracker.TrackerWrapperPacket)
1515
Robots: convertRobots(wrapperFrame.TrackedFrame.Robots),
1616
}
1717

18+
readyToContinue := e.readyToContinue()
19+
1820
e.UpdateGcState(func(gcState *GcState) {
1921
gcState.TrackerState[*wrapperFrame.Uuid] = &state
2022

@@ -24,7 +26,7 @@ func (e *Engine) ProcessTrackerFrame(wrapperFrame *tracker.TrackerWrapperPacket)
2426
if e.gcState.ReadyToContinue == nil {
2527
e.gcState.ReadyToContinue = new(bool)
2628
}
27-
*e.gcState.ReadyToContinue = e.readyToContinue()
29+
*e.gcState.ReadyToContinue = readyToContinue
2830
})
2931
}
3032

@@ -51,7 +53,8 @@ func convertBalls(balls []*tracker.TrackedBall) *Ball {
5153

5254
func (e *Engine) readyToContinue() bool {
5355
radius := e.gameConfig.DistanceToBallInStop + robotRadius + distanceThreshold
54-
if !e.ballSteady() ||
56+
if e.gcState.TrackerStateGc.Ball == nil ||
57+
!e.ballSteady() ||
5558
e.robotsInsideRadius(e.gcState.TrackerStateGc.Robots, e.gcState.TrackerStateGc.Ball.Pos.ToVector2(), radius) {
5659
return false
5760
}

internal/app/engine/engine.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ func NewEngine(gameConfig config.Game) (e *Engine) {
4848
state.Team_BLUE.String(): new(GcStateTeam),
4949
}
5050
e.gcState.AutoRefState = map[string]*GcStateAutoRef{}
51+
e.gcState.TrackerState = map[string]*GcStateTracker{}
5152
e.gcState.TrackerStateGc = new(GcStateTracker)
5253
e.noProgressDetector = NoProgressDetector{gcEngine: e}
5354
e.ballPlacementCoordinator = BallPlacementCoordinator{gcEngine: e}

0 commit comments

Comments
 (0)