@@ -8663,8 +8663,19 @@ do_write_datagram_header(CData *cdata, BamWriter *manager, Datagram &me, bool &h
86638663 me.add_uint8 (cdata->_primary_file_num_channels );
86648664 me.add_uint8 (cdata->_alpha_file_channel );
86658665 me.add_bool (has_rawdata);
8666- me.add_uint8 (cdata->_texture_type );
8667- me.add_bool (cdata->_has_read_mipmaps );
8666+
8667+ if (manager->get_file_minor_ver () < 25 &&
8668+ cdata->_texture_type == TT_cube_map) {
8669+ // Between Panda3D releases 1.7.2 and 1.8.0 (bam versions 6.24 and 6.25),
8670+ // we added TT_2d_texture_array, shifting the definition for TT_cube_map.
8671+ me.add_uint8 (TT_2d_texture_array);
8672+ } else {
8673+ me.add_uint8 (cdata->_texture_type );
8674+ }
8675+
8676+ if (manager->get_file_minor_ver () >= 32 ) {
8677+ me.add_bool (cdata->_has_read_mipmaps );
8678+ }
86688679}
86698680
86708681/* *
@@ -8673,7 +8684,18 @@ do_write_datagram_header(CData *cdata, BamWriter *manager, Datagram &me, bool &h
86738684 */
86748685void Texture::
86758686do_write_datagram_body (CData *cdata, BamWriter *manager, Datagram &me) {
8676- cdata->_default_sampler .write_datagram (me);
8687+ if (manager->get_file_minor_ver () >= 36 ) {
8688+ cdata->_default_sampler .write_datagram (me);
8689+ } else {
8690+ const SamplerState &s = cdata->_default_sampler ;
8691+ me.add_uint8 (s.get_wrap_u ());
8692+ me.add_uint8 (s.get_wrap_v ());
8693+ me.add_uint8 (s.get_wrap_w ());
8694+ me.add_uint8 (s.get_minfilter ());
8695+ me.add_uint8 (s.get_magfilter ());
8696+ me.add_int16 (s.get_anisotropic_degree ());
8697+ s.get_border_color ().write_datagram (me);
8698+ }
86778699
86788700 me.add_uint8 (cdata->_compression );
86798701 me.add_uint8 (cdata->_quality_level );
@@ -8685,7 +8707,9 @@ do_write_datagram_body(CData *cdata, BamWriter *manager, Datagram &me) {
86858707 me.add_uint8 (cdata->_usage_hint );
86868708 }
86878709
8688- me.add_uint8 (cdata->_auto_texture_scale );
8710+ if (manager->get_file_minor_ver () >= 28 ) {
8711+ me.add_uint8 (cdata->_auto_texture_scale );
8712+ }
86898713 me.add_uint32 (cdata->_orig_file_x_size );
86908714 me.add_uint32 (cdata->_orig_file_y_size );
86918715
@@ -8711,11 +8735,15 @@ do_write_datagram_rawdata(CData *cdata, BamWriter *manager, Datagram &me) {
87118735 me.add_uint32 (cdata->_y_size );
87128736 me.add_uint32 (cdata->_z_size );
87138737
8714- me.add_uint32 (cdata->_pad_x_size );
8715- me.add_uint32 (cdata->_pad_y_size );
8716- me.add_uint32 (cdata->_pad_z_size );
8738+ if (manager->get_file_minor_ver () >= 30 ) {
8739+ me.add_uint32 (cdata->_pad_x_size );
8740+ me.add_uint32 (cdata->_pad_y_size );
8741+ me.add_uint32 (cdata->_pad_z_size );
8742+ }
87178743
8718- me.add_uint32 (cdata->_num_views );
8744+ if (manager->get_file_minor_ver () >= 26 ) {
8745+ me.add_uint32 (cdata->_num_views );
8746+ }
87198747 me.add_uint8 (cdata->_component_type );
87208748 me.add_uint8 (cdata->_component_width );
87218749 me.add_uint8 (cdata->_ram_image_compression );
0 commit comments