fix crash loading egg file with morphs but no dart

This commit is contained in:
David Rose 2005-03-30 04:11:04 +00:00
parent a8ba02e5b5
commit 43768bf3fd

View File

@ -2063,6 +2063,7 @@ make_vertex_data(const EggRenderState *render_state,
gvw.set_data_type(InternalName::get_vertex());
gvw.add_data4f(LCAST(float, vertex->get_pos4() * transform));
if (is_dynamic) {
EggMorphVertexList::const_iterator mvi;
for (mvi = vertex->_dxyzs.begin(); mvi != vertex->_dxyzs.end(); ++mvi) {
const EggMorphVertex &morph = (*mvi);
@ -2071,11 +2072,13 @@ make_vertex_data(const EggRenderState *render_state,
gvw.set_data_type(delta_name);
gvw.add_data3f(LCAST(float, morph.get_offset() * transform));
}
}
if (vertex->has_normal()) {
gvw.set_data_type(InternalName::get_normal());
gvw.add_data3f(LCAST(float, vertex->get_normal() * transform));
if (is_dynamic) {
EggMorphNormalList::const_iterator mni;
for (mni = vertex->_dnormals.begin(); mni != vertex->_dnormals.end(); ++mni) {
const EggMorphNormal &morph = (*mni);
@ -2085,11 +2088,13 @@ make_vertex_data(const EggRenderState *render_state,
gvw.add_data3f(LCAST(float, morph.get_offset() * transform));
}
}
}
if (vertex->has_color()) {
gvw.set_data_type(InternalName::get_color());
gvw.add_data4f(vertex->get_color());
if (is_dynamic) {
EggMorphColorList::const_iterator mci;
for (mci = vertex->_drgbas.begin(); mci != vertex->_drgbas.end(); ++mci) {
const EggMorphColor &morph = (*mci);
@ -2099,6 +2104,7 @@ make_vertex_data(const EggRenderState *render_state,
gvw.add_data4f(morph.get_offset());
}
}
}
EggVertex::const_uv_iterator uvi;
for (uvi = vertex->uv_begin(); uvi != vertex->uv_end(); ++uvi) {
@ -2121,6 +2127,7 @@ make_vertex_data(const EggRenderState *render_state,
gvw.set_data2f(LCAST(float, uv));
if (is_dynamic) {
EggMorphTexCoordList::const_iterator mti;
for (mti = egg_uv->_duvs.begin(); mti != egg_uv->_duvs.end(); ++mti) {
const EggMorphTexCoord &morph = (*mti);
@ -2136,6 +2143,7 @@ make_vertex_data(const EggRenderState *render_state,
gvw.add_data2f(LCAST(float, duv));
}
}
}
if (is_dynamic) {
// Figure out the transforms affecting this particular vertex.