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

Function zParPTankSparkleCreate

src/SB/Game/zParPTank.cpp:68–110  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

66const RwV2d sparkle_size = { 0.3f, 0.3f };
67
68static void zParPTankSparkleCreate(zParPTank* zp, U32 max_particles, zParPTankUpdateCallback update)
69{
70 zp->num_particles = 0;
71 zp->max_particles = max_particles;
72 zp->flags = 0;
73 zp->update = update;
74
75 RwTexture* tex = (RwTexture*)xSTFindAsset(xStrHash("partex0"), NULL);
76 if (!tex)
77 {
78 return;
79 }
80
81 RwTextureSetFilterMode(tex, rwFILTERLINEAR);
82 RwRGBA defaultColor = { 0xFF, 0xFF, 0xFF, 0xFF };
83
84 zp->ptank = RpPTankAtomicCreate(
85 zp->max_particles, rpPTANKDFLAGPOSITION | rpPTANKDFLAGVTX2TEXCOORDS | rpPTANKDFLAGARRAY, 0);
86
87 RwFrame* frame = RwFrameCreate();
88 RwMatrixSetIdentity(&frame->modelling);
89 RpAtomicSetFrame(zp->ptank, frame);
90
91 RPATOMICPTANKPLUGINDATA(zp->ptank)->publicData.cColor = defaultColor;
92
93 if (zp->ptank->geometry->matList.materials[0])
94 {
95 zp->ptank->geometry->matList.materials[0]->color =
96 RPATOMICPTANKPLUGINDATA(zp->ptank)->publicData.cColor;
97 }
98 RPATOMICPTANKPLUGINDATA(zp->ptank)->instFlags |= rpPTANKIFLAGCNSCOLOR;
99 RPATOMICPTANKPLUGINDATA(zp->ptank)->publicData.cSize = sparkle_size;
100 RPATOMICPTANKPLUGINDATA(zp->ptank)->instFlags |= rpPTANKIFLAGCNSSIZE;
101
102 RpMaterialSetTexture(zp->ptank->geometry->matList.materials[0], tex);
103
104 RPATOMICPTANKPLUGINDATA(zp->ptank)->publicData.srcBlend = 5;
105 RPATOMICPTANKPLUGINDATA(zp->ptank)->publicData.dstBlend = 2;
106 RPATOMICPTANKPLUGINDATA(zp->ptank)->instFlags |= rpPTANKIFLAGALPHABLENDING;
107 RPATOMICPTANKPLUGINDATA(zp->ptank)->publicData.vertexAlphaBlend = 1;
108
109 sSparkleAnimTime = 0.0f;
110}
111
112// Equivalent: float loading optimization
113static void zParPTankSparkleUpdate(zParPTank* zp, float dt)

Callers 1

zParPTankInitFunction · 0.70

Calls 2

xSTFindAssetFunction · 0.50
xStrHashFunction · 0.50

Tested by

no test coverage detected