Browse Source

texcoord transform also affects duvs

David Rose 21 years ago
parent
commit
cf8303421f
1 changed files with 8 additions and 1 deletions
  1. 8 1
      panda/src/egg2pg/eggLoader.cxx

+ 8 - 1
panda/src/egg2pg/eggLoader.cxx

@@ -2096,6 +2096,7 @@ make_vertex_data(const EggRenderState *render_state,
     EggVertex::const_uv_iterator uvi;
     EggVertex::const_uv_iterator uvi;
     for (uvi = vertex->uv_begin(); uvi != vertex->uv_end(); ++uvi) {
     for (uvi = vertex->uv_begin(); uvi != vertex->uv_end(); ++uvi) {
       EggVertexUV *egg_uv = (*uvi);
       EggVertexUV *egg_uv = (*uvi);
+      TexCoordd orig_uv = egg_uv->get_uv();
       TexCoordd uv = egg_uv->get_uv();
       TexCoordd uv = egg_uv->get_uv();
 
 
       string name = egg_uv->get_name();
       string name = egg_uv->get_name();
@@ -2119,7 +2120,13 @@ make_vertex_data(const EggRenderState *render_state,
         CPT(InternalName) delta_name = 
         CPT(InternalName) delta_name = 
           InternalName::get_morph(iname, morph.get_name());
           InternalName::get_morph(iname, morph.get_name());
         gvw.set_data_type(delta_name);
         gvw.set_data_type(delta_name);
-        gvw.add_data2f(LCAST(float, morph.get_offset()));
+        TexCoordd duv = morph.get_offset();
+        if (buv != render_state->_bake_in_uvs.end()) {
+          TexCoordd new_uv = orig_uv + duv;
+          duv = (new_uv * (*buv).second->get_transform()) - uv;
+        }
+        
+        gvw.add_data2f(LCAST(float, duv));
       }
       }
     }
     }