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

Method drawC

libs/JSystem/JParticle/JPAResource.cpp:852–915  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

850}
851
852void JPAResource::drawC(JPAEmitterWorkData *data)
853{
854 data->mEmitter->setFlag(JPAEMIT_DrawChild);
855 if (pCsp->isScaleInherited()) {
856 data->mGlobalPtclScl.x = data->mEmitter->mGlobalPScl.x * pBsp->pBsd->mBaseSizeX;
857 data->mGlobalPtclScl.y = data->mEmitter->mGlobalPScl.y * pBsp->pBsd->mBaseSizeY;
858 } else {
859 data->mGlobalPtclScl.x = data->mEmitter->mGlobalPScl.x * pCsp->mData->mScaleX;
860 data->mGlobalPtclScl.y = data->mEmitter->mGlobalPScl.y * pCsp->mData->mScaleY;
861 }
862
863 u32 flag = pCsp->mData->mFlags & 0xf;
864 if (flag == 0) {
865 data->mGlobalPtclScl.x *= 1.02f;
866 } else if (flag == 1) {
867 data->mGlobalPtclScl.x *= 1.02f;
868 data->mGlobalPtclScl.y *= 0.4f;
869 }
870
871 bool test = true;
872 data->mPivot.y = 0.0f;
873 data->mPivot.x = 0.0f;
874 data->mDirType = pCsp->mData->mFlags >> 4 & 7;
875 data->mRotType = pCsp->mData->mFlags >> 7 & 7;
876
877 flag = pCsp->mData->mFlags & 15;
878 if (flag != 4 && flag != 8) {
879 test = false;
880 }
881 data->mDLType = test;
882 data->mPlaneType = ((u32)data->mDLType) ? 2 : pCsp->mData->mFlags >> 10 & 1;
883 data->mProjectionType = 0;
884 data->mpAlivePtcl = &data->mEmitter->mAlivePtclChld;
885 setCTev(data);
886
887 for (int i = mDrawEmitterChildFuncListNum - 1; 0 <= i; i--) {
888 mDrawEmitterChildFuncList[i](data);
889 }
890
891 if (pBsp->pBsd->mFlags & 0x200000) {
892 for (JPANode<JPABaseParticle>* node = data->mEmitter->mAlivePtclChld.getLast(); node; node = node->getPrev()) {
893 data->mpCurNode = node;
894 if (mDrawParticleChildFuncList) {
895 for (int i = mDrawParticleChildFuncListNum - 1; 0 <= i; i--) {
896 mDrawParticleChildFuncList[i](data, node->getObject());
897 }
898 }
899 }
900 } else {
901 FOREACH_NODE(JPANode<JPABaseParticle>, data->mEmitter->mAlivePtclChld.getFirst(), node)
902 {
903 data->mpCurNode = node;
904 if (mDrawParticleChildFuncList) {
905 for (int i = mDrawParticleChildFuncListNum - 1; 0 <= i; i--) {
906 mDrawParticleChildFuncList[i](data, node->getObject());
907 }
908 }
909 }

Callers

nothing calls this directly

Calls 7

isScaleInheritedMethod · 0.80
drawAfterMethod · 0.80
setFlagMethod · 0.45
getLastMethod · 0.45
getPrevMethod · 0.45
getObjectMethod · 0.45
getFirstMethod · 0.45

Tested by

no test coverage detected