Added bounce sound effect for rubber balls. For now(!) this
is just reusing the race-start 'ping', so this needs to be replaced with a better sfx!! git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@9598 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
720713b9a9
commit
c0fbf21f8a
@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
#include "items/rubber_ball.hpp"
|
#include "items/rubber_ball.hpp"
|
||||||
|
|
||||||
|
#include "audio/sfx_base.hpp"
|
||||||
|
#include "audio/sfx_manager.hpp"
|
||||||
#include "items/projectile_manager.hpp"
|
#include "items/projectile_manager.hpp"
|
||||||
#include "karts/kart.hpp"
|
#include "karts/kart.hpp"
|
||||||
#include "modes/linear_world.hpp"
|
#include "modes/linear_world.hpp"
|
||||||
@ -64,8 +66,17 @@ RubberBall::RubberBall(Kart *kart)
|
|||||||
m_timer = 0.0f;
|
m_timer = 0.0f;
|
||||||
m_interval = m_st_interval;
|
m_interval = m_st_interval;
|
||||||
m_current_max_height = m_max_height;
|
m_current_max_height = m_max_height;
|
||||||
|
m_ping_sfx = sfx_manager->createSoundSource("ball_bounce");
|
||||||
} // RubberBall
|
} // RubberBall
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
RubberBall::~RubberBall()
|
||||||
|
{
|
||||||
|
if(m_ping_sfx->getStatus()==SFXManager::SFX_PLAYING)
|
||||||
|
m_ping_sfx->stop();
|
||||||
|
sfx_manager->deleteSFX(m_ping_sfx);
|
||||||
|
} // ~RubberBall
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
/** Sets up the control points for the interpolation. The parameter contains
|
/** Sets up the control points for the interpolation. The parameter contains
|
||||||
* the coordinates of the first control points (i.e. a control point that
|
* the coordinates of the first control points (i.e. a control point that
|
||||||
@ -309,6 +320,11 @@ float RubberBall::updateHeight()
|
|||||||
if(m_timer>m_interval)
|
if(m_timer>m_interval)
|
||||||
{
|
{
|
||||||
m_timer -= m_interval;
|
m_timer -= m_interval;
|
||||||
|
if(m_ping_sfx->getStatus()!=SFXManager::SFX_PLAYING)
|
||||||
|
{
|
||||||
|
m_ping_sfx->position(getXYZ());
|
||||||
|
m_ping_sfx->play();
|
||||||
|
}
|
||||||
|
|
||||||
LinearWorld *world = dynamic_cast<LinearWorld*>(World::getWorld());
|
LinearWorld *world = dynamic_cast<LinearWorld*>(World::getWorld());
|
||||||
float target_distance =
|
float target_distance =
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
class Kart;
|
class Kart;
|
||||||
class QuadGraph;
|
class QuadGraph;
|
||||||
|
class SFXBase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \ingroup items
|
* \ingroup items
|
||||||
@ -106,6 +107,12 @@ private:
|
|||||||
* used to keep track of the state of this ball. */
|
* used to keep track of the state of this ball. */
|
||||||
bool m_aiming_at_target;
|
bool m_aiming_at_target;
|
||||||
|
|
||||||
|
/** A 'ping' sound effect to be played when the ball hits the ground. */
|
||||||
|
SFXBase *m_ping_sfx;
|
||||||
|
|
||||||
|
/** Sound effect to be played when a ball hits a kart. */
|
||||||
|
SFXBase *m_hit_sfx;
|
||||||
|
|
||||||
void computeTarget();
|
void computeTarget();
|
||||||
void checkDistanceToTarget();
|
void checkDistanceToTarget();
|
||||||
unsigned int getSuccessorToHitTarget(unsigned int node_index,
|
unsigned int getSuccessorToHitTarget(unsigned int node_index,
|
||||||
@ -116,6 +123,7 @@ private:
|
|||||||
void initializeControlPoints(const Vec3 &xyz);
|
void initializeControlPoints(const Vec3 &xyz);
|
||||||
public:
|
public:
|
||||||
RubberBall (Kart* kart);
|
RubberBall (Kart* kart);
|
||||||
|
virtual ~RubberBall();
|
||||||
static void init(const XMLNode &node, scene::IMesh *bowling);
|
static void init(const XMLNode &node, scene::IMesh *bowling);
|
||||||
virtual void update (float dt);
|
virtual void update (float dt);
|
||||||
virtual void hit (Kart* kart, PhysicalObject* obj=NULL);
|
virtual void hit (Kart* kart, PhysicalObject* obj=NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user