d_a_obj_bemos (#975)

* d_a_obj_bemos

* Improve d_particle for demo
This commit is contained in:
Maide
2026-05-07 17:42:48 +01:00
committed by GitHub
parent bcbbb282c1
commit 47c08e9f8a
8 changed files with 1503 additions and 148 deletions
+19 -10
View File
@@ -259,8 +259,10 @@ dPa_followEcallBack::dPa_followEcallBack(u8 param_1, u8 param_2) {
void dPa_followEcallBack::execute(JPABaseEmitter* emtr) {
if (field_0x12 == 0 && !(mFlag & 2)) {
emtr->setGlobalTranslation(mPos->x, mPos->y, mPos->z);
if (mAngle != NULL)
emtr->setGlobalRotation(JGeometry::TVec3<s16>(mAngle->x, mAngle->y, mAngle->z));
if (mAngle != NULL) {
JGeometry::TVec3<s16> tmp(mAngle->x, mAngle->y, mAngle->z);
emtr->setGlobalRotation(tmp);
}
}
if (emtr->isEnableDeleteEmitter()) {
@@ -748,21 +750,26 @@ void dPa_control_c::draw(JPADrawInfo* param_1, u8 param_2) {
/* 8007D1DC-8007D378 .text set__13dPa_control_cFUcUsPC4cXyzPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyz */
JPABaseEmitter* dPa_control_c::set(u8 groupID, u16 userID, const cXyz* pos, const csXyz* angle, const cXyz* scale, u8 alpha, dPa_levelEcallBack* pCallBack, s8 setupInfo, const GXColor* prm, const GXColor* env, const cXyz* globalScale) {
JPABaseEmitter* emtr = mEmitterMng->createSimpleEmitterID(JGeometry::TVec3<f32>(pos->x, pos->y, pos->z), userID, groupID, getRM_ID(userID), NULL, NULL);
JGeometry::TVec3<f32> tmp(pos->x, pos->y, pos->z);
JPABaseEmitter* emtr = mEmitterMng->createSimpleEmitterID(tmp, userID, groupID, getRM_ID(userID), NULL, NULL);
if (emtr == NULL)
return NULL;
if (angle != NULL)
emtr->setGlobalRotation(*(JGeometry::TVec3<s16>*)angle);
if (angle != NULL) {
JGeometry::TVec3<s16> tmp2(angle->x, angle->y, angle->z);
emtr->setGlobalRotation(tmp2);
}
if (scale != NULL)
emtr->setGlobalScale(*scale);
if (scale != NULL) {
JGeometry::TVec3<f32> tmp2(scale->x, scale->y, scale->z);
emtr->setGlobalScale(tmp2);
}
emtr->mGlobalPrmColor.a = alpha;
if (pCallBack != NULL) {
emtr->setEmitterCallBackPtr(pCallBack);
pCallBack->setup(emtr, pos, angle, setupInfo);
} else if (!!(userID & 0x4000)) {
} else if (userID & 0x4000) {
emtr->setEmitterCallBackPtr(&mKagero);
}
@@ -770,8 +777,10 @@ JPABaseEmitter* dPa_control_c::set(u8 groupID, u16 userID, const cXyz* pos, cons
emtr->setGlobalPrmColor(prm->r, prm->g, prm->b);
if (env != NULL)
emtr->setGlobalEnvColor(env->r, env->g, env->b);
if (globalScale != NULL)
emtr->setGlobalParticleScale(*globalScale);
if (globalScale != NULL) {
JGeometry::TVec3<f32> tmp2(globalScale->x, globalScale->y, globalScale->z);
emtr->setGlobalParticleScale(tmp2);
}
return emtr;
}