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:
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user