Bugfix: collectables didn't regenerate in follow-the-leader mode.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/trunk/supertuxkart@2139 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
370fa80994
commit
fde307f5e7
@ -27,10 +27,10 @@
|
|||||||
Herring::Herring(herringType type, const Vec3& xyz, ssgEntity* model)
|
Herring::Herring(herringType type, const Vec3& xyz, ssgEntity* model)
|
||||||
: m_coord(xyz, Vec3(0, 0, 0))
|
: m_coord(xyz, Vec3(0, 0, 0))
|
||||||
{
|
{
|
||||||
m_type = type;
|
m_type = type;
|
||||||
m_eaten = false;
|
m_eaten = false;
|
||||||
m_time_to_return = 0.0f; // not strictly necessary, see isEaten()
|
m_time_till_return = 0.0f; // not strictly necessary, see isEaten()
|
||||||
m_root = new ssgTransform();
|
m_root = new ssgTransform();
|
||||||
m_root->ref();
|
m_root->ref();
|
||||||
m_root->setTransform(const_cast<sgCoord*>(&m_coord.toSgCoord()));
|
m_root->setTransform(const_cast<sgCoord*>(&m_coord.toSgCoord()));
|
||||||
m_root->addKid(model);
|
m_root->addKid(model);
|
||||||
@ -47,8 +47,8 @@ Herring::~Herring()
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void Herring::reset()
|
void Herring::reset()
|
||||||
{
|
{
|
||||||
m_eaten = false;
|
m_eaten = false;
|
||||||
m_time_to_return = 0.0f;
|
m_time_till_return = 0.0f;
|
||||||
m_root->setTransform(const_cast<sgCoord*>(&m_coord.toSgCoord()));
|
m_root->setTransform(const_cast<sgCoord*>(&m_coord.toSgCoord()));
|
||||||
} // reset
|
} // reset
|
||||||
|
|
||||||
@ -63,12 +63,13 @@ void Herring::update(float delta)
|
|||||||
{
|
{
|
||||||
if(m_eaten)
|
if(m_eaten)
|
||||||
{
|
{
|
||||||
const float T = m_time_to_return - world->getTime();
|
m_time_till_return -= delta;
|
||||||
if ( T > 0 )
|
if ( m_time_till_return > 0 )
|
||||||
{
|
{
|
||||||
Vec3 hell(m_coord.getXYZ());
|
Vec3 hell(m_coord.getXYZ());
|
||||||
|
|
||||||
hell.setZ( (T>1.0f) ? -1000000.0f : m_coord.getXYZ().getZ() - T / 2.0f);
|
hell.setZ( (m_time_till_return>1.0f) ? -1000000.0f
|
||||||
|
: m_coord.getXYZ().getZ() - m_time_till_return / 2.0f);
|
||||||
m_root->setTransform(hell.toFloat());
|
m_root->setTransform(hell.toFloat());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -90,7 +91,7 @@ void Herring::update(float delta)
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void Herring::isEaten()
|
void Herring::isEaten()
|
||||||
{
|
{
|
||||||
m_eaten=true;
|
m_eaten = true;
|
||||||
m_time_to_return=world->getTime()+2.0f;
|
m_time_till_return = 2.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ class Herring
|
|||||||
private:
|
private:
|
||||||
herringType m_type; // Herring type
|
herringType m_type; // Herring type
|
||||||
bool m_eaten; // true if herring was eaten & is not displayed
|
bool m_eaten; // true if herring was eaten & is not displayed
|
||||||
float m_time_to_return; // world->clock when an eaten herring reappears
|
float m_time_till_return; // time till an eaten herring reappears
|
||||||
Coord m_coord; // Original coordinates, used mainly when
|
Coord m_coord; // Original coordinates, used mainly when
|
||||||
// eaten herrings reappear.
|
// eaten herrings reappear.
|
||||||
ssgTransform* m_root; // The actual root of the herring
|
ssgTransform* m_root; // The actual root of the herring
|
||||||
|
Loading…
Reference in New Issue
Block a user