Announcement

Collapse
No announcement yet.

DoN's 3D-Pathfinding / Flying-AI system (with full source!)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    #46
    lol, I'm flattered

    Re: waypoints, although the sample project shows only "origin to destination" type of movement you can build a system with multiple waypoints ("Goal Cue" actors in the sample) but you'll have to manage the behavior tree (or API calls if you're not using behavior trees) on your own. Eg: you can make the goal actor variable an array and sequentially pick them in your behavior tree each time one goal is exhausted. Check out the "Goal Flip" boolean I'm using for the pawns which does something similar (loops between origin and destination continuously).

    Now if you're talking about supporting this feature directly at the plugin/API level then (maybe someone wants to pre-calculate a solution with fixed points in advance instead of calling the API each time) then we'll have to add a new function that accepts an array of "desired path points" instead of a single destination vector for the nav solver to use. But there's no real performance loss in just treating each waypoint as a new destination and calling the API (or FlyTo node) yourself, so for now I think people who need it can just manage it themselves in their behavior-tree/blueprints. If I find the time (no promises!) I'll try to add a multi-waypoint example to the sample project.

    On this note, I'm not sure the fancy bots will stay in the sample project forever (they're from the Infiltrator demo to answer your first question!). I've reached out to find out whether I'm allowed to use them with this free sample project but regardless of what answer I get, everyone downloading the project should note that all the stuff inside the "EpicContent" folder is obviously governed by Epic's EULA for their sample content.

    Steam Early Access: Drunk On Nectar - The Nature Simulator

    UE4 Plugins: DoN’s Dynamic Mesh FX | DoN’s 3D Pathfinding

    Comment


      #47
      Hi [MENTION=14603]VSZ[/MENTION]

      Is good to see you flattered [MENTION=14603]VSZ[/MENTION]. You deserve. His work is a great contribution!

      I like the examples you have used. With it is possible to perceive the potential for your plugin.

      I'd love to see more waypoints. 。 ◕‿◕。 Please!
      I have subscribed your thread. I'll follow it.

      I'm learning about behavior tree only now, I am currently involved in a project, and little time left me to analyze technical aspects involved in building an AI in depth, because I'm character modeler and rigger.
      I'm going to learn C++ only after finish this my recent project.
      So I will understand more clearly about the terms used. But I understand arrays and blueprints at a basic level, of course.

      Thanks for your attention
      Best regards. Good Work!
      luny
      lunybunny.com
      lunybunny.com

      Comment


        #48
        Amazing stuff!
        SUMFX.net

        Chameleon Post ProcessSharp TextCamera TransitionsLOOK! Color Grading PackSciFi UI SoundsCensoredAnimated CrosshairsMinimalist Lower ThirdsCosmos - Procedural Space AssetsHitPoint

        Comment


          #49
          I´ve been working a lot lately so I didn't have much time to play more with this solution but I cropped a 10 minutes dirty test adding an array support to pawn blueprint. I shall put the code later but as you may see it´s working flawlessly well, almost ...
          I´ll let the video:

          PS: Sorry for the bad MOVAVI capture.

          Cheers

          Comment


            #50
            Code:
            Begin Object Class=K2Node_FunctionEntry Name="K2Node_FunctionEntry_302"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9596"
               End Object
               Begin Object Name="EdGraphPin_9596"
                  PinName="then"
                  Direction=EGPD_Output
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_57.EdGraphPin_9205'
               End Object
               SignatureClass=BlueprintGeneratedClass'/Game/DonNavigationSamples/BehaviorTree/DemoPawnInterface.DemoPawnInterface_C'
               SignatureName="Get Goal Actor"
               Pins(0)=EdGraphPin'EdGraphPin_9596'
               NodePosX=-1248
               NodePosY=-336
               NodeGuid=9F945DFE4CC16EDDEEE6DBA014C120E2
            End Object
            Begin Object Class=K2Node_FunctionResult Name="K2Node_FunctionResult_3"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9599"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9600"
               End Object
               Begin Object Name="EdGraphPin_9599"
                  PinName="execute"
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_42.EdGraphPin_9218'
                  LinkedTo(1)=EdGraphPin'K2Node_VariableSet_336.EdGraphPin_9137'
                  LinkedTo(2)=EdGraphPin'K2Node_VariableSet_334.EdGraphPin_9032'
               End Object
               Begin Object Name="EdGraphPin_9600"
                  PinName="Goal"
                  PinToolTip="Goal\nGoal Cue Reference"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  LinkedTo(0)=EdGraphPin'K2Node_Select_1.EdGraphPin_9232'
               End Object
               SignatureClass=BlueprintGeneratedClass'/Game/DonNavigationSamples/BehaviorTree/DemoPawnInterface.DemoPawnInterface_C'
               SignatureName="Get Goal Actor"
               Pins(0)=EdGraphPin'EdGraphPin_9599'
               Pins(1)=EdGraphPin'EdGraphPin_9600'
               NodePosX=912
               NodePosY=-240
               NodeGuid=865565A84F6484C0C1E58982120E92B3
            End Object
            Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_554"
               Begin Object Class=EdGraphPin Name="EdGraphPin_8811"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_8812"
               End Object
               Begin Object Name="EdGraphPin_8811"
                  PinName="Goal"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
               End Object
               Begin Object Name="EdGraphPin_8812"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Pawns/BP_NavigatorPawn.BP_NavigatorPawn_C')
                  bHidden=True
               End Object
               VariableReference=(MemberName="Goal",bSelfContext=True)
               Pins(0)=EdGraphPin'EdGraphPin_8811'
               Pins(1)=EdGraphPin'EdGraphPin_8812'
               NodePosX=-560
               NodePosY=-128
               NodeComment="From Here"
               bCommentBubbleVisible=True
               NodeGuid=A846FA3E485E229D65B012B6E0A28C6C
            End Object
            Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_2332"
               Begin Object Class=EdGraphPin Name="EdGraphPin_8817"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_8818"
               End Object
               Begin Object Name="EdGraphPin_8817"
                  PinName="IsGoalFlipped"
                  Direction=EGPD_Output
                  PinType=(PinCategory="bool")
                  AutogeneratedDefaultValue="false"
                  LinkedTo(0)=EdGraphPin'K2Node_Select_1.EdGraphPin_9231'
               End Object
               Begin Object Name="EdGraphPin_8818"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Pawns/BP_NavigatorPawn.BP_NavigatorPawn_C')
                  bHidden=True
               End Object
               VariableReference=(MemberName="IsGoalFlipped",bSelfContext=True)
               Pins(0)=EdGraphPin'EdGraphPin_8817'
               Pins(1)=EdGraphPin'EdGraphPin_8818'
               NodePosX=352
               NodePosY=-128
               NodeGuid=BC2DE695441FE782CA59B0BCCCCA30C0
            End Object
            Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_2339"
               Begin Object Class=EdGraphPin Name="EdGraphPin_8823"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_8824"
               End Object
               Begin Object Name="EdGraphPin_8823"
                  PinName="GoalFlip"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
               End Object
               Begin Object Name="EdGraphPin_8824"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Pawns/BP_NavigatorPawn.BP_NavigatorPawn_C')
                  bHidden=True
               End Object
               VariableReference=(MemberName="GoalFlip",bSelfContext=True)
               Pins(0)=EdGraphPin'EdGraphPin_8823'
               Pins(1)=EdGraphPin'EdGraphPin_8824'
               NodePosX=-560
               NodePosY=-48
               NodeComment="From Here"
               bCommentBubbleVisible=True
               NodeGuid=E45E9C2B4A717FD58B5B14BF5F7EAE38
            End Object
            Begin Object Class=K2Node_Select Name="K2Node_Select_1"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9229"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9230"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9231"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9232"
               End Object
               Begin Object Name="EdGraphPin_9229"
                  PinName="Option 0"
                  PinFriendlyName="False"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  LinkedTo(0)=EdGraphPin'K2Node_VariableSet_1474.EdGraphPin_8911'
               End Object
               Begin Object Name="EdGraphPin_9230"
                  PinName="Option 1"
                  PinFriendlyName="True"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_43.EdGraphPin_9176'
               End Object
               Begin Object Name="EdGraphPin_9231"
                  PinName="Index"
                  PinType=(PinCategory="bool")
                  DefaultValue="false"
                  LinkedTo(0)=EdGraphPin'K2Node_VariableGet_2332.EdGraphPin_8817'
               End Object
               Begin Object Name="EdGraphPin_9232"
                  PinName="ReturnValue"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  LinkedTo(0)=EdGraphPin'K2Node_FunctionResult_3.EdGraphPin_9600'
               End Object
               IndexPinType=(PinCategory="bool",PinSubCategory=)
               Pins(0)=EdGraphPin'EdGraphPin_9229'
               Pins(1)=EdGraphPin'EdGraphPin_9230'
               Pins(2)=EdGraphPin'EdGraphPin_9231'
               Pins(3)=EdGraphPin'EdGraphPin_9232'
               NodePosX=560
               NodePosY=-208
               NodeGuid=8E2C86F6471A1A72310714B558589A0E
            End Object
            Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_1935"
               Begin Object Class=EdGraphPin Name="EdGraphPin_8844"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_8845"
               End Object
               Begin Object Name="EdGraphPin_8844"
                  PinName="GoalArray"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C',bIsArray=True)
                  LinkedTo(0)=EdGraphPin'K2Node_CallArrayFunction_421.EdGraphPin_9630'
                  LinkedTo(1)=EdGraphPin'K2Node_Knot_48.EdGraphPin_9193'
                  LinkedTo(2)=EdGraphPin'K2Node_Knot_56.EdGraphPin_9211'
                  LinkedTo(3)=EdGraphPin'K2Node_Knot_58.EdGraphPin_9199'
                  LinkedTo(4)=EdGraphPin'K2Node_CallArrayFunction_25.EdGraphPin_9699'
                  LinkedTo(5)=EdGraphPin'K2Node_CallArrayFunction_26.EdGraphPin_9735'
               End Object
               Begin Object Name="EdGraphPin_8845"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Pawns/BP_NavigatorPawn.BP_NavigatorPawn_C')
                  bHidden=True
               End Object
               VariableReference=(MemberName="GoalArray",bSelfContext=True)
               Pins(0)=EdGraphPin'EdGraphPin_8844'
               Pins(1)=EdGraphPin'EdGraphPin_8845'
               NodePosX=-1312
               NodePosY=96
               NodeComment="Is not from here"
               bCommentBubbleVisible=True
               NodeGuid=F37B503F4CF2DE792B6EE6910203B258
            End Object
            Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_422"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9605"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9606"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9607"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9608"
               End Object
               Begin Object Name="EdGraphPin_9605"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinToolTip="Target\nKismet Array Library Reference"
                  PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
                  DefaultObject=Default__KismetArrayLibrary
                  bHidden=True
               End Object
               Begin Object Name="EdGraphPin_9606"
                  PinName="TargetArray"
                  PinToolTip="Target Array\nArray of Goal Cue References\n\nThe array to get an item from *"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C',bIsArray=True,bIsReference=True,bIsConst=True)
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_48.EdGraphPin_9194'
                  bDefaultValueIsIgnored=True
               End Object
               Begin Object Name="EdGraphPin_9607"
                  PinName="Index"
                  PinToolTip="Index\nInteger\n\nThe index in the array to get an item from *"
                  PinType=(PinCategory="int")
                  DefaultValue="0"
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CallFunction_3264.EdGraphPin_9620'
               End Object
               Begin Object Name="EdGraphPin_9608"
                  PinName="Item"
                  PinToolTip="Item\nGoal Cue Reference"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_VariableSet_1474.EdGraphPin_8910'
               End Object
               bIsPureFunc=True
               FunctionReference=(MemberParent=Class'/Script/Engine.KismetArrayLibrary',MemberName="Array_Get")
               Pins(0)=EdGraphPin'EdGraphPin_9605'
               Pins(1)=EdGraphPin'EdGraphPin_9606'
               Pins(2)=EdGraphPin'EdGraphPin_9607'
               Pins(3)=EdGraphPin'EdGraphPin_9608'
               NodePosX=-528
               NodePosY=48
               NodeComment="Is not from here"
               bCommentBubbleVisible=True
               NodeGuid=98B01E8D4B383CE7278F92ADBA8F343E
            End Object
            Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_3264"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9617"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9618"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9619"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9620"
               End Object
               Begin Object Name="EdGraphPin_9617"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinToolTip="Target\nKismet Math Library Reference"
                  PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
                  DefaultObject=Default__KismetMathLibrary
                  bHidden=True
               End Object
               Begin Object Name="EdGraphPin_9618"
                  PinName="Min"
                  PinToolTip="Min\nInteger"
                  PinType=(PinCategory="int")
                  DefaultValue="0"
                  AutogeneratedDefaultValue="0"
               End Object
               Begin Object Name="EdGraphPin_9619"
                  PinName="Max"
                  PinToolTip="Max\nInteger"
                  PinType=(PinCategory="int")
                  DefaultValue="0"
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CallArrayFunction_23.EdGraphPin_9643'
               End Object
               Begin Object Name="EdGraphPin_9620"
                  PinName="ReturnValue"
                  PinToolTip="Return Value\nInteger"
                  Direction=EGPD_Output
                  PinType=(PinCategory="int")
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4717.EdGraphPin_9651'
                  LinkedTo(1)=EdGraphPin'K2Node_CallFunction_3367.EdGraphPin_9663'
                  LinkedTo(2)=EdGraphPin'K2Node_CallArrayFunction_422.EdGraphPin_9607'
               End Object
               bIsPureFunc=True
               FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="RandomIntegerInRange")
               Pins(0)=EdGraphPin'EdGraphPin_9617'
               Pins(1)=EdGraphPin'EdGraphPin_9618'
               Pins(2)=EdGraphPin'EdGraphPin_9619'
               Pins(3)=EdGraphPin'EdGraphPin_9620'
               NodePosX=-816
               NodePosY=192
               NodeComment="Is not from here"
               bCommentBubbleVisible=True
               NodeGuid=EAC8A9CE4039995DDB2AC4B5D8D407A9
            End Object
            Begin Object Class=K2Node_VariableSet Name="K2Node_VariableSet_1408"
               Begin Object Class=EdGraphPin Name="EdGraphPin_8881"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_8882"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_8883"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_8884"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_8885"
               End Object
               Begin Object Name="EdGraphPin_8881"
                  PinName="execute"
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_41.EdGraphPin_9224'
               End Object
               Begin Object Name="EdGraphPin_8882"
                  PinName="then"
                  Direction=EGPD_Output
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_42.EdGraphPin_9217'
               End Object
               Begin Object Name="EdGraphPin_8883"
                  PinName="GoalFlip"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_44.EdGraphPin_9170'
               End Object
               Begin Object Name="EdGraphPin_8884"
                  PinName="Output_Get"
                  PinToolTip="Retrieves the value of the variable, can use instead of a separate Get node"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_43.EdGraphPin_9175'
               End Object
               Begin Object Name="EdGraphPin_8885"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Pawns/BP_NavigatorPawn.BP_NavigatorPawn_C')
                  bHidden=True
               End Object
               VariableReference=(MemberName="GoalFlip",bSelfContext=True)
               Pins(0)=EdGraphPin'EdGraphPin_8881'
               Pins(1)=EdGraphPin'EdGraphPin_8882'
               Pins(2)=EdGraphPin'EdGraphPin_8883'
               Pins(3)=EdGraphPin'EdGraphPin_8884'
               Pins(4)=EdGraphPin'EdGraphPin_8885'
               NodePosX=240
               NodePosY=-336
               NodeComment="Is not from here"
               bCommentBubbleVisible=True
               NodeGuid=6B0FC8B947663CE502B8FEA75B46E1FD
            End Object
            Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_421"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9629"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9630"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9631"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9632"
               End Object
               Begin Object Name="EdGraphPin_9629"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinToolTip="Target\nKismet Array Library Reference"
                  PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
                  DefaultObject=Default__KismetArrayLibrary
                  bHidden=True
               End Object
               Begin Object Name="EdGraphPin_9630"
                  PinName="TargetArray"
                  PinToolTip="Target Array\nArray of Goal Cue References\n\nThe array to get an item from *"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C',bIsArray=True,bIsReference=True,bIsConst=True)
                  LinkedTo(0)=EdGraphPin'K2Node_VariableGet_1935.EdGraphPin_8844'
                  bDefaultValueIsIgnored=True
               End Object
               Begin Object Name="EdGraphPin_9631"
                  PinName="Index"
                  PinToolTip="Index\nInteger\n\nThe index in the array to get an item from *"
                  PinType=(PinCategory="int")
                  DefaultValue="0"
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4717.EdGraphPin_9653'
               End Object
               Begin Object Name="EdGraphPin_9632"
                  PinName="Item"
                  PinToolTip="Item\nGoal Cue Reference"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_55.EdGraphPin_9247'
               End Object
               bIsPureFunc=True
               FunctionReference=(MemberParent=Class'/Script/Engine.KismetArrayLibrary',MemberName="Array_Get")
               Pins(0)=EdGraphPin'EdGraphPin_9629'
               Pins(1)=EdGraphPin'EdGraphPin_9630'
               Pins(2)=EdGraphPin'EdGraphPin_9631'
               Pins(3)=EdGraphPin'EdGraphPin_9632'
               NodePosX=-336
               NodePosY=96
               NodeComment="Is not from here"
               bCommentBubbleVisible=True
               NodeGuid=0A5BC3514042DEEBF6FFCF863CD38869
            End Object
            Begin Object Class=K2Node_VariableSet Name="K2Node_VariableSet_1474"
               Begin Object Class=EdGraphPin Name="EdGraphPin_8908"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_8909"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_8910"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_8911"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_8912"
               End Object
               Begin Object Name="EdGraphPin_8908"
                  PinName="execute"
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_CallArrayFunction_24.EdGraphPin_9675'
               End Object
               Begin Object Name="EdGraphPin_8909"
                  PinName="then"
                  Direction=EGPD_Output
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_IfThenElse_102.EdGraphPin_8944'
               End Object
               Begin Object Name="EdGraphPin_8910"
                  PinName="Goal"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  LinkedTo(0)=EdGraphPin'K2Node_CallArrayFunction_422.EdGraphPin_9608'
               End Object
               Begin Object Name="EdGraphPin_8911"
                  PinName="Output_Get"
                  PinToolTip="Retrieves the value of the variable, can use instead of a separate Get node"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  LinkedTo(0)=EdGraphPin'K2Node_Select_1.EdGraphPin_9229'
               End Object
               Begin Object Name="EdGraphPin_8912"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Pawns/BP_NavigatorPawn.BP_NavigatorPawn_C')
                  bHidden=True
               End Object
               VariableReference=(MemberName="Goal",bSelfContext=True)
               Pins(0)=EdGraphPin'EdGraphPin_8908'
               Pins(1)=EdGraphPin'EdGraphPin_8909'
               Pins(2)=EdGraphPin'EdGraphPin_8910'
               Pins(3)=EdGraphPin'EdGraphPin_8911'
               Pins(4)=EdGraphPin'EdGraphPin_8912'
               NodePosX=-336
               NodePosY=-224
               NodeComment="Is not from here"
               bCommentBubbleVisible=True
               NodeGuid=15B06526425C434948CC3592E6917F3A
            End Object
            Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_23"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9641"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9642"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9643"
               End Object
               Begin Object Name="EdGraphPin_9641"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinToolTip="Target\nKismet Array Library Reference"
                  PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
                  DefaultObject=Default__KismetArrayLibrary
                  bHidden=True
               End Object
               Begin Object Name="EdGraphPin_9642"
                  PinName="TargetArray"
                  PinToolTip="Target Array\nArray of Goal Cue References\n\nThe array to perform the operation on *"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C',bIsArray=True,bIsReference=True,bIsConst=True)
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_58.EdGraphPin_9200'
                  bDefaultValueIsIgnored=True
               End Object
               Begin Object Name="EdGraphPin_9643"
                  PinName="ReturnValue"
                  PinToolTip="Return Value\nInteger\n\nThe last valid index of the array"
                  Direction=EGPD_Output
                  PinType=(PinCategory="int")
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CallFunction_3264.EdGraphPin_9619'
                  LinkedTo(1)=EdGraphPin'K2Node_CallFunction_4717.EdGraphPin_9652'
                  LinkedTo(2)=EdGraphPin'K2Node_Knot_61.EdGraphPin_9187'
               End Object
               bIsPureFunc=True
               FunctionReference=(MemberParent=Class'/Script/Engine.KismetArrayLibrary',MemberName="Array_LastIndex")
               Pins(0)=EdGraphPin'EdGraphPin_9641'
               Pins(1)=EdGraphPin'EdGraphPin_9642'
               Pins(2)=EdGraphPin'EdGraphPin_9643'
               NodePosX=-1056
               NodePosY=320
               NodeGuid=F53F162B44510A9A0C9AB1A768C5A135
            End Object
            Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4717"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9650"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9651"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9652"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9653"
               End Object
               Begin Object Name="EdGraphPin_9650"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinToolTip="Target\nKismet Math Library Reference"
                  PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
                  DefaultObject=Default__KismetMathLibrary
                  bHidden=True
               End Object
               Begin Object Name="EdGraphPin_9651"
                  PinName="Min"
                  PinToolTip="Min\nInteger"
                  PinType=(PinCategory="int")
                  DefaultValue="0"
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CallFunction_3264.EdGraphPin_9620'
               End Object
               Begin Object Name="EdGraphPin_9652"
                  PinName="Max"
                  PinToolTip="Max\nInteger"
                  PinType=(PinCategory="int")
                  DefaultValue="0"
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CallArrayFunction_23.EdGraphPin_9643'
               End Object
               Begin Object Name="EdGraphPin_9653"
                  PinName="ReturnValue"
                  PinToolTip="Return Value\nInteger"
                  Direction=EGPD_Output
                  PinType=(PinCategory="int")
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CallFunction_3367.EdGraphPin_9664'
                  LinkedTo(1)=EdGraphPin'K2Node_CallArrayFunction_421.EdGraphPin_9631'
                  LinkedTo(2)=EdGraphPin'K2Node_CallFunction_4019.EdGraphPin_9687'
                  LinkedTo(3)=EdGraphPin'K2Node_CallFunction_4020.EdGraphPin_9711'
                  LinkedTo(4)=EdGraphPin'K2Node_CommutativeAssociativeBinaryOperator_76.EdGraphPin_9723'
               End Object
               bIsPureFunc=True
               FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="RandomIntegerInRange")
               Pins(0)=EdGraphPin'EdGraphPin_9650'
               Pins(1)=EdGraphPin'EdGraphPin_9651'
               Pins(2)=EdGraphPin'EdGraphPin_9652'
               Pins(3)=EdGraphPin'EdGraphPin_9653'
               NodePosX=-528
               NodePosY=288
               NodeComment="Is not from here"
               bCommentBubbleVisible=True
               NodeGuid=8EDAC00E4296CB1F50863AB14D482562
            End Object
            Begin Object Class=K2Node_IfThenElse Name="K2Node_IfThenElse_102"
               Begin Object Class=EdGraphPin Name="EdGraphPin_8944"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_8945"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_8946"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_8947"
               End Object
               Begin Object Name="EdGraphPin_8944"
                  PinName="execute"
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_VariableSet_1474.EdGraphPin_8909'
               End Object
               Begin Object Name="EdGraphPin_8945"
                  PinName="Condition"
                  PinType=(PinCategory="bool")
                  DefaultValue="false"
                  AutogeneratedDefaultValue="true"
                  LinkedTo(0)=EdGraphPin'K2Node_CallFunction_3367.EdGraphPin_9665'
               End Object
               Begin Object Name="EdGraphPin_8946"
                  PinName="then"
                  PinFriendlyName="true"
                  Direction=EGPD_Output
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_41.EdGraphPin_9223'
               End Object
               Begin Object Name="EdGraphPin_8947"
                  PinName="else"
                  PinFriendlyName="false"
                  Direction=EGPD_Output
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_IfThenElse_138.EdGraphPin_9076'
               End Object
               Pins(0)=EdGraphPin'EdGraphPin_8944'
               Pins(1)=EdGraphPin'EdGraphPin_8945'
               Pins(2)=EdGraphPin'EdGraphPin_8946'
               Pins(3)=EdGraphPin'EdGraphPin_8947'
               NodePosX=-144
               NodePosY=-240
               ErrorType=4
               ErrorMsg="Info The execution path doesn\'t end with a return node.  False "
               NodeGuid=6DE0267142D333C51B313EBC36B4FA3A
            End Object
            Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_3367"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9662"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9663"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9664"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9665"
               End Object
               Begin Object Name="EdGraphPin_9662"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinToolTip="Target\nKismet Math Library Reference"
                  PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
                  DefaultObject=Default__KismetMathLibrary
                  bHidden=True
               End Object
               Begin Object Name="EdGraphPin_9663"
                  PinName="A"
                  PinToolTip="A\nInteger"
                  PinType=(PinCategory="int")
                  DefaultValue="0"
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CallFunction_3264.EdGraphPin_9620'
               End Object
               Begin Object Name="EdGraphPin_9664"
                  PinName="B"
                  PinToolTip="B\nInteger"
                  PinType=(PinCategory="int")
                  DefaultValue="0"
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4717.EdGraphPin_9653'
               End Object
               Begin Object Name="EdGraphPin_9665"
                  PinName="ReturnValue"
                  PinToolTip="Return Value\nBoolean"
                  Direction=EGPD_Output
                  PinType=(PinCategory="bool")
                  AutogeneratedDefaultValue="false"
                  LinkedTo(0)=EdGraphPin'K2Node_IfThenElse_102.EdGraphPin_8945'
               End Object
               bIsPureFunc=True
               FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="NotEqual_IntInt")
               Pins(0)=EdGraphPin'EdGraphPin_9662'
               Pins(1)=EdGraphPin'EdGraphPin_9663'
               Pins(2)=EdGraphPin'EdGraphPin_9664'
               Pins(3)=EdGraphPin'EdGraphPin_9665'
               NodePosX=-112
               NodePosY=208
               NodeGuid=60002819486E438DACCCB88F97C306FF
            End Object
            Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_24"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9674"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9675"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9676"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9677"
               End Object
               Begin Object Name="EdGraphPin_9674"
                  PinName="execute"
                  PinToolTip="\nExec"
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_57.EdGraphPin_9206'
               End Object
               Begin Object Name="EdGraphPin_9675"
                  PinName="then"
                  PinToolTip="\nExec"
                  Direction=EGPD_Output
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_VariableSet_1474.EdGraphPin_8908'
               End Object
               Begin Object Name="EdGraphPin_9676"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinToolTip="Target\nKismet Array Library Reference"
                  PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
                  DefaultObject=Default__KismetArrayLibrary
                  bHidden=True
               End Object
               Begin Object Name="EdGraphPin_9677"
                  PinName="TargetArray"
                  PinToolTip="Target Array\nArray of Goal Cue References\n\nThe array to shuffle"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C',bIsArray=True,bIsReference=True,bIsConst=True)
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_56.EdGraphPin_9212'
                  bDefaultValueIsIgnored=True
               End Object
               FunctionReference=(MemberParent=Class'/Script/Engine.KismetArrayLibrary',MemberName="Array_Shuffle")
               Pins(0)=EdGraphPin'EdGraphPin_9674'
               Pins(1)=EdGraphPin'EdGraphPin_9675'
               Pins(2)=EdGraphPin'EdGraphPin_9676'
               Pins(3)=EdGraphPin'EdGraphPin_9677'
               NodePosX=-816
               NodePosY=-224
               NodeGuid=B0455ACC442F5124785CECAB57579980
            End Object
            Begin Object Class=K2Node_Knot Name="K2Node_Knot_41"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9223"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9224"
               End Object
               Begin Object Name="EdGraphPin_9223"
                  PinName="InputPin"
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_IfThenElse_102.EdGraphPin_8946'
                  bDefaultValueIsIgnored=True
               End Object
               Begin Object Name="EdGraphPin_9224"
                  PinName="OutputPin"
                  Direction=EGPD_Output
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_VariableSet_1408.EdGraphPin_8881'
               End Object
               Pins(0)=EdGraphPin'EdGraphPin_9223'
               Pins(1)=EdGraphPin'EdGraphPin_9224'
               NodePosX=64
               NodePosY=-320
               NodeGuid=45E18D79441155BFAA639DB9C7F40B66
            End Object
            Begin Object Class=K2Node_Knot Name="K2Node_Knot_42"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9217"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9218"
               End Object
               Begin Object Name="EdGraphPin_9217"
                  PinName="InputPin"
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_VariableSet_1408.EdGraphPin_8882'
                  bDefaultValueIsIgnored=True
               End Object
               Begin Object Name="EdGraphPin_9218"
                  PinName="OutputPin"
                  Direction=EGPD_Output
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_FunctionResult_3.EdGraphPin_9599'
               End Object
               Pins(0)=EdGraphPin'EdGraphPin_9217'
               Pins(1)=EdGraphPin'EdGraphPin_9218'
               NodePosX=848
               NodePosY=-320
               NodeGuid=12D9E0714903A8D23CAA349D76827559
            End Object
            Begin Object Class=K2Node_Knot Name="K2Node_Knot_43"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9175"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9176"
               End Object
               Begin Object Name="EdGraphPin_9175"
                  PinName="InputPin"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  LinkedTo(0)=EdGraphPin'K2Node_VariableSet_1408.EdGraphPin_8884'
                  bDefaultValueIsIgnored=True
               End Object
               Begin Object Name="EdGraphPin_9176"
                  PinName="OutputPin"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  LinkedTo(0)=EdGraphPin'K2Node_Select_1.EdGraphPin_9230'
               End Object
               Pins(0)=EdGraphPin'EdGraphPin_9175'
               Pins(1)=EdGraphPin'EdGraphPin_9176'
               NodePosX=480
               NodePosY=-288
               NodeGuid=FDBC48CA43846B5FB33D25B6EEC20DA0
            End Object
            Begin Object Class=K2Node_Knot Name="K2Node_Knot_44"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9169"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9170"
               End Object
               Begin Object Name="EdGraphPin_9169"
                  PinName="InputPin"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_55.EdGraphPin_9248'
                  bDefaultValueIsIgnored=True
               End Object
               Begin Object Name="EdGraphPin_9170"
                  PinName="OutputPin"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  LinkedTo(0)=EdGraphPin'K2Node_VariableSet_1408.EdGraphPin_8883'
               End Object
               Pins(0)=EdGraphPin'EdGraphPin_9169'
               Pins(1)=EdGraphPin'EdGraphPin_9170'
               NodePosX=144
               NodePosY=-288
               NodeGuid=4FBA6E764D569E71D54CC9B1AA8650FC
            End Object
            Begin Object Class=K2Node_Knot Name="K2Node_Knot_48"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9193"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9194"
               End Object
               Begin Object Name="EdGraphPin_9193"
                  PinName="InputPin"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C',bIsArray=True)
                  LinkedTo(0)=EdGraphPin'K2Node_VariableGet_1935.EdGraphPin_8844'
                  bDefaultValueIsIgnored=True
               End Object
               Begin Object Name="EdGraphPin_9194"
                  PinName="OutputPin"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C',bIsArray=True)
                  LinkedTo(0)=EdGraphPin'K2Node_CallArrayFunction_422.EdGraphPin_9606'
               End Object
               Pins(0)=EdGraphPin'EdGraphPin_9193'
               Pins(1)=EdGraphPin'EdGraphPin_9194'
               NodePosX=-928
               NodePosY=48
               NodeGuid=1988729D437D3CC7B813E69EEDCEF911
            End Object
            Begin Object Class=K2Node_Knot Name="K2Node_Knot_55"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9247"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9248"
               End Object
               Begin Object Name="EdGraphPin_9247"
                  PinName="InputPin"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  LinkedTo(0)=EdGraphPin'K2Node_CallArrayFunction_421.EdGraphPin_9632'
                  bDefaultValueIsIgnored=True
               End Object
               Begin Object Name="EdGraphPin_9248"
                  PinName="OutputPin"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_44.EdGraphPin_9169'
               End Object
               Pins(0)=EdGraphPin'EdGraphPin_9247'
               Pins(1)=EdGraphPin'EdGraphPin_9248'
               NodePosY=112
               NodeGuid=75066AC64D7C8D5302675ABC22D9A6C8
            End Object
            Begin Object Class=K2Node_Knot Name="K2Node_Knot_56"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9211"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9212"
               End Object
               Begin Object Name="EdGraphPin_9211"
                  PinName="InputPin"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C',bIsArray=True)
                  LinkedTo(0)=EdGraphPin'K2Node_VariableGet_1935.EdGraphPin_8844'
                  bDefaultValueIsIgnored=True
               End Object
               Begin Object Name="EdGraphPin_9212"
                  PinName="OutputPin"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C',bIsArray=True)
                  LinkedTo(0)=EdGraphPin'K2Node_CallArrayFunction_24.EdGraphPin_9677'
               End Object
               Pins(0)=EdGraphPin'EdGraphPin_9211'
               Pins(1)=EdGraphPin'EdGraphPin_9212'
               NodePosX=-1104
               NodePosY=-192
               NodeGuid=8C76EDF840687AA6729C3AB599EA5298
            End Object
            Begin Object Class=K2Node_Knot Name="K2Node_Knot_57"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9205"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9206"
               End Object
               Begin Object Name="EdGraphPin_9205"
                  PinName="InputPin"
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_FunctionEntry_302.EdGraphPin_9596'
                  bDefaultValueIsIgnored=True
               End Object
               Begin Object Name="EdGraphPin_9206"
                  PinName="OutputPin"
                  Direction=EGPD_Output
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_CallArrayFunction_24.EdGraphPin_9674'
               End Object
               Pins(0)=EdGraphPin'EdGraphPin_9205'
               Pins(1)=EdGraphPin'EdGraphPin_9206'
               NodePosX=-960
               NodePosY=-304
               NodeGuid=AE0ED4BB457279F31373D5AF0A234028
            End Object
            Begin Object Class=K2Node_Knot Name="K2Node_Knot_58"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9199"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9200"
               End Object
               Begin Object Name="EdGraphPin_9199"
                  PinName="InputPin"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C',bIsArray=True)
                  LinkedTo(0)=EdGraphPin'K2Node_VariableGet_1935.EdGraphPin_8844'
                  bDefaultValueIsIgnored=True
               End Object
               Begin Object Name="EdGraphPin_9200"
                  PinName="OutputPin"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C',bIsArray=True)
                  LinkedTo(0)=EdGraphPin'K2Node_CallArrayFunction_23.EdGraphPin_9642'
               End Object
               Pins(0)=EdGraphPin'EdGraphPin_9199'
               Pins(1)=EdGraphPin'EdGraphPin_9200'
               NodePosX=-1120
               NodePosY=352
               NodeGuid=F14DBC114C8E98E3FCC9B49D3B87ACEC
            End Object
            Begin Object Class=K2Node_IfThenElse Name="K2Node_IfThenElse_138"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9076"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9077"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9078"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9079"
               End Object
               Begin Object Name="EdGraphPin_9076"
                  PinName="execute"
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_IfThenElse_102.EdGraphPin_8947'
               End Object
               Begin Object Name="EdGraphPin_9077"
                  PinName="Condition"
                  PinType=(PinCategory="bool")
                  DefaultValue="false"
                  AutogeneratedDefaultValue="true"
                  LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4019.EdGraphPin_9689'
               End Object
               Begin Object Name="EdGraphPin_9078"
                  PinName="then"
                  PinFriendlyName="true"
                  Direction=EGPD_Output
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_VariableSet_336.EdGraphPin_9136'
               End Object
               Begin Object Name="EdGraphPin_9079"
                  PinName="else"
                  PinFriendlyName="false"
                  Direction=EGPD_Output
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_VariableSet_334.EdGraphPin_9031'
               End Object
               Pins(0)=EdGraphPin'EdGraphPin_9076'
               Pins(1)=EdGraphPin'EdGraphPin_9077'
               Pins(2)=EdGraphPin'EdGraphPin_9078'
               Pins(3)=EdGraphPin'EdGraphPin_9079'
               NodePosX=240
               NodePosY=144
               NodeGuid=AE24F3D94A6684B44D046A82F04CF12E
            End Object
            Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4019"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9686"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9687"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9688"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9689"
               End Object
               Begin Object Name="EdGraphPin_9686"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinToolTip="Target\nKismet Math Library Reference"
                  PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
                  DefaultObject=Default__KismetMathLibrary
                  bHidden=True
               End Object
               Begin Object Name="EdGraphPin_9687"
                  PinName="A"
                  PinToolTip="A\nInteger"
                  PinType=(PinCategory="int")
                  DefaultValue="0"
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4717.EdGraphPin_9653'
               End Object
               Begin Object Name="EdGraphPin_9688"
                  PinName="B"
                  PinToolTip="B\nInteger"
                  PinType=(PinCategory="int")
                  DefaultValue="0"
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_62.EdGraphPin_9182'
               End Object
               Begin Object Name="EdGraphPin_9689"
                  PinName="ReturnValue"
                  PinToolTip="Return Value\nBoolean"
                  Direction=EGPD_Output
                  PinType=(PinCategory="bool")
                  AutogeneratedDefaultValue="false"
                  LinkedTo(0)=EdGraphPin'K2Node_IfThenElse_138.EdGraphPin_9077'
               End Object
               bIsPureFunc=True
               FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="EqualEqual_IntInt")
               Pins(0)=EdGraphPin'EdGraphPin_9686'
               Pins(1)=EdGraphPin'EdGraphPin_9687'
               Pins(2)=EdGraphPin'EdGraphPin_9688'
               Pins(3)=EdGraphPin'EdGraphPin_9689'
               NodePosX=32
               NodePosY=304
               NodeGuid=B4CB0FDC49511677E514D58719507F06
            End Object
            Begin Object Class=K2Node_Knot Name="K2Node_Knot_61"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9187"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9188"
               End Object
               Begin Object Name="EdGraphPin_9187"
                  PinName="InputPin"
                  PinType=(PinCategory="int")
                  LinkedTo(0)=EdGraphPin'K2Node_CallArrayFunction_23.EdGraphPin_9643'
                  bDefaultValueIsIgnored=True
               End Object
               Begin Object Name="EdGraphPin_9188"
                  PinName="OutputPin"
                  Direction=EGPD_Output
                  PinType=(PinCategory="int")
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_62.EdGraphPin_9181'
               End Object
               Pins(0)=EdGraphPin'EdGraphPin_9187'
               Pins(1)=EdGraphPin'EdGraphPin_9188'
               NodePosX=-752
               NodePosY=560
               NodeGuid=C2309D424CE4ED73628E48B577784749
            End Object
            Begin Object Class=K2Node_Knot Name="K2Node_Knot_62"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9181"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9182"
               End Object
               Begin Object Name="EdGraphPin_9181"
                  PinName="InputPin"
                  PinType=(PinCategory="int")
                  LinkedTo(0)=EdGraphPin'K2Node_Knot_61.EdGraphPin_9188'
                  bDefaultValueIsIgnored=True
               End Object
               Begin Object Name="EdGraphPin_9182"
                  PinName="OutputPin"
                  Direction=EGPD_Output
                  PinType=(PinCategory="int")
                  LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4019.EdGraphPin_9688'
               End Object
               Pins(0)=EdGraphPin'EdGraphPin_9181'
               Pins(1)=EdGraphPin'EdGraphPin_9182'
               NodePosX=-64
               NodePosY=560
               NodeGuid=A23285CB4A9217FFB4279CB8B42F8B5C
            End Object
            Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_25"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9698"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9699"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9700"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9701"
               End Object
               Begin Object Name="EdGraphPin_9698"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinToolTip="Target\nKismet Array Library Reference"
                  PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
                  DefaultObject=Default__KismetArrayLibrary
                  bHidden=True
               End Object
               Begin Object Name="EdGraphPin_9699"
                  PinName="TargetArray"
                  PinToolTip="Target Array\nArray of Goal Cue References\n\nThe array to get an item from *"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C',bIsArray=True,bIsReference=True,bIsConst=True)
                  LinkedTo(0)=EdGraphPin'K2Node_VariableGet_1935.EdGraphPin_8844'
                  bDefaultValueIsIgnored=True
               End Object
               Begin Object Name="EdGraphPin_9700"
                  PinName="Index"
                  PinToolTip="Index\nInteger\n\nThe index in the array to get an item from *"
                  PinType=(PinCategory="int")
                  DefaultValue="0"
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4020.EdGraphPin_9713'
               End Object
               Begin Object Name="EdGraphPin_9701"
                  PinName="Item"
                  PinToolTip="Item\nGoal Cue Reference"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_VariableSet_336.EdGraphPin_9138'
               End Object
               bIsPureFunc=True
               FunctionReference=(MemberParent=Class'/Script/Engine.KismetArrayLibrary',MemberName="Array_Get")
               Pins(0)=EdGraphPin'EdGraphPin_9698'
               Pins(1)=EdGraphPin'EdGraphPin_9699'
               Pins(2)=EdGraphPin'EdGraphPin_9700'
               Pins(3)=EdGraphPin'EdGraphPin_9701'
               NodePosX=400
               NodePosY=256
               NodeGuid=5FC038E74110F1E77231C292E2752CC3
            End Object
            Begin Object Class=K2Node_VariableSet Name="K2Node_VariableSet_336"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9136"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9137"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9138"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9139"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9140"
               End Object
               Begin Object Name="EdGraphPin_9136"
                  PinName="execute"
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_IfThenElse_138.EdGraphPin_9078'
               End Object
               Begin Object Name="EdGraphPin_9137"
                  PinName="then"
                  Direction=EGPD_Output
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_FunctionResult_3.EdGraphPin_9599'
               End Object
               Begin Object Name="EdGraphPin_9138"
                  PinName="GoalFlip"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  LinkedTo(0)=EdGraphPin'K2Node_CallArrayFunction_25.EdGraphPin_9701'
               End Object
               Begin Object Name="EdGraphPin_9139"
                  PinName="Output_Get"
                  PinToolTip="Retrieves the value of the variable, can use instead of a separate Get node"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
               End Object
               Begin Object Name="EdGraphPin_9140"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Pawns/BP_NavigatorPawn.BP_NavigatorPawn_C')
                  bHidden=True
               End Object
               VariableReference=(MemberName="GoalFlip",MemberGuid=1DA4EFA24E56EC73DDA09EB822DC7604,bSelfContext=True)
               Pins(0)=EdGraphPin'EdGraphPin_9136'
               Pins(1)=EdGraphPin'EdGraphPin_9137'
               Pins(2)=EdGraphPin'EdGraphPin_9138'
               Pins(3)=EdGraphPin'EdGraphPin_9139'
               Pins(4)=EdGraphPin'EdGraphPin_9140'
               NodePosX=768
               NodePosY=160
               NodeGuid=56107AED42BECA6AB6291FAEFA1AB42D
            End Object
            Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_4020"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9710"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9711"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9712"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9713"
               End Object
               Begin Object Name="EdGraphPin_9710"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinToolTip="Target\nKismet Math Library Reference"
                  PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
                  DefaultObject=Default__KismetMathLibrary
                  bHidden=True
               End Object
               Begin Object Name="EdGraphPin_9711"
                  PinName="A"
                  PinToolTip="A\nInteger"
                  PinType=(PinCategory="int")
                  DefaultValue="0"
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4717.EdGraphPin_9653'
               End Object
               Begin Object Name="EdGraphPin_9712"
                  PinName="B"
                  PinToolTip="B\nInteger"
                  PinType=(PinCategory="int")
                  DefaultValue="1"
                  AutogeneratedDefaultValue="1"
               End Object
               Begin Object Name="EdGraphPin_9713"
                  PinName="ReturnValue"
                  PinToolTip="Return Value\nInteger"
                  Direction=EGPD_Output
                  PinType=(PinCategory="int")
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CallArrayFunction_25.EdGraphPin_9700'
               End Object
               bIsPureFunc=True
               FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="Subtract_IntInt")
               Pins(0)=EdGraphPin'EdGraphPin_9710'
               Pins(1)=EdGraphPin'EdGraphPin_9711'
               Pins(2)=EdGraphPin'EdGraphPin_9712'
               Pins(3)=EdGraphPin'EdGraphPin_9713'
               NodePosX=320
               NodePosY=432
               NodeGuid=0505CD454FB262C0AB6C7E86CF35A834
            End Object
            Begin Object Class=K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_76"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9722"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9723"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9724"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9725"
               End Object
               Begin Object Name="EdGraphPin_9722"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinToolTip="Target\nKismet Math Library Reference"
                  PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
                  DefaultObject=Default__KismetMathLibrary
                  bHidden=True
               End Object
               Begin Object Name="EdGraphPin_9723"
                  PinName="A"
                  PinToolTip="A\nInteger"
                  PinType=(PinCategory="int")
                  DefaultValue="0"
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CallFunction_4717.EdGraphPin_9653'
               End Object
               Begin Object Name="EdGraphPin_9724"
                  PinName="B"
                  PinToolTip="B\nInteger"
                  PinType=(PinCategory="int")
                  DefaultValue="1"
                  AutogeneratedDefaultValue="1"
               End Object
               Begin Object Name="EdGraphPin_9725"
                  PinName="ReturnValue"
                  PinToolTip="Return Value\nInteger"
                  Direction=EGPD_Output
                  PinType=(PinCategory="int")
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CallArrayFunction_26.EdGraphPin_9736'
               End Object
               bIsPureFunc=True
               FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="Add_IntInt")
               Pins(0)=EdGraphPin'EdGraphPin_9722'
               Pins(1)=EdGraphPin'EdGraphPin_9723'
               Pins(2)=EdGraphPin'EdGraphPin_9724'
               Pins(3)=EdGraphPin'EdGraphPin_9725'
               NodePosX=320
               NodePosY=560
               NodeGuid=DFAE73F945405AA6332838AD0A416533
            End Object
            Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_26"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9734"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9735"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9736"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9737"
               End Object
               Begin Object Name="EdGraphPin_9734"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinToolTip="Target\nKismet Array Library Reference"
                  PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
                  DefaultObject=Default__KismetArrayLibrary
                  bHidden=True
               End Object
               Begin Object Name="EdGraphPin_9735"
                  PinName="TargetArray"
                  PinToolTip="Target Array\nArray of Goal Cue References\n\nThe array to get an item from *"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C',bIsArray=True,bIsReference=True,bIsConst=True)
                  LinkedTo(0)=EdGraphPin'K2Node_VariableGet_1935.EdGraphPin_8844'
                  bDefaultValueIsIgnored=True
               End Object
               Begin Object Name="EdGraphPin_9736"
                  PinName="Index"
                  PinToolTip="Index\nInteger\n\nThe index in the array to get an item from *"
                  PinType=(PinCategory="int")
                  DefaultValue="0"
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_CommutativeAssociativeBinaryOperator_76.EdGraphPin_9725'
               End Object
               Begin Object Name="EdGraphPin_9737"
                  PinName="Item"
                  PinToolTip="Item\nGoal Cue Reference"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  AutogeneratedDefaultValue="0"
                  LinkedTo(0)=EdGraphPin'K2Node_VariableSet_334.EdGraphPin_9033'
               End Object
               bIsPureFunc=True
               FunctionReference=(MemberParent=Class'/Script/Engine.KismetArrayLibrary',MemberName="Array_Get")
               Pins(0)=EdGraphPin'EdGraphPin_9734'
               Pins(1)=EdGraphPin'EdGraphPin_9735'
               Pins(2)=EdGraphPin'EdGraphPin_9736'
               Pins(3)=EdGraphPin'EdGraphPin_9737'
               NodePosX=528
               NodePosY=416
               NodeGuid=2FEDD2804B8673D5F4332E988502955F
            End Object
            Begin Object Class=K2Node_VariableSet Name="K2Node_VariableSet_334"
               Begin Object Class=EdGraphPin Name="EdGraphPin_9031"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9032"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9033"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9034"
               End Object
               Begin Object Class=EdGraphPin Name="EdGraphPin_9035"
               End Object
               Begin Object Name="EdGraphPin_9031"
                  PinName="execute"
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_IfThenElse_138.EdGraphPin_9079'
               End Object
               Begin Object Name="EdGraphPin_9032"
                  PinName="then"
                  Direction=EGPD_Output
                  PinType=(PinCategory="exec")
                  LinkedTo(0)=EdGraphPin'K2Node_FunctionResult_3.EdGraphPin_9599'
               End Object
               Begin Object Name="EdGraphPin_9033"
                  PinName="GoalFlip"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
                  LinkedTo(0)=EdGraphPin'K2Node_CallArrayFunction_26.EdGraphPin_9737'
               End Object
               Begin Object Name="EdGraphPin_9034"
                  PinName="Output_Get"
                  PinToolTip="Retrieves the value of the variable, can use instead of a separate Get node"
                  Direction=EGPD_Output
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Cues/GoalCue.GoalCue_C')
               End Object
               Begin Object Name="EdGraphPin_9035"
                  PinName="self"
                  PinFriendlyName="Target"
                  PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/DonNavigationSamples/Pawns/BP_NavigatorPawn.BP_NavigatorPawn_C')
                  bHidden=True
               End Object
               VariableReference=(MemberName="GoalFlip",MemberGuid=1DA4EFA24E56EC73DDA09EB822DC7604,bSelfContext=True)
               Pins(0)=EdGraphPin'EdGraphPin_9031'
               Pins(1)=EdGraphPin'EdGraphPin_9032'
               Pins(2)=EdGraphPin'EdGraphPin_9033'
               Pins(3)=EdGraphPin'EdGraphPin_9034'
               Pins(4)=EdGraphPin'EdGraphPin_9035'
               NodePosX=784
               NodePosY=320
               NodeGuid=B251826740E8CC46C4E4AF86F79E18CB
            End Object
            I forgot the code. This is the picture:
            Attached Files
            Last edited by n00854180t; 04-15-2016, 08:00 PM. Reason: Changed quote tag to code tag to save space on the thread

            Comment


              #51
              VSZ,

              Thank you for releasing this as a free plugin, and especially for releasing the source code along. I wish everyone would follow your example...

              I've been trying to get the plugin to work with 4.11.1 (latest release) but I'm not having much luck. It compiles without errors but when I start a project, it crashes during loading. The log shows this as the only clue

              Code:
              Fatal error: [File:D:\BuildFarm\buildmachine_++UE4+Release-4.11\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp] [Line: 2824]
              NewObject with empty name can't be used to create default subobjects (inside of UObject derived class constructor) as it produces inconsistent object names. Use ObjectInitializer.CreateDefaultSuobject<> instead.
              It doesn't tell me much since it's not even in the plugin code, so I'm not sure if this is a UE4 bug or a plugin one.

              Any ideas?
              Linux Support page (Wiki): https://wiki.unrealengine.com/Linux_Support
              Linux Demos page (Wiki): https://wiki.unrealengine.com/Linux_Demos
              My Unreal Engine 4 Linux repo: https://github.com/3dluvr/UnrealEngine/

              Comment


                #52
                All, I didn't see the new replies on this thread until now. Somehow the VBulletin thread subscription mail just doesn't seem to work reliably for me. Sometimes it sends an email when there's a new post, more often than not it doesn't!

                [MENTION=87223]rsfx[/MENTION] - Thanks for sharing that. I think that's the multi-waypoint setup that [MENTION=32265]lunyBunny[/MENTION] was looking for too. Btw FPS on the video looks really low, is it the recording software or just the way it is? :P I'm a bit surprised to see the bot bumping into obstacles so often, that is not the intended level of accuracy at all! Did you try playing around with the VoxelSize setting to see if that helps? Not sure if you ran into a bug in the system or a fundamental limitation of the overall setup.

                [MENTION=1519]amigo[/MENTION] - thanks for bringing that to my attention! I haven't migrated to 4.11 yet so I haven't had a chance to test. When I get some time I'll migrate the sample project over to 4.11.1 and see what happens. Expect it to take a week or so though, it's crunch time for my project ATM and if I start looking at this I know I won't stop :P

                Plugin news:

                I've made some critical bugfixes and usability improvements that I haven't checked in or uploaded yet. One of them is a serious bug in the dynamic collision task scheduler where unrelated tasks were getting mixed up! That fix should improve accuracy of dynamic collisions dramatically although I don't think that will help with general collision issues like the one [MENTION=87223]rsfx[/MENTION] posted in that video.

                I'll try to bundle up these bugfixes and 4.11 testing together into one update.
                Last edited by VSZ; 04-14-2016, 10:22 AM.

                Steam Early Access: Drunk On Nectar - The Nature Simulator

                UE4 Plugins: DoN’s Dynamic Mesh FX | DoN’s 3D Pathfinding

                Comment


                  #53
                  Wonderful plugin!

                  Is Android supported out of the box?

                  Does it perform well on mobile ?

                  Would it work along with Dungeon Architect ?

                  Comment


                    #54
                    I have no idea honestly I'm not using any OS specific features so assuming your map is small things _might_ just work.

                    I've no experience with mobile development though so I don't know what kind of issues to expect.

                    Try it out and let us know what happens!
                    Last edited by VSZ; 04-15-2016, 06:22 PM.

                    Steam Early Access: Drunk On Nectar - The Nature Simulator

                    UE4 Plugins: DoN’s Dynamic Mesh FX | DoN’s 3D Pathfinding

                    Comment


                      #55
                      Originally posted by VSZ View Post
                      All, I didn't see the new replies on this thread until now. Somehow the VBulletin thread subscription mail just doesn't seem to work reliably for me. Sometimes it sends an email when there's a new post, more often than not it doesn't!

                      [MENTION=87223]rsfx[/MENTION] - Thanks for sharing that. I think that's the multi-waypoint setup that [MENTION=32265]lunyBunny[/MENTION] was looking for too. Btw FPS on the video looks really low, is it the recording software or just the way it is? :P I'm a bit surprised to see the bot bumping into obstacles so often, that is not the intended level of accuracy at all! Did you try playing around with the VoxelSize setting to see if that helps? Not sure if you ran into a bug in the system or a fundamental limitation of the overall setup.

                      [MENTION=1519]amigo[/MENTION] - thanks for bringing that to my attention! I haven't migrated to 4.11 yet so I haven't had a chance to test. When I get some time I'll migrate the sample project over to 4.11.1 and see what happens. Expect it to take a week or so though, it's crunch time for my project ATM and if I start looking at this I know I won't stop :P

                      Plugin news:

                      I've made some critical bugfixes and usability improvements that I haven't checked in or uploaded yet. One of them is a serious bug in the dynamic collision task scheduler where unrelated tasks were getting mixed up! That fix should improve accuracy of dynamic collisions dramatically although I don't think that will help with general collision issues like the one [MENTION=87223]rsfx[/MENTION] posted in that video.

                      I'll try to bundle up these bugfixes and 4.11 testing together into one update.
                      Just to provide some more context for the error reported by amigo, project compiles fine, then trows the error amigo mentioned when you try and open it. Heres a snippet from my log that is relevant for the error. UE4 version 4.11.1

                      Code:
                      [2016.04.15-07.41.09:467][  0]LogWindows:Error: === Critical error: ===
                      Fatal error: [File:C:\UE4_Engine\Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp] [Line: 2824] 
                      NewObject with empty name can't be used to create default subobjects (inside of UObject derived class constructor) as it produces inconsistent object names. Use ObjectInitializer.CreateDefaultSuobject<> instead.
                      
                      
                      KERNELBASE.dll
                      UE4Editor-Core.dll!FOutputDeviceWindowsError::Serialize() [c:\ue4_engine\engine\source\runtime\core\private\windows\windowsplatformoutputdevices.cpp:95]
                      UE4Editor-Core.dll!FOutputDevice::Logf__VA() [c:\ue4_engine\engine\source\runtime\core\private\misc\outputdevice.cpp:149]
                      UE4Editor-Core.dll!FDebug::AssertFailed() [c:\ue4_engine\engine\source\runtime\core\private\misc\outputdevice.cpp:430]
                      UE4Editor-CoreUObject.dll!FObjectInitializer::AssertIfInConstructor() [c:\ue4_engine\engine\source\runtime\coreuobject\private\uobject\uobjectglobals.cpp:2825]
                      UE4Editor-Engine.dll!NewObject<UBodySetup>() [c:\ue4_engine\engine\source\runtime\coreuobject\public\uobject\uobjectglobals.h:1173]
                      UE4Editor-Engine.dll!UBoxComponent::UpdateBodySetup() [c:\ue4_engine\engine\source\runtime\engine\private\components\boxcomponent.cpp:40]
                      UE4Editor-Engine.dll!UBoxComponent::SetBoxExtent() [c:\ue4_engine\engine\source\runtime\engine\private\components\boxcomponent.cpp:24]
                      UE4Editor-DonAINavigation.dll
                      UE4Editor-CoreUObject.dll!UClass::CreateDefaultObject() [c:\ue4_engine\engine\source\runtime\coreuobject\private\uobject\class.cpp:2763]
                      UE4Editor-CoreUObject.dll!UObjectLoadAllCompiledInDefaultProperties() [c:\ue4_engine\engine\source\runtime\coreuobject\private\uobject\uobjectbase.cpp:724]
                      UE4Editor-CoreUObject.dll!ProcessNewlyLoadedUObjects() [c:\e4_engine\engine\source\runtime\coreuobject\private\uobject\uobjectbase.cpp:818]
                      UE4Editor-CoreUObject.dll!TBaseStaticDelegateInstance<void __cdecl(void)>::ExecuteIfSafe() [c:\ue4_engine\engine\source\runtime\core\public\delegates\delegateinstancesimpl_variadics.inl:1021]
                      UE4Editor-Core.dll!TBaseMulticastDelegate<void>::Broadcast() [c:\ue4_engine\engine\source\runtime\core\public\delegates\delegatesignatureimpl_variadics.inl:921]
                      UE4Editor-Core.dll!FModuleManager::LoadModuleWithFailureReason() [c:\ue4_engine\engine\source\runtime\core\private\modules\modulemanager.cpp:427]
                      UE4Editor-Projects.dll!FModuleDescriptor::LoadModulesForPhase() [c:\ue4_engine\engine\source\runtime\projects\private\moduledescriptor.cpp:398]
                      UE4Editor-Projects.dll!FPluginManager::LoadModulesForEnabledPlugins() [c:\ue4_engine\engine\source\runtime\projects\private\pluginmanager.cpp:539]
                      UE4Editor.exe!FEngineLoop::LoadStartupModules() [c:\ue4_engine\engine\source\runtime\launch\private\launchengineloop.cpp:2080]
                      UE4Editor.exe!FEngineLoop::PreInit() [c:\ue4_engine\engine\source\runtime\launch\private\launchengineloop.cpp:1544]
                      UE4Editor.exe!GuardedMain() [c:\perforce\ue4_engine\engine\source\runtime\launch\private\launch.cpp:110]
                      UE4Editor.exe!GuardedMainWrapper() [c:\ue4_engine\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
                      UE4Editor.exe!WinMain() [c:\ue4_engine\engine\source\runtime\launch\private\windows\launchwindows.cpp:200]
                      UE4Editor.exe!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:264]
                      KERNEL32.DLL
                      ntdll.dll
                      ntdll.dll
                      EDIT:

                      after fiddling around a bit I've found that if I edit theUDoNNavigationVolumeComponent constructor to not have the SetBoxExtent call the error disappears:

                      as such

                      Code:
                      UDoNNavigationVolumeComponent::UDoNNavigationVolumeComponent(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer)
                      {
                      	BoxExtent = FVector(50.0f, 50.0f, 50.0f);
                      
                      	static FName CollisionProfileName(TEXT("DoNNavigationVolume"));
                      	SetCollisionProfileName(CollisionProfileName);	
                      }
                      Now I don't know what unwanted side effects this might lead to if any, but it seems to be working alright for me
                      Last edited by Liine; 04-15-2016, 04:24 AM.

                      Comment


                        #56
                        [MENTION=46184]Liine[/MENTION], thanks a lot for that, you've saved me some time there

                        There should be no side-effects whatsoever with that change. The class in question is deprecated and not used by the plugin. I left the whole "Legacy" subfolder in there just as an example of the "space filling volumes" solution that I previously used, it's not used by the current system.

                        I still need to update the plugin with a whole clutch of bugfixes that I've made over the past month or so though.

                        Steam Early Access: Drunk On Nectar - The Nature Simulator

                        UE4 Plugins: DoN’s Dynamic Mesh FX | DoN’s 3D Pathfinding

                        Comment


                          #57
                          v1.2 released

                          Latest plugin and sample project are available both in the OP and in this link:
                          http://www.drunkonnectar.com/3d-pathfinding-ue4/

                          There's a ton of tweaks and bugfixes in this (git commit). Changes include, but are not limited to:

                          * Major bugfix: Hash comparison in dynamic task scheduler is fixed to account for unrelated meshes using a common cache key. Unrelated tasks were previously getting mixed up because of this bug!
                          With this fix, the moving glass panels example in the sample project should now be "near perfect". The rocket dodging example is still rough around the edges (so there's still further scope for improving dynamic collision handling)

                          * Major usability feature: Automatically teleport pawn to a nearby "good" location for cases where the pawn is starting pathfinding from a spot where initial collisions are indeterminate. Goal vector will also be automatically tweaked if it happens to be in a "bad spot". This should help new users in getting their initial testing going with fewer hitches. You can disable this behavior under query params by setting "FlexibleOriginGoal" to false. Some of the older rules still apply - if your pathfinding goal or origin is very near the floor then your queries will either fail or time-out.

                          * 4.11 should be working fine now (I haven't tested this myself, so please let me know if it still doesn't work for you!)

                          * Improved logging: Prevent log spam by memorizing known "bad queries", other general improvements to logging

                          * API signature change to "ScheduleDynamicCollisionUpdate" to allow users to disable caching altogether. This change is not backward compatible I'm afraid. C++ users should update existing calls to this function accordingly.

                          * Stability v/s Performance compromise in favor of stability: several VolumeAtUnsafe lookups have been replaced with VolumeAtSafe. Plugin users now need to worry less about triggering certain edge conditions which may lead to crashes, at the cost of a small amount of performance.

                          * Animation states for your pawn can be easily updated now using new callbacks: Locomotion Start/End/Next/Abort. Implement these as part of the IDonNavigator interface.

                          * Navigator interface now exported properly as part of DONAINAVIGATION_API

                          * You can now disable cache usage completely for dynamic collisions by passing DisableCacheUsage as true to the scheduler. This is important for some situations where you cannot reliably use the mesh component (or a cache identifier) as a unique key for your mesh and you'd rather not bother with caching at all.

                          ==

                          Just so you know, I'm not actively working on new features for the plugin. However whenever I find things that my own game needs in the plugin then I try to improve or fix what I can at that time.

                          Let me know if any links aren't working! All this bumping of versions, uploading stuff and testing links is more finicky than I could have ever imagined before
                          Last edited by VSZ; 04-22-2016, 08:38 AM.

                          Steam Early Access: Drunk On Nectar - The Nature Simulator

                          UE4 Plugins: DoN’s Dynamic Mesh FX | DoN’s 3D Pathfinding

                          Comment


                            #58
                            [MENTION=14603]VSZ[/MENTION]

                            Thanks for the update - unfortunately I don't have good news here...

                            Module.DonAINavigation.cpp
                            M:\Unreal Projects\PluginCompiler\Plugins\DonAINavigation\Source\DonAINavigation\Private\BehaviorTree\BTTask_FlyTo.cpp(45): warning C4996: 'FBlackboardKeySelector::CacheSelectedKey': CacheSelectedKey is deprecated. Please use ResolveSelectedKey instead. Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
                            c:\unrealengine\4.11\engine\source\runtime\aimodule\classes\behaviortree\BehaviorTreeTypes.h(515): note: see declaration of 'FBlackboardKeySelector::CacheSelectedKey'
                            M:\Unreal Projects\PluginCompiler\Plugins\DonAINavigation\Source\DonAINavigation\Private\DonNavigationManager.cpp(1238): error C2248: 'FCollisionQueryParams::IgnoreComponents': cannot access private member declared in class 'FCollisionQueryParams'
                            c:\unrealengine\4.11\engine\source\runtime\engine\public\CollisionQueryParams.h(53): note: see declaration of 'FCollisionQueryParams::IgnoreComponents'
                            C:\UnrealEngine\4.11\Engine\Source\Runtime\Engine\Classes\GameFramework/MovementComponent.h(12): note: see declaration of 'FCollisionQueryParams'
                            M:\Unreal Projects\PluginCompiler\Plugins\DonAINavigation\Source\DonAINavigation\Private\DonNavigationManager.cpp(1312): error C2248: 'FCollisionQueryParams::IgnoreComponents': cannot access private member declared in class 'FCollisionQueryParams'
                            c:\unrealengine\4.11\engine\source\runtime\engine\public\CollisionQueryParams.h(53): note: see declaration of 'FCollisionQueryParams::IgnoreComponents'
                            C:\UnrealEngine\4.11\Engine\Source\Runtime\Engine\Classes\GameFramework/MovementComponent.h(12): note: see declaration of 'FCollisionQueryParams'
                            -------- End Detailed Actions Stats -----------------------------------------------------------
                            ERROR: UBT ERROR: Failed to produce item: M:\Unreal Projects\PluginCompiler\Plugins\DonAINavigation\Binaries\Win64\UE4Editor-DonAINavigation.dll

                            And, per the 4.11 release notes:

                            FCollisionQueryParams::IgnoreComponents is now private, use AddIgnoredComponent() and GetIgnoredComponents() instead.
                            This enabled an optimization to make the components list unique only once on-demand in GetIgnoredComponents(), rather each time a component is added.
                            Linux Support page (Wiki): https://wiki.unrealengine.com/Linux_Support
                            Linux Demos page (Wiki): https://wiki.unrealengine.com/Linux_Demos
                            My Unreal Engine 4 Linux repo: https://github.com/3dluvr/UnrealEngine/

                            Comment


                              #59
                              Alright, that's what I get for not testing 4.11 directly and assuming "it would work"

                              I need some time to get 4.11 setup. I'm low on download bandwidth, disk space on SSD (and low on time too!), I'll need to take time away from today's project work if I'm to focus on this...

                              Are you able to work around those issues yourself until I get there? (assuming AddIgnoredComponent only needs to be added in a few places).

                              Steam Early Access: Drunk On Nectar - The Nature Simulator

                              UE4 Plugins: DoN’s Dynamic Mesh FX | DoN’s 3D Pathfinding

                              Comment


                                #60
                                Originally posted by VSZ View Post
                                Are you able to work around those issues yourself until I get there? (assuming AddIgnoredComponent only needs to be added in a few places).
                                N00b here, so I'd appreciate a little guidance...I already tried using AddIgnoredComponent but it requires UPrimitiveComponent, and GetIgnoredComponents returns TArray of uint32s - I'm not sure what those uint32s are.

                                Thanks!
                                Linux Support page (Wiki): https://wiki.unrealengine.com/Linux_Support
                                Linux Demos page (Wiki): https://wiki.unrealengine.com/Linux_Demos
                                My Unreal Engine 4 Linux repo: https://github.com/3dluvr/UnrealEngine/

                                Comment

                                Working...
                                X