Files
LuaCsForBarotraumaEP/Farseer Physics Engine 3.5/Common/Decomposition/Seidel/YNode.cs

29 lines
804 B
C#

namespace FarseerPhysics.Common.Decomposition.Seidel
{
internal class YNode : Node
{
private Edge _edge;
public YNode(Edge edge, Node lChild, Node rChild)
: base(lChild, rChild)
{
_edge = edge;
}
public override Sink Locate(Edge edge)
{
if (_edge.IsAbove(edge.P))
return RightChild.Locate(edge); // Move down the graph
if (_edge.IsBelow(edge.P))
return LeftChild.Locate(edge); // Move up the graph
// s and segment share the same endpoint, p
if (edge.Slope < _edge.Slope)
return RightChild.Locate(edge); // Move down the graph
// Move up the graph
return LeftChild.Locate(edge);
}
}
}