mirror of https://github.com/zeldaret/botw.git
ksys/phys: Add more InstanceSet member variables
This commit is contained in:
parent
f1398cd0b1
commit
5df0fb2a6d
|
@ -8,31 +8,15 @@
|
||||||
|
|
||||||
namespace ksys::phys {
|
namespace ksys::phys {
|
||||||
|
|
||||||
|
class CharacterFormSet;
|
||||||
|
class CharacterController;
|
||||||
|
class NavMeshCharacter;
|
||||||
class Shape;
|
class Shape;
|
||||||
struct ShapeParamObj;
|
struct ShapeParamObj;
|
||||||
|
|
||||||
SEAD_ENUM(NavMeshCharacterType,
|
SEAD_ENUM(NavMeshCharacterType, Player, Horse, Enemy, Guardian, NPC, NPCGoron, NPCSwimmer,
|
||||||
Player,
|
NPCGerudoPassable, Fish, Animal, SmallAnimal, DomesticAnimal, PoorSwimmer, GoodSwimmer,
|
||||||
Horse,
|
IceSwimmer, FireEnemy, WolfLink, GiantEnemy, GiantSwimmer, TallEnemy, Lynel)
|
||||||
Enemy,
|
|
||||||
Guardian,
|
|
||||||
NPC,
|
|
||||||
NPCGoron,
|
|
||||||
NPCSwimmer,
|
|
||||||
NPCGerudoPassable,
|
|
||||||
Fish,
|
|
||||||
Animal,
|
|
||||||
SmallAnimal,
|
|
||||||
DomesticAnimal,
|
|
||||||
PoorSwimmer,
|
|
||||||
GoodSwimmer,
|
|
||||||
IceSwimmer,
|
|
||||||
FireEnemy,
|
|
||||||
WolfLink,
|
|
||||||
GiantEnemy,
|
|
||||||
GiantSwimmer,
|
|
||||||
TallEnemy,
|
|
||||||
Lynel)
|
|
||||||
|
|
||||||
bool navMeshCharacterTypeFromText(NavMeshCharacterType& value, const sead::SafeString& text);
|
bool navMeshCharacterTypeFromText(NavMeshCharacterType& value, const sead::SafeString& text);
|
||||||
|
|
||||||
|
@ -66,14 +50,12 @@ struct CharacterControllerParam : agl::utl::ParameterList, ICharacterControllerP
|
||||||
int getNumForms() override { return forms.size(); }
|
int getNumForms() override { return forms.size(); }
|
||||||
Shape* createShape(int form_idx, sead::Heap* heap) override;
|
Shape* createShape(int form_idx, sead::Heap* heap) override;
|
||||||
|
|
||||||
// TODO: return type
|
CharacterFormSet* createFormSet(sead::Heap* heap);
|
||||||
void* createController(sead::Heap* heap);
|
|
||||||
// TODO: types
|
// TODO: types
|
||||||
void* createControllerState(const sead::SafeString& name, void* ctrl, void* x, bool y,
|
CharacterController* createController(const sead::SafeString& name, void* ctrl, void* x, bool y,
|
||||||
sead::Heap* heap);
|
sead::Heap* heap);
|
||||||
// TODO: return type
|
NavMeshCharacter* createNavMeshCharacter(const sead::SafeString& name, sead::Heap* heap,
|
||||||
void* createNavMeshCharacter(const sead::SafeString& name, sead::Heap* heap,
|
const sead::Vector3f& scale);
|
||||||
const sead::Vector3f& scale);
|
|
||||||
|
|
||||||
int findFormIdx(const sead::SafeString& form_type) const;
|
int findFormIdx(const sead::SafeString& form_type) const;
|
||||||
bool parse(agl::utl::ResParameterList res_list, sead::Heap* heap);
|
bool parse(agl::utl::ResParameterList res_list, sead::Heap* heap);
|
||||||
|
|
|
@ -9,14 +9,14 @@ namespace ksys::phys {
|
||||||
|
|
||||||
void InstanceSet::setFlag2() {
|
void InstanceSet::setFlag2() {
|
||||||
mFlags.set(Flag::_2);
|
mFlags.set(Flag::_2);
|
||||||
if (_d8 != nullptr) {
|
if (mClothSet != nullptr) {
|
||||||
mFlags.set(Flag::_2);
|
mFlags.set(Flag::_2);
|
||||||
mFlags.set(Flag::DisableDraw);
|
mFlags.set(Flag::DisableDraw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void InstanceSet::clothVisibleStuff() {
|
void InstanceSet::clothVisibleStuff() {
|
||||||
if (_d8 != nullptr) {
|
if (mClothSet != nullptr) {
|
||||||
mFlags.set(Flag::DisableDraw);
|
mFlags.set(Flag::DisableDraw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -89,8 +89,8 @@ void InstanceSet::sub_7100FBA9BC() {
|
||||||
body->addToWorld();
|
body->addToWorld();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mCollisionController != nullptr)
|
if (mCharacterController != nullptr)
|
||||||
mCollisionController->sub_7100F5EC30();
|
mCharacterController->sub_7100F5EC30();
|
||||||
}
|
}
|
||||||
|
|
||||||
void InstanceSet::sub_7100FBACE0(phys::ContactLayer layer) {
|
void InstanceSet::sub_7100FBACE0(phys::ContactLayer layer) {
|
||||||
|
@ -105,8 +105,8 @@ void InstanceSet::sub_7100FBACE0(phys::ContactLayer layer) {
|
||||||
if (mRagdollController != nullptr)
|
if (mRagdollController != nullptr)
|
||||||
mRagdollController->sub_7101221728(layer);
|
mRagdollController->sub_7101221728(layer);
|
||||||
|
|
||||||
if (mCollisionController != nullptr)
|
if (mCharacterController != nullptr)
|
||||||
mCollisionController->enableCollisionMaybe_0(layer);
|
mCharacterController->enableCollisionMaybe_0(layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InstanceSet::sub_7100FBAD74() {
|
void InstanceSet::sub_7100FBAD74() {
|
||||||
|
@ -116,8 +116,8 @@ void InstanceSet::sub_7100FBAD74() {
|
||||||
if (mRagdollController != nullptr) {
|
if (mRagdollController != nullptr) {
|
||||||
mRagdollController->sub_71012217A8();
|
mRagdollController->sub_71012217A8();
|
||||||
}
|
}
|
||||||
if (mCollisionController != nullptr) {
|
if (mCharacterController != nullptr) {
|
||||||
mCollisionController->sub_7100F60604();
|
mCharacterController->sub_7100F60604();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <container/seadBuffer.h>
|
||||||
#include <container/seadListImpl.h>
|
#include <container/seadListImpl.h>
|
||||||
|
#include <container/seadObjArray.h>
|
||||||
#include <container/seadPtrArray.h>
|
#include <container/seadPtrArray.h>
|
||||||
#include <hostio/seadHostIONode.h>
|
#include <hostio/seadHostIONode.h>
|
||||||
#include "KingSystem/ActorSystem/actActor.h"
|
#include "KingSystem/ActorSystem/actActor.h"
|
||||||
|
@ -11,21 +13,32 @@ namespace gsys {
|
||||||
class Model;
|
class Model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace sead {
|
||||||
|
class DirectResource;
|
||||||
|
}
|
||||||
|
|
||||||
namespace ksys::res {
|
namespace ksys::res {
|
||||||
|
class Handle;
|
||||||
class RagdollBlendWeight;
|
class RagdollBlendWeight;
|
||||||
class RagdollConfigList;
|
class RagdollConfigList;
|
||||||
} // namespace ksys::res
|
} // namespace ksys::res
|
||||||
|
|
||||||
namespace ksys::phys {
|
namespace ksys::phys {
|
||||||
|
|
||||||
|
class CharacterController;
|
||||||
|
class CharacterFormSet;
|
||||||
|
class ClothSet;
|
||||||
class CollisionInfo;
|
class CollisionInfo;
|
||||||
class ContactPointInfo;
|
class ContactPointInfo;
|
||||||
|
class NavMeshCharacter;
|
||||||
class ParamSet;
|
class ParamSet;
|
||||||
class RagdollController;
|
class RagdollController;
|
||||||
class RigidBodySet;
|
class RigidBodySet;
|
||||||
class SystemGroupHandler;
|
class SystemGroupHandler;
|
||||||
|
class UserTag;
|
||||||
|
|
||||||
class CollisionController {
|
// TODO: move to a separate header
|
||||||
|
class CharacterController {
|
||||||
public:
|
public:
|
||||||
void sub_7100F5EC30();
|
void sub_7100F5EC30();
|
||||||
void sub_7100F60604();
|
void sub_7100F60604();
|
||||||
|
@ -47,8 +60,12 @@ public:
|
||||||
_80000000 = 1u << 31,
|
_80000000 = 1u << 31,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
InstanceSet(const sead::SafeString& actor_name, const sead::SafeString& actor_profile,
|
||||||
|
const ParamSet& param_set);
|
||||||
|
virtual ~InstanceSet();
|
||||||
|
|
||||||
const sead::SafeString& getName() const { return mName; }
|
const sead::SafeString& getName() const { return mName; }
|
||||||
ParamSet* getParamSet() const { return mParamSet; }
|
const ParamSet* getParamSet() const { return mParamSet; }
|
||||||
|
|
||||||
void setFlag2();
|
void setFlag2();
|
||||||
void clothVisibleStuff();
|
void clothVisibleStuff();
|
||||||
|
@ -73,28 +90,49 @@ public:
|
||||||
s32 sub_7100FBDA2C(const sead::SafeString& name) const;
|
s32 sub_7100FBDA2C(const sead::SafeString& name) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
struct Unk1 {
|
||||||
|
u8 _0[0x48];
|
||||||
|
};
|
||||||
|
|
||||||
sead::SafeString mName;
|
sead::SafeString mName;
|
||||||
ParamSet* mParamSet;
|
const ParamSet* mParamSet;
|
||||||
sead::TypedBitFlag<Flag> mFlags;
|
sead::TypedBitFlag<Flag> mFlags;
|
||||||
|
u16 _24{};
|
||||||
|
u16 _26{};
|
||||||
gsys::Model* mModel;
|
gsys::Model* mModel;
|
||||||
f32 mScale;
|
f32 mScale;
|
||||||
u8 _34[0x40 - 0x34];
|
UserTag* mUserTag;
|
||||||
sead::PtrArray<RigidBodySet> mRigidBodySets;
|
sead::PtrArray<RigidBodySet> mRigidBodySets;
|
||||||
sead::PtrArray<CollisionInfo> mCollisionInfo;
|
sead::PtrArray<CollisionInfo> mCollisionInfo;
|
||||||
sead::PtrArray<ContactPointInfo> mContactPointInfo;
|
sead::PtrArray<ContactPointInfo> mContactPointInfo;
|
||||||
|
sead::Buffer<res::Handle*> mRigidBodySetResHandles;
|
||||||
|
|
||||||
u8 _70[0x10];
|
CharacterController* mCharacterController{};
|
||||||
CollisionController* mCollisionController;
|
CharacterFormSet* mCharacterFormSet{};
|
||||||
u8 _88[8];
|
|
||||||
RagdollController* mRagdollController;
|
RagdollController* mRagdollController{};
|
||||||
u8 _98[0xb8 - 0x98];
|
sead::Buffer<void*> _98;
|
||||||
|
ContactPointInfo* mRagdollContactPointInfo{};
|
||||||
|
res::Handle* mRagdollResHandle{};
|
||||||
res::RagdollBlendWeight* mRagdollBlendWt;
|
res::RagdollBlendWeight* mRagdollBlendWt;
|
||||||
res::RagdollConfigList* mRagdollConfigList;
|
res::RagdollConfigList* mRagdollConfigList;
|
||||||
u8 _c8[0xd8 - 0xc8];
|
|
||||||
void* _d8;
|
res::Handle* mClothResHandle{};
|
||||||
u8 _e0[0x148 - 0xe0];
|
sead::DirectResource* mClothRes{};
|
||||||
|
ClothSet* mClothSet;
|
||||||
|
|
||||||
|
res::Handle* mSupportBoneResHandle{};
|
||||||
|
void* _e8{};
|
||||||
|
void* _f0{};
|
||||||
|
|
||||||
|
NavMeshCharacter* mNavMeshCharacter;
|
||||||
|
sead::Buffer<void*> _100;
|
||||||
|
u16 _110{};
|
||||||
|
sead::ObjArray<Unk1> mLinkMatricesMaybe;
|
||||||
|
sead::Buffer<void*> _138;
|
||||||
sead::TList<RigidBody*> mList;
|
sead::TList<RigidBody*> mList;
|
||||||
u8 _160[0x178 - 0x160];
|
sead::ListNode _160;
|
||||||
|
u32 _170{};
|
||||||
SystemGroupHandler* _178[2];
|
SystemGroupHandler* _178[2];
|
||||||
SystemGroupHandler* _188[2];
|
SystemGroupHandler* _188[2];
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue