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

Function AdaptReplaceableAreas

src/tools/map_replace_area.cpp:347–374  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

345}
346
347bool AdaptReplaceableAreas(const float aaaGameAreas[2][2][2], const float aaaVisibleAreas[2][2][2], const CMapObject aObs[2], float aaaReplaceableAreas[2][2][2])
348{
349 float aDistance[2], aScreenPos[2];
350 GetGameAreaDistance(aaaGameAreas, aObs, aaaVisibleAreas, aDistance);
351 GetSignificantScreenPos(aObs[0], aaaVisibleAreas[0], aaaReplaceableAreas[0], aScreenPos);
352
353 for(int i = 0; i < 2; i++)
354 {
355 float aDestLine[2], aSourceLine[2], aVisibleLine[2];
356
357 aDestLine[0] = aObs[1].m_aaBaseArea[i][0] + (aScreenPos[i] + aDistance[i]) * aObs[1].m_aSpeed[i];
358 aDestLine[1] = aDestLine[0] + (aObs[1].m_aaBaseArea[i][1] - aObs[1].m_aaBaseArea[i][0]);
359
360 if(!GetLineIntersection(aDestLine, aaaVisibleAreas[1][i], aVisibleLine))
361 return false;
362
363 aSourceLine[0] = aaaVisibleAreas[0][i][0] + aDistance[i] - aaaReplaceableAreas[0][i][0];
364 aSourceLine[1] = aaaVisibleAreas[0][i][1] + aDistance[i] + aaaReplaceableAreas[0][i][1] - aaaReplaceableAreas[0][i][0];
365
366 if(!GetLineIntersection(aSourceLine, aVisibleLine, aVisibleLine))
367 return false;
368
369 aaaReplaceableAreas[0][i][0] = aVisibleLine[0] - aSourceLine[0];
370 aaaReplaceableAreas[1][i][0] = aVisibleLine[0] - aDestLine[0];
371 }
372
373 return true;
374}
375
376void ReplaceAreaQuads(CDataFileReader aInputMaps[2], const float aaaGameAreas[][2][2], const CMapItemGroup *apLayerGroups[2], CMapItemLayer *apItem[2], const int ItemNumber)
377{

Callers 1

ReplaceAreaTilesFunction · 0.85

Calls 3

GetGameAreaDistanceFunction · 0.85
GetSignificantScreenPosFunction · 0.85
GetLineIntersectionFunction · 0.85

Tested by

no test coverage detected