jstudio particle and sound OK (#2194)

* Work on object-sound

* object-particle OK

* object-sound OK

* JStudio_JAudio2 control OK

* JStudio_JParticle control OK

* JStage object OK

* JStage ambient light OK
This commit is contained in:
hatal175
2024-08-22 23:17:24 +03:00
committed by GitHub
parent 18f4489dd6
commit d3420ffe8d
101 changed files with 1200 additions and 3978 deletions
+3 -3
View File
@@ -128,10 +128,10 @@ struct JAISoundFader {
}
}
void fadeIn(u32 param_1) {
if (param_1 == 0) {
forceIn();
} else {
if (param_1 != 0) {
mTransition.set(1.0f, mIntensity, param_1);
} else {
forceIn();
}
}
void fadeInFromOut(u32 param_1) {
+25
View File
@@ -0,0 +1,25 @@
#ifndef POINTER_H
#define POINTER_H
namespace JGadget {
template<class T>
class TPointer {
public:
TPointer(T* ptr) : mPtr(ptr) {}
void set(T* ptr) { mPtr = ptr; }
T* mPtr;
};
template<class T>
class TPointer_delete : public TPointer<T> {
public:
TPointer_delete(T* ptr) : TPointer(ptr) {}
~TPointer_delete() {
delete mPtr;
}
};
}
#endif
+2 -1
View File
@@ -67,12 +67,13 @@ struct JPAEmitterWorkData {
*/
class JPAEmitterCallBack {
public:
virtual ~JPAEmitterCallBack() = 0;
/* 80050368 */ virtual void execute(JPABaseEmitter*);
/* 80050374 */ virtual void executeAfter(JPABaseEmitter*);
/* 8005036C */ virtual void draw(JPABaseEmitter*);
/* 80050370 */ virtual void drawAfter(JPABaseEmitter*);
/* 8027E6A4 */ ~JPAEmitterCallBack();
/* 8027E6A4 */ //~JPAEmitterCallBack();
};
enum {
+10 -2
View File
@@ -14,7 +14,7 @@ namespace JStage {
virtual s32 JSGFGetType() const = 0;
/* 80280E1C */ virtual bool JSGGetName() const;
/* 80280E24 */ virtual void JSGUpdate();
/* 80280E28 */ virtual bool JSGGetFlag() const;
/* 80280E28 */ virtual u32 JSGGetFlag() const;
/* 80280E30 */ virtual void JSGSetFlag(u32);
/* 80280E34 */ virtual bool JSGGetData(u32, void*, u32) const;
/* 80280E3C */ virtual void JSGSetData(u32, void const*, u32);
@@ -22,7 +22,15 @@ namespace JStage {
/* 80280E44 */ virtual void JSGSetParent(JStage::TObject*, u32);
/* 80280E48 */ virtual void JSGSetRelation(bool, JStage::TObject*, u32);
/* 80280E4C */ virtual s32 JSGFindNodeID(char const*) const;
/* 80280E54 */ virtual int JSGGetNodeTransformation(u32, f32 (*)[4]) const;
/* 80280E54 */ virtual bool JSGGetNodeTransformation(u32, f32 (*)[4]) const;
void JSGFEnableFlag(u32 flag) {
JSGSetFlag(JSGGetFlag() | flag);
}
void JSGFDisableFlag(u32 flag) {
JSGSetFlag(JSGGetFlag() & ~flag);
}
};
};
+1 -1
View File
@@ -21,7 +21,7 @@ namespace JStage {
struct TSystem : public TObject {
/* 80280E90 */ virtual ~TSystem() = 0;
/* 80280EF0 */ virtual s32 JSGFGetType() const;
/* 80280EF8 */ virtual bool JSGFindObject(JStage::TObject**, char const*, JStage::TEObject) const;
/* 80280EF8 */ virtual int JSGFindObject(JStage::TObject**, char const*, JStage::TEObject) const;
/* 80280F00 */ virtual bool JSGCreateObject(char const*, JStage::TEObject, u32);
/* 80280F08 */ virtual void JSGDestroyObject(JStage::TObject*);
/* 80280F0C */ virtual bool JSGGetSystemData(u32);
@@ -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;
@@ -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
@@ -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 {
+1 -1
View File
@@ -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; }
@@ -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; }
};
@@ -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;
};
@@ -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
@@ -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
+1 -1
View File
@@ -58,7 +58,7 @@ public:
/* 80038098 */ virtual ~dDemo_actor_c();
/* 800387EC */ virtual void JSGSetData(u32, void const*, u32);
/* 8003A05C */ virtual s32 JSGFindNodeID(char const*) const;
/* 8003A088 */ virtual int JSGGetNodeTransformation(u32, f32 (*)[4]) const;
/* 8003A088 */ virtual bool JSGGetNodeTransformation(u32, f32 (*)[4]) const;
/* 8003A0D8 */ virtual void JSGGetTranslation(Vec*) const;
/* 80038920 */ virtual void JSGSetTranslation(Vec const&);
/* 8003A0F4 */ virtual void JSGGetScaling(Vec*) const;