1#ifndef SEAD_PTCL_SYSTEM_H_
2#define SEAD_PTCL_SYSTEM_H_
4#include <gfx/seadColor.h>
5#include <gfx/seadGraphics.h>
6#include <heap/seadHeap.h>
7#include <heap/seadHeapMgr.h>
8#include <math/seadMatrix.h>
9#include <time/seadTickTime.h>
30 ViewerSystem(nw::eft::Heap* heap, nw::eft::Heap* connectionHeap, nw::eft::System* system);
45 m_ViewerCenter = viewerCenter;
50 m_ViewerColor.Set(r, g, b, a);
100static_assert(
sizeof(
Config) == 0x30);
114 void*
Alloc(u32 size, s32 alignment)
override
116 return mpHeap->alloc(size, alignment);
127static_assert(
sizeof(
Heap) == 8,
"sead::ptcl::Heap size mismatch");
134 unkParam1Max = 100.0f;
135 unkParam2Max = 10.0f;
137 unkParam4Max = 10.0f;
144 unkParam1Meta .format(
"Min=%5.1f,Max=%5.1f", -unkParam1Max, unkParam1Max);
145 unkParam1PositiveMeta .format(
"Min=0,Max=%5.1f", unkParam1Max);
146 unkParam3Meta .format(
"Min=%5.1f,Max=%5.1f", -unkParam3Max, unkParam3Max);
147 unkParam3PositiveMeta .format(
"Min=0,Max=%5.1f", unkParam3Max);
148 unkParam3PositiveFractionMeta .format(
"Min=0,Max=%5.1f", unkParam3Max / 10.0f);
149 unkParam2Meta .format(
"Min=%5.1f,Max=%5.1f,Menu=True,MenuDefault=Auto", -unkParam2Max, unkParam2Max);
150 unkParam2PositiveMeta .format(
"Min=0,Max=%5.1f,Menu=True,MenuDefault=Auto", unkParam2Max);
151 unkParam4Meta .format(
"Min=%5.1f,Max=%5.1f,Menu=True,MenuDefault=Auto", -unkParam4Max, unkParam4Max);
152 unkParam4PositiveMeta .format(
"Min=0,Max=%5.1f,Menu=True,MenuDefault=Auto", unkParam4Max);
153 unkParam5Meta .format(
"Min=0,Max=%d", unkParam5Max);
154 unkParam5NonZeroMeta .format(
"Min=1,Max=%d", unkParam5Max);
155 unkParam1DisableMeta .format(
"%s,IsEnable=False", unkParam1Meta.cstr());
156 unkParam1PositiveDisableMeta .format(
"%s,IsEnable=False", unkParam1PositiveMeta.cstr());
157 unkParam3PositiveDisableMeta .format(
"%s,IsEnable=False", unkParam3PositiveMeta.cstr());
158 unkParam2DisableMeta .format(
"%s,IsEnable=False", unkParam2Meta.cstr());
159 unkParam4DisableMeta .format(
"%s,IsEnable=False", unkParam4Meta.cstr());
160 unkParam4PositiveDisableMeta .format(
"%s,IsEnable=False", unkParam4PositiveMeta.cstr());
161 unkParam5DisableMeta .format(
"%s,IsEnable=False", unkParam5Meta.cstr());
162 unkParam2PositiveDisableMeta .format(
"%s,IsEnable=False", unkParam2PositiveMeta.cstr());
163 unkParam5NonZeroDisableMeta .format(
"%s,IsEnable=False", unkParam5NonZeroMeta.cstr());
164 unkParam3PositiveWithMenuMeta .format(
"%s,Menu=True,MenuDefault=Auto", unkParam3PositiveMeta.cstr());
165 unkParam5ScaledMeta .format(
"Min=0,Max=%d", unkParam5Max * 10);
166 unkParam5ScaledNonZeroMeta .format(
"Min=1,Max=%d", unkParam5Max * 10);
167 unkParam5ScaledDisableMeta .format(
"%s,IsEnable=False", unkParam5ScaledMeta.cstr());
168 unkParam5ScaledNonZeroDisableMeta.format(
"%s,IsEnable=False", unkParam5ScaledNonZeroMeta.cstr());
211 mCenter = Matrix34f::ident;
212 _8cc = Matrix34f::ident;
216 for (s32 i = 0; i < 16; i++)
217 _900[i].format(
"[%d]", i);
222 mColor.setf(1.0f, 1.0f, 1.0f, 1.0f);
237 p_system->SetViewerCenter(
reinterpret_cast<
const nw::math::Matrix34&>(center.a[0]));
242 if (p_system !=
nullptr)
243 p_system->SetViewerColor(r, g, b, a);
258static_assert(
sizeof(
PtclEditorInterface) == 0xE58,
"sead::ptcl::PtclEditorInterface size mismatch");
267 Initialize(&
mHeap, config);
273 mpViewerSys =
new nw::eftvw::ViewerSystem(&mViewerSysHeap, &mViewerSysHeap,
this);
281 std::memset(mSeadHeapArray, 0,
sizeof(::sead::Heap*) * config.GetResourceNum());
326 return mEditorInterface;
331 return mEditorInterface;
340 EntryResource(&heap_, resource, resId);
353 ClearResource(&heap, resId);
363 bool createEmitterSetID(nw::eft::Handle* handle,
const Vector3f& pos, s32 emitterSetID, s32 resourceID = 0, s32 groupID = 0, u32 emitterMask = 0xffffffff)
365 return CreateEmitterSetID(handle,
reinterpret_cast<
const nw::math::VEC3&>(pos.x), emitterSetID, resourceID, u8(groupID), emitterMask);
368 bool createEmitterSetID(nw::eft::Handle* handle,
const Matrix34f& mtx, s32 emitterSetID, s32 resourceID = 0, s32 groupID = 0, u32 emitterMask = 0xffffffff)
370 return CreateEmitterSetID(handle,
reinterpret_cast<
const nw::math::MTX34&>(mtx.a[0]), emitterSetID, resourceID, u8(groupID), emitterMask);
376 CalcEmitter(u8(groupID), frameRate);
391 mEditorInterface.applyViewerCenter(mpViewerSys);
392 mEditorInterface.applyViewerColor(mpViewerSys);
416static_assert(
sizeof(
PtclSystem) == 0x18B0,
"sead::ptcl::PtclSystem size mismatch");
Definition seadPtclSystem.h:28
bool ProcCalc(f32 frameRate)
u32 _a68[(0x13CC - 0xA68)/sizeof(u32)]
Definition seadPtclSystem.h:60
nw::math::Matrix34 m_ViewerCenter
Definition seadPtclSystem.h:58
void SetViewerColor(f32 r, f32 g, f32 b, f32 a)
Definition seadPtclSystem.h:48
bool m_IsPaused
Definition seadPtclSystem.h:56
void UnbindResource(u32 resourceId)
bool IsPause()
Definition seadPtclSystem.h:38
u32 _0[0xA14/sizeof(u32)]
Definition seadPtclSystem.h:54
bool m_DoLoop
Definition seadPtclSystem.h:55
ViewerSystem(nw::eft::Heap *heap, nw::eft::Heap *connectionHeap, nw::eft::System *system)
nw::ut::FloatColor m_ViewerColor
Definition seadPtclSystem.h:59
u32 _a18[(0xA28 - 0xA18)/sizeof(u32)]
Definition seadPtclSystem.h:57
void SetViewerCenter(nw::math::Matrix34 viewerCenter)
Definition seadPtclSystem.h:43
Definition seadHeapMgr.h:117
CurrentHeapSetter(Heap *heap)
Definition seadHeapMgr.h:119
Definition seadSafeString.h:421
Definition seadGraphics.h:17
static Graphics * instance()
Definition seadGraphics.h:151
void unlockDrawContext()
Definition seadGraphics.cpp:31
void lockDrawContext()
Definition seadGraphics.cpp:13
void setEnableLock(bool enable_lock)
Definition seadHeap.h:84
virtual void free(void *ptr)=0
Definition seadPtclSystem.h:75
u8 _2b
Definition seadPtclSystem.h:96
u8 _29
Definition seadPtclSystem.h:94
u8 _2d
Definition seadPtclSystem.h:98
::sead::Heap * mpHeap
Definition seadPtclSystem.h:91
u8 _2c
Definition seadPtclSystem.h:97
::sead::Heap * mpViewerSysHeap
Definition seadPtclSystem.h:92
u8 _28
Definition seadPtclSystem.h:93
u8 _2a
Definition seadPtclSystem.h:95
Config()
Definition seadPtclSystem.h:77
Definition seadPtclSystem.h:103
Heap()
Definition seadPtclSystem.h:105
void Free(void *ptr) override
Definition seadPtclSystem.h:119
::sead::Heap * mpHeap
Definition seadPtclSystem.h:125
Heap(::sead::Heap *heap)
Definition seadPtclSystem.h:109
void * Alloc(u32 size, s32 alignment) override
Definition seadPtclSystem.h:114
Definition seadPtclSystem.h:206
PtclWorldScale mWorldScale
Definition seadPtclSystem.h:249
static void setViewerColor(nw::eftvw::ViewerSystem *p_system, f32 r, f32 g, f32 b, f32 a)
Definition seadPtclSystem.h:240
Matrix34f _8cc
Definition seadPtclSystem.h:253
Color4f mColor
Definition seadPtclSystem.h:251
void applyViewerCenter(nw::eftvw::ViewerSystem *p_system)
Definition seadPtclSystem.h:225
void applyViewerColor(nw::eftvw::ViewerSystem *p_system)
Definition seadPtclSystem.h:230
u32 _4
Definition seadPtclSystem.h:248
PtclEditorInterface()
Definition seadPtclSystem.h:208
u32 _8c8
Definition seadPtclSystem.h:252
f32 _8fc
Definition seadPtclSystem.h:254
Matrix34f mCenter
Definition seadPtclSystem.h:250
FixedSafeString< 64 > _900[16]
Definition seadPtclSystem.h:255
static void setViewerCenter(nw::eftvw::ViewerSystem *p_system, const Matrix34f ¢er)
Definition seadPtclSystem.h:235
u32 _0[4/sizeof(u32)]
Definition seadPtclSystem.h:247
FixedSafeString< 64 > _dc0[2]
Definition seadPtclSystem.h:256
Definition seadPtclSystem.h:261
Heap mHeap
Definition seadPtclSystem.h:407
Heap _a40
Definition seadPtclSystem.h:409
PtclEditorInterface & getEditorInterface()
Definition seadPtclSystem.h:324
Heap & getViewerSysEftHeap()
Definition seadPtclSystem.h:309
Heap & getEftHeap()
Definition seadPtclSystem.h:294
u8 _a48[4]
Definition seadPtclSystem.h:410
::sead::Heap * getViewerSysHeap() const
Definition seadPtclSystem.h:304
::sead::Heap * getHeap() const
Definition seadPtclSystem.h:289
PtclEditorInterface mEditorInterface
Definition seadPtclSystem.h:413
nw::eftvw::ViewerSystem * mpViewerSys
Definition seadPtclSystem.h:412
PtclSystem(const Config &config)
Definition seadPtclSystem.h:263
bool createEmitterSetID(nw::eft::Handle *handle, const Vector3f &pos, s32 emitterSetID, s32 resourceID=0, s32 groupID=0, u32 emitterMask=0xffffffff)
Definition seadPtclSystem.h:363
void calcEmitter(s32 groupID, f32 frameRate=1.0f)
Definition seadPtclSystem.h:373
const Heap & getViewerSysEftHeap() const
Definition seadPtclSystem.h:314
const TickTime & getCreationTime() const
Definition seadPtclSystem.h:284
void clearResource(s32 resId)
Definition seadPtclSystem.h:345
nw::eftvw::ViewerSystem * getViewerSys() const
Definition seadPtclSystem.h:319
void entryResource(::sead::Heap *heap, void *resource, s32 resId)
Definition seadPtclSystem.h:334
TickTime mTime
Definition seadPtclSystem.h:406
::sead::Heap ** mSeadHeapArray
Definition seadPtclSystem.h:411
const PtclEditorInterface & getEditorInterface() const
Definition seadPtclSystem.h:329
::sead::Heap * getResourceHeap(s32 resId) const
Definition seadPtclSystem.h:358
u8 _18ac[4]
Definition seadPtclSystem.h:414
void beginFrame()
Definition seadPtclSystem.h:385
Heap mViewerSysHeap
Definition seadPtclSystem.h:408
const Heap & getEftHeap() const
Definition seadPtclSystem.h:299
Definition seadPtclSystem.h:130
FixedSafeString< 64 > unkParam3Meta
Definition seadPtclSystem.h:179
FixedSafeString< 96 > unkParam4Meta
Definition seadPtclSystem.h:185
FixedSafeString< 64 > unkParam3PositiveDisableMeta
Definition seadPtclSystem.h:191
FixedSafeString< 96 > unkParam2DisableMeta
Definition seadPtclSystem.h:192
FixedSafeString< 64 > unkParam1PositiveMeta
Definition seadPtclSystem.h:178
f32 unkParam2Max
Definition seadPtclSystem.h:173
FixedSafeString< 64 > unkParam5NonZeroDisableMeta
Definition seadPtclSystem.h:197
FixedSafeString< 64 > unkParam5DisableMeta
Definition seadPtclSystem.h:196
void update()
Definition seadPtclSystem.h:142
FixedSafeString< 96 > unkParam2PositiveMeta
Definition seadPtclSystem.h:184
f32 unkParam1Max
Definition seadPtclSystem.h:172
FixedSafeString< 64 > unkParam5NonZeroMeta
Definition seadPtclSystem.h:188
FixedSafeString< 64 > unkParam4DisableMeta
Definition seadPtclSystem.h:194
FixedSafeString< 64 > unkParam5ScaledMeta
Definition seadPtclSystem.h:198
FixedSafeString< 96 > unkParam4PositiveMeta
Definition seadPtclSystem.h:186
FixedSafeString< 96 > unkParam2Meta
Definition seadPtclSystem.h:183
FixedSafeString< 64 > unkParam1Meta
Definition seadPtclSystem.h:177
FixedSafeString< 64 > unkParam5ScaledNonZeroDisableMeta
Definition seadPtclSystem.h:201
FixedSafeString< 96 > unkParam3PositiveWithMenuMeta
Definition seadPtclSystem.h:182
f32 unkParam3Max
Definition seadPtclSystem.h:174
PtclWorldScale()
Definition seadPtclSystem.h:132
FixedSafeString< 64 > unkParam3PositiveFractionMeta
Definition seadPtclSystem.h:181
f32 unkParam4Max
Definition seadPtclSystem.h:175
s32 unkParam5Max
Definition seadPtclSystem.h:176
FixedSafeString< 64 > unkParam5ScaledDisableMeta
Definition seadPtclSystem.h:200
FixedSafeString< 64 > unkParam3PositiveMeta
Definition seadPtclSystem.h:180
FixedSafeString< 96 > unkParam4PositiveDisableMeta
Definition seadPtclSystem.h:195
FixedSafeString< 64 > unkParam1PositiveDisableMeta
Definition seadPtclSystem.h:190
FixedSafeString< 96 > unkParam2PositiveDisableMeta
Definition seadPtclSystem.h:193
FixedSafeString< 64 > unkParam1DisableMeta
Definition seadPtclSystem.h:189
FixedSafeString< 64 > unkParam5ScaledNonZeroMeta
Definition seadPtclSystem.h:199
FixedSafeString< 64 > unkParam5Meta
Definition seadPtclSystem.h:187
Definition seadPtclSystem.h:13
Definition seadPtclSystem.h:66
@ cEftMaxGroup
Definition seadPtclSystem.h:70
@ cEftViewerGroupID
Definition seadPtclSystem.h:71
Definition seadAssert.h:44
Vector3< f32 > Vector3f
Definition seadVector.h:239
Matrix34< f32 > Matrix34f
Definition seadMatrix.h:342