MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / zFrag_DefaultInit

Function zFrag_DefaultInit

src/SB/Game/zShrapnel.cpp:370–457  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

368}
369
370void zFrag_DefaultInit(zFrag* frag, zFragAsset* fasset)
371{
372 frag->alivetime = 0.0f;
373 frag->lifetime = fasset->lifetime;
374 frag->delay = fasset->delay;
375
376 switch (fasset->type)
377 {
378 case eFragProjectile:
379 zFragProjectileAsset* passet = (zFragProjectileAsset*)fasset;
380
381 frag->info.projectile.fasset = passet;
382 frag->update = zFrag_DefaultProjectileUpdate;
383
384 if (passet->modelFile != NULL)
385 {
386 frag->info.projectile.model = xModelInstanceAlloc(passet->modelFile, NULL, 0, 0, NULL);
387 }
388 else
389 {
390 frag->info.projectile.model = NULL;
391 }
392
393 if (frag->info.projectile.model == NULL)
394 {
395 zFrag_Free(frag);
396 }
397 else if (frag->info.projectile.model != NULL)
398 {
399 if (frag->parent[0] != NULL && (passet->flags & 0x10) == 0)
400 {
401 zFrag_ProjectileSetupPath(frag, passet);
402 }
403
404 frag->info.projectile.model->LightKit = globals.player.ent.lightKit;
405 frag->info.projectile.alpha = 1.0f;
406 frag->info.projectile.numBounces = 0;
407 frag->info.projectile.scale = passet->minScale;
408
409 if (passet->scaleCurve != NULL)
410 {
411 frag->info.projectile.scale *= xCurveAssetEvaluate(passet->scaleCurve, 0.0f);
412 }
413 }
414 break;
415
416 case eFragLightning:
417 zFragLightningAsset* lasset = (zFragLightningAsset*)fasset;
418
419 frag->info.lightning.fasset = lasset;
420 frag->update = zFrag_DefaultLightningUpdate;
421
422 if (frag->parent[0] != NULL && frag->parent[1] != NULL)
423 {
424 zFragLoc_Setup(&lasset->start, frag->parent[0]);
425 zFragLoc_Setup(&lasset->end, frag->parent[1]);
426 }
427 break;

Callers 1

zShrapnel_CinematicInitFunction · 0.70

Calls 5

zFrag_FreeFunction · 0.85
zFragLoc_SetupFunction · 0.85
zFragLoc_InitVecFunction · 0.85
xModelInstanceAllocFunction · 0.50
xCurveAssetEvaluateFunction · 0.50

Tested by

no test coverage detected