mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
fix bug with more than 64K solids
This commit is contained in:
parent
d6edb385c7
commit
8638f9ff65
@ -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++) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user