本文整理汇总了C++中ParticleSystem::SetParams方法的典型用法代码示例。如果您正苦于以下问题:C++ ParticleSystem::SetParams方法的具体用法?C++ ParticleSystem::SetParams怎么用?C++ ParticleSystem::SetParams使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ParticleSystem
的用法示例。
在下文中一共展示了ParticleSystem::SetParams方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LaunchMagicMissileExplosion
static void LaunchMagicMissileExplosion(const Vec3f & _ePos, bool mrCheat) {
ParticleParams cp = g_particleParameters[ParticleParam_MagicMissileExplosion];
if(mrCheat) {
cp = g_particleParameters[ParticleParam_MagicMissileExplosionMar];
}
ParticleSystem * pPS = new ParticleSystem();
pPS->SetParams(cp);
pPS->SetPos(_ePos);
pPS->Update(0);
EERIE_LIGHT * light = dynLightCreate();
if(light) {
light->intensity = 2.3f;
light->fallstart = 250.f;
light->fallend = 420.f;
if(mrCheat) {
light->rgb = Color3f(1.f, 0.3f, .8f);
} else {
light->rgb = Color3f(0.f, 0.f, .8f);
}
light->pos = _ePos;
light->duration = ArxDurationMs(1500);
}
arx_assert(pParticleManager);
pParticleManager->AddSystem(pPS);
ARX_SOUND_PlaySFX(SND_SPELL_MM_HIT, &_ePos);
}
示例2: LaunchPoisonExplosion
static void LaunchPoisonExplosion(const Vec3f & aePos) {
// système de partoches pour l'explosion
ParticleSystem * pPS = new ParticleSystem();
ParticleParams cp = ParticleParams();
cp.m_nbMax = 80;
cp.m_life = 1500;
cp.m_lifeRandom = 500;
cp.m_pos = Vec3f(5);
cp.m_direction = Vec3f(0.f, 1.f, 0.f);
cp.m_angle = glm::radians(360.f);
cp.m_speed = 200;
cp.m_speedRandom = 0;
cp.m_gravity = Vec3f(0, 17, 0);
cp.m_flash = 0;
cp.m_rotation = 1.0f / (101 - 80);
cp.m_rotationRandomDirection = true;
cp.m_rotationRandomStart = true;
cp.m_startSegment.m_size = 5;
cp.m_startSegment.m_sizeRandom = 3;
cp.m_startSegment.m_color = Color(0, 76, 0, 0).to<float>();
cp.m_startSegment.m_colorRandom = Color(0, 0, 0, 150).to<float>();
cp.m_endSegment.m_size = 30;
cp.m_endSegment.m_sizeRandom = 5;
cp.m_endSegment.m_color = Color(0, 0, 0, 0).to<float>();
cp.m_endSegment.m_colorRandom = Color(0, 25, 0, 20).to<float>();
cp.m_blendMode = RenderMaterial::AlphaAdditive;
cp.m_freq = -1;
cp.m_texture.set("graph/particles/big_greypouf", 0, 200);
cp.m_spawnFlags = 0;
cp.m_looping = false;
pPS->SetParams(cp);
pPS->SetPos(aePos);
pPS->Update(0);
std::list<Particle *>::iterator i;
for(i = pPS->listParticle.begin(); i != pPS->listParticle.end(); ++i) {
Particle * pP = *i;
if(pP->isAlive()) {
pP->p3Velocity = glm::clamp(pP->p3Velocity, Vec3f(0, -100, 0), Vec3f(0, 100, 0));
}
}
arx_assert(pParticleManager);
pParticleManager->AddSystem(pPS);
}
示例3: LaunchMagicMissileExplosion
static void LaunchMagicMissileExplosion(const Vec3f & _ePos, bool mrCheat) {
ParticleParams cp = MagicMissileExplosionParticle();
if(mrCheat) {
cp = MagicMissileExplosionMrCheatParticle();
}
ParticleSystem * pPS = new ParticleSystem();
pPS->SetParams(cp);
pPS->SetPos(_ePos);
pPS->Update(0);
LightHandle id = GetFreeDynLight();
if(lightHandleIsValid(id)) {
EERIE_LIGHT * light = lightHandleGet(id);
light->intensity = 2.3f;
light->fallstart = 250.f;
light->fallend = 420.f;
if(mrCheat) {
light->rgb.r = 1.f;
light->rgb.g = 0.3f;
light->rgb.b = .8f;
} else {
light->rgb.r = 0.f;
light->rgb.g = 0.f;
light->rgb.b = .8f;
}
light->pos = _ePos;
light->duration = 1500;
}
arx_assert(pParticleManager);
pParticleManager->AddSystem(pPS);
ARX_SOUND_PlaySFX(SND_SPELL_MM_HIT, &_ePos);
}
示例4: LaunchPoisonExplosion
static void LaunchPoisonExplosion(const Vec3f & aePos) {
// système de partoches pour l'explosion
ParticleSystem * pPS = new ParticleSystem();
pPS->SetParams(g_particleParameters[ParticleParam_Poison1]);
pPS->SetPos(aePos);
pPS->Update(0);
std::list<Particle *>::iterator i;
for(i = pPS->listParticle.begin(); i != pPS->listParticle.end(); ++i) {
Particle * pP = *i;
if(pP->isAlive()) {
pP->p3Velocity = glm::clamp(pP->p3Velocity, Vec3f(0, -100, 0), Vec3f(0, 100, 0));
}
}
g_particleManager.AddSystem(pPS);
}
示例5: Create
//-----------------------------------------------------------------------------
//!!!!!!! def non impair
void CParalyse::Create(int adef, float arayon, float ahcapuchon, float ahauteur, Vec3f * aePos, int aduration)
{
if(adef < 3)
return;
key = -1;
pos = *aePos;
currduration = colduration = 0;
duration = aduration;
prisminterpcol = 0.f;
r = arayon;
SetColPrismDep(128.f, 128.f, 128.f);
SetColPrismEnd(100.f, 100.f, 128.f);
prismnbpt = 1 + (adef << 1);
prismnbface = adef + (adef << 1);
prismd3d = new TexturedVertex[prismnbpt];
prismvertex = new Vec3f[prismnbpt];
prismind = new unsigned short [prismnbface*3];
for(int i = 0; i < 100; i++) {
tabprism[i].vertex = new Vec3f[prismnbpt];
}
tex_prism = TextureContainer::Load("graph/obj3d/textures/(fx)_paralyze");
tex_p = TextureContainer::Load("graph/particles/missile");
tex_p1 = TextureContainer::Load("graph/obj3d/textures/(fx)_tsu_blueting");
tex_p2 = TextureContainer::Load("graph/obj3d/textures/(fx)_tsu_bluepouf");
CreatePrismTriangleList(arayon, ahcapuchon, ahauteur, adef);
CreateLittlePrismTriangleList();
if(lLightId >= 0) {
int id = lLightId;
DynLight[id].exist = 1;
DynLight[id].intensity = 1.4f + 4.f * rnd();
DynLight[id].fallend = r * 3.f;
DynLight[id].fallstart = r * 3.f * .75f;
DynLight[id].rgb.r = (prismrd * 2.f) / 255.f;
DynLight[id].rgb.g = (prismgd * 2.f) / 255.f;
DynLight[id].rgb.b = (prismbd * 2.f) / 255.f;
DynLight[id].pos.x = pos.x;
DynLight[id].pos.y = pos.y - ahcapuchon * .5f;
DynLight[id].pos.z = pos.z;
}
// système de partoches pour la poussière
ParticleSystem * pPS = new ParticleSystem();
ParticleParams cp;
memset(&cp, 0, sizeof(cp));
cp.iNbMax = 200;
cp.fLife = 500; //2000
cp.fLifeRandom = 900;
cp.p3Pos.x = 20;
cp.p3Pos.y = 80;
cp.p3Pos.z = 20;
cp.p3Direction.x = 0;
cp.p3Direction.y = -10;
cp.p3Direction.z = 0;
cp.fAngle = radians(360);
cp.fSpeed = 10;
cp.fSpeedRandom = 10;
cp.p3Gravity.x = 0;
cp.p3Gravity.y = 10;
cp.p3Gravity.z = 0;
cp.fFlash = 0;
cp.fRotation = 0;
cp.fStartSize = 0;
cp.fStartSizeRandom = 1;
cp.fStartColor[0] = 20;
cp.fStartColor[1] = 20;
cp.fStartColor[2] = 20;
cp.fStartColor[3] = 50;
cp.fStartColorRandom[0] = 0;
cp.fStartColorRandom[1] = 0;
cp.fStartColorRandom[2] = 0;
cp.fStartColorRandom[3] = 50;
cp.fEndSize = 1;
cp.fEndSizeRandom = 4;
cp.fEndColor[0] = 20;
cp.fEndColor[1] = 20;
cp.fEndColor[2] = 20;
cp.fEndColor[3] = 10;
cp.fEndColorRandom[0] = 0;
cp.fEndColorRandom[1] = 0;
cp.fEndColorRandom[2] = 0;
cp.fEndColorRandom[3] = 0;
cp.iBlendMode = 5;
pPS->SetParams(cp);
pPS->ulParticleSpawn = 0;
pPS->SetTexture("graph/particles/lil_greypouf", 0, 200);
Vec3f ep;
//.........这里部分代码省略.........
示例6: LaunchPoisonExplosion
void LaunchPoisonExplosion(Vec3f * aePos) {
// système de partoches pour l'explosion
ParticleSystem * pPS = new ParticleSystem();
ParticleParams cp;
cp.iNbMax = 80;
cp.fLife = 1500;
cp.fLifeRandom = 500;
cp.p3Pos = Vec3f::repeat(5);
cp.p3Direction.x = 0;
cp.p3Direction.y = 4;
cp.p3Direction.z = 0;
cp.fAngle = radians(360);
cp.fSpeed = 200;
cp.fSpeedRandom = 0;
cp.p3Gravity.x = 0;
cp.p3Gravity.y = 17;
cp.p3Gravity.z = 0;
cp.fFlash = 0;
cp.fRotation = 80;
cp.bRotationRandomDirection = true;
cp.bRotationRandomStart = true;
cp.fStartSize = 5;
cp.fStartSizeRandom = 3;
cp.fStartColor[0] = 0;
cp.fStartColor[1] = 76;
cp.fStartColor[2] = 0;
cp.fStartColor[3] = 0;
cp.fStartColorRandom[0] = 0;
cp.fStartColorRandom[1] = 0;
cp.fStartColorRandom[2] = 0;
cp.fStartColorRandom[3] = 150;
cp.bStartLock = false;
cp.fEndSize = 30;
cp.fEndSizeRandom = 5;
cp.fEndColor[0] = 0;
cp.fEndColor[1] = 0;
cp.fEndColor[2] = 0;
cp.fEndColor[3] = 0;
cp.fEndColorRandom[0] = 0;
cp.fEndColorRandom[1] = 25;
cp.fEndColorRandom[2] = 0;
cp.fEndColorRandom[3] = 20;
cp.bEndLock = false;
cp.iBlendMode = 3;
cp.iFreq = -1;
cp.bTexInfo = false;
pPS->SetParams(cp);
pPS->ulParticleSpawn = 0;
pPS->SetTexture("graph/particles/big_greypouf", 0, 200);
pPS->SetPos(*aePos);
pPS->Update(0);
pPS->iParticleNbMax = 0;
std::list<Particle *>::iterator i;
for (i = pPS->listParticle.begin(); i != pPS->listParticle.end(); ++i)
{
Particle * pP = *i;
if (pP->isAlive())
{
if (pP->p3Velocity.y >= 0.5f * 200)
pP->p3Velocity.y = 0.5f * 200;
if (pP->p3Velocity.y <= -0.5f * 200)
pP->p3Velocity.y = -0.5f * 200;
}
}
if (pParticleManager)
{
pParticleManager->AddSystem(pPS);
}
}
示例7: LaunchMagicMissileExplosion
void LaunchMagicMissileExplosion(const Vec3f & _ePos, int t = 0, long spellinstance = -1)
{
// système de partoches pour l'explosion
ParticleSystem * pPS = new ParticleSystem();
ParticleParams cp;
memset(&cp, 0, sizeof(cp));
cp.iNbMax = 100 + t * 50;
cp.fLife = 1500;
cp.fLifeRandom = 0;
cp.p3Pos = Vec3f(10.f);
cp.p3Direction = Vec3f(0.f, -10.f, 0.f);
cp.fAngle = radians(360);
cp.fSpeed = 130;
cp.fSpeedRandom = 100;
cp.p3Gravity = Vec3f(0.f, 10.f, 0.f);
cp.fFlash = 0;
cp.fRotation = 16;
cp.fStartSize = 5;
cp.fStartSizeRandom = 10;
cp.fEndSize = 0;
cp.fEndSizeRandom = 2;
if(spellinstance >= 0 && spells[spellinstance].caster == 0 && cur_mr == 3) {
cp.fStartSize = 20;
cp.fSpeed = 13;
cp.fSpeedRandom = 10;
cp.fStartColorRandom[0] = 0;
cp.fStartColorRandom[1] = 0;
cp.fStartColorRandom[2] = 0;
cp.fStartColorRandom[3] = 0;
cp.fStartColor[0] = 0;
cp.fStartColor[1] = 0;
cp.fStartColor[2] = 0;
cp.fStartColor[3] = 0;
cp.fEndColor[0] = 255;
cp.fEndColor[1] = 40;
cp.fEndColor[2] = 120;
cp.fEndColor[3] = 10;//55;
pPS->SetTexture("graph/particles/(fx)_mr", 0, 500);
} else {
cp.fStartColorRandom[0] = 100;
cp.fStartColorRandom[1] = 100;
cp.fStartColorRandom[2] = 100;
cp.fStartColorRandom[3] = 100;
cp.fStartColor[0] = 110;
cp.fStartColor[1] = 110;
cp.fStartColor[2] = 110;
cp.fStartColor[3] = 110;
cp.fEndColor[0] = 0;
cp.fEndColor[1] = 0;
cp.fEndColor[2] = 120;
cp.fEndColor[3] = 10;
pPS->SetTexture("graph/particles/magicexplosion", 0, 500);
}
cp.fEndColorRandom[0] = 50;
cp.fEndColorRandom[1] = 50;
cp.fEndColorRandom[2] = 50;
cp.fEndColorRandom[3] = 50;
cp.blendMode = RenderMaterial::Additive;
pPS->SetParams(cp);
pPS->ulParticleSpawn = 0;
Vec3f eP = _ePos;
pPS->SetPos(eP);
pPS->Update(0);
pPS->iParticleNbMax = 0;
long id = GetFreeDynLight();
if(id != -1) {
DynLight[id].exist = 1;
DynLight[id].intensity = 2.3f;
DynLight[id].fallstart = 250.f;
DynLight[id].fallend = 420.f;
if(spellinstance >= 0 && spells[spellinstance].caster == 0 && cur_mr == 3) {
DynLight[id].rgb.r = 1.f;
DynLight[id].rgb.g = 0.3f;
DynLight[id].rgb.b = .8f;
} else {
DynLight[id].rgb.r = 0.f;
DynLight[id].rgb.g = 0.f;
DynLight[id].rgb.b = .8f;
}
DynLight[id].pos = eP;
DynLight[id].duration = 1500;
}
if(pParticleManager)
pParticleManager->AddSystem(pPS);
//.........这里部分代码省略.........