summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorMax Roncace <me@caseif.net>2026-03-26 21:56:04 -0400
committerGitHub <noreply@github.com>2026-03-26 18:56:04 -0700
commit36d89c7bbf78fc254f4ec8ba187efad7d7e84981 (patch)
tree39d5ccf70aba083f6951830dae74a3218481c419 /libs
parent0fc019dcfa2ed1834825e9754d47e7948e1745f7 (diff)
object-particle debug almost matching (#3136)
Diffstat (limited to 'libs')
-rw-r--r--libs/JSystem/include/JSystem/JStudio/JStudio_JParticle/control.h103
-rw-r--r--libs/JSystem/include/JSystem/JStudio/JStudio_JParticle/object-particle.h96
-rw-r--r--libs/JSystem/src/JStudio/JStudio_JParticle/control.cpp5
-rw-r--r--libs/JSystem/src/JStudio/JStudio_JParticle/object-particle.cpp387
4 files changed, 361 insertions, 230 deletions
diff --git a/libs/JSystem/include/JSystem/JStudio/JStudio_JParticle/control.h b/libs/JSystem/include/JSystem/JStudio/JStudio_JParticle/control.h
index 4dd6433d08..044b865f1b 100644
--- a/libs/JSystem/include/JSystem/JStudio/JStudio_JParticle/control.h
+++ b/libs/JSystem/include/JSystem/JStudio/JStudio_JParticle/control.h
@@ -27,7 +27,7 @@ struct TCreateObject : public JStudio::TCreateObject {
createObject_JPA_PARTICLE_(JStudio::stb::data::TParse_TBlock_object const&,
JStudio_JParticle::TCreateObject*);
- const JStage::TSystem* get_pJSGSystem_() { return pJSGSystem_; }
+ const JStage::TSystem* get_pJSGSystem_() const { return pJSGSystem_; }
bool isPermit_onExit_notEnd() { return mPermit_onExit_notEnd; }
/* 0x0C */ JPAEmitterManager* pJPAEmitterManager_;
@@ -35,107 +35,6 @@ struct TCreateObject : public JStudio::TCreateObject {
/* 0x14 */ bool mPermit_onExit_notEnd;
};
-struct TAdaptor_particle : public JStudio::TAdaptor_particle {
- typedef JStudio::TObject_particle ObjectType;
-
- struct TJPACallback_emitter_ : public JPAEmitterCallBack {
- TJPACallback_emitter_(TAdaptor_particle* param_1) {
- pThis_ = param_1;
- pOld = NULL;
- JUT_ASSERT(113, pThis_!=NULL);
- }
- virtual void execute(JPABaseEmitter*);
- virtual void executeAfter(JPABaseEmitter*);
- virtual void draw(JPABaseEmitter*);
- virtual void drawAfter(JPABaseEmitter*);
-
- JPAEmitterCallBack* getOld() { return pOld; }
- void setOld(JPAEmitterCallBack* cb) { pOld = cb; }
-
- /* 0x4 */ TAdaptor_particle* pThis_;
- /* 0x8 */ JPAEmitterCallBack* pOld;
- };
-
- struct TJPAEmitter_stopDrawParticle_ {
- TJPAEmitter_stopDrawParticle_(JPABaseEmitter* emitter) : pJPAEmitter_(emitter) {}
- ~TJPAEmitter_stopDrawParticle_() {
- if (pJPAEmitter_ != NULL) {
- pJPAEmitter_->stopDrawParticle();
- }
- }
- void set(JPABaseEmitter* emitter) { pJPAEmitter_ = emitter; }
- /* 0x0 */ JPABaseEmitter* pJPAEmitter_;
- };
-
- TAdaptor_particle(JStudio_JParticle::TCreateObject*);
- void beginParticle_fadeIn_();
- void endParticle_fadeOut_(u32);
-
- virtual ~TAdaptor_particle();
- virtual void adaptor_do_prepare();
- virtual void adaptor_do_end();
- virtual void adaptor_do_update(u32);
- virtual void adaptor_do_PARTICLE(JStudio::data::TEOperationData, void const*, u32);
- virtual void adaptor_do_BEGIN(JStudio::data::TEOperationData, void const*, u32);
- virtual void adaptor_do_BEGIN_FADE_IN(JStudio::data::TEOperationData, void const*,
- u32);
- virtual void adaptor_do_END(JStudio::data::TEOperationData, void const*, u32);
- virtual void adaptor_do_END_FADE_OUT(JStudio::data::TEOperationData, void const*,
- u32);
- virtual void adaptor_do_PARENT(JStudio::data::TEOperationData, void const*, u32);
- virtual void adaptor_do_PARENT_NODE(JStudio::data::TEOperationData, void const*,
- u32);
- virtual void adaptor_do_PARENT_ENABLE(JStudio::data::TEOperationData, void const*,
- u32);
- virtual void adaptor_do_PARENT_FUNCTION(JStudio::data::TEOperationData, void const*,
- u32);
- virtual void adaptor_do_REPEAT(JStudio::data::TEOperationData, void const*, u32);
- virtual void adaptor_do_ON_EXIT_NOT_END(JStudio::data::TEOperationData, void const*,
- u32);
-
- static bool state_isFade_(u8 param_1) {
- return param_1 == 1 || param_1 == 3;
- }
-
- bool state_isFade_() {
- return state_isFade_(field_0x1b8);
- }
-
- void beginParticle_fadeIn_(u32 param_1) {
- field_0x1c8 = param_1;
- beginParticle_fadeIn_();
- }
-
- void beginParticle_() {
- beginParticle_fadeIn_(0);
- }
-
- void endParticle_() {
- if (pJPAEmitter_ != NULL) {
- pJPAEmitter_->becomeInvalidEmitter();
- }
- }
-
- void set_bPermit_onExit_notEnd_(bool param_1) { field_0x1b4 = param_1; }
-
- /* 0x1A0 */ TCreateObject* pCreateObject_;
- /* 0x1A4 */ JPABaseEmitter* pJPAEmitter_;
- /* 0x1A8 */ TJPACallback_emitter_ field_0x1a8;
- /* 0x1B4 */ u8 field_0x1b4;
- /* 0x1B5 */ u8 field_0x1b5;
- /* 0x1B6 */ u8 field_0x1b6;
- /* 0x1B7 */ u8 field_0x1b7;
- /* 0x1B8 */ u8 field_0x1b8;
- /* 0x1BC */ u32 field_0x1bc;
- /* 0x1C0 */ u32 u32FadeTime_end;
- /* 0x1C4 */ u32 field_0x1c4;
- /* 0x1C8 */ u32 field_0x1c8;
- /* 0x1CC */ u32 field_0x1cc;
- /* 0x1D0 */ JStage::TObject* field_0x1d0;
- /* 0x1D4 */ u32 field_0x1d4;
- /* 0x1D8 */ u8 field_0x1d8;
-};
-
}; // namespace JStudio_JParticle
#endif /* JSTUDIO_JPARTICLE_CONTROL_H */
diff --git a/libs/JSystem/include/JSystem/JStudio/JStudio_JParticle/object-particle.h b/libs/JSystem/include/JSystem/JStudio/JStudio_JParticle/object-particle.h
index c887a183ee..3dba0e0a31 100644
--- a/libs/JSystem/include/JSystem/JStudio/JStudio_JParticle/object-particle.h
+++ b/libs/JSystem/include/JSystem/JStudio/JStudio_JParticle/object-particle.h
@@ -3,4 +3,100 @@
#include "JSystem/JStudio/JStudio_JParticle/control.h"
+namespace JStudio_JParticle {
+
+struct TAdaptor_particle : public JStudio::TAdaptor_particle {
+ typedef JStudio::TObject_particle ObjectType;
+
+ struct TJPACallback_emitter_ : public JPAEmitterCallBack {
+ TJPACallback_emitter_(TAdaptor_particle* param_1) {
+ pThis_ = param_1;
+ pOld = NULL;
+ JUT_ASSERT(113, pThis_!=NULL);
+ }
+ virtual void execute(JPABaseEmitter*);
+ virtual void executeAfter(JPABaseEmitter*);
+ virtual void draw(JPABaseEmitter*);
+ virtual void drawAfter(JPABaseEmitter*);
+
+ JPAEmitterCallBack* getOld() const { return pOld; }
+ void setOld(JPAEmitterCallBack* cb) { pOld = cb; }
+
+ /* 0x4 */ TAdaptor_particle* pThis_;
+ /* 0x8 */ JPAEmitterCallBack* pOld;
+ };
+
+ TAdaptor_particle(JStudio_JParticle::TCreateObject*);
+ void beginParticle_fadeIn_();
+ void endParticle_fadeOut_(u32);
+
+ virtual ~TAdaptor_particle();
+ virtual void adaptor_do_prepare();
+ virtual void adaptor_do_end();
+ virtual void adaptor_do_update(u32);
+ virtual void adaptor_do_PARTICLE(JStudio::data::TEOperationData, void const*, u32);
+ virtual void adaptor_do_BEGIN(JStudio::data::TEOperationData, void const*, u32);
+ virtual void adaptor_do_BEGIN_FADE_IN(JStudio::data::TEOperationData, void const*,
+ u32);
+ virtual void adaptor_do_END(JStudio::data::TEOperationData, void const*, u32);
+ virtual void adaptor_do_END_FADE_OUT(JStudio::data::TEOperationData, void const*,
+ u32);
+ virtual void adaptor_do_PARENT(JStudio::data::TEOperationData, void const*, u32);
+ virtual void adaptor_do_PARENT_NODE(JStudio::data::TEOperationData, void const*,
+ u32);
+ virtual void adaptor_do_PARENT_ENABLE(JStudio::data::TEOperationData, void const*,
+ u32);
+ virtual void adaptor_do_PARENT_FUNCTION(JStudio::data::TEOperationData, void const*,
+ u32);
+ virtual void adaptor_do_REPEAT(JStudio::data::TEOperationData, void const*, u32);
+ virtual void adaptor_do_ON_EXIT_NOT_END(JStudio::data::TEOperationData, void const*,
+ u32);
+
+ static const char* toString_state_(int param_1);
+
+ static bool state_isFade_(u8 param_1) {
+ return param_1 == 1 || param_1 == 3;
+ }
+
+ bool state_isFade_() const {
+ return state_isFade_(field_0x1b8);
+ }
+
+ void beginParticle_fadeIn_(u32 param_1) {
+ field_0x1c8 = param_1;
+ beginParticle_fadeIn_();
+ }
+
+ void beginParticle_() {
+ beginParticle_fadeIn_(0);
+ }
+
+ void endParticle_() {
+ if (pJPAEmitter_ != NULL) {
+ pJPAEmitter_->becomeInvalidEmitter();
+ }
+ }
+
+ void set_bPermit_onExit_notEnd_(bool param_1) { field_0x1b4 = param_1; }
+
+ /* 0x1A0 */ TCreateObject* pCreateObject_;
+ /* 0x1A4 */ JPABaseEmitter* pJPAEmitter_;
+ /* 0x1A8 */ TJPACallback_emitter_ field_0x1a8;
+ /* 0x1B4 */ u8 field_0x1b4;
+ /* 0x1B5 */ bool field_0x1b5;
+ /* 0x1B6 */ bool field_0x1b6;
+ /* 0x1B7 */ u8 field_0x1b7;
+ /* 0x1B8 */ u8 field_0x1b8;
+ /* 0x1BC */ u32 field_0x1bc;
+ /* 0x1C0 */ u32 u32FadeTime_end_;
+ /* 0x1C4 */ u32 u32FadeTime_current_;
+ /* 0x1C8 */ u32 field_0x1c8;
+ /* 0x1CC */ u32 field_0x1cc;
+ /* 0x1D0 */ JStage::TObject* field_0x1d0;
+ /* 0x1D4 */ u32 field_0x1d4;
+ /* 0x1D8 */ bool field_0x1d8;
+};
+
+} // namespace JStudio_JParticle
+
#endif /* OBJECT_PARTICLE_H */
diff --git a/libs/JSystem/src/JStudio/JStudio_JParticle/control.cpp b/libs/JSystem/src/JStudio/JStudio_JParticle/control.cpp
index 1f25f43f66..18f23973c6 100644
--- a/libs/JSystem/src/JStudio/JStudio_JParticle/control.cpp
+++ b/libs/JSystem/src/JStudio/JStudio_JParticle/control.cpp
@@ -4,9 +4,10 @@
#include "JSystem/JSystem.h" // IWYU pragma: keep
-#include "JSystem/JStudio/JStudio_JParticle/control.h"
-#include "JSystem/JParticle/JPAEmitterManager.h"
#include "JSystem/JGadget/pointer.h"
+#include "JSystem/JParticle/JPAEmitterManager.h"
+#include "JSystem/JStudio/JStudio_JParticle/control.h"
+#include "JSystem/JStudio/JStudio_JParticle/object-particle.h"
JStudio_JParticle::TCreateObject::~TCreateObject() {}
diff --git a/libs/JSystem/src/JStudio/JStudio_JParticle/object-particle.cpp b/libs/JSystem/src/JStudio/JStudio_JParticle/object-particle.cpp
index 0346ccd812..dfac0bf441 100644
--- a/libs/JSystem/src/JStudio/JStudio_JParticle/object-particle.cpp
+++ b/libs/JSystem/src/JStudio/JStudio_JParticle/object-particle.cpp
@@ -7,8 +7,36 @@
#include "JSystem/JStudio/JStudio_JParticle/object-particle.h"
#include "JSystem/JStudio/JStudio_JStage/control.h"
-JStudio_JParticle::TAdaptor_particle::TAdaptor_particle(
- JStudio_JParticle::TCreateObject* param_1) :
+namespace JStudio_JParticle {
+namespace {
+
+struct TJPAEmitter_stopDrawParticle_ {
+ TJPAEmitter_stopDrawParticle_(JPABaseEmitter* emitter) : pJPAEmitter_(emitter) {}
+ ~TJPAEmitter_stopDrawParticle_() {
+ if (pJPAEmitter_ != NULL) {
+ pJPAEmitter_->stopDrawParticle();
+ }
+ }
+ void set(JPABaseEmitter* emitter) { pJPAEmitter_ = emitter; }
+ /* 0x0 */ JPABaseEmitter* pJPAEmitter_;
+};
+
+class TToString_u32ID_ {
+public:
+ TToString_u32ID_() {}
+
+ const char* operator()(u32 param_1) {
+ snprintf(buf, sizeof(buf), "0x%08x", param_1);
+ return buf;
+ }
+
+private:
+ char buf[11];
+};
+
+} // anonymous namespace
+
+TAdaptor_particle::TAdaptor_particle(TCreateObject* param_1) :
pCreateObject_(param_1),
pJPAEmitter_(NULL),
field_0x1a8(this) {
@@ -18,8 +46,8 @@ JStudio_JParticle::TAdaptor_particle::TAdaptor_particle(
field_0x1b7 = 0;
field_0x1b8 = 0;
field_0x1bc = -1;
- u32FadeTime_end = 0;
- field_0x1c4 = 0;
+ u32FadeTime_end_ = 0;
+ u32FadeTime_current_ = 0;
field_0x1c8 = 0;
field_0x1cc = 0;
field_0x1d0 = NULL;
@@ -28,7 +56,7 @@ JStudio_JParticle::TAdaptor_particle::TAdaptor_particle(
JUT_ASSERT(90, pCreateObject_!=NULL);
}
-JStudio_JParticle::TAdaptor_particle::~TAdaptor_particle() {
+TAdaptor_particle::~TAdaptor_particle() {
if (pJPAEmitter_ != NULL) {
if (field_0x1b6 == 0) {
pCreateObject_->emitter_destroy(pJPAEmitter_);
@@ -36,48 +64,65 @@ JStudio_JParticle::TAdaptor_particle::~TAdaptor_particle() {
pJPAEmitter_->setEmitterCallBackPtr(field_0x1a8.getOld());
pJPAEmitter_->quitImmortalEmitter();
} else {
+ JGADGET_WARNMSG(116, "not permitted : not-end on exit\n demo-object : " << adaptor_getID_string());
pCreateObject_->emitter_destroy(pJPAEmitter_);
}
}
}
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_prepare() {
- static JStudio::TAdaptor::TSetVariableValue_immediate aoData[18] = {
- JStudio::TAdaptor::TSetVariableValue_immediate(0, 0.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(1, 0.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(2, 0.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(3, 0.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(4, 0.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(5, 0.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(6, 1.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(7, 1.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(8, 1.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(9, 255.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(10, 255.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(11, 255.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(12, 255.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(13, 255.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(14, 255.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(15, 255.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(16, 255.0f),
- JStudio::TAdaptor::TSetVariableValue_immediate(),
+void TAdaptor_particle::adaptor_do_prepare() {
+ static TSetVariableValue_immediate aoData[18] = {
+ TSetVariableValue_immediate(0, 0.0f),
+ TSetVariableValue_immediate(1, 0.0f),
+ TSetVariableValue_immediate(2, 0.0f),
+ TSetVariableValue_immediate(3, 0.0f),
+ TSetVariableValue_immediate(4, 0.0f),
+ TSetVariableValue_immediate(5, 0.0f),
+ TSetVariableValue_immediate(6, 1.0f),
+ TSetVariableValue_immediate(7, 1.0f),
+ TSetVariableValue_immediate(8, 1.0f),
+ TSetVariableValue_immediate(9, 255.0f),
+ TSetVariableValue_immediate(10, 255.0f),
+ TSetVariableValue_immediate(11, 255.0f),
+ TSetVariableValue_immediate(12, 255.0f),
+ TSetVariableValue_immediate(13, 255.0f),
+ TSetVariableValue_immediate(14, 255.0f),
+ TSetVariableValue_immediate(15, 255.0f),
+ TSetVariableValue_immediate(16, 255.0f),
+ TSetVariableValue_immediate(),
};
adaptor_setVariableValue_immediate(aoData);
}
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_end() {
+void TAdaptor_particle::adaptor_do_end() {
+#if DEBUG
+ if (field_0x1b8 == 0) {
+ JUT_ASSERT(160, pJPAEmitter_==NULL);
+ return;
+ }
+
+ JUT_ASSERT(163, pJPAEmitter_!=NULL);
+
+ if (!state_isFade_()) {
+ return;
+ }
+
+ JUT_ASSERT(166, u32FadeTime_current_<u32FadeTime_end_);
+
+ JGADGET_WARNMSG(169, "particle not finished : " << toString_state_(field_0x1b8) << "\n demo-object : " << adaptor_getID_string());
+#endif
}
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_update(u32 param_1) {
+void TAdaptor_particle::adaptor_do_update(u32 param_1) {
const JStudio::TObject* pObject = adaptor_getObject();
- JUT_ASSERT(179, pObject != NULL);
+ JUT_ASSERT(179, pObject!=NULL);
const JStudio::TControl* pControl = pObject->getControl();
- JUT_ASSERT(181, pControl != NULL);
- if (u32FadeTime_end != 0 && field_0x1c4 < u32FadeTime_end) {
+ JUT_ASSERT(181, pControl!=NULL);
+ if (u32FadeTime_end_ != 0 && u32FadeTime_current_ < u32FadeTime_end_) {
JUT_ASSERT(187, state_isFade_());
- JUT_ASSERT(188, pJPAEmitter_ != NULL);
- field_0x1c4 += param_1;
- if (field_0x1c4 >= u32FadeTime_end) {
+ JUT_ASSERT(188, pJPAEmitter_!=NULL);
+ u32FadeTime_current_ += param_1;
+ if (u32FadeTime_current_ >= u32FadeTime_end_) {
switch (field_0x1b8) {
case 1:
field_0x1b8 = 2;
@@ -87,9 +132,11 @@ void JStudio_JParticle::TAdaptor_particle::adaptor_do_update(u32 param_1) {
pJPAEmitter_ = NULL;
field_0x1b8 = 0;
break;
+ default:
+ JUT_ASSERT(203, false);
}
- u32FadeTime_end = 0;
- field_0x1c4 = 0;
+ u32FadeTime_end_ = 0;
+ u32FadeTime_current_ = 0;
}
} else {
JUT_ASSERT(210, !state_isFade_());
@@ -99,139 +146,206 @@ void JStudio_JParticle::TAdaptor_particle::adaptor_do_update(u32 param_1) {
}
}
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARTICLE(
+void TAdaptor_particle::adaptor_do_PARTICLE(
JStudio::data::TEOperationData param_1, const void* pContent, u32 uSize) {
- if (param_1 == JStudio::data::UNK_0x19) {
- JUT_ASSERT(232, uSize==4);
- JUT_ASSERT(233, pContent!=NULL);
- field_0x1bc = *(u32*)pContent;
+ switch (param_1) {
+ case JStudio::data::UNK_0x19: {
+ JUT_ASSERT(232, pContent!=NULL);
+ JUT_ASSERT(233, uSize==4);
+ u32 var_r29 = *(u32*)pContent;
+ field_0x1bc = var_r29;
+ break;
+ }
+ default:
+ JGADGET_WARNMSG(241, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
}
}
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_BEGIN(JStudio::data::TEOperationData param_1,
+void TAdaptor_particle::adaptor_do_BEGIN(JStudio::data::TEOperationData param_1,
const void* pContent, u32 uSize) {
switch (param_1) {
case JStudio::data::UNK_0x1:
JUT_ASSERT(253, uSize==0);
beginParticle_();
break;
+ default:
+ JGADGET_WARNMSG(259, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
}
}
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_BEGIN_FADE_IN(
+void TAdaptor_particle::adaptor_do_BEGIN_FADE_IN(
JStudio::data::TEOperationData param_1, const void* pContent, u32 uSize) {
switch (param_1) {
- case JStudio::data::UNK_0x2:
+ case JStudio::data::UNK_0x2: {
JUT_ASSERT(272, pContent!=NULL);
JUT_ASSERT(273, uSize==4);
- beginParticle_fadeIn_(*(f32*)pContent);
+ u32 var_r29 = *(f32*)pContent;
+ beginParticle_fadeIn_(var_r29);
break;
}
+ default:
+ JGADGET_WARNMSG(282, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
+ }
}
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_END(JStudio::data::TEOperationData param_1,
+void TAdaptor_particle::adaptor_do_END(JStudio::data::TEOperationData param_1,
const void* pContent, u32 uSize) {
- if (param_1 == JStudio::data::UNK_0x1) {
+ switch (param_1) {
+ case JStudio::data::UNK_0x1:
JUT_ASSERT(294, uSize==0);
endParticle_();
+ break;
+ default:
+ JGADGET_WARNMSG(300, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
}
}
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_END_FADE_OUT(
+void TAdaptor_particle::adaptor_do_END_FADE_OUT(
JStudio::data::TEOperationData param_1, const void* pContent, u32 uSize) {
switch (param_1) {
- case JStudio::data::UNK_0x2:
- JUT_ASSERT(336, pContent!=NULL);
- JUT_ASSERT(337, uSize==4);
- endParticle_fadeOut_(*(f32*)pContent);
+ case JStudio::data::UNK_0x2: {
+ JUT_ASSERT(313, pContent!=NULL);
+ JUT_ASSERT(314, uSize==4);
+ u32 var_r29 = *(f32*)pContent;
+ endParticle_fadeOut_(var_r29);
break;
}
+ default:
+ JGADGET_WARNMSG(323, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
+ }
}
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT(
+void TAdaptor_particle::adaptor_do_PARENT(
JStudio::data::TEOperationData param_1, const void* pContent, u32 uSize) {
switch (param_1) {
- case JStudio::data::UNK_0x18:
- JUT_ASSERT(313, pContent!=NULL);
- JUT_ASSERT(314, uSize==4);
+ case JStudio::data::UNK_0x18: {
+ JUT_ASSERT(336, pContent!=NULL);
+ JUT_ASSERT(337, uSize>0);
+
+ const char* szID = (const char*)pContent;
+ JGADGET_ASSERTWARN(339, szID[uSize-1]=='\0');
+
field_0x1d0 = NULL;
const JStage::TSystem* pJSGSystem = pCreateObject_->get_pJSGSystem_();
JUT_ASSERT(345, pJSGSystem!=NULL);
JStage::TObject* pJSGObject;
- if (pJSGSystem->JSGFindObject(&pJSGObject, (const char*)pContent, JStage::OBJECT_UNDEFINED) == 0) {
- JUT_ASSERT(354, pJSGObject!=NULL);
- field_0x1d0 = pJSGObject;
+ if (pJSGSystem->JSGFindObject(&pJSGObject, szID, JStage::OBJECT_UNDEFINED) != 0) {
+ JGADGET_WARNMSG(351, "object not found as parent : " << szID << "\n demo-object : " << adaptor_getID_string());
+ break;
}
+
+ JUT_ASSERT(354, pJSGObject!=NULL);
+ field_0x1d0 = pJSGObject;
break;
}
+ default:
+ JGADGET_WARNMSG(361, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
+ }
}
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_NODE(
+void TAdaptor_particle::adaptor_do_PARENT_NODE(
JStudio::data::TEOperationData param_1, const void* pContent, u32 uSize) {
switch (param_1) {
- case JStudio::data::UNK_0x18:
- if (field_0x1d0 != NULL) {
- JUT_ASSERT(380, pContent!=NULL);
- JUT_ASSERT(381, uSize==4);
- field_0x1d4 = field_0x1d0->JSGFindNodeID((const char*)pContent);
- if (field_0x1d4 == -1) {
- return;
- }
+ case JStudio::data::UNK_0x18: {
+ if (field_0x1d0 == NULL) {
+ JGADGET_WARNMSG(377, "object not specified as parent\n demo-object : " << adaptor_getID_string());
+ break;
}
- break;
+ JUT_ASSERT(380, pContent!=NULL);
+ JUT_ASSERT(381, uSize>0);
+ const char* szID = (const char*)pContent;
+ JGADGET_ASSERTWARN(383, szID[uSize-1]=='\0');
+ field_0x1d4 = field_0x1d0->JSGFindNodeID(szID);
+ if (field_0x1d4 != -1) {
+ return;
+ } else {
+ JGADGET_WARNMSG(388, "node not found about parent : " << szID << "\n demo-object : " << adaptor_getID_string());
+ return;
+ }
+ }
case JStudio::data::UNK_0x19:
- JUT_ASSERT(397, uSize==4);
- JUT_ASSERT(396, pContent!=NULL);
+ JUT_ASSERT(396, uSize==4);
+ JUT_ASSERT(397, pContent!=NULL);
field_0x1d4 = *(u32*)pContent;
break;
+ default:
+ JGADGET_WARNMSG(404, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
}
}
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_ENABLE(JStudio::data::TEOperationData param_1,
+const char* TAdaptor_particle::toString_state_(int param_1) {
+ static const char* const asz[] = {"none", "begin", "stable", "end"};
+ return JGadget::toStringFromIndex(param_1, asz, ARRAY_SIZE(asz), "(undefined)");
+}
+
+void TAdaptor_particle::adaptor_do_PARENT_ENABLE(JStudio::data::TEOperationData param_1,
const void* pContent, u32 uSize) {
- if (param_1 == JStudio::data::UNK_0x2) {
+ switch (param_1) {
+ case JStudio::data::UNK_0x2: {
JUT_ASSERT(417, uSize==4);
JUT_ASSERT(418, pContent!=NULL);
- field_0x1d8 = *(u32*)pContent ? 1 : 0;
+ u32 var_r29 = *(u32*)pContent;
+ field_0x1d8 = var_r29 != 0;
+ break;
+ }
+ default:
+ JGADGET_WARNMSG(426, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
}
}
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_FUNCTION(JStudio::data::TEOperationData param_1,
+void TAdaptor_particle::adaptor_do_PARENT_FUNCTION(JStudio::data::TEOperationData param_1,
const void* pContent, u32 uSize) {
- if (param_1 == JStudio::data::UNK_0x2) {
+ switch (param_1) {
+ case JStudio::data::UNK_0x2: {
JUT_ASSERT(439, uSize==4);
- JUT_ASSERT(439, pContent!=NULL);
- field_0x1cc = *(u32*)pContent;
+ JUT_ASSERT(440, pContent!=NULL);
+ u32 var_r29 = *(u32*)pContent;
+ field_0x1cc = var_r29;
+ break;
+ }
+ default:
+ JGADGET_WARNMSG(447, "unknown data-type : " << param_1);
}
}
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_REPEAT(JStudio::data::TEOperationData param_1,
+void TAdaptor_particle::adaptor_do_REPEAT(JStudio::data::TEOperationData param_1,
const void* pContent, u32 uSize) {
- if (param_1 == JStudio::data::UNK_0x2) {
+ switch (param_1) {
+ case JStudio::data::UNK_0x2: {
JUT_ASSERT(460, uSize==4);
JUT_ASSERT(461, pContent!=NULL);
- field_0x1b5 = *(u32*)pContent ? 1 : 0;
+ u32 var_r29 = *(u32*)pContent;
+ field_0x1b5 = var_r29 != 0;
+ break;
+ }
+ default:
+ JGADGET_WARNMSG(469, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
}
}
-void JStudio_JParticle::TAdaptor_particle::adaptor_do_ON_EXIT_NOT_END(JStudio::data::TEOperationData param_1,
+void TAdaptor_particle::adaptor_do_ON_EXIT_NOT_END(JStudio::data::TEOperationData param_1,
const void* pContent, u32 uSize) {
- if (param_1 == JStudio::data::UNK_0x2) {
- JUT_ASSERT(460, uSize==4);
- JUT_ASSERT(461, pContent!=NULL);
- field_0x1b6 = *(u32*)pContent ? 1 : 0;
+ switch (param_1) {
+ case JStudio::data::UNK_0x2: {
+ JUT_ASSERT(482, uSize==4);
+ JUT_ASSERT(483, pContent!=NULL);
+ u32 var_r29 = *(u32*)pContent;
+ field_0x1b6 = var_r29 != 0;
+ break;
+ }
+ default:
+ JGADGET_WARNMSG(491, "unknown data-type : " << param_1 << "\n demo-object : " << adaptor_getID_string());
}
}
-void
-JStudio_JParticle::TAdaptor_particle::TJPACallback_emitter_::execute(JPABaseEmitter* pJPAEmitter) {
+void TAdaptor_particle::TJPACallback_emitter_::execute(JPABaseEmitter* pJPAEmitter) {
JUT_ASSERT(518, pJPAEmitter==pThis_->pJPAEmitter_);
if (pJPAEmitter->isEnableDeleteEmitter()) {
pThis_->pCreateObject_->emitter_destroy(pJPAEmitter);
pThis_->pJPAEmitter_ = NULL;
pThis_->field_0x1b8 = 0;
- pThis_->u32FadeTime_end = 0;
- pThis_->field_0x1c4 = 0;
+ pThis_->u32FadeTime_end_ = 0;
+ pThis_->u32FadeTime_current_ = 0;
return;
}
const JStudio::TObject* pObject = pThis_->adaptor_getObject();
@@ -258,34 +372,45 @@ JStudio_JParticle::TAdaptor_particle::TJPACallback_emitter_::execute(JPABaseEmit
break;
case 1:
break;
+ default:
+ JUT_ASSERT(566, false);
}
pJPAEmitter->setGlobalTranslation(pVVar9->translation);
- int rotx = 65536.0 * (pVVar9->rotation.x / 360.0);
- int roty = 65536.0 * (pVVar9->rotation.y / 360.0);
- int rotz = 65536.0 * (pVVar9->rotation.z / 360.0);
- pJPAEmitter->setGlobalRotation(JGeometry::TVec3<s16>(rotx, roty, rotz));
+ pJPAEmitter->setGlobalRotation(JGeometry::TVec3<s16>(
+ 65536.0 * (pVVar9->rotation.x / 360.0),
+ 65536.0 * (pVVar9->rotation.y / 360.0),
+ 65536.0 * (pVVar9->rotation.z / 360.0)
+ ));
pJPAEmitter->setGlobalScale(pVVar9->scaling);
} else {
Mtx afStack_1f0;
if (JStudio_JStage::transform_toGlobalFromLocal(afStack_1f0, VStack_19c, pThis_->field_0x1d0,
pThis_->field_0x1d4) == 0)
{
+ JGADGET_WARNMSG(583, "can\'t transform about parent\n demo-object : " << pThis_->adaptor_getID_string());
return;
}
pJPAEmitter->setGlobalSRTMatrix(afStack_1f0);
}
+
f64 alpha = 1.0;
- u32 u32FadeTime_end = pThis_->u32FadeTime_end;
- f64 dVar16 = u32FadeTime_end;
- f64 dVar15 = pThis_->field_0x1c4;
- switch(pThis_->field_0x1b8) {
+ u32 u32FadeTime_end = pThis_->u32FadeTime_end_;
+ u32 u32FadeTime_current = pThis_->u32FadeTime_current_;
+ f64 var_f30 = u32FadeTime_end;
+ f64 var_f29 = u32FadeTime_current;
+ switch (pThis_->field_0x1b8) {
case 1:
JUT_ASSERT(606, u32FadeTime_end>0);
- alpha = dVar15 / dVar16;
+ alpha = var_f29 / var_f30;
+ break;
+ case 2:
break;
case 3:
JUT_ASSERT(611, u32FadeTime_end>0);
- alpha = (dVar16 - dVar15) / dVar16;
+ alpha = (var_f30 - var_f29) / var_f30;
+ break;
+ default:
+ JUT_ASSERT(619, false);
}
u8 globalAlpha = 255;
@@ -302,48 +427,53 @@ JStudio_JParticle::TAdaptor_particle::TJPACallback_emitter_::execute(JPABaseEmit
}
}
-void
-JStudio_JParticle::TAdaptor_particle::TJPACallback_emitter_::executeAfter(JPABaseEmitter* pJPAEmitter) {
+void TAdaptor_particle::TJPACallback_emitter_::executeAfter(JPABaseEmitter* pJPAEmitter) {
if (pOld != NULL) {
pOld->executeAfter(pJPAEmitter);
}
}
-void
-JStudio_JParticle::TAdaptor_particle::TJPACallback_emitter_::draw(JPABaseEmitter* pJPAEmitter) {
+void TAdaptor_particle::TJPACallback_emitter_::draw(JPABaseEmitter* pJPAEmitter) {
if (pOld != NULL) {
pOld->draw(pJPAEmitter);
}
}
-void
-JStudio_JParticle::TAdaptor_particle::TJPACallback_emitter_::drawAfter(JPABaseEmitter* pJPAEmitter) {
+void TAdaptor_particle::TJPACallback_emitter_::drawAfter(JPABaseEmitter* pJPAEmitter) {
if (pOld != NULL) {
pOld->drawAfter(pJPAEmitter);
}
}
-void JStudio_JParticle::TAdaptor_particle::beginParticle_fadeIn_() {
+void TAdaptor_particle::beginParticle_fadeIn_() {
if (pJPAEmitter_ != NULL) {
+ JGADGET_WARNMSG(686,
+ "past emitter already exist\n demo-object : " << adaptor_getID_string() <<
+ "\n begin prepare particle-ID : " << TToString_u32ID_()(field_0x1bc));
pCreateObject_->emitter_destroy(pJPAEmitter_);
}
JPABaseEmitter* pEmitter = pCreateObject_->emitter_create(field_0x1bc);
pJPAEmitter_ = pEmitter;
- if (pEmitter != NULL) {
- field_0x1a8.setOld(pEmitter->getEmitterCallBackPtr());
- pEmitter->setEmitterCallBackPtr(&field_0x1a8);
- pEmitter->becomeImmortalEmitter();
- field_0x1b7 = 1;
- field_0x1b8 = 1;
- if (field_0x1c8 == 0) {
- field_0x1b8 = 2;
- }
- u32FadeTime_end = field_0x1c8;
- field_0x1c4 = 0;
+ if (pEmitter == NULL) {
+ JGADGET_WARNMSG(696,
+ "can\'t create emitter : " << TToString_u32ID_()(field_0x1bc) <<
+ "\n demo-object : " << adaptor_getID_string());
+ return;
+ }
+
+ field_0x1a8.setOld(pEmitter->getEmitterCallBackPtr());
+ pEmitter->setEmitterCallBackPtr(&field_0x1a8);
+ pEmitter->becomeImmortalEmitter();
+ field_0x1b7 = 1;
+ field_0x1b8 = 1;
+ if (field_0x1c8 == 0) {
+ field_0x1b8 = 2;
}
+ u32FadeTime_end_ = field_0x1c8;
+ u32FadeTime_current_ = 0;
}
-void JStudio_JParticle::TAdaptor_particle::endParticle_fadeOut_(u32 param_1) {
+void TAdaptor_particle::endParticle_fadeOut_(u32 param_1) {
if (pJPAEmitter_ == NULL) {
return;
}
@@ -351,14 +481,15 @@ void JStudio_JParticle::TAdaptor_particle::endParticle_fadeOut_(u32 param_1) {
pCreateObject_->emitter_destroy(pJPAEmitter_);
pJPAEmitter_ = NULL;
field_0x1b8 = 0;
- u32FadeTime_end = 0;
- field_0x1c4 = 0;
+ u32FadeTime_end_ = 0;
+ u32FadeTime_current_ = 0;
return;
}
u8 eState_old = field_0x1b8 & 0xff;
field_0x1b8 = 3;
- if (field_0x1c4 == 0) {
- u32FadeTime_end = param_1;
+ if (u32FadeTime_current_ == 0) {
+ JUT_ASSERT(731, !state_isFade_(eState_old));
+ u32FadeTime_end_ = param_1;
return;
}
JUT_ASSERT(735, state_isFade_(eState_old));
@@ -366,13 +497,17 @@ void JStudio_JParticle::TAdaptor_particle::endParticle_fadeOut_(u32 param_1) {
switch(eState_old) {
case 1:
- u32Denominator = field_0x1c4;
+ u32Denominator = u32FadeTime_current_;
break;
case 3:
- u32Denominator = u32FadeTime_end - field_0x1c4;
+ u32Denominator = u32FadeTime_end_ - u32FadeTime_current_;
break;
+ default:
+ JUT_ASSERT(791, false);
}
JUT_ASSERT(793, u32Denominator!=0);
- u32FadeTime_end = ((f64)param_1 * (f64)u32FadeTime_end) / u32Denominator;
- field_0x1c4 = u32FadeTime_end - param_1;
+ u32FadeTime_end_ = ((f64)param_1 * (f64)u32FadeTime_end_) / u32Denominator;
+ u32FadeTime_current_ = u32FadeTime_end_ - param_1;
}
+
+} // namespace JStudio_JParticle