mirror of https://github.com/zeldaret/botw.git
Implement TeraMeshRigidBody class (#107)
This commit is contained in:
parent
d38a6b546b
commit
1f2a38ec2a
|
@ -97516,12 +97516,12 @@ Address,Quality,Size,Name
|
|||
0x000000710131fe88,U,000172,
|
||||
0x000000710131ff34,U,000160,
|
||||
0x000000710131ffd4,U,000848,
|
||||
0x0000007101320324,U,000332,TeraMeshRigidBody::ctor
|
||||
0x0000007101320470,U,000076,
|
||||
0x00000071013204bc,U,000080,
|
||||
0x000000710132050c,U,000084,
|
||||
0x0000007101320560,U,000088,
|
||||
0x00000071013205b8,U,000096,
|
||||
0x0000007101320324,O,000332,_ZN4ksys4phys17TeraMeshRigidBodyC1EP12hkpRigidBodyPN4sead4HeapE
|
||||
0x0000007101320470,O,000076,_ZN4ksys4phys17TeraMeshRigidBodyD1Ev
|
||||
0x00000071013204bc,O,000080,_ZThn32_N4ksys4phys17TeraMeshRigidBodyD1Ev
|
||||
0x000000710132050c,O,000084,_ZN4ksys4phys17TeraMeshRigidBodyD0Ev
|
||||
0x0000007101320560,O,000088,_ZThn32_N4ksys4phys17TeraMeshRigidBodyD0Ev
|
||||
0x00000071013205b8,O,000096,_ZN4ksys4phys17TeraMeshRigidBody17getCollisionMasksEPNS0_23RigidBodyCollisionMasksEPKjRKN4sead7Vector3IfEE
|
||||
0x0000007101320618,U,000088,phys::WorldBorder::ctor
|
||||
0x0000007101320670,U,000072,
|
||||
0x00000071013206b8,U,000088,
|
||||
|
|
Can't render this file because it is too large.
|
|
@ -1 +1,36 @@
|
|||
#include "KingSystem/Physics/RigidBody/TeraMesh/physTeraMeshRigidBody.h"
|
||||
#include <Havok/Physics2012/Dynamics/Entity/hkpRigidBody.h>
|
||||
#include "KingSystem/Physics/RigidBody/physRigidBodyParam.h"
|
||||
#include "KingSystem/Physics/StaticCompound/physStaticCompoundUtil.h"
|
||||
|
||||
namespace ksys::phys {
|
||||
|
||||
TeraMeshRigidBody::TeraMeshRigidBody(hkpRigidBody* hk_body, sead::Heap* heap)
|
||||
: RigidBody(RigidBody::Type::TeraMesh, ContactLayerType::Entity, hk_body, "TeraMesh", heap,
|
||||
true) {
|
||||
RigidBodyInstanceParam param;
|
||||
param.motion_type = MotionType::Fixed;
|
||||
initMotionAccessor(param, heap, false);
|
||||
}
|
||||
|
||||
TeraMeshRigidBody::~TeraMeshRigidBody() {
|
||||
if (isAddedToWorld()) {
|
||||
removeFromWorldImmediately();
|
||||
}
|
||||
}
|
||||
|
||||
u32 TeraMeshRigidBody::getCollisionMasks(RigidBody::CollisionMasks* masks, const u32* unk,
|
||||
const sead::Vector3f& contact_point) {
|
||||
const auto* collidable = getHkBody()->getCollidable();
|
||||
masks->ignored_layers = ~mContactMask;
|
||||
if (unk != nullptr) {
|
||||
getCollisionFilterInfoFromCollidable(masks, &masks->collision_filter_info, *collidable,
|
||||
unk);
|
||||
return 0;
|
||||
}
|
||||
masks->material_mask = collidable->getShape()->getUserData();
|
||||
masks->collision_filter_info = collidable->getCollisionFilterInfo();
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace ksys::phys
|
||||
|
|
|
@ -4,11 +4,12 @@
|
|||
|
||||
namespace ksys::phys {
|
||||
|
||||
// FIXME
|
||||
class TeraMeshRigidBody : public RigidBody {
|
||||
public:
|
||||
TeraMeshRigidBody(hkpRigidBody* hk_body, sead::Heap* heap);
|
||||
|
||||
~TeraMeshRigidBody() override;
|
||||
|
||||
u32 getCollisionMasks(RigidBody::CollisionMasks* masks, const u32* unk,
|
||||
const sead::Vector3f& contact_point) override;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue