update for new complete_pointers() rules
This commit is contained in:
parent
b524ab6b27
commit
f8d082a208
|
|
@ -572,23 +572,25 @@ write_datagram(BamWriter *writer, Datagram &datagram) {
|
|||
////////////////////////////////////////////////////////////////////
|
||||
int EggFile::
|
||||
complete_pointers(TypedWritable **p_list, BamReader *manager) {
|
||||
int index = TypedWritable::complete_pointers(p_list, manager);
|
||||
int pi = TypedWritable::complete_pointers(p_list, manager);
|
||||
|
||||
int i;
|
||||
_textures.reserve(_num_textures);
|
||||
for (i = 0; i < _num_textures; i++) {
|
||||
TextureReference *texture;
|
||||
DCAST_INTO_R(texture, p_list[index], index);
|
||||
DCAST_INTO_R(texture, p_list[pi], pi);
|
||||
_textures.push_back(texture);
|
||||
index++;
|
||||
pi++;
|
||||
}
|
||||
|
||||
if (p_list[index] != (TypedWritable *)NULL) {
|
||||
DCAST_INTO_R(_default_group, p_list[index], index);
|
||||
}
|
||||
index++;
|
||||
pi += _explicitly_assigned_groups.complete_pointers(p_list + pi, manager);
|
||||
|
||||
return index;
|
||||
if (p_list[pi] != (TypedWritable *)NULL) {
|
||||
DCAST_INTO_R(_default_group, p_list[pi], pi);
|
||||
}
|
||||
pi++;
|
||||
|
||||
return pi;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -419,6 +419,24 @@ write_datagram(BamWriter *writer, Datagram &datagram) {
|
|||
datagram.add_int32(_y_size);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: ImageFile::complete_pointers
|
||||
// Access: Public, Virtual
|
||||
// Description: Called after the object is otherwise completely read
|
||||
// from a Bam file, this function's job is to store the
|
||||
// pointers that were retrieved from the Bam file for
|
||||
// each pointer object written. The return value is the
|
||||
// number of pointers processed from the list.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
int ImageFile::
|
||||
complete_pointers(TypedWritable **p_list, BamReader *manager) {
|
||||
int pi = TypedWritable::complete_pointers(p_list, manager);
|
||||
|
||||
pi += _properties.complete_pointers(p_list + pi, manager);
|
||||
|
||||
return pi;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: ImageFile::fillin
|
||||
// Access: Protected
|
||||
|
|
|
|||
|
|
@ -77,6 +77,8 @@ protected:
|
|||
// The TypedWritable interface follows.
|
||||
public:
|
||||
virtual void write_datagram(BamWriter *writer, Datagram &datagram);
|
||||
virtual int complete_pointers(TypedWritable **p_list,
|
||||
BamReader *manager);
|
||||
|
||||
protected:
|
||||
void fillin(DatagramIterator &scan, BamReader *manager);
|
||||
|
|
|
|||
|
|
@ -633,15 +633,16 @@ write_datagram(BamWriter *writer, Datagram &datagram) {
|
|||
////////////////////////////////////////////////////////////////////
|
||||
int PaletteGroup::
|
||||
complete_pointers(TypedWritable **p_list, BamReader *manager) {
|
||||
int index = TypedWritable::complete_pointers(p_list, manager);
|
||||
int pi = TypedWritable::complete_pointers(p_list, manager);
|
||||
|
||||
pi += _dependent.complete_pointers(p_list + pi, manager);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < _num_placements; i++) {
|
||||
TexturePlacement *placement;
|
||||
DCAST_INTO_R(placement, p_list[index], index);
|
||||
index++;
|
||||
DCAST_INTO_R(placement, p_list[pi++], pi);
|
||||
bool inserted = _placements.insert(placement).second;
|
||||
nassertr(inserted, index);
|
||||
nassertr(inserted, pi);
|
||||
}
|
||||
|
||||
// We must store the list of pages in a temporary vector first. We
|
||||
|
|
@ -651,12 +652,11 @@ complete_pointers(TypedWritable **p_list, BamReader *manager) {
|
|||
_load_pages.reserve(_num_pages);
|
||||
for (i = 0; i < _num_pages; i++) {
|
||||
PalettePage *page;
|
||||
DCAST_INTO_R(page, p_list[index], index);
|
||||
index++;
|
||||
DCAST_INTO_R(page, p_list[pi++], pi);
|
||||
_load_pages.push_back(page);
|
||||
}
|
||||
|
||||
return index;
|
||||
return pi;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -296,23 +296,24 @@ write_datagram(BamWriter *writer, Datagram &datagram) {
|
|||
////////////////////////////////////////////////////////////////////
|
||||
int PalettePage::
|
||||
complete_pointers(TypedWritable **p_list, BamReader *manager) {
|
||||
int index = TypedWritable::complete_pointers(p_list, manager);
|
||||
int pi = TypedWritable::complete_pointers(p_list, manager);
|
||||
|
||||
if (p_list[index] != (TypedWritable *)NULL) {
|
||||
DCAST_INTO_R(_group, p_list[index], index);
|
||||
if (p_list[pi] != (TypedWritable *)NULL) {
|
||||
DCAST_INTO_R(_group, p_list[pi], pi);
|
||||
}
|
||||
index++;
|
||||
pi++;
|
||||
|
||||
pi += _properties.complete_pointers(p_list + pi, manager);
|
||||
|
||||
int i;
|
||||
_images.reserve(_num_images);
|
||||
for (i = 0; i < _num_images; i++) {
|
||||
PaletteImage *image;
|
||||
DCAST_INTO_R(image, p_list[index], index);
|
||||
DCAST_INTO_R(image, p_list[pi++], pi);
|
||||
_images.push_back(image);
|
||||
index++;
|
||||
}
|
||||
|
||||
return index;
|
||||
return pi;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -1173,39 +1173,37 @@ write_datagram(BamWriter *writer, Datagram &datagram) {
|
|||
////////////////////////////////////////////////////////////////////
|
||||
int TextureImage::
|
||||
complete_pointers(TypedWritable **p_list, BamReader *manager) {
|
||||
int index = ImageFile::complete_pointers(p_list, manager);
|
||||
int pi = ImageFile::complete_pointers(p_list, manager);
|
||||
|
||||
pi += _actual_assigned_groups.complete_pointers(p_list + pi, manager);
|
||||
|
||||
int i;
|
||||
for (i = 0; i < _num_placement; i++) {
|
||||
PaletteGroup *group;
|
||||
TexturePlacement *placement;
|
||||
DCAST_INTO_R(group, p_list[index], index);
|
||||
index++;
|
||||
DCAST_INTO_R(placement, p_list[index], index);
|
||||
index++;
|
||||
DCAST_INTO_R(group, p_list[pi++], pi);
|
||||
DCAST_INTO_R(placement, p_list[pi++], pi);
|
||||
_placement.insert(Placement::value_type(group, placement));
|
||||
}
|
||||
|
||||
for (i = 0; i < _num_sources; i++) {
|
||||
SourceTextureImage *source;
|
||||
DCAST_INTO_R(source, p_list[index], index);
|
||||
DCAST_INTO_R(source, p_list[pi++], pi);
|
||||
string key = get_source_key(source->get_filename(),
|
||||
source->get_alpha_filename());
|
||||
|
||||
bool inserted = _sources.insert(Sources::value_type(key, source)).second;
|
||||
index++;
|
||||
nassertr(inserted, index);
|
||||
nassertr(inserted, pi);
|
||||
}
|
||||
|
||||
for (i = 0; i < _num_dests; i++) {
|
||||
DestTextureImage *dest;
|
||||
DCAST_INTO_R(dest, p_list[index], index);
|
||||
DCAST_INTO_R(dest, p_list[pi++], pi);
|
||||
bool inserted = _dests.insert(Dests::value_type(dest->get_filename(), dest)).second;
|
||||
index++;
|
||||
nassertr(inserted, index);
|
||||
nassertr(inserted, pi);
|
||||
}
|
||||
|
||||
return index;
|
||||
return pi;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -722,24 +722,26 @@ write_datagram(BamWriter *writer, Datagram &datagram) {
|
|||
////////////////////////////////////////////////////////////////////
|
||||
int TextureReference::
|
||||
complete_pointers(TypedWritable **p_list, BamReader *manager) {
|
||||
int index = TypedWritable::complete_pointers(p_list, manager);
|
||||
int pi = TypedWritable::complete_pointers(p_list, manager);
|
||||
|
||||
if (p_list[index] != (TypedWritable *)NULL) {
|
||||
DCAST_INTO_R(_egg_file, p_list[index], index);
|
||||
if (p_list[pi] != (TypedWritable *)NULL) {
|
||||
DCAST_INTO_R(_egg_file, p_list[pi], pi);
|
||||
}
|
||||
index++;
|
||||
pi++;
|
||||
|
||||
if (p_list[index] != (TypedWritable *)NULL) {
|
||||
DCAST_INTO_R(_source_texture, p_list[index], index);
|
||||
if (p_list[pi] != (TypedWritable *)NULL) {
|
||||
DCAST_INTO_R(_source_texture, p_list[pi], pi);
|
||||
}
|
||||
index++;
|
||||
pi++;
|
||||
|
||||
if (p_list[index] != (TypedWritable *)NULL) {
|
||||
DCAST_INTO_R(_placement, p_list[index], index);
|
||||
if (p_list[pi] != (TypedWritable *)NULL) {
|
||||
DCAST_INTO_R(_placement, p_list[pi], pi);
|
||||
}
|
||||
index++;
|
||||
pi++;
|
||||
|
||||
return index;
|
||||
pi += _properties.complete_pointers(p_list + pi, manager);
|
||||
|
||||
return pi;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
Loading…
Reference in New Issue