| 850 | } |
| 851 | |
| 852 | void 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 | } |