mirror of https://github.com/zeldaret/botw.git
gsys: Add (placeholder) ModelUnit fields
This commit is contained in:
parent
6ca1c6fd5a
commit
58a008dfca
|
@ -1 +1 @@
|
|||
Subproject commit bfc57251de9773694c8e59904cd65914f86047bf
|
||||
Subproject commit c0fd70ddd661f1b5064cd2a0c7ebee4d60e5eb2b
|
2
lib/agl
2
lib/agl
|
@ -1 +1 @@
|
|||
Subproject commit 0f55dfbaa9fcaf53e769cfc2cfc6e94187793e75
|
||||
Subproject commit 62c3993c8ef9cd25b74281ad73d6f5f385048b9e
|
|
@ -1,6 +1,9 @@
|
|||
#pragma once
|
||||
|
||||
#include <gsys/gsysModelUnit.h>
|
||||
#include <nn/g3d/ModelObj.h>
|
||||
#include <nn/gfx/memory.h>
|
||||
#include <prim/seadDelegate.h>
|
||||
|
||||
namespace agl {
|
||||
class DrawContext;
|
||||
|
@ -8,6 +11,10 @@ class DrawContext;
|
|||
|
||||
namespace gsys {
|
||||
|
||||
class ModelAutoAnimation;
|
||||
class ModelDynamicEnvInfo;
|
||||
class ModelRenderUnitNW;
|
||||
|
||||
// XXX: bad name. This doesn't reflect the fact that ModelNW is a ModelUnit, not a Model.
|
||||
// TODO
|
||||
class ModelNW : public ModelUnit,
|
||||
|
@ -15,15 +22,47 @@ class ModelNW : public ModelUnit,
|
|||
public sead::hostio::Node {
|
||||
SEAD_RTTI_OVERRIDE(ModelNW, ModelUnit)
|
||||
|
||||
public:
|
||||
struct BoneCallbackArg;
|
||||
|
||||
using BoneCallback = sead::IDelegate1<BoneCallbackArg*>;
|
||||
using BoneCallbackStorage = sead::AnyDelegate1<BoneCallbackArg*>;
|
||||
|
||||
const nn::g3d::SkeletonObj* getSkeletonObj() const { return mModelObj.GetSkeleton(); }
|
||||
|
||||
protected:
|
||||
virtual void drawDetail(agl::DrawContext* context) const;
|
||||
virtual void createRenderUnitNW(int, sead::Heap* heap);
|
||||
|
||||
protected:
|
||||
virtual void calcBounding_(); // NOLINT(bugprone-virtual-near-miss)
|
||||
virtual void calcGPUSkinning_();
|
||||
|
||||
void Exec(nn::g3d::ICalculateWorldCallback::CallbackArg& arg,
|
||||
nn::g3d::WorldMtxManip& world_mtx_manip) override;
|
||||
|
||||
private:
|
||||
u8 _168;
|
||||
nn::g3d::ModelObj mModelObj;
|
||||
u8 _200;
|
||||
u8 _201;
|
||||
s8 mBufferNum;
|
||||
u8 _203;
|
||||
u8 _204;
|
||||
u8 _205;
|
||||
u8 _206;
|
||||
u8 _207;
|
||||
u32 _208;
|
||||
ModelRenderUnitNW** mRenderUnits;
|
||||
ModelAutoAnimation* mAutoAnimation;
|
||||
ModelDynamicEnvInfo* mDynamicEnvInfo;
|
||||
void* _228;
|
||||
void* _230;
|
||||
void* _238;
|
||||
BoneCallbackStorage mBoneCallback;
|
||||
void* _260;
|
||||
int _268;
|
||||
void* _270;
|
||||
nn::gfx::MemoryPool mMemoryPool;
|
||||
};
|
||||
|
||||
} // namespace gsys
|
||||
|
|
|
@ -7,8 +7,11 @@
|
|||
#include <math/seadMatrix.h>
|
||||
#include <math/seadVector.h>
|
||||
#include <nn/g3d/World.h>
|
||||
#include <prim/seadBitFlag.h>
|
||||
#include <prim/seadDelegate.h>
|
||||
#include <prim/seadRuntimeTypeInfo.h>
|
||||
#include <prim/seadSafeString.h>
|
||||
#include <prim/seadTypedBitFlag.h>
|
||||
#include "gsys/gsysModelUnitDrawArray.h"
|
||||
|
||||
namespace agl {
|
||||
|
@ -25,8 +28,12 @@ enum class RenderViewOption;
|
|||
|
||||
class ModelRenderUnit;
|
||||
class ModelScene;
|
||||
class ModelUnitCallbackArg;
|
||||
class ModelViewData;
|
||||
|
||||
using ModelUnitCallback = sead::IDelegate1<const ModelUnitCallbackArg&>;
|
||||
using ModelUnitCallbackStorage = sead::AnyDelegate1<const ModelUnitCallbackArg&>;
|
||||
|
||||
// TODO
|
||||
class ModelUnit {
|
||||
SEAD_RTTI_BASE(ModelUnit)
|
||||
|
@ -34,6 +41,23 @@ public:
|
|||
// TODO: is this an enum/enum class or a class?
|
||||
enum class BoolType;
|
||||
|
||||
enum class Flag {
|
||||
DebugWorldCallback = 4,
|
||||
DebugDrawCallback = 8,
|
||||
};
|
||||
|
||||
enum class Attribute {
|
||||
OcclusionQuery = 1,
|
||||
ViewFrustrumCulling = 2,
|
||||
LodCalculation = 4,
|
||||
ShapeCulling = 8,
|
||||
BufferSwap = 0x10,
|
||||
};
|
||||
|
||||
enum class ORFlag {
|
||||
Force = 1,
|
||||
};
|
||||
|
||||
ModelUnit();
|
||||
virtual ~ModelUnit();
|
||||
|
||||
|
@ -161,6 +185,39 @@ public:
|
|||
virtual void calcBeforeDraw(ModelScene* scene, const gsys::ModelViewData* model_view_data, int);
|
||||
virtual void forceCalcDrawSetup();
|
||||
virtual void setUpMaterialImpl(int, sead::Heap* heap);
|
||||
|
||||
protected:
|
||||
sead::TypedBitFlag<Flag, u8> mFlags;
|
||||
s8 mUnkIndex;
|
||||
s8 mNumLods;
|
||||
sead::BitFlag16 mVisibilityMask;
|
||||
u8 mDepthShadowCascade;
|
||||
u16 mCalcWeight;
|
||||
sead::TypedBitFlag<Attribute, u16> mAttributeFlags;
|
||||
u16 _14;
|
||||
u16 _16;
|
||||
void* _18;
|
||||
void* _20;
|
||||
ModelUnitDrawArray* mDrawArray;
|
||||
void* _30;
|
||||
void* _38;
|
||||
sead::Vector3f _40;
|
||||
u32 _4c;
|
||||
sead::Vector3f* _50;
|
||||
void* _58;
|
||||
void* _60;
|
||||
void* mMaterialInfo;
|
||||
void* _70;
|
||||
void* _78;
|
||||
void* _80;
|
||||
void* _88;
|
||||
void* _90;
|
||||
ModelUnitCallbackStorage mCallback;
|
||||
sead::SafeString mName;
|
||||
|
||||
#ifdef SEAD_DEBUG
|
||||
sead::TypedBitFlag<ORFlag, u8> mORFlags;
|
||||
#endif
|
||||
};
|
||||
|
||||
} // namespace gsys
|
||||
|
|
Loading…
Reference in New Issue