mirror of https://github.com/zeldaret/botw.git
Havok: Add hkpPlaneShape
This commit is contained in:
parent
6b302518fb
commit
2cd2d9dc69
|
@ -115,7 +115,9 @@ add_library(hkStubs OBJECT
|
||||||
Havok/Physics2012/Collide/Shape/Convex/Box/hkpBoxShape.h
|
Havok/Physics2012/Collide/Shape/Convex/Box/hkpBoxShape.h
|
||||||
Havok/Physics2012/Collide/Shape/Convex/Capsule/hkpCapsuleShape.h
|
Havok/Physics2012/Collide/Shape/Convex/Capsule/hkpCapsuleShape.h
|
||||||
Havok/Physics2012/Collide/Shape/Convex/ConvexTransform/hkpConvexTransformShape.h
|
Havok/Physics2012/Collide/Shape/Convex/ConvexTransform/hkpConvexTransformShape.h
|
||||||
|
Havok/Physics2012/Collide/Shape/HeightField/hkpHeightFieldShape.h
|
||||||
Havok/Physics2012/Collide/Shape/HeightField/hkpSphereRepShape.h
|
Havok/Physics2012/Collide/Shape/HeightField/hkpSphereRepShape.h
|
||||||
|
Havok/Physics2012/Collide/Shape/HeightField/Plane/hkpPlaneShape.h
|
||||||
Havok/Physics2012/Collide/Shape/Query/hkpRayShapeCollectionFilter.h
|
Havok/Physics2012/Collide/Shape/Query/hkpRayShapeCollectionFilter.h
|
||||||
Havok/Physics2012/Collide/Shape/Query/hkpShapeRayCastInput.h
|
Havok/Physics2012/Collide/Shape/Query/hkpShapeRayCastInput.h
|
||||||
Havok/Physics2012/Collide/Util/Welding/hkpWeldingUtility.h
|
Havok/Physics2012/Collide/Util/Welding/hkpWeldingUtility.h
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <Havok/Physics2012/Collide/Shape/HeightField/hkpHeightFieldShape.h>
|
||||||
|
|
||||||
|
class hkpPlaneShape : public hkpHeightFieldShape {
|
||||||
|
public:
|
||||||
|
HK_DECLARE_CLASS_ALLOCATOR(hkpPlaneShape)
|
||||||
|
HK_DECLARE_REFLECTION()
|
||||||
|
HKCD_DECLARE_SHAPE_TYPE(hkcdShapeType::PLANE)
|
||||||
|
|
||||||
|
hkpPlaneShape(const hkVector4& plane, const hkAabb& aabb);
|
||||||
|
|
||||||
|
hkpPlaneShape(const hkVector4& direction, const hkVector4& center,
|
||||||
|
const hkVector4& halfExtents);
|
||||||
|
|
||||||
|
explicit hkpPlaneShape(hkFinishLoadedObjectFlag flag);
|
||||||
|
|
||||||
|
const hkVector4& getPlane() const { return m_plane; }
|
||||||
|
const hkVector4& getAabbCenter() const { return m_aabbCenter; }
|
||||||
|
const hkVector4& getAabbHalfExtents() const { return m_aabbHalfExtents; }
|
||||||
|
|
||||||
|
void getAabb(const hkTransform& localToWorld, hkReal tolerance, hkAabb& out) const override;
|
||||||
|
hkBool castRay(const hkpShapeRayCastInput& input,
|
||||||
|
hkpShapeRayCastOutput& results) const override;
|
||||||
|
void castRayWithCollector(const hkpShapeRayCastInput& input, const hkpCdBody& cdBody,
|
||||||
|
hkpRayHitCollector& collector) const override;
|
||||||
|
void castSphere(const hkpSphereCastInput& input, const hkpCdBody& cdBody,
|
||||||
|
hkpRayHitCollector& collector) const override;
|
||||||
|
void collideSpheres(const CollideSpheresInput& input,
|
||||||
|
SphereCollisionOutput* outputArray) const override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
hkVector4 m_plane;
|
||||||
|
hkVector4 m_aabbCenter;
|
||||||
|
hkVector4 m_aabbHalfExtents;
|
||||||
|
};
|
|
@ -0,0 +1,40 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <Havok/Common/Base/hkBase.h>
|
||||||
|
#include <Havok/Physics2012/Collide/Shape/Query/hkpShapeRayCastInput.h>
|
||||||
|
#include <Havok/Physics2012/Collide/Shape/hkpShape.h>
|
||||||
|
|
||||||
|
class hkpHeightFieldShape : public hkpShape {
|
||||||
|
public:
|
||||||
|
HK_DECLARE_CLASS_ALLOCATOR(hkpHeightFieldShape)
|
||||||
|
HK_DECLARE_REFLECTION()
|
||||||
|
HKCD_DECLARE_SHAPE_TYPE(hkcdShapeType::HEIGHT_FIELD);
|
||||||
|
|
||||||
|
struct CollideSpheresInput {
|
||||||
|
HK_DECLARE_CLASS_ALLOCATOR(CollideSpheresInput)
|
||||||
|
|
||||||
|
hkSphere* m_spheres;
|
||||||
|
int m_numSpheres;
|
||||||
|
hkReal m_tolerance;
|
||||||
|
};
|
||||||
|
|
||||||
|
using SphereCollisionOutput = hkVector4;
|
||||||
|
|
||||||
|
struct hkpSphereCastInput : public hkpShapeRayCastInput {
|
||||||
|
HK_DECLARE_CLASS_ALLOCATOR(hkpSphereCastInput)
|
||||||
|
|
||||||
|
hkReal m_radius;
|
||||||
|
hkReal m_maxExtraPenetration;
|
||||||
|
};
|
||||||
|
|
||||||
|
explicit hkpHeightFieldShape(ShapeType type) : hkpShape(type) {}
|
||||||
|
|
||||||
|
explicit hkpHeightFieldShape(hkFinishLoadedObjectFlag flag) : hkpShape(flag) {
|
||||||
|
setType(HKCD_SHAPE_TYPE_FROM_CLASS(hkpHeightFieldShape));
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void collideSpheres(const CollideSpheresInput& input,
|
||||||
|
SphereCollisionOutput* outputArray) const = 0;
|
||||||
|
virtual void castSphere(const hkpSphereCastInput& input, const hkpCdBody& cdBody,
|
||||||
|
hkpRayHitCollector& collector) const = 0;
|
||||||
|
};
|
Loading…
Reference in New Issue