00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <sprites/ExplosionRingRenderer.h>
00022 #include <common/Defines.h>
00023 #include <sound/SoundUtils.h>
00024 #include <graph/ParticleEmitter.h>
00025 #include <graph/ParticleEngine.h>
00026 #include <client/ScorchedClient.h>
00027
00028 REGISTER_CLASS_SOURCE(ExplosionRingRenderer);
00029
00030
00031 ExplosionRingRenderer::ExplosionRingRenderer()
00032 {
00033 }
00034
00035 ExplosionRingRenderer::~ExplosionRingRenderer()
00036 {
00037 }
00038
00039 void ExplosionRingRenderer::init(unsigned int playerId,
00040 Vector &position, Vector &velocity, const char *data)
00041 {
00042 position_ = position;
00043 data_ = data;
00044 }
00045
00046 void ExplosionRingRenderer::draw(Action *action)
00047 {
00048 }
00049
00050 void ExplosionRingRenderer::simulate(Action *action, float frameTime, bool &remove)
00051 {
00052 if (0 != strcmp("none", data_.c_str()))
00053 {
00054 SoundBuffer *firedSound =
00055 Sound::instance()->fetchOrCreateBuffer(
00056 S3D::getDataFile(data_.c_str()));
00057 SoundUtils::playAbsoluteSound(VirtualSoundPriority::eAction,
00058 firedSound, position_);
00059 }
00060
00061
00062 ParticleEmitter emmiter;
00063 emmiter.setAttributes(
00064 0.6f, 0.6f,
00065 0.5f, 0.5f,
00066 0.0f, 0.0f,
00067 Vector(), Vector(),
00068 Vector(0.0f, 0.0f, 0.8f), 0.9f,
00069 Vector(0.2f, 0.2f, 0.9f), 1.0f,
00070 Vector(0.6f, 0.6f, 0.95f), 0.0f,
00071 Vector(0.8f, 0.8f, 1.0f), 0.1f,
00072 0.2f, 0.2f, 0.5f, 0.5f,
00073 1.5f, 1.5f, 3.0f, 3.0f,
00074 Vector(0.0f, 0.0f, 0.0f),
00075 true,
00076 false);
00077 emmiter.emitExplosionRing(
00078 400, position_,
00079 ScorchedClient::instance()->getParticleEngine(),
00080 ParticleRendererQuads::getInstance());
00081
00082
00083 remove = true;
00084 }