Struct IntersectingPolygonOrganizer

Struct Documentation

struct legion::physics::IntersectingPolygonOrganizer

Contains the necessary operations to split the edges of a given polygon.

Public Functions

inline IntersectingPolygonOrganizer()
inline void SplitPolygon(SplittablePolygonPtr splitPolygon, const math::mat4 &transform, const math::vec3 cutPosition, const math::vec3 cutNormal, SplitState requestedState, std::vector<IntersectionEdgeInfo> &generatedIntersectionEdges, bool shouldeDebug)
inline std::tuple<math::vec3, math::vec2, math::vec3, math::vec2> GetFirstAndLastEdgeIntersectionInfo(const math::vec3 &cutNormal, const math::vec3 &cutPosition, const math::mat4 transform, meshHalfEdgePtr firstEdge, meshHalfEdgePtr secondEdge)
inline void RegenerateTriangleSplit(bool startFromOutsideIntersection, meshHalfEdgePtr firstSplitEdge, meshHalfEdgePtr secondSplitEdge, meshHalfEdgePtr &intersectionEdge, const math::vec3 &cutNormal, const math::vec3 &cutPosition, const math::mat4 &transform)
inline void BFSIdentifyEffectedEdges(const math::mat4 &transform, SplittablePolygonPtr splitPolygon, std::vector<meshHalfEdgePtr> &unEffectedUsedEdges, std::vector<meshHalfEdgePtr> &effectedUsedEdges, const math::vec3 cutPosition, const math::vec3 cutNormal, bool keepAbove)
inline void IdentifyBoundaryEffectedEdges(std::vector<meshHalfEdgePtr> &effectedUsedEdges, const math::mat4 transform, const math::vec3 cutPosition, const math::vec3 cutNormal, bool keepAbove)
inline void HandleTriangleSplit(SplittablePolygonPtr splitPolygon, std::vector<meshHalfEdgePtr> &splitEdges, std::vector<IntersectionEdgeInfo> &generatedIntersectionEdges, const math::mat4 &transform, const math::vec3 &cutNormal, const math::vec3 &cutPosition, bool keepAbove)
inline void InsideIntersectionMeshRegeneration(const math::mat4 &transform, std::vector<meshHalfEdgePtr> &effectedBoundaryEdges, std::vector<meshHalfEdgePtr> &generatedEdges, int i, meshHalfEdgePtr &supportEdge, const SplitterIntersectionInfo &vertexIntersectionInfo, BoundaryEdgeInfo &debugStuff, std::vector<IntersectionEdgeInfo> &generatedIntersectionEdges, SplittablePolygonPtr owner)
inline void CreateNonAllignedQuad(meshHalfEdgePtr currentSupport, meshHalfEdgePtr nextSupport, meshHalfEdgePtr baseEdge, meshHalfEdgePtr intersectionEdge, std::vector<meshHalfEdgePtr> &generatedEdges, SplittablePolygonPtr owner)
inline void OutsideIntersectionMeshRegeneration(const math::mat4 &transform, std::vector<meshHalfEdgePtr> &effectedBoundaryEdges, std::vector<meshHalfEdgePtr> &generatedEdges, int i, meshHalfEdgePtr &supportEdge, const SplitterIntersectionInfo &vertexIntersectionInfo, BoundaryEdgeInfo &debugStuff, std::vector<IntersectionEdgeInfo> &generatedIntersectionEdges, SplittablePolygonPtr owner)
inline void CreateAllignedQuad(meshHalfEdgePtr currentSupport, meshHalfEdgePtr nextSupport, meshHalfEdgePtr baseEdge, meshHalfEdgePtr intersectionEdge, std::vector<meshHalfEdgePtr> &generatedEdges, SplittablePolygonPtr owner)