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
14// vtbl Address: 0x100BC908
15class Model : public RenderObj, public sead::IDisposer
16{
17 // getRuntimeTypeInfoStatic()::typeInfo initialization guard variable Address: 0x101E9D08
18 // getRuntimeTypeInfoStatic()::typeInfo Address: 0x101E9F9C
19 SEAD_RTTI_OVERRIDE(Model, RenderObj)
20
21public:
28
29public:
30 // Address: 0x024EE298
32 // Address: 0x024EE230
34
35 // Apply animations (e.g., skeletal/bone animations to the local space of bones)
36 // Can also be reinterpreted as "calcLocal"
37 virtual void calcAnm() = 0;
38 // Do world-space calculations
39 // Can also be reinterpreted as "calcWorld"
40 virtual void calcMdl() = 0;
41
42 virtual void setBaseModelMtx(const sead::Matrix34f& mtx) = 0;
43 virtual const sead::Matrix34f& getBaseModelMtx() const = 0;
44 virtual void setLocalScale(const sead::Vector3f& scale) = 0;
45 virtual const sead::Vector3f& getLocalScale() const = 0;
46 virtual bool hasOpa() const = 0;
47 virtual bool hasXlu() const = 0;
48 virtual s32 searchBoneIndex(const sead::SafeString& name) const = 0;
49 virtual const char* getBoneName(s32 index) const = 0;
50 virtual u32 getBoneNum() const = 0;
51 virtual void setBoneLocalMatrix(s32 index, const sead::Matrix34f& rt, const sead::Vector3f& scale) = 0;
52 virtual void getBoneLocalMatrix(s32 index, sead::Matrix34f* rt, sead::Vector3f* scale) const = 0;
53 virtual void setBoneWorldMatrix(s32 index, const sead::Matrix34f& mtx) = 0;
54 virtual void getBoneWorldMatrix(s32 index, sead::Matrix34f* mtx) const = 0;
55 virtual void setBoneVisible(s32 index, bool visible) = 0;
56 virtual bool isBoneVisible(s32 index) const = 0;
57 virtual u32 getMaterialNum() const = 0;
58 virtual s32 searchMaterialIndex(const sead::SafeString& name) const = 0;
59 virtual const char* getMaterialName(s32 index) const = 0;
60 virtual Material* getMaterial(s32 index) const = 0;
61 virtual void setMaterialVisible(s32 index, bool visible) = 0;
62 virtual bool isMaterialVisible(s32 index) const = 0;
63 virtual void setBoundingEnable(bool enable) = 0;
64 virtual bool isBoundingEnable() const = 0;
65 virtual const sead::Sphere3f& getBounding() const = 0;
66 virtual void calcViewShapeShadowFlags(agl::sdw::DepthShadow* depth_shadow, RenderObjLayerBase* shadow_layer, RenderObjRenderMgr* render_mgr) = 0;
67 virtual sead::SafeString getName() const = 0;
68 virtual void setSklAnimBlendWeight(s32 index, f32 weight) = 0;
69 virtual f32 getSklAnimBlendWeight(s32 index) const = 0;
70 virtual void setSklAnim(s32 index, Animation* anim) = 0;
71 virtual void setTexAnim(s32 index, Animation* anim) = 0;
72 virtual void setShuAnim(s32 index, Animation* anim) = 0;
73 virtual void setVisAnim(s32 index, Animation* anim) = 0;
74 virtual void setShaAnim(s32 index, Animation* anim) = 0;
75 virtual Animation* const* getSklAnims() const = 0;
76 virtual Animation* const* getTexAnims() const = 0;
77 virtual Animation* const* getShuAnims() const = 0;
78 virtual Animation* const* getVisAnims() const = 0;
79 virtual Animation* const* getShaAnims() const = 0;
80
81 s32 getOpaRenderPass() const { return mOpaRenderPass; }
82 s32 getXluRenderPass() const { return mXluRenderPass; }
83
84 void setOpaRenderPass(s32 index) { mOpaRenderPass = index; }
85 void setXluRenderPass(s32 index) { mXluRenderPass = index; }
86
87protected:
90};
91static_assert(sizeof(Model) == 0x28);
92
94{
95public:
96 // Address: 0x024EE440
97 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);
98 // Address: 0x024EE320
99 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);
100
101 // Address: 0x024EE49C
102 static void getBoneLocalMatrix(const Model& model, s32 index, sead::Matrix34f* mtx); // SRT
103};
Definition ModelResource.h:14
Definition Model.h:94
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:16
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:81
virtual void setShuAnim(s32 index, Animation *anim)=0
s32 getXluRenderPass() const
Definition Model.h:82
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:85
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:84
s32 mOpaRenderPass
Definition Model.h:88
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:89
virtual void setLocalScale(const sead::Vector3f &scale)=0