Revert old workaround, fix the original issue in a cleaner way
This commit is contained in:
parent
673a9f39c6
commit
12c54cb92b
@ -779,10 +779,10 @@ void KartModel::update(float dt, float rotation_dt, float steer, float speed)
|
|||||||
|
|
||||||
for(unsigned int i=0; i<4; i++)
|
for(unsigned int i=0; i<4; i++)
|
||||||
{
|
{
|
||||||
if(!m_wheel_node[i]) continue;
|
if (!m_kart || !m_wheel_node[i]) continue;
|
||||||
const btWheelInfo &wi = m_kart->getVehicle()->getWheelInfo(i);
|
const btWheelInfo &wi = m_kart->getVehicle()->getWheelInfo(i);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if(UserConfigParams::m_physics_debug && m_kart)
|
if(UserConfigParams::m_physics_debug)
|
||||||
{
|
{
|
||||||
// Make wheels that are not touching the ground invisible
|
// Make wheels that are not touching the ground invisible
|
||||||
m_wheel_node[i]->setVisible(wi.m_raycastInfo.m_isInContact);
|
m_wheel_node[i]->setVisible(wi.m_raycastInfo.m_isInContact);
|
||||||
@ -816,54 +816,57 @@ void KartModel::update(float dt, float rotation_dt, float steer, float speed)
|
|||||||
if (m_animated_node == NULL) return;
|
if (m_animated_node == NULL) return;
|
||||||
|
|
||||||
// Update the speed-weighted objects' animations
|
// Update the speed-weighted objects' animations
|
||||||
for(size_t i=0 ; i < m_speed_weighted_objects.size() ; i++)
|
if (m_kart != NULL)
|
||||||
{
|
{
|
||||||
SpeedWeightedObject& obj = m_speed_weighted_objects[i];
|
for (size_t i = 0; i < m_speed_weighted_objects.size(); i++)
|
||||||
|
{
|
||||||
|
SpeedWeightedObject& obj = m_speed_weighted_objects[i];
|
||||||
|
|
||||||
#define GET_VALUE(obj, value_name) \
|
#define GET_VALUE(obj, value_name) \
|
||||||
obj.m_properties.value_name > SPEED_WEIGHTED_OBJECT_PROPERTY_UNDEFINED ? obj.m_properties.value_name : \
|
obj.m_properties.value_name > SPEED_WEIGHTED_OBJECT_PROPERTY_UNDEFINED ? obj.m_properties.value_name : \
|
||||||
m_kart->getKartProperties()->getSpeedWeightedObjectProperties().value_name
|
m_kart->getKartProperties()->getSpeedWeightedObjectProperties().value_name
|
||||||
|
|
||||||
// Animation strength
|
// Animation strength
|
||||||
float strength = 1.0f;
|
float strength = 1.0f;
|
||||||
const float strength_factor = GET_VALUE(obj, m_strength_factor);
|
const float strength_factor = GET_VALUE(obj, m_strength_factor);
|
||||||
if(strength_factor >= 0.0f)
|
if (strength_factor >= 0.0f)
|
||||||
{
|
|
||||||
strength = speed * strength_factor;
|
|
||||||
btClamp<float>(strength, 0.0f, 1.0f);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Animation speed
|
|
||||||
const float speed_factor = GET_VALUE(obj, m_speed_factor);
|
|
||||||
if(speed_factor >= 0.0f)
|
|
||||||
{
|
|
||||||
float anim_speed = speed * speed_factor;
|
|
||||||
obj.m_node->setAnimationSpeed(anim_speed);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Texture animation
|
|
||||||
core::vector2df tex_speed;
|
|
||||||
tex_speed.X = GET_VALUE(obj, m_texture_speed.X);
|
|
||||||
tex_speed.Y = GET_VALUE(obj, m_texture_speed.Y);
|
|
||||||
if(tex_speed != core::vector2df(0.0f, 0.0f))
|
|
||||||
{
|
|
||||||
obj.m_texture_cur_offset += speed * tex_speed * dt;
|
|
||||||
if(obj.m_texture_cur_offset.X > 1.0f) obj.m_texture_cur_offset.X = fmod(obj.m_texture_cur_offset.X, 1.0f);
|
|
||||||
if(obj.m_texture_cur_offset.Y > 1.0f) obj.m_texture_cur_offset.Y = fmod(obj.m_texture_cur_offset.Y, 1.0f);
|
|
||||||
|
|
||||||
for(unsigned int i=0; i<obj.m_node->getMaterialCount(); i++)
|
|
||||||
{
|
{
|
||||||
video::SMaterial &irrMaterial=obj.m_node->getMaterial(i);
|
strength = speed * strength_factor;
|
||||||
for(unsigned int j=0; j<video::MATERIAL_MAX_TEXTURES; j++)
|
btClamp<float>(strength, 0.0f, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Animation speed
|
||||||
|
const float speed_factor = GET_VALUE(obj, m_speed_factor);
|
||||||
|
if (speed_factor >= 0.0f)
|
||||||
|
{
|
||||||
|
float anim_speed = speed * speed_factor;
|
||||||
|
obj.m_node->setAnimationSpeed(anim_speed);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Texture animation
|
||||||
|
core::vector2df tex_speed;
|
||||||
|
tex_speed.X = GET_VALUE(obj, m_texture_speed.X);
|
||||||
|
tex_speed.Y = GET_VALUE(obj, m_texture_speed.Y);
|
||||||
|
if (tex_speed != core::vector2df(0.0f, 0.0f))
|
||||||
|
{
|
||||||
|
obj.m_texture_cur_offset += speed * tex_speed * dt;
|
||||||
|
if (obj.m_texture_cur_offset.X > 1.0f) obj.m_texture_cur_offset.X = fmod(obj.m_texture_cur_offset.X, 1.0f);
|
||||||
|
if (obj.m_texture_cur_offset.Y > 1.0f) obj.m_texture_cur_offset.Y = fmod(obj.m_texture_cur_offset.Y, 1.0f);
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i < obj.m_node->getMaterialCount(); i++)
|
||||||
{
|
{
|
||||||
video::ITexture* t=irrMaterial.getTexture(j);
|
video::SMaterial &irrMaterial = obj.m_node->getMaterial(i);
|
||||||
if(!t) continue;
|
for (unsigned int j = 0; j < video::MATERIAL_MAX_TEXTURES; j++)
|
||||||
core::matrix4 *m = &irrMaterial.getTextureMatrix(j);
|
{
|
||||||
m->setTextureTranslate(obj.m_texture_cur_offset.X, obj.m_texture_cur_offset.Y);
|
video::ITexture* t = irrMaterial.getTexture(j);
|
||||||
} // for j<MATERIAL_MAX_TEXTURES
|
if (!t) continue;
|
||||||
} // for i<getMaterialCount
|
core::matrix4 *m = &irrMaterial.getTextureMatrix(j);
|
||||||
}
|
m->setTextureTranslate(obj.m_texture_cur_offset.X, obj.m_texture_cur_offset.Y);
|
||||||
|
} // for j<MATERIAL_MAX_TEXTURES
|
||||||
|
} // for i<getMaterialCount
|
||||||
|
}
|
||||||
#undef GET_VALUE
|
#undef GET_VALUE
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the end animation is being played, if so, don't
|
// Check if the end animation is being played, if so, don't
|
||||||
|
@ -300,7 +300,7 @@ void FeatureUnlockedCutScene::init()
|
|||||||
m_unlocked_stuff[n].m_root_gift_node = kart_model->attachModel(true, false);
|
m_unlocked_stuff[n].m_root_gift_node = kart_model->attachModel(true, false);
|
||||||
m_unlocked_stuff[n].m_scale = 5.0f;
|
m_unlocked_stuff[n].m_scale = 5.0f;
|
||||||
kart_model->setAnimation(KartModel::AF_DEFAULT);
|
kart_model->setAnimation(KartModel::AF_DEFAULT);
|
||||||
//kart_model->update(0.0f, 0.0f, 0.0f, 0.0f);
|
kart_model->update(0.0f, 0.0f, 0.0f, 0.0f); // set model current frame to "center"
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
m_unlocked_stuff[n].m_root_gift_node->setName("unlocked kart");
|
m_unlocked_stuff[n].m_root_gift_node->setName("unlocked kart");
|
||||||
|
Loading…
Reference in New Issue
Block a user