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

Function TriggerRiseEffect

TombEngine/Objects/TR4/Entity/tr4_skeleton.cpp:145–197  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

143 }
144
145 void TriggerRiseEffect(ItemInfo* item)
146 {
147 int fxNumber = CreateNewEffect(item->RoomNumber);
148 if (fxNumber == NO_VALUE)
149 return;
150
151 auto* fx = &EffectList[fxNumber];
152
153 fx->pos.Position.x = (byte)GetRandomControl() + item->Pose.Position.x - 128;
154 fx->pos.Position.y = GetPointCollision(*item).GetFloorHeight();
155 fx->pos.Position.z = (byte)GetRandomControl() + item->Pose.Position.z - 128;
156 fx->roomNumber = item->RoomNumber;
157 fx->pos.Orientation.y = 2 * GetRandomControl();
158 fx->speed = GetRandomControl() / 2048;
159 fx->fallspeed = -(GetRandomControl() / 1024);
160 fx->frameNumber = Objects[103].meshIndex;
161 fx->objectNumber = ID_BODY_PART;
162 fx->color = Vector4::One;
163 fx->flag2 = 0x601;
164
165 auto* spark = GetFreeParticle();
166 spark->on = 1;
167 spark->sR = 0;
168 spark->sG = 0;
169 spark->sB = 0;
170 spark->dR = 100;
171 spark->dG = 60;
172 spark->dB = 30;
173 spark->fadeToBlack = 8;
174 spark->colFadeSpeed = (GetRandomControl() & 3) + 4;
175 spark->life = spark->sLife = (GetRandomControl() & 7) + 16;
176 spark->x = fx->pos.Position.x;
177 spark->y = fx->pos.Position.y;
178 spark->z = fx->pos.Position.z;
179 spark->xVel = phd_sin(fx->pos.Orientation.y) * 4096;
180 spark->yVel = 0;
181 spark->zVel = phd_cos(fx->pos.Orientation.y) * 4096;
182 spark->blendMode = BlendMode::Additive;
183 spark->friction = 68;
184 spark->flags = 26;
185 spark->rotAng = GetRandomControl() & 0xFFF;
186
187 if (Random::TestProbability(1 / 2.0f))
188 spark->rotAdd = -16 - (GetRandomControl() & 0xF);
189 else
190 spark->rotAdd = (GetRandomControl() & 0xF) + 16;
191
192 spark->gravity = -4 - (GetRandomControl() & 3);
193 spark->scalar = 3;
194 spark->maxYvel = -4 - (GetRandomControl() & 3);
195 spark->sSize = spark->size = (GetRandomControl() & 0x0F) + 8;
196 spark->dSize = spark->size * 4;
197 }
198
199 void SkeletonControl(short itemNumber)
200 {

Callers 1

SkeletonControlFunction · 0.85

Calls 8

CreateNewEffectFunction · 0.85
GetRandomControlFunction · 0.85
GetPointCollisionFunction · 0.85
GetFreeParticleFunction · 0.85
phd_sinFunction · 0.85
phd_cosFunction · 0.85
TestProbabilityFunction · 0.85
GetFloorHeightMethod · 0.45

Tested by

no test coverage detected