MCPcopy Create free account
hub / github.com/GarageGames/Torque3D / save

Method save

Engine/source/navigation/navMesh.cpp:1631–1688  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1629}
1630
1631bool NavMesh::save()
1632{
1633 if(!dStrlen(mFileName) || !nm)
1634 return false;
1635
1636 File file;
1637 if(file.open(mFileName, File::Write) != File::Ok)
1638 {
1639 file.close();
1640 Con::errorf("Could not open file %s when saving navmesh %s.",
1641 mFileName, getName() ? getName() : getIdString());
1642 return false;
1643 }
1644
1645 // Store header.
1646 NavMeshSetHeader header;
1647 header.magic = NAVMESHSET_MAGIC;
1648 header.version = NAVMESHSET_VERSION;
1649 header.numTiles = 0;
1650 for(U32 i = 0; i < nm->getMaxTiles(); ++i)
1651 {
1652 const dtMeshTile* tile = ((const dtNavMesh*)nm)->getTile(i);
1653 if (!tile || !tile->header || !tile->dataSize) continue;
1654 header.numTiles++;
1655 }
1656 memcpy(&header.params, nm->getParams(), sizeof(dtNavMeshParams));
1657 file.write(sizeof(NavMeshSetHeader), (const char*)&header);
1658
1659 // Store tiles.
1660 for(U32 i = 0; i < nm->getMaxTiles(); ++i)
1661 {
1662 const dtMeshTile* tile = ((const dtNavMesh*)nm)->getTile(i);
1663 if(!tile || !tile->header || !tile->dataSize) continue;
1664
1665 NavMeshTileHeader tileHeader;
1666 tileHeader.tileRef = nm->getTileRef(tile);
1667 tileHeader.dataSize = tile->dataSize;
1668
1669 file.write(sizeof(tileHeader), (const char*)&tileHeader);
1670 file.write(tile->dataSize, (const char*)tile->data);
1671 }
1672
1673 S32 s = mLinkIDs.size();
1674 file.write(sizeof(S32), (const char*)&s);
1675 if (s > 0)
1676 {
1677 file.write(sizeof(F32) * s * 6, (const char*)mLinkVerts.address());
1678 file.write(sizeof(F32) * s, (const char*)mLinkRads.address());
1679 file.write(sizeof(U8) * s, (const char*)mLinkDirs.address());
1680 file.write(sizeof(U8) * s, (const char*)mLinkAreas.address());
1681 file.write(sizeof(U16) * s, (const char*)mLinkFlags.address());
1682 file.write(sizeof(U32) * s, (const char*)mLinkIDs.address());
1683 }
1684
1685 file.close();
1686
1687 return true;
1688}

Callers 1

navMesh.cppFile · 0.45

Calls 13

errorfFunction · 0.85
memcpyFunction · 0.85
getMaxTilesMethod · 0.80
dStrlenFunction · 0.50
getNameFunction · 0.50
openMethod · 0.45
closeMethod · 0.45
getTileMethod · 0.45
getParamsMethod · 0.45
writeMethod · 0.45
getTileRefMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected