Start work to support moving sound emitters. Doesn't quite work yet, don't know why' :(

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@11357 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
auria 2012-06-30 19:15:12 +00:00
parent 1574ff472d
commit 4cb8ba7e50
4 changed files with 20 additions and 2 deletions

View File

@ -20,6 +20,7 @@
#include <stdio.h>
#include "audio/sfx_base.hpp"
#include "graphics/irr_driver.hpp"
#include "graphics/material.hpp"
#include "graphics/material_manager.hpp"
@ -323,5 +324,10 @@ void ThreeDAnimation::update(float dt)
btTransform trans(q,p);
m_motion_state->setWorldTransform(trans);
}
if (m_sound != NULL)
{
m_sound->position(xyz);
}
}
} // update

View File

@ -187,6 +187,9 @@ void CutsceneWorld::update(float dt)
rot2.setPitch(rot2.getPitch() + 90.0f);
m_camera->setRotation(rot2.toIrrVector());
sfx_manager->positionListener(curr->getNode()->getPosition(),
m_camera->getTarget() - curr->getNode()->getPosition());
break;
//printf("Camera %f %f %f\n", curr->getNode()->getPosition().X, curr->getNode()->getPosition().Y, curr->getNode()->getPosition().Z);
}

View File

@ -91,6 +91,9 @@ TrackObject::TrackObject(const XMLNode &xml_node)
std::string rolloffTypeStr;
xml_node.get("rolloff_type", &rolloffTypeStr );
float rolloff_distance = 10.0f;
xml_node.get("distance", &rolloff_distance );
if (rolloffTypeStr == "inverse")
rolloffType = AL_INVERSE_DISTANCE_CLAMPED;
else if (rolloffTypeStr == "linear")
@ -105,10 +108,16 @@ TrackObject::TrackObject(const XMLNode &xml_node)
soundfile = file_manager->getSFXFile(sound);
}
float rolloff_param = 1.0f;
if (rolloffType == AL_INVERSE_DISTANCE_CLAMPED)
rolloff_param = rolloff;
else if (rolloffType == AL_LINEAR_DISTANCE_CLAMPED)
rolloff_param = rolloff_distance;
SFXBuffer* buffer = new SFXBuffer(soundfile,
true /* positional */,
rolloffType,
rolloff,
rolloff_param,
volume);
buffer->load();

View File

@ -84,7 +84,7 @@ void TrackObjectManager::add(const XMLNode &xml_node)
}
else if(type=="sfx-emitter")
{
m_all_objects.push_back(new TrackObject(xml_node));
m_all_objects.push_back(new ThreeDAnimation(xml_node));
}
else if(type=="cutscene_camera")
{