fix bam reader
This commit is contained in:
parent
71e44de612
commit
99b0236c1c
|
|
@ -236,7 +236,11 @@ void CharacterJointEffect::
|
|||
write_datagram(BamWriter *manager, Datagram &dg) {
|
||||
RenderEffect::write_datagram(manager, dg);
|
||||
|
||||
manager->write_pointer(dg, _character);
|
||||
if (_character.is_valid_pointer()) {
|
||||
manager->write_pointer(dg, _character);
|
||||
} else {
|
||||
manager->write_pointer(dg, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -801,13 +801,21 @@ complete_pointers(TypedWritable **p_list, BamReader *manager) {
|
|||
int pi = TypedWritable::complete_pointers(p_list, manager);
|
||||
|
||||
// Get the effect pointers.
|
||||
Effects::iterator ai;
|
||||
for (ai = _effects.begin(); ai != _effects.end(); ++ai) {
|
||||
Effect &effect = (*ai);
|
||||
size_t i = 0;
|
||||
while (i < _effects.size()) {
|
||||
Effect &effect = _effects[i];
|
||||
|
||||
effect._effect = DCAST(RenderEffect, p_list[pi++]);
|
||||
nassertr(effect._effect != (RenderEffect *)NULL, pi);
|
||||
effect._type = effect._effect->get_type();
|
||||
if (effect._effect == (RenderEffect *)NULL) {
|
||||
// Remove this bogus RenderEffect pointer (it must have been
|
||||
// from an unwritable class).
|
||||
_effects.erase(_effects.begin() + i);
|
||||
|
||||
} else {
|
||||
// Keep this good pointer, and increment.
|
||||
effect._type = effect._effect->get_type();
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
||||
// Now make sure the array is properly sorted. (It won't
|
||||
|
|
|
|||
Loading…
Reference in New Issue