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

Method calc_p

libs/JSystem/JParticle/JPAParticle.cpp:195–245  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

193}
194
195bool JPABaseParticle::calc_p(JPAEmitterWorkData *workData)
196{
197 if (++mAge >= (s16)mLifeTime) {
198 return true;
199 }
200
201 mTime = f32(mAge) / f32(mLifeTime);
202
203 if (checkStatus(0x20)) {
204 mOffsetPosition.set(workData->mGlobalPos);
205 }
206
207 mVelType2.zero();
208
209 if (!checkStatus(0x40)) {
210 workData->mResource->calcField(workData, this);
211 }
212
213 mVelType2.add(mVelType0);
214 mVelType1.scale(workData->mEmitter->mAirResist);
215
216 f32 factor = mMoment * mDrag;
217 mVelocity.set(factor * (mVelType1.x + mVelType2.x), factor * (mVelType1.y + mVelType2.y), factor * (mVelType1.z + mVelType2.z));
218
219 if (workData->mEmitter->mParticleCallback) {
220 workData->mEmitter->mParticleCallback->execute(workData->mEmitter, this);
221 }
222
223 if (checkStatus(0x2)) {
224 return true;
225 }
226
227 workData->mResource->calc_p(workData, this);
228
229 mRotateAngle += mRotateSpeed;
230
231 int rate;
232 if (workData->mResource->getCsp() && canCreateChild(workData)) {
233 rate = workData->mResource->getCsp()->getRate();
234 while (rate > 0) {
235 workData->mEmitter->createChild(this);
236 rate--;
237 }
238 }
239
240 mLocalPosition.add(mVelocity);
241 mPosition.set(mOffsetPosition.x + (mLocalPosition.x * workData->mPublicScale.x),
242 mOffsetPosition.y + (mLocalPosition.y * workData->mPublicScale.y),
243 mOffsetPosition.z + (mLocalPosition.z * workData->mPublicScale.z));
244 return false;
245}
246
247bool JPABaseParticle::calc_c(JPAEmitterWorkData *workData)
248{

Callers

nothing calls this directly

Calls 9

calcFieldMethod · 0.80
getCspMethod · 0.80
createChildMethod · 0.80
setMethod · 0.45
zeroMethod · 0.45
addMethod · 0.45
scaleMethod · 0.45
executeMethod · 0.45
getRateMethod · 0.45

Tested by

no test coverage detected