For some reason, PerCameraNode is acting up in single-player mode, so only use it for rain in multiplayer mode. Fixes rain

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@7734 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
auria
2011-02-18 16:03:07 +00:00
parent 0b1702502f
commit 64cc990f7d
2 changed files with 9 additions and 4 deletions

View File

@@ -57,14 +57,17 @@ PerCameraNode::~PerCameraNode()
void PerCameraNode::render()
{
scene::ICameraSceneNode* curr_cam = irr_driver->getSceneManager()->getActiveCamera();
// Only register children nodes if the right camera is in use
if (curr_cam == m_camera) ISceneNode::OnRegisterSceneNode();
}
void PerCameraNode::OnRegisterSceneNode()
{
irr_driver->getSceneManager()->registerNodeForRendering(this, scene::ESNRP_CAMERA);
if (m_camera == NULL)
ISceneNode::OnRegisterSceneNode();
else
irr_driver->getSceneManager()->registerNodeForRendering(this, scene::ESNRP_CAMERA);
}
void PerCameraNode::setCamera(scene::ICameraSceneNode* camera)

View File

@@ -1036,7 +1036,8 @@ void Kart::setCamera(Camera *camera)
m_camera->getCameraSceneNode()->setName((m_kart_properties->getIdent() + "'s camera").c_str());
#endif
if (m_rain)
// Handle camera-specific nodes for now if in multiplayer
if (m_rain && race_manager->getNumLocalPlayers() > 1)
{
m_rain->setCamera( camera->getCameraSceneNode() );
}
@@ -1597,7 +1598,8 @@ void Kart::loadData(RaceManager::KartType type, Track* track, bool animatedModel
if (UserConfigParams::m_weather_effects && track->getWeatherType() == WEATHER_RAIN && type == RaceManager::KT_PLAYER)
{
m_rain = new Rain((m_camera != NULL ? m_camera->getCameraSceneNode() : NULL), NULL);
// camera not yet available at this point
m_rain = new Rain(NULL, NULL);
}
Vec3 position(0, getKartHeight()*0.35f, -getKartLength()*0.35f);