summaryrefslogtreecommitdiff
path: root/src/modelinfo/ClumpModelInfo.h
diff options
context:
space:
mode:
authoraap <aap@papnet.eu>2019-05-15 16:52:37 +0200
committeraap <aap@papnet.eu>2019-05-15 16:52:37 +0200
commit600bf0351476a5a21aabb5429132ddf7f52ac0b9 (patch)
treed8e48b3a581679e33830fb7c98ed69e1e242e2c2 /src/modelinfo/ClumpModelInfo.h
first commit
Diffstat (limited to 'src/modelinfo/ClumpModelInfo.h')
-rw-r--r--src/modelinfo/ClumpModelInfo.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/modelinfo/ClumpModelInfo.h b/src/modelinfo/ClumpModelInfo.h
new file mode 100644
index 00000000..909d241b
--- /dev/null
+++ b/src/modelinfo/ClumpModelInfo.h
@@ -0,0 +1,60 @@
+#pragma once
+
+#include "BaseModelInfo.h"
+
+struct RwObjectNameIdAssocation
+{
+ char *name;
+ int32 hierId;
+ uint32 flags;
+};
+
+struct RwObjectNameAssociation
+{
+ char *name;
+ RwFrame *frame;
+};
+
+struct RwObjectIdAssociation
+{
+ int32 id;
+ RwFrame *frame;
+};
+
+enum {
+ CLUMP_FLAG_NO_HIERID = 0x1,
+};
+
+
+class CClumpModelInfo : public CBaseModelInfo
+{
+public:
+ RpClump *m_clump;
+
+ CClumpModelInfo(void) : CBaseModelInfo(MITYPE_CLUMP) {}
+ CClumpModelInfo(ModeInfoType id) : CBaseModelInfo(id) {}
+ ~CClumpModelInfo() {}
+ void DeleteRwObject(void);
+ RwObject *CreateInstance(void);
+ RwObject *CreateInstance(RwMatrix *);
+ RwObject *GetRwObject(void) { return (RwObject*)m_clump; }
+
+ virtual void SetClump(RpClump *);
+
+ static RpAtomic *SetAtomicRendererCB(RpAtomic *atomic, void *data);
+ void SetFrameIds(RwObjectNameIdAssocation *assocs);
+ static RwFrame *FindFrameFromNameCB(RwFrame *frame, void *data);
+ static RwFrame *FindFrameFromNameWithoutIdCB(RwFrame *frame, void *data);
+ static RwFrame *FindFrameFromIdCB(RwFrame *frame, void *data);
+ static void FillFrameArray(RpClump *clump, RwFrame **frames);
+ static RwFrame *FillFrameArrayCB(RwFrame *frame, void *data);
+ static RwFrame *GetFrameFromId(RpClump *clump, int32 id);
+
+
+ void DeleteRwObject_(void) { this->CClumpModelInfo::DeleteRwObject(); }
+ RwObject *CreateInstance_1(void) { return this->CClumpModelInfo::CreateInstance(); }
+ RwObject *CreateInstance_2(RwMatrix *m) { return this->CClumpModelInfo::CreateInstance(m); }
+ RwObject *GetRwObject_(void) { return this->CClumpModelInfo::GetRwObject(); }
+ void SetClump_(RpClump *clump) { this->CClumpModelInfo::SetClump(clump); }
+};
+static_assert(sizeof(CClumpModelInfo) == 0x34, "CClumpModelInfo: error");