Browse Source

Implemented InternalEdgeRemovingCollector OnBody and Reset calls

Jorrit Rouwe 1 year ago
parent
commit
fce0c6eef2
1 changed files with 25 additions and 0 deletions
  1. 25 0
      Jolt/Physics/Collision/InternalEdgeRemovingCollector.h

+ 25 - 0
Jolt/Physics/Collision/InternalEdgeRemovingCollector.h

@@ -48,7 +48,14 @@ class InternalEdgeRemovingCollector : public CollideShapeCollector
 	/// Call the chained collector
 	inline void				Chain(const CollideShapeResult &inResult)
 	{
+		// Make sure the chained collector has the same context as we do
+		mChainedCollector.SetContext(GetContext());
+
+		// Forward the hit
 		mChainedCollector.AddHit(inResult);
+
+		// If our chained collector updated its early out fraction, we need to follow
+		UpdateEarlyOutFraction(mChainedCollector.GetEarlyOutFraction());
 	}
 
 	/// Call the chained collector and void all features of inResult
@@ -70,6 +77,24 @@ public:
 	{
 	}
 
+	// See: CollideShapeCollector::Reset
+	virtual void			Reset() override
+	{
+		CollideShapeCollector::Reset();
+
+		mChainedCollector.Reset();
+
+		mVoidedFeatures.clear();
+		mDelayedResults.clear();
+	}
+
+	// See: CollideShapeCollector::OnBody
+	virtual void			OnBody(const Body &inBody) override
+	{
+		// Just forward the call to our chained collector
+		mChainedCollector.OnBody(inBody);
+	}
+
 	// See: CollideShapeCollector::AddHit
 	virtual void			AddHit(const CollideShapeResult &inResult) override
 	{