MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / load

Method load

Engine/source/navigation/navMesh.cpp:1527–1622  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1525};
1526
1527bool NavMesh::load()
1528{
1529 if(!dStrlen(mFileName))
1530 return false;
1531
1532 FileStream stream;
1533 if(!stream.open(mFileName, Torque::FS::File::Read))
1534 {
1535 Con::errorf("Could not open file %s when loading navmesh %s.",
1536 mFileName, getName() ? getName() : getIdString());
1537 return false;
1538 }
1539
1540 // Read header.
1541 NavMeshSetHeader header;
1542 stream.read(sizeof(NavMeshSetHeader), (char*)&header);
1543 if(header.magic != NAVMESHSET_MAGIC)
1544 {
1545 stream.close();
1546 Con::errorf("Navmesh magic incorrect when loading navmesh %s; possible corrupt navmesh file %s.",
1547 getName() ? getName() : getIdString(), mFileName);
1548 return false;
1549 }
1550 if(header.version != NAVMESHSET_VERSION)
1551 {
1552 stream.close();
1553 Con::errorf("Navmesh version incorrect when loading navmesh %s; possible corrupt navmesh file %s.",
1554 getName() ? getName() : getIdString(), mFileName);
1555 return false;
1556 }
1557
1558 if(nm)
1559 dtFreeNavMesh(nm);
1560 nm = dtAllocNavMesh();
1561 if(!nm)
1562 {
1563 stream.close();
1564 Con::errorf("Out of memory when loading navmesh %s.",
1565 getName() ? getName() : getIdString());
1566 return false;
1567 }
1568
1569 dtStatus status = nm->init(&header.params);
1570 if(dtStatusFailed(status))
1571 {
1572 stream.close();
1573 Con::errorf("Failed to initialise navmesh params when loading navmesh %s.",
1574 getName() ? getName() : getIdString());
1575 return false;
1576 }
1577
1578 // Read tiles.
1579 for(U32 i = 0; i < header.numTiles; ++i)
1580 {
1581 NavMeshTileHeader tileHeader;
1582 stream.read(sizeof(NavMeshTileHeader), (char*)&tileHeader);
1583 if(!tileHeader.tileRef || !tileHeader.dataSize)
1584 break;

Callers 1

navMesh.cppFile · 0.45

Calls 15

dtFreeNavMeshFunction · 0.85
dtAllocNavMeshFunction · 0.85
dtStatusFailedFunction · 0.85
dtAllocFunction · 0.85
memsetFunction · 0.85
openMethod · 0.65
closeMethod · 0.65
dStrlenFunction · 0.50
errorfFunction · 0.50
getNameFunction · 0.50
readMethod · 0.45
initMethod · 0.45

Tested by

no test coverage detected