mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-23 06:54:16 -04:00
Started copying JStudio progress from pikmin2
This commit is contained in:
+2
-2
@@ -635,14 +635,14 @@ config.libs = [
|
||||
JSystemLib(
|
||||
"JStudio_JParticle",
|
||||
[
|
||||
Object(NonMatching, "JSystem/JStudio/JStudio_JParticle/control.cpp"),
|
||||
Object(Matching, "JSystem/JStudio/JStudio_JParticle/control.cpp"),
|
||||
Object(NonMatching, "JSystem/JStudio/JStudio_JParticle/object-particle.cpp"),
|
||||
],
|
||||
),
|
||||
JSystemLib(
|
||||
"JStudio_JMessage",
|
||||
[
|
||||
Object(NonMatching, "JSystem/JStudio/JStudio_JMessage/control.cpp"),
|
||||
Object(Matching, "JSystem/JStudio/JStudio_JMessage/control.cpp"),
|
||||
Object(NonMatching, "JSystem/JStudio/JStudio_JMessage/object-message.cpp"),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
#ifndef JMESSAGE_CONTROL_H
|
||||
#define JMESSAGE_CONTROL_H
|
||||
|
||||
#include "JSystem/JMessage/processor.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
namespace JMessage {
|
||||
struct TControl {
|
||||
TControl();
|
||||
virtual ~TControl();
|
||||
|
||||
void reset();
|
||||
int update();
|
||||
void render();
|
||||
int setMessageCode(u16, u16);
|
||||
int setMessageID(u32, u32, bool*);
|
||||
|
||||
bool isReady_update_() const { return pMessageText_begin_ != 0 && pSequenceProcessor_ != NULL; }
|
||||
bool isReady_render_() const { return field_0x20 != 0 && pRenderingProcessor_ != NULL; }
|
||||
|
||||
TProcessor* getProcessor() const {
|
||||
return pSequenceProcessor_ != NULL ? (TProcessor*)pSequenceProcessor_ :
|
||||
(TProcessor*)pRenderingProcessor_;
|
||||
}
|
||||
|
||||
const char* getMessageText_begin() const { return pMessageText_begin_; }
|
||||
void* getMessageEntry() const { return pEntry_; }
|
||||
void setSequenceProcessor(TSequenceProcessor* processor) { pSequenceProcessor_ = processor; }
|
||||
void setRenderingProcessor(TRenderingProcessor* processor) { pRenderingProcessor_ = processor; }
|
||||
|
||||
/* 0x04 */ TSequenceProcessor* pSequenceProcessor_;
|
||||
/* 0x08 */ TRenderingProcessor* pRenderingProcessor_;
|
||||
/* 0x0C */ u16 messageCode_;
|
||||
/* 0x0E */ u16 field_0xe;
|
||||
/* 0x10 */ const TResource* pResourceCache_;
|
||||
/* 0x14 */ void* pEntry_;
|
||||
/* 0x18 */ const char* pMessageText_begin_;
|
||||
/* 0x1C */ const char* pszText_update_current_;
|
||||
/* 0x20 */ const char* field_0x20;
|
||||
/* 0x24 */ TProcessor::TStack_ oStack_renderingProcessor_;
|
||||
};
|
||||
}; // namespace JMessage
|
||||
|
||||
#endif /* JMESSAGE_CONTROL_H */
|
||||
@@ -0,0 +1,195 @@
|
||||
#ifndef JMESSAGE_PROCESSOR_H
|
||||
#define JMESSAGE_PROCESSOR_H
|
||||
|
||||
#include "JSystem/JMessage/resource.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
namespace JMessage {
|
||||
|
||||
struct TReference;
|
||||
struct TControl;
|
||||
struct TResource;
|
||||
|
||||
struct TProcessor {
|
||||
typedef bool (*OnCharacterEndCallBack)(TProcessor*);
|
||||
typedef void (*OnSelectBeginCallBack)(TProcessor*);
|
||||
typedef const char* (*ProcessOnSelectCallBack)(TProcessor*);
|
||||
|
||||
struct TStack_ {
|
||||
TStack_() { clear(); }
|
||||
|
||||
TStack_(const TStack_& other)
|
||||
{
|
||||
mSize = other.mSize;
|
||||
for (int i = 0; i < mSize; i++) {
|
||||
mStack[i] = mStack[i];
|
||||
}
|
||||
}
|
||||
|
||||
inline bool empty() const { return mSize == 0; }
|
||||
inline bool isPushable() const { return mSize < 4; }
|
||||
inline void clear() { mSize = 0; }
|
||||
|
||||
inline u32 getMaxSize() const { return 4; }
|
||||
inline u32 getSize() const { return mSize; }
|
||||
inline const char* getTop() const { return mStack[mSize - 1]; }
|
||||
|
||||
inline void push(const char* str)
|
||||
{
|
||||
mStack[mSize] = str;
|
||||
mSize++;
|
||||
}
|
||||
|
||||
inline void pop() { mSize--; }
|
||||
|
||||
u32 mSize; // _00
|
||||
const char* mStack[4]; // _04
|
||||
};
|
||||
|
||||
struct TProcess {
|
||||
struct TProcessData {
|
||||
ProcessOnSelectCallBack mSelectCallback; // _00
|
||||
const char* mBase; // _04
|
||||
const void* mOffset; // _08
|
||||
u32 mRest; // _0C
|
||||
};
|
||||
|
||||
TProcess() { reset_normal(); }
|
||||
|
||||
void reset_normal() { mEndCallback = process_onCharacterEnd_normal_; }
|
||||
void reset_select() { mEndCallback = process_onCharacterEnd_select_; }
|
||||
|
||||
OnCharacterEndCallBack mEndCallback; // _00
|
||||
TProcessData mData; // _04
|
||||
};
|
||||
|
||||
virtual ~TProcessor(); // _08
|
||||
virtual void do_reset(); // _0C
|
||||
virtual void do_character(int); // _10
|
||||
virtual bool do_tag(u32, const void*, u32); // _14
|
||||
virtual bool do_systemTagCode(u16, const void*, u32); // _18
|
||||
virtual void do_select_begin(u32); // _1C
|
||||
virtual void do_select_end(); // _20
|
||||
virtual void do_select_separate(); // _24
|
||||
virtual void do_reset_(const char*) = 0; // _28
|
||||
virtual bool do_setBegin_isReady_() const; // _2C
|
||||
virtual void do_begin_(const void*, const char*) = 0; // _30
|
||||
virtual void do_end_() = 0; // _34
|
||||
virtual bool do_tag_(u32, const void*, u32) = 0; // _38
|
||||
virtual void do_systemTagCode_(u16, const void*, u32) = 0; // _3C
|
||||
|
||||
void setBegin_messageCode(u16, u16);
|
||||
void setBegin_messageID(u32, u32, bool*);
|
||||
void setBegin_messageCode(u32); // weak
|
||||
TResource* getResource_groupID(u16) const;
|
||||
u32 toMessageCode_messageID(u32, u32, bool*) const;
|
||||
char* on_message_limited(u16) const; // weak
|
||||
char* on_message(u32) const; // weak
|
||||
char* getMessageText_messageCode(u32) const; // weak
|
||||
static bool process_onCharacterEnd_normal_(TProcessor*);
|
||||
static bool process_onCharacterEnd_select_(TProcessor*);
|
||||
static const char* process_onSelect_limited_(TProcessor*);
|
||||
static const char* process_onSelect_(TProcessor*);
|
||||
void reset_(const char*);
|
||||
|
||||
int setBegin_messageEntryText(const TResource* resource, const void* entry, const char* param_2)
|
||||
{
|
||||
mResourceCache = resource;
|
||||
reset_(param_2);
|
||||
do_begin_(entry, param_2);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
const TResource* getResourceCache() const { return mResourceCache; }
|
||||
const char* getCurrent() const { return mCurrent; }
|
||||
const TReference* getReference() const { return mReference; }
|
||||
|
||||
// Unused/inlined:
|
||||
void pushCurrent(const char*);
|
||||
const char* popCurrent();
|
||||
void on_select_begin(OnSelectBeginCallBack* p1, const char* p2, const void* p3, const char* p4, u32 p5);
|
||||
void on_select_end();
|
||||
void on_select_separate();
|
||||
void on_tag_();
|
||||
void process_character_();
|
||||
|
||||
// _00 = VTBL
|
||||
const TReference* mReference; // _04
|
||||
const TResource* mResourceCache; // _08
|
||||
const char* mCurrent; // _0C
|
||||
TStack_ mStack; // _10
|
||||
TProcess mProcess; // _24
|
||||
};
|
||||
|
||||
struct TSequenceProcessor : public TProcessor {
|
||||
typedef void OnJumpRegisterCallBack(TSequenceProcessor*);
|
||||
typedef void OnBranchRegisterCallBack(TSequenceProcessor*, u32);
|
||||
typedef void* ProcessOnJumpCallBack(const TSequenceProcessor*);
|
||||
|
||||
TSequenceProcessor(const TReference*, TControl*);
|
||||
|
||||
virtual ~TSequenceProcessor(); // _08
|
||||
virtual void do_reset_(const char*); // _28
|
||||
virtual bool do_setBegin_isReady_() const; // _2C
|
||||
virtual void do_begin_(const void*, const char*); // _30
|
||||
virtual void do_end_(); // _34
|
||||
virtual bool do_tag_(u32, const void*, u32); // _38
|
||||
virtual void do_systemTagCode_(u16, const void*, u32); // _3C
|
||||
virtual void do_begin(const void*, const char*); // _40
|
||||
virtual void do_end(); // _44
|
||||
virtual bool do_isReady(); // _48
|
||||
virtual bool do_jump_isReady(); // _4C
|
||||
virtual void do_jump(const void*, const char*); // _50
|
||||
virtual void do_branch_query(u16); // _54
|
||||
virtual int do_branch_queryResult(); // _58
|
||||
virtual void do_branch(const void*, const char*); // _5C
|
||||
|
||||
char* process(const char*);
|
||||
bool on_isReady();
|
||||
void on_jump_isReady();
|
||||
void on_jump(const void*, const char*);
|
||||
void on_branch_queryResult();
|
||||
void on_branch(const void*, const char*);
|
||||
void process_onJump_limited_(const TSequenceProcessor*);
|
||||
static void* process_onJump_(const TSequenceProcessor*);
|
||||
void process_onBranch_limited_(const TSequenceProcessor*, u32);
|
||||
void process_onBranch_(const TSequenceProcessor*, u32);
|
||||
|
||||
// Unused/inlined:
|
||||
const char* toString_status(int);
|
||||
int toValue_status(const char*);
|
||||
void on_jump_register(OnJumpRegisterCallBack*, const void*, u32);
|
||||
void on_branch_register(OnBranchRegisterCallBack*, const void*, const void*, u32);
|
||||
void on_branch_query(u16);
|
||||
void process_setMessageIndex_reserved_(u16);
|
||||
void process_setMessageCode_(const TSequenceProcessor*, u16, u16);
|
||||
|
||||
// _00 = VTBL
|
||||
// _00-_38 = TProcessor
|
||||
TControl* _38; // _38
|
||||
int _3C; // _3C
|
||||
ProcessOnJumpCallBack* _40; // _40 - processorCallBack(void*, ulong) pointer?
|
||||
u32 _44; // _44
|
||||
u32 _48; // _48
|
||||
};
|
||||
|
||||
struct TRenderingProcessor : public TProcessor {
|
||||
TRenderingProcessor(const TReference*);
|
||||
|
||||
virtual ~TRenderingProcessor(); // _08
|
||||
virtual void do_reset_(const char*); // _28
|
||||
virtual void do_begin_(const void*, const char*); // _30
|
||||
virtual void do_end_(); // _34
|
||||
virtual bool do_tag_(u32, const void*, u32); // _38
|
||||
virtual void do_systemTagCode_(u16, const void*, u32); // _3C
|
||||
virtual void do_begin(const void*, const char*); // _40
|
||||
virtual void do_end(); // _44
|
||||
|
||||
void process(const char*);
|
||||
|
||||
// _00 = VTBL
|
||||
// _00-_38 = TProcessor
|
||||
};
|
||||
} // namespace JMessage
|
||||
|
||||
#endif /* JMESSAGE_PROCESSOR_H */
|
||||
@@ -183,6 +183,9 @@ public:
|
||||
void setGlobalRTMatrix(MtxP mtx) {
|
||||
JPASetRMtxTVecfromMtx(mtx, mGlobalRotation, mGlobalTranslation);
|
||||
}
|
||||
void setGlobalSRTMatrix(MtxP mtx) {
|
||||
JPASetRMtxSTVecfromMtx(mtx, mGlobalRotation, mGlobalDynamicsScale, mGlobalTranslation);
|
||||
}
|
||||
void setGlobalRotation(const JGeometry::TVec3<s16>& rot) {
|
||||
JPAGetXYZRotateMtx(rot.x, rot.y, rot.z, mGlobalRotation);
|
||||
}
|
||||
@@ -290,7 +293,6 @@ public:
|
||||
void setGlobalParticleHeightScale(f32) {}
|
||||
void setGlobalParticleScale(f32, f32) {}
|
||||
void setGlobalParticleWidthScale(f32) {}
|
||||
void setGlobalSRTMatrix(MtxP) {}
|
||||
|
||||
static JPAEmitterInfo emtrInfo;
|
||||
|
||||
|
||||
@@ -30,8 +30,10 @@ struct TFactory : public stb::TFactory {
|
||||
|
||||
class TControl : public stb::TControl {
|
||||
public:
|
||||
struct TTransform_translation_rotation_scaling {};
|
||||
struct TTransform_position {};
|
||||
struct TTransform_position_direction {};
|
||||
struct TTransform_translation_rotation {};
|
||||
struct TTransform_translation_rotation_scaling {};
|
||||
|
||||
TControl();
|
||||
virtual ~TControl();
|
||||
@@ -47,7 +49,9 @@ public:
|
||||
fvb_destroyObject_all();
|
||||
}
|
||||
|
||||
bool transformOnSet_isEnabled() const { return mTransformOnSet; }
|
||||
void transformOnSet_enable(bool param_0) { mTransformOnSet = param_0; }
|
||||
bool transformOnGet_isEnabled() const { return mTransformOnGet; }
|
||||
void transformOnGet_enable(bool param_0) { mTransformOnGet = param_0; }
|
||||
|
||||
void transform_enable(bool param_0) {
|
||||
@@ -60,6 +64,10 @@ public:
|
||||
transformOnGet_setOrigin(xyz, rotY);
|
||||
}
|
||||
|
||||
f32 transformOnSet_getRotationY() const { return mTransformOnSet_RotationY; }
|
||||
CMtxP transformOnSet_getMatrix() const { return mTransformOnSet_Matrix; }
|
||||
CMtxP transformOnGet_getMatrix() const { return mTransformOnGet_Matrix; }
|
||||
|
||||
void setSecondPerFrame(f64 param_0) { mSecondPerFrame = param_0; }
|
||||
f64 getSecondPerFrame() const { return mSecondPerFrame; }
|
||||
|
||||
@@ -87,6 +95,33 @@ public:
|
||||
}
|
||||
return obj->referFunctionValue();
|
||||
}
|
||||
|
||||
void fvb_getObjectContainer() const {}
|
||||
void fvb_referControl() {}
|
||||
void fvb_removeObject_all() {}
|
||||
void stb_getObjectContainer() const {}
|
||||
void stb_referObjectContainer() {}
|
||||
void stb_removeObject(JStudio::TObject*) {}
|
||||
void transformOnGet_transform(const JStudio::TControl::TTransform_position&, JStudio::TControl::TTransform_position*) const {}
|
||||
void transformOnGet_transform(const JStudio::TControl::TTransform_position_direction&, JStudio::TControl::TTransform_position_direction*) const {}
|
||||
void transformOnGet_transform(const JStudio::TControl::TTransform_translation_rotation&, JStudio::TControl::TTransform_translation_rotation*) const {}
|
||||
void transformOnGet_transformDirection(const Vec&, Vec*) const {}
|
||||
void transformOnGet_transformRotation(const Vec&, Vec*) const {}
|
||||
void transformOnGet_transformTranslation(const Vec&, Vec*) const {}
|
||||
void transformOnGet_transform_ifEnabled(const JStudio::TControl::TTransform_position_direction&, JStudio::TControl::TTransform_position_direction*) const {}
|
||||
void transformOnGet_transform_ifEnabled(const JStudio::TControl::TTransform_translation_rotation&, JStudio::TControl::TTransform_translation_rotation*) const {}
|
||||
void transformOnSet_transform(const JStudio::TControl::TTransform_position&, JStudio::TControl::TTransform_position*) const {}
|
||||
void transformOnSet_transform(const JStudio::TControl::TTransform_position_direction&, JStudio::TControl::TTransform_position_direction*) const {}
|
||||
void transformOnSet_transform(const JStudio::TControl::TTransform_translation_rotation&, JStudio::TControl::TTransform_translation_rotation*) const {}
|
||||
void transformOnSet_transform(CMtxP, MtxP) const {}
|
||||
void transformOnSet_transformDirection(const Vec&, Vec*) const {}
|
||||
void transformOnSet_transformDirection_ifEnabled(const Vec&, Vec*) const {}
|
||||
void transformOnSet_transformRotation(const Vec&, Vec*) const {}
|
||||
void transformOnSet_transformTranslation(const Vec&, Vec*) const {}
|
||||
void transformOnSet_transformTranslation_ifEnabled(const Vec&, Vec*) const {}
|
||||
void transformOnSet_transform_ifEnabled(const JStudio::TControl::TTransform_position_direction&, JStudio::TControl::TTransform_position_direction*) const {}
|
||||
void transformOnSet_transform_ifEnabled(const JStudio::TControl::TTransform_translation_rotation&, JStudio::TControl::TTransform_translation_rotation*) const {}
|
||||
void transformOnSet_transform_ifEnabled(CMtxP, MtxP) const {}
|
||||
|
||||
/* 0x58 */ f64 mSecondPerFrame;
|
||||
/* 0x60 */ fvb::TControl fvb_Control;
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace data {
|
||||
UNK_0x3 = 0x3,
|
||||
UNK_0x10 = 0x10,
|
||||
UNK_0x12 = 0x12,
|
||||
UNK_0x18 = 0x18,
|
||||
UNK_0x19 = 0x19,
|
||||
};
|
||||
};
|
||||
@@ -108,6 +109,7 @@ public:
|
||||
|
||||
TAdaptor* getAdaptor() { return mpAdaptor; }
|
||||
TControl* getControl() { return (TControl*)stb::TObject::getControl(); }
|
||||
const TControl* getControl() const { return (const TControl*)stb::TObject::getControl(); }
|
||||
|
||||
void prepareAdaptor() {
|
||||
if (mpAdaptor != NULL) {
|
||||
@@ -133,10 +135,22 @@ public:
|
||||
};
|
||||
|
||||
struct TAdaptor {
|
||||
struct TSetVariableValue_immediate {
|
||||
u32 field_0x0;
|
||||
f32 field_0x4;
|
||||
};
|
||||
inline TAdaptor(TVariableValue* values, int count)
|
||||
: pValue_(values)
|
||||
, u(count)
|
||||
{
|
||||
}
|
||||
|
||||
struct TSetVariableValue_immediate {
|
||||
inline TSetVariableValue_immediate(u32 p1, f32 p2)
|
||||
: _00(p1)
|
||||
, _04(p2)
|
||||
{
|
||||
}
|
||||
|
||||
u32 _00; // _00
|
||||
f32 _04; // _04
|
||||
};
|
||||
typedef void (*setVarFunc)(JStudio::TAdaptor*, JStudio::TObject*, u32, void const*, u32);
|
||||
virtual ~TAdaptor() = 0;
|
||||
virtual void adaptor_do_prepare(const JStudio::TObject*);
|
||||
@@ -277,6 +291,11 @@ struct TObject_light : public TObject {
|
||||
};
|
||||
|
||||
struct TAdaptor_message : public TAdaptor {
|
||||
inline TAdaptor_message()
|
||||
: TAdaptor(NULL, 0)
|
||||
{
|
||||
}
|
||||
|
||||
virtual ~TAdaptor_message() = 0;
|
||||
};
|
||||
|
||||
@@ -289,17 +308,22 @@ struct TObject_message : public TObject {
|
||||
};
|
||||
|
||||
struct TAdaptor_particle : public TAdaptor {
|
||||
TAdaptor_particle()
|
||||
: TAdaptor(mValue, ARRAY_SIZE(mValue))
|
||||
, mValue()
|
||||
{
|
||||
}
|
||||
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[12];
|
||||
static u32 const sauVariableValue_3_ROTATION_XYZ[12];
|
||||
static u32 const sauVariableValue_3_SCALING_XYZ[12];
|
||||
static u32 const sauVariableValue_3_COLOR_RGB[12];
|
||||
static u32 const sauVariableValue_4_COLOR_RGBA[16];
|
||||
static u32 const sauVariableValue_3_COLOR1_RGB[12];
|
||||
static u32 const sauVariableValue_4_COLOR1_RGBA[16];
|
||||
};
|
||||
|
||||
struct TObject_particle : public TObject {
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
#ifndef JSTUDIO_JMESSAGE_CONTROL_H
|
||||
#define JSTUDIO_JMESSAGE_CONTROL_H
|
||||
|
||||
#include "JSystem/JStudio/JStudio/jstudio-object.h"
|
||||
#include "JSystem/JMessage/control.h"
|
||||
|
||||
namespace JStudio_JMessage {
|
||||
struct TCreateObject_base : JStudio::TCreateObject {
|
||||
virtual ~TCreateObject_base() = 0; // _08
|
||||
virtual bool create(JStudio::TObject** newObject, const JStudio::stb::data::TParse_TBlock_object& data); // _0C
|
||||
virtual JMessage::TControl* find(const JStudio::stb::data::TParse_TBlock_object&) = 0; // _10
|
||||
};
|
||||
} // namespace JStudio_JMessage
|
||||
|
||||
namespace JStudio_JMessage {
|
||||
struct TCreateObject : public TCreateObject_base {
|
||||
TCreateObject(JMessage::TControl* control) { mControl = control; }
|
||||
|
||||
virtual ~TCreateObject(); // _08
|
||||
virtual JMessage::TControl* find(const JStudio::stb::data::TParse_TBlock_object&); // _10
|
||||
|
||||
JMessage::TControl* mControl; // _0C
|
||||
};
|
||||
|
||||
struct TAdaptor_message : public JStudio::TAdaptor_message {
|
||||
virtual ~TAdaptor_message(); // _08
|
||||
virtual void adaptor_do_MESSAGE(JStudio::data::TEOperationData, const void*, u32); // _20
|
||||
|
||||
TAdaptor_message(JMessage::TControl*);
|
||||
JMessage::TControl* mControl; // _10
|
||||
};
|
||||
} // namespace JStudio_JMessage
|
||||
|
||||
#endif /* JSTUDIO_JMESSAGE_CONTROL_H */
|
||||
@@ -0,0 +1,6 @@
|
||||
#ifndef OBJECT_MESSAGE_H
|
||||
#define OBJECT_MESSAGE_H
|
||||
|
||||
#include "JSystem/JStudio/JStudio_JMessage/control.h"
|
||||
|
||||
#endif /* OBJECT_MESSAGE_H */
|
||||
@@ -0,0 +1,67 @@
|
||||
#ifndef JSTUDIO_JPARTICLE_CONTROL_H
|
||||
#define JSTUDIO_JPARTICLE_CONTROL_H
|
||||
|
||||
#include "JSystem/JParticle/JPAParticle.h"
|
||||
#include "JSystem/JStage/JSGSystem.h"
|
||||
#include "JSystem/JStudio/JStudio/jstudio-object.h"
|
||||
|
||||
namespace JStudio_JParticle {
|
||||
struct TCreateObject : public JStudio::TCreateObject {
|
||||
TCreateObject(JPAEmitterManager* p_emitMgr, const JStage::TSystem* p_system) {
|
||||
pJPAEmitterManager_ = p_emitMgr;
|
||||
pJSGSystem_ = p_system;
|
||||
mPermit_onExit_notEnd = false;
|
||||
}
|
||||
|
||||
virtual ~TCreateObject();
|
||||
virtual bool create(JStudio::TObject**, JStudio::stb::data::TParse_TBlock_object const&);
|
||||
|
||||
/* 0x0C */ JPAEmitterManager* pJPAEmitterManager_;
|
||||
/* 0x10 */ const JStage::TSystem* pJSGSystem_;
|
||||
/* 0x14 */ bool mPermit_onExit_notEnd;
|
||||
};
|
||||
|
||||
struct TAdaptor_particle : public JStudio::TAdaptor_particle {
|
||||
struct TJPACallback_ : JPACallBackBase<JPABaseEmitter*> {
|
||||
inline TJPACallback_(TAdaptor_particle* adaptor)
|
||||
: mAdaptor(adaptor)
|
||||
, mObject(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
virtual ~TJPACallback_() { } // _08 (weak)
|
||||
virtual void execute(JPABaseEmitter*); // _0C
|
||||
|
||||
TAdaptor_particle* mAdaptor; // _04
|
||||
const JStudio::TObject* mObject; // _08
|
||||
};
|
||||
|
||||
TAdaptor_particle(JPAEmitterManager*, const JStage::TSystem*);
|
||||
void beginParticle_fadeIn_();
|
||||
void endParticle_fadeOut_(u32);
|
||||
|
||||
virtual ~TAdaptor_particle();
|
||||
virtual void adaptor_do_prepare(const JStudio::TObject*);
|
||||
virtual void adaptor_do_end(const JStudio::TObject*);
|
||||
virtual void adaptor_do_update(const JStudio::TObject*, u32);
|
||||
virtual void adaptor_do_PARTICLE(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);
|
||||
|
||||
/* 0x19C */ JPAEmitterManager* mEmitterManager;
|
||||
/* 0x1A0 */ JPABaseEmitter* mEmitter;
|
||||
/* 0x1A4 */ TJPACallback_ mCallback;
|
||||
/* 0x1B0 */ int _188;
|
||||
/* 0x1B4 */ u32 _18C;
|
||||
/* 0x1B8 */ u32 _190;
|
||||
/* 0x1BC */ u32 _194;
|
||||
/* 0x1C0 */ const JStage::TSystem* mSystem;
|
||||
/* 0x1C4 */ JStage::TObject* _19C;
|
||||
/* 0x1C8 */ u32 _1A0;
|
||||
/* 0x1CC */ bool _1A4;
|
||||
}; // Size: 0x1D0
|
||||
|
||||
}; // namespace JStudio_JParticle
|
||||
|
||||
#endif /* JSTUDIO_JPARTICLE_CONTROL_H */
|
||||
@@ -0,0 +1,6 @@
|
||||
#ifndef OBJECT_PARTICLE_H
|
||||
#define OBJECT_PARTICLE_H
|
||||
|
||||
#include "JSystem/JStudio/JStudio_JParticle/control.h"
|
||||
|
||||
#endif /* OBJECT_PARTICLE_H */
|
||||
@@ -3,7 +3,7 @@
|
||||
// Translation Unit: processor.cpp
|
||||
//
|
||||
|
||||
#include "processor.h"
|
||||
#include "JSystem/JMessage/processor.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
|
||||
|
||||
@@ -3,27 +3,72 @@
|
||||
// Translation Unit: control.cpp
|
||||
//
|
||||
|
||||
#include "control.h"
|
||||
#include "JSystem/JStudio/JStudio_JMessage/control.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
namespace JStudio_JMessage {
|
||||
|
||||
/* 8027A4A8-8027A508 .text __dt__Q216JStudio_JMessage18TCreateObject_baseFv */
|
||||
JStudio_JMessage::TCreateObject_base::~TCreateObject_base() {
|
||||
/* Nonmatching */
|
||||
namespace {
|
||||
|
||||
// Fake inline.
|
||||
// TODO: supposed to use JStudio::TObject::createFromAdaptor instead of this somehow
|
||||
inline JStudio::TObject_message* message_creator(const JStudio::stb::data::TParse_TBlock_object& data,
|
||||
TAdaptor_message* adaptor)
|
||||
{
|
||||
JStudio::TObject_message* object = new JStudio::TObject_message(data, adaptor);
|
||||
|
||||
if (!object) {
|
||||
return NULL;
|
||||
}
|
||||
if (object->mpAdaptor) {
|
||||
object->mpAdaptor->adaptor_do_prepare(object);
|
||||
}
|
||||
return object;
|
||||
}
|
||||
|
||||
/* 8027A3F4-8027A4A8 .text createObject_MESSAGE_JMS___Q216JStudio_JMessage21@unnamed@control_cpp@FRCQ47JStudio3stb4data20TParse_TBlock_objectPQ28JMessage8TControl */
|
||||
JStudio::TObject_message* createObject_MESSAGE_JMS_(const JStudio::stb::data::TParse_TBlock_object& data, JMessage::TControl* system)
|
||||
{
|
||||
TAdaptor_message* adaptor = new TAdaptor_message(system);
|
||||
if (!adaptor) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return message_creator(data, adaptor);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
/* 8027A4A8-8027A508 .text __dt__Q216JStudio_JMessage18TCreateObject_baseFv */
|
||||
TCreateObject_base::~TCreateObject_base() {}
|
||||
|
||||
/* 8027A508-8027A5AC .text create__Q216JStudio_JMessage18TCreateObject_baseFPPQ27JStudio7TObjectRCQ47JStudio3stb4data20TParse_TBlock_object */
|
||||
void JStudio_JMessage::TCreateObject_base::create(JStudio::TObject**, const JStudio::stb::data::TParse_TBlock_object&) {
|
||||
/* Nonmatching */
|
||||
bool TCreateObject_base::create(JStudio::TObject** newObject, const JStudio::stb::data::TParse_TBlock_object& data) {
|
||||
JStudio::TObject_message* (*func)(const JStudio::stb::data::TParse_TBlock_object&, JMessage::TControl*);
|
||||
switch (data.get()->type) {
|
||||
case 'JMSG':
|
||||
func = &createObject_MESSAGE_JMS_;
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
JMessage::TControl* system = find(data);
|
||||
|
||||
if (!system) {
|
||||
return false;
|
||||
}
|
||||
|
||||
*newObject = func(data, system);
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 8027A5AC-8027A60C .text __dt__Q216JStudio_JMessage13TCreateObjectFv */
|
||||
JStudio_JMessage::TCreateObject::~TCreateObject() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
TCreateObject::~TCreateObject() {}
|
||||
|
||||
/* 8027A60C-8027A614 .text find__Q216JStudio_JMessage13TCreateObjectFRCQ47JStudio3stb4data20TParse_TBlock_object */
|
||||
void JStudio_JMessage::TCreateObject::find(const JStudio::stb::data::TParse_TBlock_object&) {
|
||||
/* Nonmatching */
|
||||
JMessage::TControl* TCreateObject::find(const JStudio::stb::data::TParse_TBlock_object&) {
|
||||
return mControl;
|
||||
}
|
||||
|
||||
} // namespace JStudio_JMessage
|
||||
|
||||
@@ -3,21 +3,25 @@
|
||||
// Translation Unit: object-message.cpp
|
||||
//
|
||||
|
||||
#include "object-message.h"
|
||||
#include "JSystem/JStudio/JStudio_JMessage/object-message.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
/* 8027A614-8027A64C .text __ct__Q216JStudio_JMessage16TAdaptor_messageFPQ28JMessage8TControl */
|
||||
JStudio_JMessage::TAdaptor_message::TAdaptor_message(JMessage::TControl*) {
|
||||
/* Nonmatching */
|
||||
JStudio_JMessage::TAdaptor_message::TAdaptor_message(JMessage::TControl* control)
|
||||
: JStudio::TAdaptor_message()
|
||||
, mControl(control)
|
||||
{
|
||||
}
|
||||
|
||||
/* 8027A64C-8027A6AC .text __dt__Q216JStudio_JMessage16TAdaptor_messageFv */
|
||||
JStudio_JMessage::TAdaptor_message::~TAdaptor_message() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
JStudio_JMessage::TAdaptor_message::~TAdaptor_message() {}
|
||||
|
||||
/* 8027A6AC-8027A6EC .text adaptor_do_MESSAGE__Q216JStudio_JMessage16TAdaptor_messageFQ37JStudio4data15TEOperationDataPCvUl */
|
||||
void JStudio_JMessage::TAdaptor_message::adaptor_do_MESSAGE(JStudio::data::TEOperationData, const void*, unsigned long) {
|
||||
void JStudio_JMessage::TAdaptor_message::adaptor_do_MESSAGE(JStudio::data::TEOperationData operation, const void* param_2, u32 param_3) {
|
||||
/* Nonmatching */
|
||||
switch (operation) {
|
||||
case JStudio::data::UNK_0x19:
|
||||
mControl->setMessageCode((*(u32*)param_2) >> 0x10, (*(u32*)param_3));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,17 +3,57 @@
|
||||
// Translation Unit: control.cpp
|
||||
//
|
||||
|
||||
#include "control.h"
|
||||
#include "JSystem/JStudio/JStudio_JParticle/control.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
namespace JStudio_JParticle {
|
||||
|
||||
namespace {
|
||||
// Fake inline.
|
||||
// TODO: supposed to use JStudio::TObject::createFromAdaptor instead of this somehow
|
||||
static inline JStudio::TObject_particle* create(const JStudio::stb::data::TParse_TBlock_object& data, TAdaptor_particle* adaptor)
|
||||
{
|
||||
JStudio::TObject_particle* object = new JStudio::TObject_particle(data, adaptor);
|
||||
if (object == NULL) {
|
||||
// TODO: This should probably delete the adaptor in NONMATCHING builds, if the object couldn't get created.
|
||||
return NULL;
|
||||
} else {
|
||||
if (object->mpAdaptor != NULL) {
|
||||
object->mpAdaptor->adaptor_do_prepare(object);
|
||||
}
|
||||
}
|
||||
return object;
|
||||
}
|
||||
|
||||
/* 802796E4-802797A0 .text createObject_PARTICLE_JPA___Q217JStudio_JParticle21@unnamed@control_cpp@FRCQ47JStudio3stb4data20TParse_TBlock_objectP17JPAEmitterManagerPCQ26JStage7TSystem */
|
||||
JStudio::TObject_particle* createObject_PARTICLE_JPA_(const JStudio::stb::data::TParse_TBlock_object& data, JPAEmitterManager* manager,
|
||||
const JStage::TSystem* system)
|
||||
{
|
||||
TAdaptor_particle* adaptor = new TAdaptor_particle(manager, system);
|
||||
if (adaptor == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
JStudio::TObject_particle* object = create(data, adaptor);
|
||||
return object;
|
||||
}
|
||||
} // namespace
|
||||
|
||||
/* 802797A0-80279800 .text __dt__Q217JStudio_JParticle13TCreateObjectFv */
|
||||
JStudio_JParticle::TCreateObject::~TCreateObject() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
TCreateObject::~TCreateObject() {}
|
||||
|
||||
/* 80279800-80279878 .text create__Q217JStudio_JParticle13TCreateObjectFPPQ27JStudio7TObjectRCQ47JStudio3stb4data20TParse_TBlock_object */
|
||||
void JStudio_JParticle::TCreateObject::create(JStudio::TObject**, const JStudio::stb::data::TParse_TBlock_object&) {
|
||||
/* Nonmatching */
|
||||
bool TCreateObject::create(JStudio::TObject** newObject, const JStudio::stb::data::TParse_TBlock_object& data) {
|
||||
JStudio::TObject_particle* (*func)(const JStudio::stb::data::TParse_TBlock_object&, JPAEmitterManager*, const JStage::TSystem*);
|
||||
switch (data.get()->type) {
|
||||
case 'JPTC': {
|
||||
func = &createObject_PARTICLE_JPA_;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
*newObject = func(data, pJPAEmitterManager_, pJSGSystem_);
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace JStudio_JParticle
|
||||
|
||||
@@ -3,81 +3,209 @@
|
||||
// Translation Unit: object-particle.cpp
|
||||
//
|
||||
|
||||
#include "object-particle.h"
|
||||
#include "JSystem/JStudio/JStudio_JParticle/object-particle.h"
|
||||
#include "JSystem/JParticle/JPAEmitterManager.h"
|
||||
#include "JSystem/JStudio/JStudio/jstudio-math.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
/* 80279878-80279954 .text __ct__Q217JStudio_JParticle17TAdaptor_particleFP17JPAEmitterManagerPCQ26JStage7TSystem */
|
||||
JStudio_JParticle::TAdaptor_particle::TAdaptor_particle(JPAEmitterManager*, const JStage::TSystem*) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80279954-802799B0 .text __dt__Q317JStudio_JParticle17TAdaptor_particle13TJPACallback_Fv */
|
||||
JStudio_JParticle::TAdaptor_particle::TJPACallback_::~TJPACallback_() {
|
||||
/* Nonmatching */
|
||||
JStudio_JParticle::TAdaptor_particle::TAdaptor_particle(JPAEmitterManager* emitterManager, const JStage::TSystem* system)
|
||||
: mEmitterManager(emitterManager)
|
||||
, mEmitter(NULL)
|
||||
, mCallback(this)
|
||||
, _188(-1)
|
||||
, _18C(0)
|
||||
, _190(0)
|
||||
, _194(0)
|
||||
, mSystem(system)
|
||||
, _19C(NULL)
|
||||
, _1A0(0xFFFFFFFF)
|
||||
, _1A4(0)
|
||||
{
|
||||
}
|
||||
|
||||
/* 802799B0-80279A50 .text __dt__Q217JStudio_JParticle17TAdaptor_particleFv */
|
||||
JStudio_JParticle::TAdaptor_particle::~TAdaptor_particle() {
|
||||
/* Nonmatching */
|
||||
if (mEmitter != NULL) {
|
||||
mEmitterManager->forceDeleteEmitter(mEmitter);
|
||||
}
|
||||
}
|
||||
|
||||
/* 80279A50-80279BD4 .text adaptor_do_prepare__Q217JStudio_JParticle17TAdaptor_particleFPCQ27JStudio7TObject */
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_prepare(const JStudio::TObject*) {
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_prepare(const JStudio::TObject* param_1) {
|
||||
/* Nonmatching */
|
||||
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(0xFFFFFFFF, NAN)
|
||||
};
|
||||
adaptor_setVariableValue_immediate(aoData);
|
||||
mCallback.mObject = param_1;
|
||||
}
|
||||
|
||||
/* 80279BD4-80279BD8 .text adaptor_do_end__Q217JStudio_JParticle17TAdaptor_particleFPCQ27JStudio7TObject */
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_end(const JStudio::TObject*) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_end(const JStudio::TObject*) {}
|
||||
|
||||
/* 80279BD8-80279C2C .text adaptor_do_update__Q217JStudio_JParticle17TAdaptor_particleFPCQ27JStudio7TObjectUl */
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_update(const JStudio::TObject*, unsigned long) {
|
||||
/* Nonmatching */
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_update(const JStudio::TObject* param_1, u32 param_2) {
|
||||
if (_190 == 0) {
|
||||
return;
|
||||
}
|
||||
if (_194 >= _190) {
|
||||
return;
|
||||
}
|
||||
_194 += param_2;
|
||||
if (_194 < _190) {
|
||||
return;
|
||||
}
|
||||
switch (_18C) {
|
||||
case 2:
|
||||
break;
|
||||
default:
|
||||
_18C = 0;
|
||||
break;
|
||||
}
|
||||
_190 = 0;
|
||||
_194 = 0;
|
||||
}
|
||||
|
||||
/* 80279C2C-80279C40 .text adaptor_do_PARTICLE__Q217JStudio_JParticle17TAdaptor_particleFQ37JStudio4data15TEOperationDataPCvUl */
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARTICLE(JStudio::data::TEOperationData, const void*, unsigned long) {
|
||||
/* Nonmatching */
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARTICLE(JStudio::data::TEOperationData operation, const void* r5, u32) {
|
||||
switch (operation) {
|
||||
case JStudio::data::UNK_0x19:
|
||||
_188 = *(int*)r5;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* 80279C40-80279CA4 .text adaptor_do_PARENT__Q217JStudio_JParticle17TAdaptor_particleFQ37JStudio4data15TEOperationDataPCvUl */
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT(JStudio::data::TEOperationData, const void*, unsigned long) {
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT(JStudio::data::TEOperationData operation, const void* param_2, u32) {
|
||||
/* Nonmatching */
|
||||
switch (operation) {
|
||||
case JStudio::data::UNK_0x18:
|
||||
_19C = NULL;
|
||||
JStage::TObject* object = NULL;
|
||||
if (mSystem->JSGFindObject((const char*)param_2, JStage::TOBJ_ACTOR_UNK) == 0) {
|
||||
_19C = object;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* 80279CA4-80279D24 .text adaptor_do_PARENT_NODE__Q217JStudio_JParticle17TAdaptor_particleFQ37JStudio4data15TEOperationDataPCvUl */
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_NODE(JStudio::data::TEOperationData, const void*, unsigned long) {
|
||||
/* Nonmatching */
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_NODE(JStudio::data::TEOperationData operation, const void* param_2, u32) {
|
||||
switch (operation) {
|
||||
case JStudio::data::UNK_0x18:
|
||||
if (_19C != NULL) {
|
||||
_1A0 = _19C->JSGFindNodeID((const char*)param_2);
|
||||
if (_1A0 == 0xFFFFFFFF) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case JStudio::data::UNK_0x19:
|
||||
_1A0 = *(u32*)param_2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* 80279D24-80279D40 .text adaptor_do_PARENT_ENABLE__Q217JStudio_JParticle17TAdaptor_particleFQ37JStudio4data15TEOperationDataPCvUl */
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_ENABLE(JStudio::data::TEOperationData, const void*, unsigned long) {
|
||||
/* Nonmatching */
|
||||
void JStudio_JParticle::TAdaptor_particle::adaptor_do_PARENT_ENABLE(JStudio::data::TEOperationData operation, const void* param_2, u32 param_3) {
|
||||
switch (operation) {
|
||||
case JStudio::data::UNK_0x2:
|
||||
_1A4 = *(u32*)param_2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* 80279D40-80279E2C .text __cl__Q317JStudio_JParticle17TAdaptor_particle21TVVOOn_BEGIN_FADE_IN_CFfPQ27JStudio8TAdaptor */
|
||||
void JStudio_JParticle::TAdaptor_particle::TVVOOn_BEGIN_FADE_IN_::operator()(float, JStudio::TAdaptor*) const {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 80279D40-80279E2C .text __cl__Q317JStudio_JParticle17TAdaptor_particle21TVVOOn_BEGIN_FADE_IN_CFfPQ27JStudio8TAdaptor */
|
||||
// void JStudio_JParticle::TAdaptor_particle::TVVOOn_BEGIN_FADE_IN_::operator()(float, JStudio::TAdaptor*) const {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 80279E2C-80279F08 .text __cl__Q317JStudio_JParticle17TAdaptor_particle20TVVOOn_END_FADE_OUT_CFfPQ27JStudio8TAdaptor */
|
||||
void JStudio_JParticle::TAdaptor_particle::TVVOOn_END_FADE_OUT_::operator()(float, JStudio::TAdaptor*) const {
|
||||
/* Nonmatching */
|
||||
}
|
||||
// /* 80279E2C-80279F08 .text __cl__Q317JStudio_JParticle17TAdaptor_particle20TVVOOn_END_FADE_OUT_CFfPQ27JStudio8TAdaptor */
|
||||
// void JStudio_JParticle::TAdaptor_particle::TVVOOn_END_FADE_OUT_::operator()(float, JStudio::TAdaptor*) const {
|
||||
// /* Nonmatching */
|
||||
// }
|
||||
|
||||
/* 80279F08-8027A2B8 .text execute__Q317JStudio_JParticle17TAdaptor_particle13TJPACallback_FP14JPABaseEmitter */
|
||||
void JStudio_JParticle::TAdaptor_particle::TJPACallback_::execute(JPABaseEmitter*) {
|
||||
void JStudio_JParticle::TAdaptor_particle::TJPACallback_::execute(JPABaseEmitter* emitter) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
bool check = false;
|
||||
if (emitter->isEnableDeleteEmitter()) {
|
||||
check = true;
|
||||
}
|
||||
|
||||
/* 8027A2B8-8027A318 .text __dt__Q317JStudio_JParticle17TAdaptor_particle20TVVOOn_END_FADE_OUT_Fv */
|
||||
JStudio_JParticle::TAdaptor_particle::TVVOOn_END_FADE_OUT_::~TVVOOn_END_FADE_OUT_() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
if (check) {
|
||||
mAdaptor->mEmitterManager->forceDeleteEmitter(emitter);
|
||||
mAdaptor->mEmitter = NULL;
|
||||
mAdaptor->_18C = 0;
|
||||
mAdaptor->_190 = 0;
|
||||
mAdaptor->_194 = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
/* 8027A318-8027A378 .text __dt__Q317JStudio_JParticle17TAdaptor_particle21TVVOOn_BEGIN_FADE_IN_Fv */
|
||||
JStudio_JParticle::TAdaptor_particle::TVVOOn_BEGIN_FADE_IN_::~TVVOOn_BEGIN_FADE_IN_() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
f64 val1 = mAdaptor->_190; // u32 stored as f64
|
||||
f64 val2 = mAdaptor->_194; // u32 stored as f64
|
||||
|
||||
f64 alpha = 1.0;
|
||||
switch (mAdaptor->_18C) {
|
||||
case 1:
|
||||
alpha = val2 / val1;
|
||||
break;
|
||||
case 3:
|
||||
alpha = (val1 - val2) / val1;
|
||||
break;
|
||||
}
|
||||
|
||||
const JStudio::TControl* ctrl = static_cast<const JStudio::TControl*>(mObject->getControl()); // r28
|
||||
|
||||
Vec srts[3]; // 0x64
|
||||
mAdaptor->adaptor_getVariableValue_Vec(&srts[2], sauVariableValue_3_TRANSLATION_XYZ);
|
||||
mAdaptor->adaptor_getVariableValue_Vec(&srts[1], sauVariableValue_3_ROTATION_XYZ);
|
||||
mAdaptor->adaptor_getVariableValue_Vec(&srts[0], sauVariableValue_3_SCALING_XYZ);
|
||||
|
||||
Vec* pos; // r29
|
||||
|
||||
if (!mAdaptor->_1A4) {
|
||||
if (!ctrl->transformOnGet_isEnabled()) {
|
||||
pos = srts;
|
||||
} else {
|
||||
Vec outVec[3];
|
||||
PSMTXMultVec(ctrl->transformOnSet_getMatrix(), &srts[2], &outVec[0]);
|
||||
outVec[1].x = srts[1].x;
|
||||
outVec[1].y = ctrl->transformOnSet_getRotationY() + srts[1].y;
|
||||
outVec[1].z = srts[1].z;
|
||||
pos = outVec;
|
||||
}
|
||||
emitter->setGlobalTranslation(pos[0]);
|
||||
|
||||
emitter->setGlobalRotation(JGeometry::TVec3<s16>(65536.0 * (pos[1].x / 360.0), 65536.0 * (pos[1].y / 360.0), 65536.0 * (pos[1].z / 360.0)));
|
||||
JGeometry::TVec3<f32> scaleVec(((JGeometry::TVec3<f32>*)pos)[2]);
|
||||
emitter->setGlobalScale(scaleVec);
|
||||
} else {
|
||||
Mtx mtx1;
|
||||
JStudio::math::getTransformation_SRxyzT(mtx1, srts[0], srts[1], srts[2]);
|
||||
Mtx mtx2;
|
||||
MTXConcat(NULL, mtx1, mtx2);
|
||||
emitter->setGlobalSRTMatrix(mtx2);
|
||||
}
|
||||
|
||||
GXColor color;
|
||||
mAdaptor->adaptor_getVariableValue_GXColor(&color, sauVariableValue_4_COLOR_RGBA);
|
||||
emitter->setGlobalPrmColor(color.r, color.g, color.b);
|
||||
|
||||
alpha *= (f64)color.a;
|
||||
u8 emitAlpha = 255;
|
||||
if (alpha < 255.0) {
|
||||
emitAlpha = (u8)alpha;
|
||||
}
|
||||
|
||||
emitter->setGlobalAlpha(emitAlpha);
|
||||
|
||||
mAdaptor->adaptor_getVariableValue_GXColor(&color, sauVariableValue_4_COLOR1_RGBA);
|
||||
emitter->setGlobalEnvColor(color.r, color.g, color.b);
|
||||
}
|
||||
|
||||
@@ -35,14 +35,10 @@ void daObjPbka_c::CreateInit() {
|
||||
|
||||
/* 000001CC-0000024C .text set_mtx__11daObjPbka_cFv */
|
||||
void daObjPbka_c::set_mtx() {
|
||||
J3DModel* model;
|
||||
model = mpModel;
|
||||
model->mBaseScale.x = mScale.x;
|
||||
model->mBaseScale.y = mScale.y;
|
||||
model->mBaseScale.z = mScale.z;
|
||||
mDoMtx_trans(mDoMtx_stack_c::get(), current.pos.x, current.pos.y, current.pos.z);
|
||||
mDoMtx_YrotM(mDoMtx_stack_c::get(), current.angle.y);
|
||||
mDoMtx_copy(mDoMtx_stack_c::get(), mpModel->mBaseTransformMtx);
|
||||
mpModel->setBaseScale(mScale);
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::YrotM(current.angle.y);
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
}
|
||||
|
||||
s32 daObjPbka_c::_create() {
|
||||
|
||||
Reference in New Issue
Block a user