MCPcopy Create free account
hub / github.com/doldecomp/mkdd / init_p

Method init_p

libs/JSystem/JParticle/JPAParticle.cpp:12–111  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10JPAParticleCallBack::~JPAParticleCallBack() { }
11
12void JPABaseParticle::init_p(JPAEmitterWorkData *workData)
13{
14 JPAExtraShape *extraShape = workData->mResource->pEsp;
15 JPABaseEmitter *emitter = workData->mEmitter;
16 JPABaseShape *baseShape = workData->mResource->pBsp;
17 JPADynamicsBlock *dynamicsBlock = workData->mResource->pDyn;
18
19 mAge = -1;
20 mLifeTime = (f32)emitter->mLifeTime * (1.0f - dynamicsBlock->mData->mLifeTimeRndm * emitter->mRandom.getRandF32());
21 mTime = 0.0f;
22 initStatus(0);
23 PSMTXMultVecSR(workData->mGlobalSR, &workData->mVolumePos, &mLocalPosition);
24 if (emitter->checkDynFlag(8)) {
25 setStatus(0x20);
26 }
27 mOffsetPosition.set(workData->mGlobalPos);
28 mPosition.set(mOffsetPosition.x + mLocalPosition.x * workData->mPublicScale.x,
29 mOffsetPosition.y + mLocalPosition.y * workData->mPublicScale.y,
30 mOffsetPosition.z + mLocalPosition.z * workData->mPublicScale.z);
31
32 JGeometry::TVec3f vec1; // 0x38
33 if (emitter->mAwayFromCenterSpeed) {
34 vec1.setLength(workData->mVelOmni, emitter->mAwayFromCenterSpeed);
35 } else {
36 vec1.zero();
37 }
38
39 JGeometry::TVec3f vec2; // 0x2C
40 if (emitter->mAwayFromAxisSpeed) {
41 vec2.setLength(workData->mVelAxis, emitter->mAwayFromAxisSpeed);
42 } else {
43 vec2.zero();
44 }
45
46 JGeometry::TVec3f vec3; // 0x20
47 if (emitter->mDirSpeed) {
48 Mtx yzRotMtx;
49 JPAGetYZRotateMtx(emitter->mSpread * (32768.0f * emitter->getRandZP()), emitter->getRandS16(), yzRotMtx);
50 PSMTXConcat(workData->mDirectionMtx, yzRotMtx, yzRotMtx);
51 vec3.set(emitter->mDirSpeed * yzRotMtx[0][2], emitter->mDirSpeed * yzRotMtx[1][2], emitter->mDirSpeed * yzRotMtx[2][2]);
52 } else {
53 vec3.zero();
54 }
55
56 JGeometry::TVec3f vec4; // 0x14
57 if (emitter->mRndmDirSpeed) {
58 vec4.set(emitter->mRndmDirSpeed * emitter->getRandZH(), emitter->mRndmDirSpeed * emitter->getRandZH(),
59 emitter->mRndmDirSpeed * emitter->getRandZH());
60 } else {
61 vec4.zero();
62 }
63
64 f32 type1Factor = (1.0f + emitter->getRandZP() * dynamicsBlock->getInitVelRatio());
65 mVelType1.set(type1Factor * (vec1.x + vec2.x + vec3.x + vec4.x), type1Factor * (vec1.y + vec2.y + vec3.y + vec4.y),
66 type1Factor * (vec1.z + vec2.z + vec3.z + vec4.z));
67
68 if (emitter->checkDynFlag(4)) {
69 mVelType1.mul(emitter->mLocalScl);

Callers 1

createParticleMethod · 0.80

Calls 15

setStatusFunction · 0.85
JPAGetYZRotateMtxFunction · 0.85
checkDynFlagMethod · 0.80
setLengthMethod · 0.80
getInitVelRatioMethod · 0.80
mulMethod · 0.80
getMomentRndmMethod · 0.80
getLoopOfstValueMethod · 0.80
isEnableScaleAnmMethod · 0.80
getScaleRndmMethod · 0.80
isEnableAlphaFlickMethod · 0.80
getAlphaFreqRndmMethod · 0.80

Tested by

no test coverage detected