MCPcopy Create free account
hub / github.com/ddnet/ddnet / IntersectNoLaserNoWalls

Method IntersectNoLaserNoWalls

src/game/collision.cpp:1172–1200  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1170}
1171
1172int CCollision::IntersectNoLaserNoWalls(vec2 Pos0, vec2 Pos1, vec2 *pOutCollision, vec2 *pOutBeforeCollision) const
1173{
1174 float Distance = distance(Pos0, Pos1);
1175 vec2 Last = Pos0;
1176
1177 const int DistanceRounded = std::ceil(Distance);
1178 for(int i = 0; i < DistanceRounded; i++)
1179 {
1180 float a = (float)i / Distance;
1181 vec2 Pos = mix(Pos0, Pos1, a);
1182 if(IsNoLaser(round_to_int(Pos.x), round_to_int(Pos.y)) || IsFrontNoLaser(round_to_int(Pos.x), round_to_int(Pos.y)))
1183 {
1184 if(pOutCollision)
1185 *pOutCollision = Pos;
1186 if(pOutBeforeCollision)
1187 *pOutBeforeCollision = Last;
1188 if(IsNoLaser(round_to_int(Pos.x), round_to_int(Pos.y)))
1189 return GetCollisionAt(Pos.x, Pos.y);
1190 else
1191 return GetFrontCollisionAt(Pos.x, Pos.y);
1192 }
1193 Last = Pos;
1194 }
1195 if(pOutCollision)
1196 *pOutCollision = Pos1;
1197 if(pOutBeforeCollision)
1198 *pOutBeforeCollision = Pos1;
1199 return 0;
1200}
1201
1202int CCollision::IntersectAir(vec2 Pos0, vec2 Pos1, vec2 *pOutCollision, vec2 *pOutBeforeCollision) const
1203{

Callers 4

LookForPlayersToDragMethod · 0.80
DraggerBeamTickMethod · 0.80
LookForPlayersToDragMethod · 0.80
TickMethod · 0.80

Calls 3

distanceFunction · 0.85
mixFunction · 0.85
round_to_intFunction · 0.85

Tested by

no test coverage detected