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

Method calc_c

libs/JSystem/JParticle/JPAParticle.cpp:247–292  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

245}
246
247bool JPABaseParticle::calc_c(JPAEmitterWorkData *workData)
248{
249 if (++mAge >= (s16)mLifeTime) {
250 return true;
251 }
252
253 mTime = f32(mAge) / f32(mLifeTime);
254
255 if (mAge) {
256 if (checkStatus(0x20)) {
257 mOffsetPosition.set(workData->mGlobalPos);
258 }
259
260 mVelType1.y -= workData->mResource->getCsp()->getGravity();
261
262 mVelType2.zero();
263
264 if (!checkStatus(0x40)) {
265 workData->mResource->calcField(workData, this);
266 }
267
268 mVelType2.add(mVelType0);
269 mVelType1.scale(workData->mEmitter->mAirResist);
270
271 f32 factor = mMoment * mDrag;
272 mVelocity.set(factor * (mVelType1.x + mVelType2.x), factor * (mVelType1.y + mVelType2.y), factor * (mVelType1.z + mVelType2.z));
273 }
274
275 if (workData->mEmitter->mParticleCallback) {
276 workData->mEmitter->mParticleCallback->execute(workData->mEmitter, this);
277 }
278
279 if (checkStatus(0x2)) {
280 return true;
281 }
282
283 workData->mResource->calc_c(workData, this);
284
285 mRotateAngle += mRotateSpeed;
286
287 mLocalPosition.add(mVelocity);
288 mPosition.set(mOffsetPosition.x + (mLocalPosition.x * workData->mPublicScale.x),
289 mOffsetPosition.y + (mLocalPosition.y * workData->mPublicScale.y),
290 mOffsetPosition.z + (mLocalPosition.z * workData->mPublicScale.z));
291 return false;
292}
293
294bool JPABaseParticle::canCreateChild(JPAEmitterWorkData *workData)
295{

Callers

nothing calls this directly

Calls 8

getGravityMethod · 0.80
getCspMethod · 0.80
calcFieldMethod · 0.80
setMethod · 0.45
zeroMethod · 0.45
addMethod · 0.45
scaleMethod · 0.45
executeMethod · 0.45

Tested by

no test coverage detected