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

Method save

Engine/source/navigation/navMesh.cpp:1630–1686  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 1

navMesh.cppFile · 0.45

Calls 13

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

Tested by

no test coverage detected