mirror of
https://github.com/zeldaret/botw
synced 2026-09-01 17:30:00 -04:00
Implement TeraMeshRigidBody class (#107)
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user