2
0
Эх сурвалжийг харах

update for new complete_pointers() rules

David Rose 24 жил өмнө
parent
commit
f8d082a208

+ 9 - 7
pandatool/src/egg-palettize/eggFile.cxx

@@ -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);
+  pi += _explicitly_assigned_groups.complete_pointers(p_list + pi, manager);
+
+  if (p_list[pi] != (TypedWritable *)NULL) {
+    DCAST_INTO_R(_default_group, p_list[pi], pi);
   }
-  index++;
+  pi++;
 
-  return index;
+  return pi;
 }
 
 ////////////////////////////////////////////////////////////////////

+ 18 - 0
pandatool/src/egg-palettize/imageFile.cxx

@@ -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

+ 2 - 0
pandatool/src/egg-palettize/imageFile.h

@@ -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);

+ 7 - 7
pandatool/src/egg-palettize/paletteGroup.cxx

@@ -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;
 }
 
 ////////////////////////////////////////////////////////////////////

+ 8 - 7
pandatool/src/egg-palettize/palettePage.cxx

@@ -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;
 }
 
 ////////////////////////////////////////////////////////////////////

+ 10 - 12
pandatool/src/egg-palettize/textureImage.cxx

@@ -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;
 }
 
 ////////////////////////////////////////////////////////////////////

+ 13 - 11
pandatool/src/egg-palettize/textureReference.cxx

@@ -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;
 }
 
 ////////////////////////////////////////////////////////////////////