(in Vector)
| 1158 | } |
| 1159 | |
| 1160 | func (card *Card) NearestPointTowardDisplayRectCenter(in Vector) Vector { |
| 1161 | |
| 1162 | lines := []collidingLine{ |
| 1163 | newCollidingLine(card.DisplayRect.X, card.DisplayRect.Y, card.DisplayRect.X+card.DisplayRect.W, card.DisplayRect.Y), |
| 1164 | newCollidingLine(card.DisplayRect.X+card.DisplayRect.W, card.DisplayRect.Y, card.DisplayRect.X+card.DisplayRect.W, card.DisplayRect.Y+card.DisplayRect.H), |
| 1165 | newCollidingLine(card.DisplayRect.X+card.DisplayRect.W, card.DisplayRect.Y+card.DisplayRect.H, card.DisplayRect.X, card.DisplayRect.Y+card.DisplayRect.H), |
| 1166 | newCollidingLine(card.DisplayRect.X, card.DisplayRect.Y+card.DisplayRect.H, card.DisplayRect.X, card.DisplayRect.Y), |
| 1167 | } |
| 1168 | |
| 1169 | center := card.Center() |
| 1170 | |
| 1171 | piercingPoint := center.Sub(in).Scale(10000) |
| 1172 | dest := in.Add(piercingPoint) |
| 1173 | |
| 1174 | colliding := newCollidingLine(in.X, in.Y, dest.X, dest.Y) |
| 1175 | |
| 1176 | closestPoint := Vector{} |
| 1177 | closestPointDist := float32(math.MaxFloat32) |
| 1178 | |
| 1179 | for _, l := range lines { |
| 1180 | if point, ok := colliding.IntersectionPointsLine(l); ok { |
| 1181 | if dist := in.DistanceSquared(point); dist < closestPointDist { |
| 1182 | closestPointDist = dist |
| 1183 | closestPoint = point |
| 1184 | } |
| 1185 | } |
| 1186 | } |
| 1187 | |
| 1188 | return closestPoint |
| 1189 | |
| 1190 | } |
| 1191 | |
| 1192 | func (card *Card) DeadlineState() int { |
| 1193 |
no test coverage detected