/** Called when the kart finished the race. It will force the highest LOD * for the kart, since otherwise the end camera can be far away (due to * zooming) and show non-animated karts. */ void KartModel::finishedRace() { // Force the animated model, independent of actual camera distance. LODNode *lod = dynamic_cast<LODNode*>(m_kart->getNode()); if (lod) lod->forceLevelOfDetail(0); } // finishedRace
/** Resets the kart model. It stops animation from being played and resets * the wheels to the correct position (i.e. no suspension). */ void KartModel::reset() { for (unsigned int i = 0; i < 4; i++) { if (m_wheel_node[i]) { core::vector3df rotation(btScalar(rand() % 360), 0, 0); m_wheel_node[i]->setRotation(rotation); } } update(0.0f, 0.0f, 0.0f, 0.0f, 0.0f); // Stop any animations currently being played. setAnimation(KartModel::AF_DEFAULT); // Don't force any LOD. Non-animated karts are not LOD nodes. LODNode *lod = dynamic_cast<LODNode*>(m_kart->getNode()); if (lod) lod->forceLevelOfDetail(-1); } // reset