@@ -112,15 +112,23 @@ void FFlowGraphConnectionDrawingPolicy::BuildPaths()
112112 }
113113}
114114
115+ #if ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION < 6
115116void FFlowGraphConnectionDrawingPolicy::DrawConnection (int32 LayerId, const FVector2D& Start, const FVector2D& End, const FConnectionParams& Params)
117+ #else
118+ void FFlowGraphConnectionDrawingPolicy::DrawConnection (int32 LayerId, const FVector2f& Start, const FVector2f& End, const FConnectionParams& Params)
119+ #endif
116120{
117121 switch (UFlowGraphSettings::Get ()->ConnectionDrawType )
118122 {
119123 case EFlowConnectionDrawType::Default:
120124 FConnectionDrawingPolicy::DrawConnection (LayerId, Start, End, Params);
121125 break ;
122126 case EFlowConnectionDrawType::Circuit:
127+ #if ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION < 6
128+ DrawCircuitSpline (LayerId, FVector2f (Start), FVector2f (End), Params);
129+ #else
123130 DrawCircuitSpline (LayerId, Start, End, Params);
131+ #endif
124132 break ;
125133 default : ;
126134 }
@@ -219,37 +227,41 @@ void FFlowGraphConnectionDrawingPolicy::Draw(TMap<TSharedRef<SWidget>, FArranged
219227 FConnectionDrawingPolicy::Draw (InPinGeometries, ArrangedNodes);
220228}
221229
222- void FFlowGraphConnectionDrawingPolicy::DrawCircuitSpline (const int32& LayerId, const FVector2D & Start, const FVector2D & End, const FConnectionParams& Params) const
230+ void FFlowGraphConnectionDrawingPolicy::DrawCircuitSpline (const int32& LayerId, const FVector2f & Start, const FVector2f & End, const FConnectionParams& Params) const
223231{
224- const FVector2D StartingPoint = FVector2D (Start.X + UFlowGraphSettings::Get ()->CircuitConnectionSpacing .X , Start.Y );
225- const FVector2D EndPoint = FVector2D (End.X - UFlowGraphSettings::Get ()->CircuitConnectionSpacing .Y , End.Y );
226- const FVector2D ControlPoint = GetControlPoint (StartingPoint, EndPoint);
232+ const FVector2f StartingPoint = FVector2f (Start.X + UFlowGraphSettings::Get ()->CircuitConnectionSpacing .X , Start.Y );
233+ const FVector2f EndPoint = FVector2f (End.X - UFlowGraphSettings::Get ()->CircuitConnectionSpacing .Y , End.Y );
234+ const FVector2f ControlPoint = GetControlPoint (StartingPoint, EndPoint);
227235
228- const FVector2D StartDirection = (Params.StartDirection == EGPD_Output) ? FVector2D (1 .0f , 0 .0f ) : FVector2D (-1 .0f , 0 .0f );
229- const FVector2D EndDirection = (Params.EndDirection == EGPD_Input) ? FVector2D (1 .0f , 0 .0f ) : FVector2D (-1 .0f , 0 .0f );
236+ const FVector2f StartDirection = (Params.StartDirection == EGPD_Output) ? FVector2f (1 .0f , 0 .0f ) : FVector2f (-1 .0f , 0 .0f );
237+ const FVector2f EndDirection = (Params.EndDirection == EGPD_Input) ? FVector2f (1 .0f , 0 .0f ) : FVector2f (-1 .0f , 0 .0f );
230238
231239 DrawCircuitConnection (LayerId, Start, StartDirection, StartingPoint, EndDirection, Params);
232240 DrawCircuitConnection (LayerId, StartingPoint, StartDirection, ControlPoint, EndDirection, Params);
233241 DrawCircuitConnection (LayerId, ControlPoint, StartDirection, EndPoint, EndDirection, Params);
234242 DrawCircuitConnection (LayerId, EndPoint, StartDirection, End, EndDirection, Params);
235243}
236244
237- void FFlowGraphConnectionDrawingPolicy::DrawCircuitConnection (const int32& LayerId, const FVector2D & Start, const FVector2D & StartDirection, const FVector2D & End, const FVector2D & EndDirection, const FConnectionParams& Params) const
245+ void FFlowGraphConnectionDrawingPolicy::DrawCircuitConnection (const int32& LayerId, const FVector2f & Start, const FVector2f & StartDirection, const FVector2f & End, const FVector2f & EndDirection, const FConnectionParams& Params) const
238246{
239247 FSlateDrawElement::MakeDrawSpaceSpline (DrawElementsList, LayerId, Start, StartDirection, End, EndDirection, Params.WireThickness , ESlateDrawEffect::None, Params.WireColor );
240248
241249 if (Params.bDrawBubbles )
242250 {
243251 // This table maps distance along curve to alpha
244252 FInterpCurve<float > SplineReparamTable;
253+ #if ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION < 6
254+ const float SplineLength = MakeSplineReparamTable (FVector2D (Start), FVector2D (StartDirection), FVector2D (End), FVector2D (EndDirection), SplineReparamTable);
255+ #else
245256 const float SplineLength = MakeSplineReparamTable (Start, StartDirection, End, EndDirection, SplineReparamTable);
257+ #endif
246258
247259 // Draw bubbles on the spline
248260 if (Params.bDrawBubbles )
249261 {
250262 const float BubbleSpacing = 64 .f * ZoomFactor;
251263 const float BubbleSpeed = 192 .f * ZoomFactor;
252- const FVector2D BubbleSize = BubbleImage->ImageSize * ZoomFactor * 0 .2f * Params.WireThickness ;
264+ const FVector2f BubbleSize = BubbleImage->ImageSize * ZoomFactor * 0 .2f * Params.WireThickness ;
253265
254266 const float Time = (FPlatformTime::Seconds () - GStartTime);
255267 const float BubbleOffset = FMath::Fmod (Time * BubbleSpeed, BubbleSpacing);
@@ -260,7 +272,7 @@ void FFlowGraphConnectionDrawingPolicy::DrawCircuitConnection(const int32& Layer
260272 if (Distance < SplineLength)
261273 {
262274 const float Alpha = SplineReparamTable.Eval (Distance, 0 .f );
263- FVector2D BubblePos = FMath::CubicInterp (Start, StartDirection, End, EndDirection, Alpha);
275+ FVector2f BubblePos = FMath::CubicInterp (Start, StartDirection, End, EndDirection, Alpha);
264276 BubblePos -= (BubbleSize * 0 .5f );
265277
266278 FSlateDrawElement::MakeBox (DrawElementsList, LayerId, FPaintGeometry (BubblePos, BubbleSize, ZoomFactor), BubbleImage, ESlateDrawEffect::None, Params.WireColor );
@@ -270,9 +282,9 @@ void FFlowGraphConnectionDrawingPolicy::DrawCircuitConnection(const int32& Layer
270282 }
271283}
272284
273- FVector2D FFlowGraphConnectionDrawingPolicy::GetControlPoint (const FVector2D & Source, const FVector2D & Target)
285+ FVector2f FFlowGraphConnectionDrawingPolicy::GetControlPoint (const FVector2f & Source, const FVector2f & Target)
274286{
275- const FVector2D Delta = Target - Source;
287+ const FVector2f Delta = Target - Source;
276288 const float Tangent = FMath::Tan (UFlowGraphSettings::Get ()->CircuitConnectionAngle * (PI / 180 .f ));
277289
278290 const float DeltaX = FMath::Abs (Delta.X );
@@ -281,24 +293,24 @@ FVector2D FFlowGraphConnectionDrawingPolicy::GetControlPoint(const FVector2D& So
281293 const float SlopeWidth = DeltaY / Tangent;
282294 if (DeltaX > SlopeWidth)
283295 {
284- return Delta.X > 0 .f ? FVector2D (Target.X - SlopeWidth, Source.Y ) : FVector2D (Source.X - SlopeWidth, Target.Y );
296+ return Delta.X > 0 .f ? FVector2f (Target.X - SlopeWidth, Source.Y ) : FVector2f (Source.X - SlopeWidth, Target.Y );
285297 }
286298
287299 const float SlopeHeight = DeltaX * Tangent;
288300 if (DeltaY > SlopeHeight)
289301 {
290302 if (Delta.Y > 0 .f )
291303 {
292- return Delta.X < 0 .f ? FVector2D (Source.X , Target.Y - SlopeHeight) : FVector2D (Target.X , Source.Y + SlopeHeight);
304+ return Delta.X < 0 .f ? FVector2f (Source.X , Target.Y - SlopeHeight) : FVector2f (Target.X , Source.Y + SlopeHeight);
293305 }
294306
295307 if (Delta.X < 0 .f )
296308 {
297- return FVector2D (Source.X , Target.Y + SlopeHeight);
309+ return FVector2f (Source.X , Target.Y + SlopeHeight);
298310 }
299311 }
300312
301- return FVector2D (Target.X , Source.Y - SlopeHeight);
313+ return FVector2f (Target.X , Source.Y - SlopeHeight);
302314}
303315
304316bool FFlowGraphConnectionDrawingPolicy::ShouldChangeTangentForReroute (UFlowGraphNode_Reroute* Reroute)
0 commit comments