diff options
Diffstat (limited to 'include/JSystem/JStudio')
| -rw-r--r-- | include/JSystem/JStudio/JStudio/jstudio-control.h | 71 | ||||
| -rw-r--r-- | include/JSystem/JStudio/JStudio/jstudio-math.h | 4 | ||||
| -rw-r--r-- | include/JSystem/JStudio/JStudio/jstudio-object.h | 88 | ||||
| -rw-r--r-- | include/JSystem/JStudio/JStudio/object-id.h | 2 | ||||
| -rw-r--r-- | include/JSystem/JStudio/JStudio/stb-data-parse.h | 1 | ||||
| -rw-r--r-- | include/JSystem/JStudio/JStudio_JAudio2/control.h | 63 | ||||
| -rw-r--r-- | include/JSystem/JStudio/JStudio_JParticle/control.h | 91 | ||||
| -rw-r--r-- | include/JSystem/JStudio/JStudio_JStage/control.h | 39 |
8 files changed, 298 insertions, 61 deletions
diff --git a/include/JSystem/JStudio/JStudio/jstudio-control.h b/include/JSystem/JStudio/JStudio/jstudio-control.h index 0b98b548a7..600bbf9a9a 100644 --- a/include/JSystem/JStudio/JStudio/jstudio-control.h +++ b/include/JSystem/JStudio/JStudio/jstudio-control.h @@ -13,6 +13,16 @@ struct TCreateObject { /* 80285488 */ virtual ~TCreateObject() = 0; virtual bool create(TObject**, JStudio::stb::data::TParse_TBlock_object const&) = 0; + template<class AdaptorT> + static typename AdaptorT::ObjectType* createFromAdaptor(JStudio::stb::data::TParse_TBlock_object const& param_1, AdaptorT* param_2) { + typename AdaptorT::ObjectType* rv = new typename AdaptorT::ObjectType(param_1, param_2); + if (rv == NULL) { + return NULL; + } + rv->prepareAdaptor(); + return rv; + } + /* 0x4 */ JGadget::TLinkListNode mNode; }; // Size: 0xC @@ -31,8 +41,12 @@ struct TFactory : public stb::TFactory { class TControl : public stb::TControl { public: - struct TTransform_translation_rotation_scaling {}; - struct TTransform_position {}; + struct TTransform_translation_rotation_scaling { + Vec translation; + Vec rotation; + Vec scaling; + }; + struct TTransform_position : public Vec {}; /* 80285114 */ TControl(); /* 802851AC */ virtual ~TControl(); @@ -100,6 +114,59 @@ public: return obj->referFunctionValue(); } + bool transformOnSet_isEnabled() const { return mTransformOnSet; } + CMtxP transformOnSet_getMatrix() const { return mTransformOnSet_Matrix; } + + void transformOnSet_transformTranslation(const Vec& rSrc, Vec* pDst) const { + JUT_ASSERT(226, pDst!=0); + JUT_ASSERT(227, &rSrc!=pDst); + MTXMultVec(transformOnSet_getMatrix(), &rSrc, pDst); + } + + void transformOnSet_transformRotation(const Vec& rSrc, Vec* pDst) const { + JUT_ASSERT(232, pDst!=0); + JUT_ASSERT(233, &rSrc!=pDst); + pDst->x = rSrc.x; + pDst->y = rSrc.y + mTransformOnSet_RotationY; + pDst->z = rSrc.z; + } + + void transformOnSet_transformScaling(const Vec& rSrc, Vec* pDst) const { + JUT_ASSERT(240, pDst!=0); + JUT_ASSERT(241, &rSrc!=pDst); + *pDst = rSrc; + } + + void transformOnSet_transform(TTransform_position* param_1, TTransform_position* param_2) const { + transformOnSet_transformTranslation(*param_1, param_2); + } + + void transformOnSet_transform(TTransform_translation_rotation_scaling* param_1, + TTransform_translation_rotation_scaling* param_2) const { + transformOnSet_transformTranslation(param_1->translation, ¶m_2->translation); + transformOnSet_transformRotation(param_1->rotation, ¶m_2->rotation); + transformOnSet_transformScaling(param_1->scaling, ¶m_2->scaling); + } + + TTransform_position* transformOnSet_transform_ifEnabled(TTransform_position* param_1, + TTransform_position* param_2) const { + if (!transformOnSet_isEnabled()) { + return param_1; + } + transformOnSet_transform(param_1, param_2); + return param_2; + } + + TTransform_translation_rotation_scaling* + transformOnSet_transform_ifEnabled(TTransform_translation_rotation_scaling* param_1, + TTransform_translation_rotation_scaling* param_2) const { + if (!transformOnSet_isEnabled()) { + return param_1; + } + transformOnSet_transform(param_1, param_2); + return param_2; + } + /* 0x58 */ f64 mSecondPerFrame; /* 0x60 */ fvb::TControl fvb_Control; /* 0x74 */ ctb::TControl ctb_Control; diff --git a/include/JSystem/JStudio/JStudio/jstudio-math.h b/include/JSystem/JStudio/JStudio/jstudio-math.h index c28ade8073..c02f19f37d 100644 --- a/include/JSystem/JStudio/JStudio/jstudio-math.h +++ b/include/JSystem/JStudio/JStudio/jstudio-math.h @@ -55,6 +55,10 @@ namespace math { param_2->y = param_1[1][3]; param_2->z = param_1[2][3]; } + + inline void getTransformation_T(Mtx mtx, const Vec* param_2) { + MTXTrans(mtx, param_2->x, param_2->y, param_2->z); + } }; }; // namespace JStudio diff --git a/include/JSystem/JStudio/JStudio/jstudio-object.h b/include/JSystem/JStudio/JStudio/jstudio-object.h index c4929f48ef..97a4c23b4b 100644 --- a/include/JSystem/JStudio/JStudio/jstudio-object.h +++ b/include/JSystem/JStudio/JStudio/jstudio-object.h @@ -3,6 +3,7 @@ #include "JSystem/JStudio/JStudio/jstudio-control.h" #include "limits.h" +#include "math.h" typedef struct _GXColor GXColor; @@ -14,6 +15,7 @@ namespace data { UNK_0x3 = 0x3, UNK_0x10 = 0x10, UNK_0x12 = 0x12, + UNK_0x18 = 0x18, UNK_0x19 = 0x19, }; }; @@ -80,6 +82,10 @@ struct TVariableValue { } } + void setOutput(TOutput* param_1) { + pOutput_ = (param_1 != NULL) ? param_1 : (TOutput*)soOutput_none_; + } + static u8 soOutput_none_[4 + 4 /* padding */]; /* 0x00 */ f32 mValue; @@ -107,14 +113,9 @@ public: /* 8028682C */ virtual void do_data(void const*, u32, void const*, u32); TAdaptor* getAdaptor() { return mpAdaptor; } - TControl* getControl() { return (TControl*)stb::TObject::getControl(); } + TControl* getControl() const { return (TControl*)stb::TObject::getControl(); } - void prepareAdaptor() { - if (mpAdaptor != NULL) { - // mpAdaptor->adaptor_setObject_(this); - // mpAdaptor->adaptor_do_begin(); - } - } + inline void prepareAdaptor(); template<class T> T* createFromAdaptor(const stb::data::TParse_TBlock_object& param_0, T* param_1) { @@ -134,10 +135,18 @@ public: struct TAdaptor { struct TSetVariableValue_immediate { + TSetVariableValue_immediate() : field_0x0(-1), field_0x4(NAN) {} + TSetVariableValue_immediate(u32 param_1, f32 param_2) : + field_0x0(param_1), field_0x4(param_2) {} u32 field_0x0; f32 field_0x4; }; typedef void (*setVarFunc)(JStudio::TAdaptor*, JStudio::TControl*, u32, void const*, u32); + TAdaptor(TVariableValue *param_1, u32 param_2) { + pObject_ = NULL; + pValue_ = param_1; + u = param_2; + } /* 80285FD0 */ virtual ~TAdaptor() = 0; /* 80286018 */ virtual void adaptor_do_prepare(); /* 8028601C */ virtual void adaptor_do_begin(); @@ -184,19 +193,29 @@ struct TAdaptor { return &pValue_[param_0]; } + const TObject* adaptor_getObject() { return pObject_; } + /* 0x4 */ const TObject* pObject_; /* 0x8 */ TVariableValue* pValue_; /* 0xC */ u32 u; }; +inline void TObject::prepareAdaptor() { + if (mpAdaptor != NULL) { + mpAdaptor->adaptor_setObject_(this); + mpAdaptor->adaptor_do_prepare(); + } +} + struct TAdaptor_actor : public TAdaptor { + TAdaptor_actor() : TAdaptor(mValue, 14) {} /* 802868B0 */ virtual ~TAdaptor_actor() = 0; /* 0x10 */ TVariableValue mValue[14]; - static u8 const sauVariableValue_3_TRANSLATION_XYZ[12]; - static u8 const sauVariableValue_3_ROTATION_XYZ[12]; - static u8 const sauVariableValue_3_SCALING_XYZ[12]; + static u32 const sauVariableValue_3_TRANSLATION_XYZ[3]; + static u32 const sauVariableValue_3_ROTATION_XYZ[3]; + static u32 const sauVariableValue_3_SCALING_XYZ[3]; }; // Size: 0x128 struct TObject_actor : public TObject { @@ -208,12 +227,13 @@ struct TObject_actor : public TObject { }; struct TAdaptor_ambientLight : public TAdaptor { + TAdaptor_ambientLight() : TAdaptor(mValue, 4) {} /* 80286C9C */ virtual ~TAdaptor_ambientLight() = 0; /* 0x10 */ TVariableValue mValue[4]; - static u8 const sauVariableValue_3_COLOR_RGB[12]; - static u8 const sauVariableValue_4_COLOR_RGBA[16]; + static u32 const sauVariableValue_3_COLOR_RGB[3]; + static u32 const sauVariableValue_4_COLOR_RGBA[4]; }; struct TObject_ambientLight : public TObject { @@ -225,13 +245,14 @@ struct TObject_ambientLight : public TObject { }; struct TAdaptor_camera : public TAdaptor { + TAdaptor_camera() : TAdaptor(mValue, 12) {} /* 80286E1C */ virtual ~TAdaptor_camera() = 0; /* 0x10 */ TVariableValue mValue[12]; - static u8 const sauVariableValue_3_POSITION_XYZ[12]; - static u8 const sauVariableValue_3_TARGET_POSITION_XYZ[12]; - static u8 sauVariableValue_2_DISTANCE_NEAR_FAR[8]; + static u32 const sauVariableValue_3_POSITION_XYZ[3]; + static u32 const sauVariableValue_3_TARGET_POSITION_XYZ[3]; + static u32 sauVariableValue_2_DISTANCE_NEAR_FAR[2]; }; struct TObject_camera : public TObject { @@ -243,13 +264,14 @@ struct TObject_camera : public TObject { }; struct TAdaptor_fog : public TAdaptor { + TAdaptor_fog() : TAdaptor(mValue, 6) {} /* 8028717C */ virtual ~TAdaptor_fog() = 0; /* 0x10 */ TVariableValue mValue[6]; - static u8 const sauVariableValue_3_COLOR_RGB[12]; - static u8 const sauVariableValue_4_COLOR_RGBA[16]; - static u8 sauVariableValue_2_RANGE_BEGIN_END[8]; + static u32 const sauVariableValue_3_COLOR_RGB[3]; + static u32 const sauVariableValue_4_COLOR_RGBA[4]; + static u32 sauVariableValue_2_RANGE_BEGIN_END[2]; }; struct TObject_fog : public TObject { @@ -261,15 +283,16 @@ struct TObject_fog : public TObject { }; struct TAdaptor_light : public TAdaptor { + TAdaptor_light() : TAdaptor(mValue, 13) {} /* 80287308 */ virtual ~TAdaptor_light() = 0; /* 0x10 */ TVariableValue mValue[13]; - static u8 const sauVariableValue_3_COLOR_RGB[12]; - static u8 const sauVariableValue_4_COLOR_RGBA[16]; - static u8 const sauVariableValue_3_POSITION_XYZ[12]; - static u8 const sauVariableValue_3_TARGET_POSITION_XYZ[12]; - static u8 sauVariableValue_2_DIRECTION_THETA_PHI[8]; + static u32 const sauVariableValue_3_COLOR_RGB[3]; + static u32 const sauVariableValue_4_COLOR_RGBA[4]; + static u32 const sauVariableValue_3_POSITION_XYZ[3]; + static u32 const sauVariableValue_3_TARGET_POSITION_XYZ[3]; + static u32 sauVariableValue_2_DIRECTION_THETA_PHI[2]; }; struct TObject_light : public TObject { @@ -281,6 +304,7 @@ struct TObject_light : public TObject { }; struct TAdaptor_message : public TAdaptor { + TAdaptor_message() : TAdaptor(NULL, 0) {} /* 802875E0 */ virtual ~TAdaptor_message() = 0; }; @@ -293,17 +317,18 @@ struct TObject_message : public TObject { }; struct TAdaptor_particle : public TAdaptor { + TAdaptor_particle() : TAdaptor(mValue, 20) {} /* 8028770C */ virtual ~TAdaptor_particle() = 0; /* 0x10 */ TVariableValue mValue[20]; - static u8 const sauVariableValue_3_TRANSLATION_XYZ[12]; - static u8 const sauVariableValue_3_ROTATION_XYZ[12]; - static u8 const sauVariableValue_3_SCALING_XYZ[12]; - static u8 const sauVariableValue_3_COLOR_RGB[12]; - static u8 const sauVariableValue_4_COLOR_RGBA[16]; - static u8 const sauVariableValue_3_COLOR1_RGB[12]; - static u8 const sauVariableValue_4_COLOR1_RGBA[16]; + static u32 const sauVariableValue_3_TRANSLATION_XYZ[3]; + static u32 const sauVariableValue_3_ROTATION_XYZ[3]; + static u32 const sauVariableValue_3_SCALING_XYZ[3]; + static u32 const sauVariableValue_3_COLOR_RGB[3]; + static u32 const sauVariableValue_4_COLOR_RGBA[4]; + static u32 const sauVariableValue_3_COLOR1_RGB[3]; + static u32 const sauVariableValue_4_COLOR1_RGBA[4]; }; struct TObject_particle : public TObject { @@ -315,11 +340,12 @@ struct TObject_particle : public TObject { }; struct TAdaptor_sound : public TAdaptor { + TAdaptor_sound() : TAdaptor(mValue, 13) {} /* 80287B3C */ virtual ~TAdaptor_sound() = 0; /* 0x10 */ TVariableValue mValue[13]; - static u8 const sauVariableValue_3_POSITION_XYZ[12]; + static u32 const sauVariableValue_3_POSITION_XYZ[3]; }; // Size: 0x114 struct TObject_sound : public TObject { diff --git a/include/JSystem/JStudio/JStudio/object-id.h b/include/JSystem/JStudio/JStudio/object-id.h index 87ca81d26b..81365c88a2 100644 --- a/include/JSystem/JStudio/JStudio/object-id.h +++ b/include/JSystem/JStudio/JStudio/object-id.h @@ -11,7 +11,7 @@ struct TIDData { public: TIDData(const void* id, u32 id_size) : mID(id), mID_size(id_size) {} - /* 80288988 */ bool isEqual(JStudio::object::TIDData const&, JStudio::object::TIDData const&); + /* 80288988 */ static bool isEqual(JStudio::object::TIDData const&, JStudio::object::TIDData const&); inline const void* getID() const { return mID; } inline u32 getIDSize() const { return mID_size; } diff --git a/include/JSystem/JStudio/JStudio/stb-data-parse.h b/include/JSystem/JStudio/JStudio/stb-data-parse.h index 1c7a42b48a..f8c5bd470f 100644 --- a/include/JSystem/JStudio/JStudio/stb-data-parse.h +++ b/include/JSystem/JStudio/JStudio/stb-data-parse.h @@ -90,6 +90,7 @@ public: u16 get_flag() const { return get()->flag; } u16 get_IDSize() const { return get()->id_size; } + u32 get_type() const { return get()->type; } const void* get_ID() const { return get()->id; } }; diff --git a/include/JSystem/JStudio/JStudio_JAudio2/control.h b/include/JSystem/JStudio/JStudio_JAudio2/control.h index 289dba80fd..3996d59273 100644 --- a/include/JSystem/JStudio/JStudio_JAudio2/control.h +++ b/include/JSystem/JStudio/JStudio_JAudio2/control.h @@ -8,6 +8,9 @@ namespace JStudio_JAudio2 { struct TCreateObject : public JStudio::TCreateObject { + typedef JStudio::TObject* (*CreateFunc)(JStudio::stb::data::TParse_TBlock_object const&, + JStudio_JAudio2::TCreateObject*); + TCreateObject(JAISoundStarter* p_soundStarter, const JStage::TSystem* p_system) { pJAISoundStarter_ = p_soundStarter; pJSGSystem_ = p_system; @@ -17,8 +20,12 @@ struct TCreateObject : public JStudio::TCreateObject { /* 8028D550 */ virtual ~TCreateObject(); /* 8028D5B0 */ virtual bool create(JStudio::TObject**, JStudio::stb::data::TParse_TBlock_object const&); - /* 8028D624 */ void createObject_JAI_SOUND_(JStudio::stb::data::TParse_TBlock_object const&, - JStudio_JAudio2::TCreateObject*); + /* 8028D624 */ static JStudio::TObject* + createObject_JAI_SOUND_(JStudio::stb::data::TParse_TBlock_object const&, + JStudio_JAudio2::TCreateObject*); + JAISoundStarter* get_pJAISoundStarter_() { return pJAISoundStarter_; } + const JStage::TSystem* get_pJSGSystem_() { return pJSGSystem_; } + bool isPermit_onExit_notEnd() { return mPermit_onExit_notEnd; } /* 0x0C */ JAISoundStarter* pJAISoundStarter_; /* 0x10 */ const JStage::TSystem* pJSGSystem_; @@ -26,9 +33,26 @@ struct TCreateObject : public JStudio::TCreateObject { }; struct TAdaptor_sound : public JStudio::TAdaptor_sound { - struct TVVOSetValue_ { - /* 8028DECC */ void operator()(f32, JStudio::TAdaptor*) const; - /* 8028E094 */ ~TVVOSetValue_(); + typedef void (*TVVOSoundSetFunc)(JAISound*, f32); + typedef JStudio::TObject_sound ObjectType; + + enum TEVariableValue { + UNK_7 = 7, + UNK_8 = 8, + UNK_9 = 9, + UNK_10 = 10, + UNK_11 = 11, + UNK_NONE = -1, + }; + + struct TVVOSetValue_ : public JStudio::TVariableValue::TOutput { + TVVOSetValue_(TEVariableValue param_1, TVVOSoundSetFunc param_2) + : field_0x04(param_1), field_0x08(param_2) {} + /* 8028DECC */ virtual void operator()(f32, JStudio::TAdaptor*) const; + /* 8028E094 */ virtual ~TVVOSetValue_() {} + + /* 0x04 */ TEVariableValue field_0x04; + /* 0x08 */ TVVOSoundSetFunc field_0x08; }; /* 8028D828 */ TAdaptor_sound(JStudio_JAudio2::TCreateObject*); @@ -58,20 +82,43 @@ struct TAdaptor_sound : public JStudio::TAdaptor_sound { /* 8028DEB0 */ virtual void adaptor_do_ON_EXIT_NOT_END(JStudio::data::TEOperationData, void const*, u32); + void beginSound_fadeIn_(u32 param_1) { + field_0x128 = param_1; + beginSound_fadeIn_(); + } + + void beginSound_() { + beginSound_fadeIn_(0); + } + + void endSound_() { + endSound_fadeOut_(0); + } + + void opJAISoundHandle_stop_() { + opJAISoundHandle_->stop(); + } + + void set_bPermit_onExit_notEnd_(bool param_1) { field_0x11c = param_1; } + + #ifndef NONMATCHING + static TVVOSetValue_ saoVVOSetValue_[6]; + #else static u8 saoVVOSetValue_[72]; + #endif /* 0x114 */ TCreateObject* pCreateObject_; /* 0x118 */ JAISoundHandle opJAISoundHandle_; - /* 0x11C */ u8 field_0x11c; + /* 0x11C */ bool field_0x11c; /* 0x11D */ u8 field_0x11d; /* 0x11E */ u8 field_0x11e; /* 0x11F */ u8 field_0x11f; /* 0x120 */ u8 field_0x120; /* 0x124 */ u32 field_0x124; /* 0x128 */ u32 field_0x128; - /* 0x12C */ u32 field_0x12c; + /* 0x12C */ JGeometry::TVec3<f32>* field_0x12c; /* 0x130 */ JGeometry::TVec3<f32> field_0x130; - /* 0x13C */ u32 field_0x13c; + /* 0x13C */ JStage::TObject* field_0x13c; /* 0x140 */ u32 field_0x140; /* 0x144 */ u8 field_0x144; }; diff --git a/include/JSystem/JStudio/JStudio_JParticle/control.h b/include/JSystem/JStudio/JStudio_JParticle/control.h index 0b9e4d9cf6..44e1ca6597 100644 --- a/include/JSystem/JStudio/JStudio_JParticle/control.h +++ b/include/JSystem/JStudio/JStudio_JParticle/control.h @@ -2,11 +2,14 @@ #define JSTUDIO_JPARTICLE_CONTROL_H #include "JSystem/JParticle/JPAParticle.h" +#include "JSystem/JParticle/JPAEmitter.h" #include "JSystem/JStage/JSGSystem.h" #include "JSystem/JStudio/JStudio/jstudio-object.h" namespace JStudio_JParticle { struct TCreateObject : public JStudio::TCreateObject { + typedef JStudio::TObject* (*CreateFunc)(JStudio::stb::data::TParse_TBlock_object const&, + JStudio_JParticle::TCreateObject*); TCreateObject(JPAEmitterManager* p_emitMgr, const JStage::TSystem* p_system) { pJPAEmitterManager_ = p_emitMgr; pJSGSystem_ = p_system; @@ -16,24 +19,52 @@ struct TCreateObject : public JStudio::TCreateObject { /* 8028E3A0 */ virtual ~TCreateObject(); /* 8028E400 */ virtual bool create(JStudio::TObject**, JStudio::stb::data::TParse_TBlock_object const&); - /* 8028E474 */ virtual void emitter_create(u32); + /* 8028E474 */ virtual JPABaseEmitter* emitter_create(u32); /* 8028E4E4 */ virtual void emitter_destroy(JPABaseEmitter*); - /* 8028E508 */ void createObject_JPA_PARTICLE_(JStudio::stb::data::TParse_TBlock_object const&, - JStudio_JParticle::TCreateObject*); + /* 8028E508 */ static JStudio::TObject* + createObject_JPA_PARTICLE_(JStudio::stb::data::TParse_TBlock_object const&, + JStudio_JParticle::TCreateObject*); + const JStage::TSystem* get_pJSGSystem_() { return pJSGSystem_; } + bool isPermit_onExit_notEnd() { return mPermit_onExit_notEnd; } + /* 0x0C */ JPAEmitterManager* pJPAEmitterManager_; /* 0x10 */ const JStage::TSystem* pJSGSystem_; /* 0x14 */ bool mPermit_onExit_notEnd; }; struct TAdaptor_particle : public JStudio::TAdaptor_particle { - struct TJPACallback_emitter_ { - /* 8028E700 */ ~TJPACallback_emitter_(); - /* 8028ECC0 */ void execute(JPABaseEmitter*); - /* 8028F060 */ void executeAfter(JPABaseEmitter*); - /* 8028F098 */ void draw(JPABaseEmitter*); - /* 8028F0D0 */ void drawAfter(JPABaseEmitter*); + 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_!=0); + } + /* 8028E700 */ virtual ~TJPACallback_emitter_() {} + /* 8028ECC0 */ virtual void execute(JPABaseEmitter*); + /* 8028F060 */ virtual void executeAfter(JPABaseEmitter*); + /* 8028F098 */ virtual void draw(JPABaseEmitter*); + /* 8028F0D0 */ 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_; }; /* 8028E60C */ TAdaptor_particle(JStudio_JParticle::TCreateObject*); @@ -61,6 +92,48 @@ struct TAdaptor_particle : public JStudio::TAdaptor_particle { /* 8028EC88 */ virtual void adaptor_do_REPEAT(JStudio::data::TEOperationData, void const*, u32); /* 8028ECA4 */ 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 diff --git a/include/JSystem/JStudio/JStudio_JStage/control.h b/include/JSystem/JStudio/JStudio_JStage/control.h index 0adc2f744c..f188803787 100644 --- a/include/JSystem/JStudio/JStudio_JStage/control.h +++ b/include/JSystem/JStudio/JStudio_JStage/control.h @@ -8,6 +8,7 @@ #include "JSystem/JStage/JSGLight.h" #include "JSystem/JStage/JSGSystem.h" #include "JSystem/JStudio/JStudio/jstudio-object.h" +#include "JSystem/JStudio/JStudio/jstudio-math.h" namespace JStudio_JStage { struct TCreateObject : public JStudio::TCreateObject { @@ -23,14 +24,18 @@ struct TCreateObject : public JStudio::TCreateObject { }; struct TAdaptor_object_ { + TAdaptor_object_(JStage::TSystem const*param_2, JStage::TObject *param_3) : + pJSGSystem_(param_2), pJSGObject_(param_3) {} /* 8028A470 */ void adaptor_object_data_(void const*, u32, void const*, u32); - /* 8028A4BC */ void adaptor_object_findJSGObject_(char const*); - /* 8028A50C */ void adaptor_object_findJSGObjectNode_(JStage::TObject const*, char const*); + /* 8028A4BC */ JStage::TObject* adaptor_object_findJSGObject_(char const*); + /* 8028A50C */ s32 adaptor_object_findJSGObjectNode_(JStage::TObject const*, char const*); /* 8028A550 */ void adaptor_object_ENABLE_(JStudio::data::TEOperationData, void const*, u32); - /* 0x0 */ JStudio::TAdaptor* field_0x0; - /* 0x4 */ JStage::TSystem* pJSGSystem_; - /* 0x8 */ JStage::TObject* pJSGObject_; + void adaptor_object_begin_() { pJSGObject_->JSGFEnableFlag(1); } + void adaptor_object_end_() { pJSGObject_->JSGFDisableFlag(1); } + + /* 0x0 */ JStage::TSystem const* pJSGSystem_; + /* 0x4 */ JStage::TObject* pJSGObject_; }; struct TAdaptor_actor : public JStudio::TAdaptor_actor, public JStudio_JStage::TAdaptor_object_ { @@ -86,7 +91,7 @@ struct TAdaptor_actor : public JStudio::TAdaptor_actor, public JStudio_JStage::T /* 0x150 */ u32 field_0x150; }; -struct TAdaptor_ambientLight : public JStudio::TAdaptor_ambientLight { +struct TAdaptor_ambientLight : public JStudio::TAdaptor_ambientLight, public TAdaptor_object_ { /* 8028B610 */ TAdaptor_ambientLight(JStage::TSystem const*, JStage::TAmbientLight*); /* 8028B6AC */ virtual ~TAdaptor_ambientLight(); @@ -95,6 +100,8 @@ struct TAdaptor_ambientLight : public JStudio::TAdaptor_ambientLight { /* 8028B7B0 */ virtual void adaptor_do_end(); /* 8028B804 */ virtual void adaptor_do_update(u32); /* 8028B87C */ virtual void adaptor_do_data(void const*, u32, void const*, u32); + + JStage::TObject* get_pJSG_() { return pJSGObject_; } }; struct TAdaptor_camera : public JStudio::TAdaptor_camera { @@ -155,18 +162,30 @@ struct TAdaptor_light : public JStudio::TAdaptor_light { static u8 saoVVOutput_direction_[72]; }; -/* 8028A1F8 */ void +/* 8028A1F8 */ bool transform_toGlobalFromLocal(f32 (*)[4], JStudio::TControl::TTransform_translation_rotation_scaling const&, JStage::TObject const*, u32); -/* 8028A290 */ void transform_toGlobalFromLocal(f32 (*)[4], +/* 8028A290 */ bool transform_toGlobalFromLocal(f32 (*)[4], JStudio::TControl::TTransform_position const&, JStage::TObject const*, u32); -/* 8028A328 */ void + +inline bool transform_toGlobalFromLocal(JStudio::TControl::TTransform_position* param_1, + JStudio::TControl::TTransform_position const& param_2, + JStage::TObject const* param_3, u32 param_4) { + Mtx afStack_38; + + if (!transform_toGlobalFromLocal(afStack_38, param_2, param_3, param_4)) { + return false; + } + JStudio::math::getFromTransformation_T(afStack_38, param_1); + return true; +} +/* 8028A328 */ bool transform_toLocalFromGlobal(f32 (*)[4], JStudio::TControl::TTransform_translation_rotation_scaling const&, JStage::TObject const*, u32); -/* 8028A3CC */ void transform_toLocalFromGlobal(f32 (*)[4], +/* 8028A3CC */ bool transform_toLocalFromGlobal(f32 (*)[4], JStudio::TControl::TTransform_position const&, JStage::TObject const*, u32); }; // namespace JStudio_JStage |
