MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / TriggerShockwaveHitEffect

Function TriggerShockwaveHitEffect

TombEngine/Game/effects/tomb4fx.cpp:1350–1405  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1348}
1349
1350void TriggerShockwaveHitEffect(int x, int y, int z, unsigned char r, unsigned char g, unsigned char b, short rot, int vel)
1351{
1352 int dx = LaraItem->Pose.Position.x - x;
1353 int dz = LaraItem->Pose.Position.z - z;
1354
1355 if (dx >= -16384 && dx <= 16384 && dz >= -16384 && dz <= 16384)
1356 {
1357 auto* spark = GetFreeParticle();
1358 spark->dB = b;
1359 spark->on = true;
1360 spark->sR = 0;
1361 spark->sG = 0;
1362 spark->sB = 0;
1363 spark->dG = g;
1364 spark->dR = r;
1365 spark->colFadeSpeed = 4;
1366 spark->fadeToBlack = 8;
1367 spark->blendMode = BlendMode::Additive;
1368 spark->life = spark->sLife = (GetRandomControl() & 3) + 16;
1369
1370 int speed = (GetRandomControl() & 0xF) + vel;
1371 spark->xVel = speed * 16 * phd_sin(rot);
1372 spark->yVel = -512 - (GetRandomControl() & 0x1FF);
1373 spark->zVel = speed * 16 * phd_cos(rot);
1374
1375 short angle;
1376 if (GetRandomControl() & 1)
1377 angle = rot + ANGLE(90);
1378 else
1379 angle = rot - ANGLE(90);
1380
1381 int shift = (GetRandomControl() & 0x1FF) - 256;
1382 x += shift * phd_sin(angle);
1383 z += shift * phd_cos(angle);
1384
1385 spark->x = (GetRandomControl() & 0x1F) + x - 16;
1386 spark->y = (GetRandomControl() & 0x1F) + y - 16;
1387 spark->z = (GetRandomControl() & 0x1F) + z - 16;
1388
1389 spark->friction = 3;
1390 spark->flags = SP_EXPDEF | SP_ROTATE | SP_DEF | SP_SCALE;
1391 spark->rotAng = GetRandomControl() & 0xFFF;
1392 if (GetRandomControl() & 1)
1393 spark->rotAdd = -16 - (GetRandomControl() & 0xF);
1394 else
1395 spark->rotAdd = (GetRandomControl() & 0xF) + 16;
1396
1397 spark->scalar = 1;
1398 spark->SpriteSeqID = ID_DEFAULT_SPRITES;
1399 spark->SpriteID = SPR_UNDERWATERDUST;
1400 spark->maxYvel = 0;
1401 spark->gravity = (GetRandomControl() & 0x3F) + 64;
1402 spark->sSize = spark->size = (GetRandomControl() & 0x1F) + 32;
1403 spark->dSize = spark->size / 4;
1404 }
1405}
1406
1407void UpdateShockwaves()

Callers 1

UpdateShockwavesFunction · 0.85

Calls 5

GetFreeParticleFunction · 0.85
GetRandomControlFunction · 0.85
phd_sinFunction · 0.85
phd_cosFunction · 0.85
ANGLEFunction · 0.85

Tested by

no test coverage detected