mirror of https://github.com/zeldaret/botw.git
Havok: Add hkpConvexVerticesShape stub
This commit is contained in:
parent
dbf6cd5117
commit
ce88177589
|
@ -30,6 +30,8 @@ add_library(hkStubs OBJECT
|
|||
Havok/Common/Base/Math/SweptTransform/hkSweptTransform.h
|
||||
Havok/Common/Base/Math/SweptTransform/hkSweptTransformf.h
|
||||
Havok/Common/Base/Math/SweptTransform/hkSweptTransformfUtil.h
|
||||
Havok/Common/Base/Math/Vector/hkFourTransposedPoints.h
|
||||
Havok/Common/Base/Math/Vector/hkFourTransposedPointsf.h
|
||||
Havok/Common/Base/Math/Vector/hkSimdFloat32.h
|
||||
Havok/Common/Base/Math/Vector/hkSimdReal.h
|
||||
Havok/Common/Base/Math/Vector/hkVector4.h
|
||||
|
@ -119,6 +121,7 @@ add_library(hkStubs OBJECT
|
|||
Havok/Physics2012/Collide/Shape/Convex/Box/hkpBoxShape.h
|
||||
Havok/Physics2012/Collide/Shape/Convex/Capsule/hkpCapsuleShape.h
|
||||
Havok/Physics2012/Collide/Shape/Convex/ConvexTransform/hkpConvexTransformShape.h
|
||||
Havok/Physics2012/Collide/Shape/Convex/ConvexVertices/hkpConvexVerticesShape.h
|
||||
Havok/Physics2012/Collide/Shape/Convex/Cylinder/hkpCylinderShape.h
|
||||
Havok/Physics2012/Collide/Shape/Convex/Sphere/hkpSphereShape.h
|
||||
Havok/Physics2012/Collide/Shape/HeightField/hkpHeightFieldShape.h
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
#include <Havok/Common/Base/Math/Vector/hkFourTransposedPointsf.h>
|
||||
|
||||
using hkFourTransposedPoints = hkFourTransposedPointsf;
|
|
@ -0,0 +1,16 @@
|
|||
#pragma once
|
||||
|
||||
#include <Havok/Common/Base/hkBase.h>
|
||||
|
||||
class hkFourTransposedPointsf {
|
||||
public:
|
||||
HK_DECLARE_CLASS_ALLOCATOR(hkFourTransposedPointsf)
|
||||
HK_DECLARE_REFLECTION()
|
||||
|
||||
hkFourTransposedPointsf() {
|
||||
for (auto& vertex : m_vertices)
|
||||
vertex.setZero();
|
||||
}
|
||||
|
||||
hkVector4f m_vertices[3];
|
||||
};
|
|
@ -0,0 +1,81 @@
|
|||
#pragma once
|
||||
|
||||
#include <Havok/Common/Base/Math/Vector/hkFourTransposedPoints.h>
|
||||
#include <Havok/Common/Base/hkBase.h>
|
||||
#include <Havok/Physics2012/Collide/Shape/Convex/hkpConvexShape.h>
|
||||
|
||||
struct hkStridedVertices;
|
||||
class hkpConvexVerticesConnectivity;
|
||||
|
||||
class hkpConvexVerticesShape : public hkpConvexShape {
|
||||
public:
|
||||
HK_DECLARE_CLASS_ALLOCATOR(hkpConvexVerticesShape)
|
||||
HK_DECLARE_REFLECTION()
|
||||
HKCD_DECLARE_SHAPE_TYPE(hkcdShapeType::CONVEX_VERTICES)
|
||||
|
||||
struct BuildConfig {
|
||||
BuildConfig();
|
||||
|
||||
hkBool m_createConnectivity;
|
||||
hkBool m_shrinkByConvexRadius;
|
||||
hkBool m_useOptimizedShrinking;
|
||||
hkReal m_convexRadius;
|
||||
int m_maxVertices;
|
||||
hkReal m_maxRelativeShrink;
|
||||
hkReal m_maxShrinkingVerticesDisplacement;
|
||||
hkReal m_maxCosAngleForBevelPlanes;
|
||||
};
|
||||
|
||||
explicit hkpConvexVerticesShape(const hkStridedVertices& vertices,
|
||||
const BuildConfig& config = BuildConfig());
|
||||
|
||||
hkpConvexVerticesShape(const hkStridedVertices& vertsIn,
|
||||
const hkArray<hkVector4>& planeEquations,
|
||||
hkReal radius = hkConvexShapeDefaultRadius);
|
||||
|
||||
hkpConvexVerticesShape(hkFourTransposedPoints* rotatedVertices, int numVertices,
|
||||
hkVector4* planes, int numPlanes, const hkAabb& aabb,
|
||||
hkReal radius = hkConvexShapeDefaultRadius);
|
||||
|
||||
explicit hkpConvexVerticesShape(hkReal radius = hkConvexShapeDefaultRadius);
|
||||
|
||||
explicit hkpConvexVerticesShape(hkFinishLoadedObjectFlag flag);
|
||||
|
||||
~hkpConvexVerticesShape() override;
|
||||
|
||||
void getOriginalVertices(hkArray<hkVector4>& vertices) const;
|
||||
const hkArray<hkVector4>& getPlaneEquations() const;
|
||||
void setPlaneEquations(const hkArray<hkVector4>& planes);
|
||||
void setRadiusUnchecked(hkReal radius) { m_radius = radius; }
|
||||
void transformVerticesAndPlaneEquations(const hkTransform& t);
|
||||
void copyVertexData(const hkReal* vertexIn, int byteStriding, int numVertices);
|
||||
|
||||
const hkpConvexVerticesConnectivity* getConnectivity() const { return m_connectivity; }
|
||||
void setConnectivity(const hkpConvexVerticesConnectivity* connect, bool sort = true);
|
||||
|
||||
void getFirstVertex(hkVector4& v) const override;
|
||||
void getSupportingVertex(hkVector4Parameter direction,
|
||||
hkcdVertex& supportingVertexOut) const override;
|
||||
void convertVertexIdsToVertices(const hkpVertexId* ids, int numIds,
|
||||
hkcdVertex* verticesOut) const override;
|
||||
|
||||
void getCentre(hkVector4& centreOut) const override;
|
||||
int getNumCollisionSpheres() const override { return m_numVertices; }
|
||||
const hkSphere* getCollisionSpheres(hkSphere* sphereBuffer) const override;
|
||||
void getAabb(const hkTransform& localToWorld, hkReal tolerance, hkAabb& out) const override;
|
||||
hkBool castRay(const hkpShapeRayCastInput& input,
|
||||
hkpShapeRayCastOutput& results) const override;
|
||||
|
||||
hkVector4 m_aabbHalfExtents;
|
||||
hkVector4 m_aabbCenter;
|
||||
|
||||
hkArray<hkFourTransposedPoints> m_rotatedVertices;
|
||||
hkInt32 m_numVertices;
|
||||
|
||||
hkBool m_useSpuBuffer;
|
||||
mutable hkArray<hkVector4> m_planeEquations;
|
||||
mutable const hkpConvexVerticesConnectivity* m_connectivity;
|
||||
|
||||
protected:
|
||||
void sortPlanes();
|
||||
};
|
Loading…
Reference in New Issue