New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
Model.h
Go to the documentation of this file.
1#pragma once
2
3#include <graphics/Animation.h>
4#include <graphics/Material.h>
5#include <graphics/RenderObj.h>
6#include <graphics/RenderObjLayer.h>
7
8#include <geom/seadSphere.h>
9#include <heap/seadDisposer.h>
10#include <shadow/aglDepthShadow.h>
11
12class ModelResource;
13
14class Model : public RenderObj, public sead::IDisposer // vtbl Address: 0x100BC908
15{
16 // getRuntimeTypeInfoStatic()::typeInfo initialization guard variable Address: 0x101E9D08
17 // getRuntimeTypeInfoStatic()::typeInfo Address: 0x101E9F9C
18 SEAD_RTTI_OVERRIDE(Model, RenderObj)
19
20public:
27
28public:
29 // Address: 0x024EE298
31 // Address: 0x024EE230
33
34 // Apply animations (e.g., skeletal/bone animations to the local space of bones)
35 // Can also be reinterpreted as "calcLocal"
36 virtual void calcAnm() = 0;
37 // Do world-space calculations
38 // Can also be reinterpreted as "calcWorld"
39 virtual void calcMdl() = 0;
40
41 virtual void setBaseModelMtx(const sead::Matrix34f& mtx) = 0;
42 virtual const sead::Matrix34f& getBaseModelMtx() const = 0;
43 virtual void setLocalScale(const sead::Vector3f& scale) = 0;
44 virtual const sead::Vector3f& getLocalScale() const = 0;
45 virtual bool hasOpa() const = 0;
46 virtual bool hasXlu() const = 0;
47 virtual s32 searchBoneIndex(const sead::SafeString& name) const = 0;
48 virtual const char* getBoneName(s32 index) const = 0;
49 virtual u32 getBoneNum() const = 0;
50 virtual void setBoneLocalMatrix(s32 index, const sead::Matrix34f& rt, const sead::Vector3f& scale) = 0;
51 virtual void getBoneLocalMatrix(s32 index, sead::Matrix34f* rt, sead::Vector3f* scale) const = 0;
52 virtual void setBoneWorldMatrix(s32 index, const sead::Matrix34f& mtx) = 0;
53 virtual void getBoneWorldMatrix(s32 index, sead::Matrix34f* mtx) const = 0;
54 virtual void setBoneVisible(s32 index, bool visible) = 0;
55 virtual bool isBoneVisible(s32 index) const = 0;
56 virtual u32 getMaterialNum() const = 0;
57 virtual s32 searchMaterialIndex(const sead::SafeString& name) const = 0;
58 virtual const char* getMaterialName(s32 index) const = 0;
59 virtual Material* getMaterial(s32 index) const = 0;
60 virtual void setMaterialVisible(s32 index, bool visible) = 0;
61 virtual bool isMaterialVisible(s32 index) const = 0;
62 virtual void setBoundingEnable(bool enable) = 0;
63 virtual bool isBoundingEnable() const = 0;
64 virtual const sead::Sphere3f& getBounding() const = 0;
65 virtual void calcViewShapeShadowFlags(agl::sdw::DepthShadow* depth_shadow, RenderObjLayerBase* shadow_layer, RenderObjRenderMgr* render_mgr) = 0;
66 virtual sead::SafeString getName() const = 0;
67 virtual void setSklAnimBlendWeight(s32 index, f32 weight) = 0;
68 virtual f32 getSklAnimBlendWeight(s32 index) const = 0;
69 virtual void setSklAnim(s32 index, Animation* anim) = 0;
70 virtual void setTexAnim(s32 index, Animation* anim) = 0;
71 virtual void setShuAnim(s32 index, Animation* anim) = 0;
72 virtual void setVisAnim(s32 index, Animation* anim) = 0;
73 virtual void setShaAnim(s32 index, Animation* anim) = 0;
74 virtual Animation* const* getSklAnims() const = 0;
75 virtual Animation* const* getTexAnims() const = 0;
76 virtual Animation* const* getShuAnims() const = 0;
77 virtual Animation* const* getVisAnims() const = 0;
78 virtual Animation* const* getShaAnims() const = 0;
79
80 s32 getOpaRenderPass() const { return mOpaRenderPass; }
81 s32 getXluRenderPass() const { return mXluRenderPass; }
82
83 void setOpaRenderPass(s32 index) { mOpaRenderPass = index; }
84 void setXluRenderPass(s32 index) { mXluRenderPass = index; }
85
86protected:
89};
90static_assert(sizeof(Model) == 0x28);
91
93{
94public:
95 // Address: 0x024EE440
96 static Model* createG3d(const ModelResource& res, const sead::SafeString& name, s32 num_skl_anim, s32 num_tex_anim, s32 num_shu_anim, s32 num_vis_anim, s32 num_sha_anim, Model::BoundingMode bounding_mode, sead::Heap* heap);
97 // Address: 0x024EE320
98 static Model* createG3d(const ModelResource& res, const sead::SafeString& name, s32 num_view, s32 num_skl_anim, s32 num_tex_anim, s32 num_shu_anim, s32 num_vis_anim, s32 num_sha_anim, Model::BoundingMode bounding_mode, sead::Heap* heap);
99
100 // Address: 0x024EE49C
101 static void getBoneLocalMatrix(const Model& model, s32 index, sead::Matrix34f* mtx); // SRT
102};
Definition ModelResource.h:13
Definition Model.h:93
static Model * createG3d(const ModelResource &res, const sead::SafeString &name, s32 num_skl_anim, s32 num_tex_anim, s32 num_shu_anim, s32 num_vis_anim, s32 num_sha_anim, Model::BoundingMode bounding_mode, sead::Heap *heap)
static Model * createG3d(const ModelResource &res, const sead::SafeString &name, s32 num_view, s32 num_skl_anim, s32 num_tex_anim, s32 num_shu_anim, s32 num_vis_anim, s32 num_sha_anim, Model::BoundingMode bounding_mode, sead::Heap *heap)
static void getBoneLocalMatrix(const Model &model, s32 index, sead::Matrix34f *mtx)
Definition Model.h:15
virtual void setBoundingEnable(bool enable)=0
virtual u32 getBoneNum() const =0
virtual void setSklAnimBlendWeight(s32 index, f32 weight)=0
s32 getOpaRenderPass() const
Definition Model.h:80
virtual void setShuAnim(s32 index, Animation *anim)=0
s32 getXluRenderPass() const
Definition Model.h:81
virtual bool hasOpa() const =0
virtual void calcMdl()=0
virtual Animation *const * getShaAnims() const =0
virtual void calcViewShapeShadowFlags(agl::sdw::DepthShadow *depth_shadow, RenderObjLayerBase *shadow_layer, RenderObjRenderMgr *render_mgr)=0
virtual f32 getSklAnimBlendWeight(s32 index) const =0
virtual const sead::Matrix34f & getBaseModelMtx() const =0
virtual void setBaseModelMtx(const sead::Matrix34f &mtx)=0
virtual const char * getBoneName(s32 index) const =0
virtual void setSklAnim(s32 index, Animation *anim)=0
virtual void setVisAnim(s32 index, Animation *anim)=0
virtual sead::SafeString getName() const =0
virtual void setBoneVisible(s32 index, bool visible)=0
virtual bool isBoneVisible(s32 index) const =0
virtual Animation *const * getVisAnims() const =0
virtual const sead::Vector3f & getLocalScale() const =0
virtual bool hasXlu() const =0
virtual bool isMaterialVisible(s32 index) const =0
virtual Material * getMaterial(s32 index) const =0
virtual s32 searchMaterialIndex(const sead::SafeString &name) const =0
virtual bool isBoundingEnable() const =0
void setXluRenderPass(s32 index)
Definition Model.h:84
virtual void setShaAnim(s32 index, Animation *anim)=0
virtual Animation *const * getShuAnims() const =0
virtual const char * getMaterialName(s32 index) const =0
virtual void setBoneLocalMatrix(s32 index, const sead::Matrix34f &rt, const sead::Vector3f &scale)=0
virtual void calcAnm()=0
~Model() override
virtual void getBoneWorldMatrix(s32 index, sead::Matrix34f *mtx) const =0
virtual s32 searchBoneIndex(const sead::SafeString &name) const =0
virtual const sead::Sphere3f & getBounding() const =0
void setOpaRenderPass(s32 index)
Definition Model.h:83
s32 mOpaRenderPass
Definition Model.h:87
virtual Animation *const * getTexAnims() const =0
virtual Animation *const * getSklAnims() const =0
virtual u32 getMaterialNum() const =0
virtual void setBoneWorldMatrix(s32 index, const sead::Matrix34f &mtx)=0
virtual void setTexAnim(s32 index, Animation *anim)=0
virtual void getBoneLocalMatrix(s32 index, sead::Matrix34f *rt, sead::Vector3f *scale) const =0
virtual void setMaterialVisible(s32 index, bool visible)=0
s32 mXluRenderPass
Definition Model.h:88
virtual void setLocalScale(const sead::Vector3f &scale)=0