MCPcopy
hub / github.com/EngoEngine/engo / TestSpaceComponent_Contains_Hitboxes

Function TestSpaceComponent_Contains_Hitboxes

common/collision_test.go:49–113  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

47}
48
49func TestSpaceComponent_Contains_Hitboxes(t *testing.T) {
50 scs := []SpaceComponent{}
51 space0 := SpaceComponent{Width: 5, Height: 5, Position: engo.Point{X: 0, Y: 0}} //AABB
52 space1 := SpaceComponent{Width: 5, Height: 5, Position: engo.Point{X: 10, Y: 0}} //Triangle
53 space1.AddShape(Shape{Lines: []engo.Line{
54 {P1: engo.Point{X: 0, Y: 0}, P2: engo.Point{X: 0, Y: 5}},
55 {P1: engo.Point{X: 0, Y: 5}, P2: engo.Point{X: 5, Y: 5}},
56 {P1: engo.Point{X: 5, Y: 5}, P2: engo.Point{X: 0, Y: 0}},
57 }})
58 space2 := SpaceComponent{Width: 5, Height: 5, Position: engo.Point{X: 0, Y: 10}} //Multi-Shape
59 space2.AddShape(Shape{Lines: []engo.Line{
60 {P1: engo.Point{X: 2.5, Y: 0}, P2: engo.Point{X: 2.5 + 0.57735026919, Y: 1}},
61 {P1: engo.Point{X: 2.5 + 0.57735026919, Y: 1}, P2: engo.Point{X: 2.5 - 0.57735026919, Y: 1}},
62 {P1: engo.Point{X: 2.5 - 0.57735026919, Y: 1}, P2: engo.Point{X: 2.5, Y: 0}},
63 }})
64 space2.AddShape(Shape{Lines: []engo.Line{
65 {P1: engo.Point{X: 0, Y: 2.5}, P2: engo.Point{X: 1, Y: 2.5 + 0.57735026919}},
66 {P1: engo.Point{X: 1, Y: 2.5 + 0.57735026919}, P2: engo.Point{X: 1, Y: 2.5 - 0.57735026919}},
67 {P1: engo.Point{X: 1, Y: 2.5 - 0.57735026919}, P2: engo.Point{X: 0, Y: 2.5}},
68 }})
69 space2.AddShape(Shape{Lines: []engo.Line{
70 {P1: engo.Point{X: 5, Y: 2.5}, P2: engo.Point{X: 4, Y: 2.5 + 0.57735026919}},
71 {P1: engo.Point{X: 4, Y: 2.5 + 0.57735026919}, P2: engo.Point{X: 4, Y: 2.5 - 0.57735026919}},
72 {P1: engo.Point{X: 4, Y: 2.5 - 0.57735026919}, P2: engo.Point{X: 5, Y: 2.5}},
73 }})
74 space2.AddShape(Shape{Lines: []engo.Line{
75 {P1: engo.Point{X: 0, Y: 5}, P2: engo.Point{X: 1.15470053838, Y: 5}},
76 {P1: engo.Point{X: 1.15470053838, Y: 5}, P2: engo.Point{X: 0.57735026919, Y: 4}},
77 {P1: engo.Point{X: 0.57735026919, Y: 4}, P2: engo.Point{X: 0, Y: 5}},
78 }})
79 space2.AddShape(Shape{Lines: []engo.Line{
80 {P1: engo.Point{X: 5, Y: 5}, P2: engo.Point{X: 5 - 1.15470053838, Y: 5}},
81 {P1: engo.Point{X: 5 - 1.15470053838, Y: 5}, P2: engo.Point{X: 5 - 0.57735026919, Y: 5}},
82 {P1: engo.Point{X: 5 - 0.57735026919, Y: 5}, P2: engo.Point{X: 5, Y: 5}},
83 }})
84 space3 := SpaceComponent{Width: 5, Height: 5, Position: engo.Point{X: 10, Y: 10}} //Circle
85 space3.AddShape(Shape{Ellipse: Ellipse{Rx: 2.5, Cx: 2.5, Ry: 2.5, Cy: 2.5}})
86 space4 := SpaceComponent{Width: 5, Height: 5, Position: engo.Point{X: 20, Y: 0}} //Ellipse
87 space4.AddShape(Shape{Ellipse: Ellipse{Rx: 2.5, Cx: 2.5, Ry: 5, Cy: 2.5}})
88 space5 := SpaceComponent{Width: 5, Height: 5, Position: engo.Point{X: 0, Y: 20}, Rotation: 30} //Ellipse-Rotated
89 space5.AddShape(Shape{Ellipse: Ellipse{Rx: 2.5, Cx: 2.5, Ry: 5, Cy: 2.5}})
90 scs = append(scs, space0, space1, space2, space3, space4, space5)
91 pts := []engo.Point{
92 {X: 2.5, Y: 2.5},
93 {X: 12.5, Y: 2.5},
94 {X: 0.5, Y: 12.5},
95 {X: 12.5, Y: 12.5},
96 {X: 22.5, Y: 2.5},
97 {X: 2.5, Y: 22.5},
98 }
99 for i := 0; i < len(scs); i++ {
100 for j := 0; j < len(pts); j++ {
101 if i == j {
102 if !scs[i].Contains(pts[j]) {
103 println(scs[i].Position.X, scs[i].Position.Y, pts[j].X, pts[j].Y)
104 t.Errorf("Space Component %v did not contain point %v, but should.", i, j)
105 }
106 continue

Callers

nothing calls this directly

Calls 2

AddShapeMethod · 0.95
ContainsMethod · 0.65

Tested by

no test coverage detected