summaryrefslogtreecommitdiff
path: root/include/JSystem/JStudio
diff options
context:
space:
mode:
Diffstat (limited to 'include/JSystem/JStudio')
-rw-r--r--include/JSystem/JStudio/JStudio/jstudio-control.h71
-rw-r--r--include/JSystem/JStudio/JStudio/jstudio-math.h4
-rw-r--r--include/JSystem/JStudio/JStudio/jstudio-object.h88
-rw-r--r--include/JSystem/JStudio/JStudio/object-id.h2
-rw-r--r--include/JSystem/JStudio/JStudio/stb-data-parse.h1
-rw-r--r--include/JSystem/JStudio/JStudio_JAudio2/control.h63
-rw-r--r--include/JSystem/JStudio/JStudio_JParticle/control.h91
-rw-r--r--include/JSystem/JStudio/JStudio_JStage/control.h39
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, &param_2->translation);
+ transformOnSet_transformRotation(param_1->rotation, &param_2->rotation);
+ transformOnSet_transformScaling(param_1->scaling, &param_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