fix bug with more than 64K solids

This commit is contained in:
David Rose 2009-03-06 20:53:24 +00:00
parent d6edb385c7
commit 8638f9ff65

View File

@ -396,7 +396,12 @@ write_datagram(BamWriter *manager, Datagram &dg) {
PandaNode::write_datagram(manager, dg); PandaNode::write_datagram(manager, dg);
int num_solids = _solids.size(); int num_solids = _solids.size();
if (num_solids >= 0xffff) {
dg.add_uint16(0xffff);
dg.add_uint32(num_solids);
} else {
dg.add_uint16(num_solids); dg.add_uint16(num_solids);
}
for(int i = 0; i < num_solids; i++) { for(int i = 0; i < num_solids; i++) {
manager->write_pointer(dg, _solids[i].get_read_pointer()); manager->write_pointer(dg, _solids[i].get_read_pointer());
} }
@ -455,6 +460,9 @@ fillin(DatagramIterator &scan, BamReader *manager) {
PandaNode::fillin(scan, manager); PandaNode::fillin(scan, manager);
int num_solids = scan.get_uint16(); int num_solids = scan.get_uint16();
if (num_solids == 0xffff) {
num_solids = scan.get_uint32();
}
_solids.clear(); _solids.clear();
_solids.reserve(num_solids); _solids.reserve(num_solids);
for(int i = 0; i < num_solids; i++) { for(int i = 0; i < num_solids; i++) {