Port kart animation rewind to RewindInfoEventFunction
This commit is contained in:
parent
f2d5b32fa6
commit
511d8dd7a8
@ -88,45 +88,26 @@ AbstractKartAnimation::~AbstractKartAnimation()
|
|||||||
NetworkConfig::get()->isClient() &&
|
NetworkConfig::get()->isClient() &&
|
||||||
!RewindManager::get()->isRewinding())
|
!RewindManager::get()->isRewinding())
|
||||||
{
|
{
|
||||||
// ================================================================
|
AbstractKart* kart = m_kart;
|
||||||
class AnimationEvent : public RewindInfo
|
Vec3 linear_velocity = kart->getBody()->getLinearVelocity();
|
||||||
{
|
Vec3 angular_velocity = kart->getBody()->getAngularVelocity();
|
||||||
private:
|
btTransform transform = kart->getBody()->getWorldTransform();
|
||||||
AbstractKart* m_kart;
|
RewindManager::get()->getRewindQueue().insertRewindInfo(new
|
||||||
Vec3 m_linear_velocity, m_angular_velocity;
|
RewindInfoEventFunction(
|
||||||
btTransform m_transform;
|
World::getWorld()->getTicksSinceStart(),
|
||||||
public:
|
[kart]()
|
||||||
AnimationEvent(AbstractKart* kart)
|
|
||||||
: RewindInfo(World::getWorld()->getTicksSinceStart(),
|
|
||||||
true/*is_confirmed*/)
|
|
||||||
{
|
{
|
||||||
m_kart = kart;
|
Physics::getInstance()->removeKart(kart);
|
||||||
m_linear_velocity = m_kart->getBody()->getLinearVelocity();
|
},
|
||||||
m_angular_velocity =
|
[kart, linear_velocity, angular_velocity, transform]()
|
||||||
m_kart->getBody()->getAngularVelocity();
|
|
||||||
m_transform = m_kart->getBody()->getWorldTransform();
|
|
||||||
}
|
|
||||||
// ------------------------------------------------------------
|
|
||||||
virtual void restore() {}
|
|
||||||
// ------------------------------------------------------------
|
|
||||||
virtual bool isEvent() const { return true; }
|
|
||||||
// ------------------------------------------------------------
|
|
||||||
virtual void undo()
|
|
||||||
{ Physics::getInstance()->removeKart(m_kart); }
|
|
||||||
// ------------------------------------------------------------
|
|
||||||
virtual void replay()
|
|
||||||
{
|
{
|
||||||
Physics::getInstance()->addKart(m_kart);
|
Physics::getInstance()->addKart(kart);
|
||||||
m_kart->getBody()->setLinearVelocity(m_linear_velocity);
|
kart->getBody()->setLinearVelocity(linear_velocity);
|
||||||
m_kart->getBody()->setAngularVelocity(m_angular_velocity);
|
kart->getBody()->setAngularVelocity(angular_velocity);
|
||||||
m_kart->getBody()->proceedToTransform(m_transform);
|
kart->getBody()->proceedToTransform(transform);
|
||||||
m_kart->setTrans(m_transform);
|
kart->setTrans(transform);
|
||||||
}
|
}));
|
||||||
};
|
|
||||||
RewindManager::get()->getRewindQueue().insertRewindInfo
|
|
||||||
(new AnimationEvent(m_kart));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} // ~AbstractKartAnimation
|
} // ~AbstractKartAnimation
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user