mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
fix crash on simple animations
This commit is contained in:
parent
d08a4bcd2b
commit
1ec142d675
@ -64,30 +64,10 @@ munge_format_impl(const qpGeomVertexFormat *orig,
|
|||||||
C_color, color_type->get_start());
|
C_color, color_type->get_start());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (animation.get_animation_type() == AT_hardware &&
|
if (animation.get_animation_type() == AT_hardware) {
|
||||||
animation.get_num_transforms() > 0) {
|
|
||||||
// If we want hardware animation, we need to reserve space for the
|
// If we want hardware animation, we need to reserve space for the
|
||||||
// blend weights.
|
// blend weights.
|
||||||
|
|
||||||
PT(qpGeomVertexArrayFormat) new_array_format = new qpGeomVertexArrayFormat;
|
|
||||||
new_array_format->add_column
|
|
||||||
(InternalName::get_transform_weight(), animation.get_num_transforms() - 1,
|
|
||||||
NT_float32, C_other);
|
|
||||||
|
|
||||||
if (animation.get_indexed_transforms()) {
|
|
||||||
// Also, if we'll be indexing into the transform table, reserve
|
|
||||||
// space for the index.
|
|
||||||
|
|
||||||
// TODO: We should examine the maximum palette index so we can
|
|
||||||
// decide whether we need 16-bit indices. That implies saving
|
|
||||||
// the maximum palette index, presumably in the AnimationSpec.
|
|
||||||
// At the moment, I don't think any existing hardware supports
|
|
||||||
// more than 255 indices anyway.
|
|
||||||
new_array_format->add_column
|
|
||||||
(InternalName::get_transform_index(), animation.get_num_transforms(),
|
|
||||||
NT_uint8, C_index);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Make sure the old weights and indices are removed, just in
|
// Make sure the old weights and indices are removed, just in
|
||||||
// case.
|
// case.
|
||||||
new_format->remove_column(InternalName::get_transform_weight());
|
new_format->remove_column(InternalName::get_transform_weight());
|
||||||
@ -96,7 +76,28 @@ munge_format_impl(const qpGeomVertexFormat *orig,
|
|||||||
// And we don't need the transform_blend table any more.
|
// And we don't need the transform_blend table any more.
|
||||||
new_format->remove_column(InternalName::get_transform_blend());
|
new_format->remove_column(InternalName::get_transform_blend());
|
||||||
|
|
||||||
new_format->add_array(new_array_format);
|
if (animation.get_num_transforms() > 1) {
|
||||||
|
PT(qpGeomVertexArrayFormat) new_array_format = new qpGeomVertexArrayFormat;
|
||||||
|
new_array_format->add_column
|
||||||
|
(InternalName::get_transform_weight(), animation.get_num_transforms() - 1,
|
||||||
|
NT_float32, C_other);
|
||||||
|
|
||||||
|
if (animation.get_indexed_transforms()) {
|
||||||
|
// Also, if we'll be indexing into the transform table, reserve
|
||||||
|
// space for the index.
|
||||||
|
|
||||||
|
// TODO: We should examine the maximum palette index so we can
|
||||||
|
// decide whether we need 16-bit indices. That implies saving
|
||||||
|
// the maximum palette index, presumably in the AnimationSpec.
|
||||||
|
// At the moment, I don't think any existing hardware supports
|
||||||
|
// more than 255 indices anyway.
|
||||||
|
new_array_format->add_column
|
||||||
|
(InternalName::get_transform_index(), animation.get_num_transforms(),
|
||||||
|
NT_uint8, C_index);
|
||||||
|
}
|
||||||
|
|
||||||
|
new_format->add_array(new_array_format);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user