@@ -16,14 +16,39 @@ func (e *Engine) ProcessGeometry(data *vision.SSL_GeometryData) {
1616 newGeometry .FieldWidth = float64 (* data .Field .FieldWidth ) / 1000.0
1717 newGeometry .FieldLength = float64 (* data .Field .FieldLength ) / 1000.0
1818 newGeometry .GoalWidth = float64 (* data .Field .GoalWidth ) / 1000.0
19- for _ , line := range data .Field .FieldLines {
20- if * line .Name == "LeftFieldLeftPenaltyStretch" {
21- newGeometry .DefenseAreaDepth = math .Abs (float64 (* line .P1 .X - * line .P2 .X )) / 1000.0
22- } else if * line .Name == "LeftPenaltyStretch" {
23- newGeometry .DefenseAreaWidth = math .Abs (float64 (* line .P1 .Y - * line .P2 .Y )) / 1000.0
19+
20+ if data .Field .PenaltyAreaWidth != nil {
21+ newGeometry .DefenseAreaWidth = float64 (* data .Field .PenaltyAreaWidth ) / 1000.0
22+ } else {
23+ for _ , line := range data .Field .FieldLines {
24+ if (line .Type != nil && * line .Type == vision .SSL_FieldShapeType_LeftPenaltyStretch ) ||
25+ * line .Name == "LeftPenaltyStretch" {
26+ newGeometry .DefenseAreaWidth = math .Abs (float64 (* line .P1 .Y - * line .P2 .Y )) / 1000.0
27+ break
28+ }
29+ }
30+ }
31+
32+ if data .Field .PenaltyAreaDepth != nil {
33+ newGeometry .DefenseAreaDepth = float64 (* data .Field .PenaltyAreaDepth ) / 1000.0
34+ } else {
35+ for _ , line := range data .Field .FieldLines {
36+ if (line .Type != nil && * line .Type == vision .SSL_FieldShapeType_LeftFieldLeftPenaltyStretch ) ||
37+ * line .Name == "LeftFieldLeftPenaltyStretch" {
38+ newGeometry .DefenseAreaDepth = math .Abs (float64 (* line .P1 .X - * line .P2 .X )) / 1000.0
39+ break
40+ }
2441 }
2542 }
2643
44+ if data .Field .GoalCenterToPenaltyMark != nil {
45+ newGeometry .PenaltyKickDistToGoal = float64 (* data .Field .GoalCenterToPenaltyMark ) / 1000.0
46+ }
47+
48+ if data .Field .CenterCircleRadius != nil {
49+ newGeometry .CenterCircleRadius = float64 (* data .Field .CenterCircleRadius ) / 1000.0
50+ }
51+
2752 e .stateMachine .Geometry = newGeometry
2853
2954 if currentGeometry != newGeometry {
0 commit comments