mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 02:42:49 -04:00
fix crash loading egg file with morphs but no dart
This commit is contained in:
parent
a8ba02e5b5
commit
43768bf3fd
@ -2063,26 +2063,30 @@ make_vertex_data(const EggRenderState *render_state,
|
|||||||
gvw.set_data_type(InternalName::get_vertex());
|
gvw.set_data_type(InternalName::get_vertex());
|
||||||
gvw.add_data4f(LCAST(float, vertex->get_pos4() * transform));
|
gvw.add_data4f(LCAST(float, vertex->get_pos4() * transform));
|
||||||
|
|
||||||
EggMorphVertexList::const_iterator mvi;
|
if (is_dynamic) {
|
||||||
for (mvi = vertex->_dxyzs.begin(); mvi != vertex->_dxyzs.end(); ++mvi) {
|
EggMorphVertexList::const_iterator mvi;
|
||||||
const EggMorphVertex &morph = (*mvi);
|
for (mvi = vertex->_dxyzs.begin(); mvi != vertex->_dxyzs.end(); ++mvi) {
|
||||||
CPT(InternalName) delta_name =
|
const EggMorphVertex &morph = (*mvi);
|
||||||
InternalName::get_morph(InternalName::get_vertex(), morph.get_name());
|
CPT(InternalName) delta_name =
|
||||||
gvw.set_data_type(delta_name);
|
InternalName::get_morph(InternalName::get_vertex(), morph.get_name());
|
||||||
gvw.add_data3f(LCAST(float, morph.get_offset() * transform));
|
gvw.set_data_type(delta_name);
|
||||||
|
gvw.add_data3f(LCAST(float, morph.get_offset() * transform));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vertex->has_normal()) {
|
if (vertex->has_normal()) {
|
||||||
gvw.set_data_type(InternalName::get_normal());
|
gvw.set_data_type(InternalName::get_normal());
|
||||||
gvw.add_data3f(LCAST(float, vertex->get_normal() * transform));
|
gvw.add_data3f(LCAST(float, vertex->get_normal() * transform));
|
||||||
|
|
||||||
EggMorphNormalList::const_iterator mni;
|
if (is_dynamic) {
|
||||||
for (mni = vertex->_dnormals.begin(); mni != vertex->_dnormals.end(); ++mni) {
|
EggMorphNormalList::const_iterator mni;
|
||||||
const EggMorphNormal &morph = (*mni);
|
for (mni = vertex->_dnormals.begin(); mni != vertex->_dnormals.end(); ++mni) {
|
||||||
CPT(InternalName) delta_name =
|
const EggMorphNormal &morph = (*mni);
|
||||||
InternalName::get_morph(InternalName::get_normal(), morph.get_name());
|
CPT(InternalName) delta_name =
|
||||||
gvw.set_data_type(delta_name);
|
InternalName::get_morph(InternalName::get_normal(), morph.get_name());
|
||||||
gvw.add_data3f(LCAST(float, morph.get_offset() * transform));
|
gvw.set_data_type(delta_name);
|
||||||
|
gvw.add_data3f(LCAST(float, morph.get_offset() * transform));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2090,13 +2094,15 @@ make_vertex_data(const EggRenderState *render_state,
|
|||||||
gvw.set_data_type(InternalName::get_color());
|
gvw.set_data_type(InternalName::get_color());
|
||||||
gvw.add_data4f(vertex->get_color());
|
gvw.add_data4f(vertex->get_color());
|
||||||
|
|
||||||
EggMorphColorList::const_iterator mci;
|
if (is_dynamic) {
|
||||||
for (mci = vertex->_drgbas.begin(); mci != vertex->_drgbas.end(); ++mci) {
|
EggMorphColorList::const_iterator mci;
|
||||||
const EggMorphColor &morph = (*mci);
|
for (mci = vertex->_drgbas.begin(); mci != vertex->_drgbas.end(); ++mci) {
|
||||||
CPT(InternalName) delta_name =
|
const EggMorphColor &morph = (*mci);
|
||||||
InternalName::get_morph(InternalName::get_color(), morph.get_name());
|
CPT(InternalName) delta_name =
|
||||||
gvw.set_data_type(delta_name);
|
InternalName::get_morph(InternalName::get_color(), morph.get_name());
|
||||||
gvw.add_data4f(morph.get_offset());
|
gvw.set_data_type(delta_name);
|
||||||
|
gvw.add_data4f(morph.get_offset());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2121,19 +2127,21 @@ make_vertex_data(const EggRenderState *render_state,
|
|||||||
|
|
||||||
gvw.set_data2f(LCAST(float, uv));
|
gvw.set_data2f(LCAST(float, uv));
|
||||||
|
|
||||||
EggMorphTexCoordList::const_iterator mti;
|
if (is_dynamic) {
|
||||||
for (mti = egg_uv->_duvs.begin(); mti != egg_uv->_duvs.end(); ++mti) {
|
EggMorphTexCoordList::const_iterator mti;
|
||||||
const EggMorphTexCoord &morph = (*mti);
|
for (mti = egg_uv->_duvs.begin(); mti != egg_uv->_duvs.end(); ++mti) {
|
||||||
CPT(InternalName) delta_name =
|
const EggMorphTexCoord &morph = (*mti);
|
||||||
InternalName::get_morph(iname, morph.get_name());
|
CPT(InternalName) delta_name =
|
||||||
gvw.set_data_type(delta_name);
|
InternalName::get_morph(iname, morph.get_name());
|
||||||
TexCoordd duv = morph.get_offset();
|
gvw.set_data_type(delta_name);
|
||||||
if (buv != render_state->_bake_in_uvs.end()) {
|
TexCoordd duv = morph.get_offset();
|
||||||
TexCoordd new_uv = orig_uv + duv;
|
if (buv != render_state->_bake_in_uvs.end()) {
|
||||||
duv = (new_uv * (*buv).second->get_transform()) - uv;
|
TexCoordd new_uv = orig_uv + duv;
|
||||||
|
duv = (new_uv * (*buv).second->get_transform()) - uv;
|
||||||
|
}
|
||||||
|
|
||||||
|
gvw.add_data2f(LCAST(float, duv));
|
||||||
}
|
}
|
||||||
|
|
||||||
gvw.add_data2f(LCAST(float, duv));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user