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

Function TriggerShatterSmoke

TombEngine/Game/effects/tomb4fx.cpp:641–683  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

639}
640
641void TriggerShatterSmoke(int x, int y, int z)
642{
643 SMOKE_SPARKS* spark = &SmokeSparks[GetFreeSmokeSpark()];
644
645 spark->on = true;
646 spark->sShade = 0;
647 spark->colFadeSpeed = 4;
648 spark->dShade = (GetRandomControl() & 0x1F) + 64;
649 spark->fadeToBlack = 24 - (GetRandomControl() & 7);
650 spark->blendMode = BlendMode::Additive;
651 spark->life = spark->sLife = (GetRandomControl() & 7) + 48;
652 spark->position.x = (GetRandomControl() & 0x1F) + x - 16;
653 spark->position.y = (GetRandomControl() & 0x1F) + y - 16;
654 spark->position.z = (GetRandomControl() & 0x1F) + z - 16;
655 spark->velocity.x = 2 * (GetRandomControl() & 0x1FF) - 512;
656 spark->velocity.y = 2 * (GetRandomControl() & 0x1FF) - 512;
657 spark->velocity.z = 2 * (GetRandomControl() & 0x1FF) - 512;
658 spark->friction = 7;
659
660 if (GetRandomControl() & 1)
661 {
662 spark->flags = SP_ROTATE;
663 spark->rotAng = GetRandomControl() & 0xFFF;
664 if (GetRandomControl() & 1)
665 spark->rotAdd = -64 - (GetRandomControl() & 0x3F);
666 else
667 spark->rotAdd = (GetRandomControl() & 0x3F) + 64;
668 }
669 else if (g_Level.Rooms[LaraItem->RoomNumber].flags & ENV_FLAG_WIND)
670 {
671 spark->flags = SP_WIND;
672 }
673 else
674 {
675 spark->flags = SP_NONE;
676 }
677
678 spark->gravity = -4 - (GetRandomControl() & 3);
679 spark->maxYvel = -4 - (GetRandomControl() & 3);
680 spark->dSize = (GetRandomControl() & 0x3F) + 64;
681 spark->sSize = spark->dSize >> 3;
682 spark->size = spark->dSize >> 3;
683}
684
685int GetFreeBlood()
686{

Callers 1

DefaultItemHitFunction · 0.85

Calls 2

GetFreeSmokeSparkFunction · 0.85
GetRandomControlFunction · 0.85

Tested by

no test coverage detected