# Ori and the blind forest GPU Water and dynamic wave

Hi Unreal Community !

I’m trying to reproduce in UE4 a similar water effect and dynamic wave as seen in the game ori and the blind forest.https://www.youtube.com/watch?v=-qtqZdW5Sr8

This technic look like really similar to the one used in Rayman origin/legend, Limbo etc…

i’ve made a lot of research since past days, some speak about GPU Water simulation. As there is no real 3D assets in the game.
Of course watching the video i can obsev this is not an ortographic view. the game was powered by Unity 5.

Actually i’m thinking for the dynamic wave use spline (mesh or not) component and for the water a material but i really need to figure out how

thanks again !

It seems that those waves are just 1d. It’s really easy and fast to simulate 1d waves and there should be plenty of tutorials around.

Hi Jenny, This is typically the kind of answer who have absolutely no interest. so if it’s very easy for you don’t hesitate to share your talent and show me how do this, by the way i don’t found any tutorials around, so where there are ?

Water rendering in Ori seems to be just flat 2d grid where displacement is based on 1d simulation that gradually falloff further from screen you go.

Hi Jenny, thanks for your second answer, i fall on this yesterday, but i think you may have not watch the youtube link i provide. in ori it look a little bit more complex.
You can also see refraction on top of wave, and wave have like a fake wave depth.

so i’m eagger to know how in your case you shall reproduce this with blueprint and material, should you use spline mesh ?

Still no one with a pro solution ?

The tutorial Jenny provided is in 1d, and as he mentioned in that post, the simulation from the Ori video is in 2d. That appears to be the only difference. In practice the only difference between a 1d and 2d fluid sim is that the 2d fluid sim needs to include 2 more neighbors in the spreading part, that should be a pretty simple change. Ie, for 1d, it only uses 2 neighbors, one pixel to the left and one to the right. a 2d sim needs to also include the pixel above and below (which would be the y axis in UV space).

Things like ‘refraction’ are simply part of the pixel shader and have nothing to do with the simulation itself.

There is a paper that is a bit simpler than that tutorial and is in 2d but I cannot seem to find it. Looking for fluid sim papers always seems tricky since most of the methods being explored are either more advanced methods than we want or are very specific to certain scenarios.

This is actually not straightforward to implement in UE4 on the GPU currently so that is why you are not seeing many replies. The reason is because it needs to store a buffer of the previous 2 frames, and the only way to do that currently is with 3 scene capture actors and actually chain them together in a flow using render targets (ie, the material under the 2nd one renders from the result of the 1st one) It is really hard to do currently without code. Ie you need to place quads under them and carefully calculate the size based on scene capture FOV to ensure pixel accuracy.

That said, you should be able to do it easily on the CPU using blueprints. I do have a blueprint only 1d simulation test that works using the height of blocks. I could break that down after my editor is done compiling in a bit but it might be much later tonight. I actually created that blueprint to test out how to kill waves reflecting off the edge of the domain… a problem I have still not solved and turns out to be much harder than I thought.

So above I mentioned its not easy to do on the GPU and this is true for 4.12, but in main (available on github only so far), you can do it much easier thanks to a new feature written by Daniel Wright. He has exposed the ability to render directly to a render target by specifying a material. We have many different fluid experiments and tests going on with this feature. I can tell you it will change how people approach basic simulation problems like this. The blueprint and material setup is not very complicated at all.

The BP version can work but I would expect it to be around 1000x time slower so you can probably only realistically simulate either a 1d grid of 4k points or a 2d grid of 64x64 cells(which is also 4k total cells). I will be editing and adding basic 1d BP setup into this post soon.

So here is my basic example of a 1d fluid sim using blueprints and blocks. This is based off code from the UE3 database written by Daniel Wright. Note that it would be pretty easy to make this into an actual mesh but I did it using blocks since I didn’t want to spend much time on this since I am not using it for anything other than testing edge cases.

What it looks like:

Just a basic array of cubes that simulates with ripples. I will include all of the stuff as screenshots and copy/paste nodes.

Variables and functions you need:

Construction Script:

All this does is create the number of specified static mesh cubes, adds them to an array, and initializes 3 height arrays to all be the same length. After the for loop it sets 3 cells to have some height. This is the starting impulse and really all that will happen for now when this is simulated since I have not added in forces yet.

Event Graph:

Notice all this does is call the Simulation step function. Of note to point out is that I have added another function “Step” and on it checked the “Call in Editor” function. This means you can select the “Step” function from the blutilities part of the details panel and run one step at a time with button presses which can be useful to see how things propagate without needing to simulate and then try to press “pause” very quickly.

Set Cube Heights:

This just updates the meshes to match the simulation value. If you wanted to do something else like construct a procedural mesh or anything it could happen here. Note that we add 50 to the heights purely so we can see something when there is no simulation and also to give some headroom to display negative height values from the sim.

Simulation Step:

This is the part that actually performs the simulation step in 1d. Notice that it gets two neighbor values(-1 and +1). Also notice that the node marked “Midpoint height” with the 2x multiplier. If this was converted into 2d, all you would have to do is add the other two neighbors and change the 2 to a 4. And the dot product below would be a float4(1,1,1,1). At the end of the loop over all the meshes, it calls “Set Cube Heights” to update them.

Here is what you should be able to paste as long as you create the variables from the image above.

Construction Script:

``````
Begin Object Class=K2Node_FunctionEntry Name="K2Node_FunctionEntry_0"
Begin Object Class=EdGraphPin Name="EdGraphPin_346"
End Object
Begin Object Name="EdGraphPin_346"
PinName="then"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
SignatureClass=Class'/Script/Engine.Actor'
SignatureName="UserConstructionScript"
Pins(0)=EdGraphPin'EdGraphPin_346'
NodePosX=-128
NodePosY=-64
NodeGuid=474D3441432EE043E06D5B9BE1FD4E02
End Object
Begin Object Class=K2Node_MacroInstance Name="K2Node_MacroInstance_0"
Begin Object Class=EdGraphPin Name="EdGraphPin_352"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_351"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_350"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_349"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_348"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_347"
End Object
Begin Object Name="EdGraphPin_352"
PinName="Completed"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_351"
PinName="Index"
Direction=EGPD_Output
PinType=(PinCategory="int")
End Object
Begin Object Name="EdGraphPin_350"
PinName="LoopBody"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_349"
PinName="LastIndex"
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_348"
PinName="FirstIndex"
PinType=(PinCategory="int")
DefaultValue="0"
End Object
Begin Object Name="EdGraphPin_347"
PinName="execute"
PinType=(PinCategory="exec")
End Object
MacroGraphReference=(MacroGraph=EdGraph'/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForLoop',GraphBlueprint=Blueprint'/Engine/EditorBlueprintResources/StandardMacros.StandardMacros',GraphGuid=55C904AF4B45FE1761FB55A8DB9FB801)
Pins(0)=EdGraphPin'EdGraphPin_347'
Pins(1)=EdGraphPin'EdGraphPin_348'
Pins(2)=EdGraphPin'EdGraphPin_349'
Pins(3)=EdGraphPin'EdGraphPin_350'
Pins(4)=EdGraphPin'EdGraphPin_351'
Pins(5)=EdGraphPin'EdGraphPin_352'
NodePosX=144
NodePosY=-16
NodeGuid=AB306C4B4A7643E51B24F0BA75EECD3C
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_360"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_359"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_358"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_357"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_356"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_355"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_354"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_353"
End Object
Begin Object Name="EdGraphPin_360"
PinName="ReturnValue"
PinToolTip="Return Value
Static Mesh Component Reference"
Direction=EGPD_Output
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.StaticMeshComponent')
End Object
Begin Object Name="EdGraphPin_359"
PinName="ComponentTemplateContext"
PinToolTip="Component Template Context
Object Reference

Optional UBlueprintGeneratedClass reference to use to find the template in. If null (or not a BPGC), component is sought in this Actor\'s class"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/CoreUObject.Object',bIsConst=True)
bHidden=True
bNotConnectable=True
End Object
Begin Object Name="EdGraphPin_358"
PinName="RelativeTransform"
PinToolTip="Relative Transform
Transform

The relative transform between the new component and its attach parent (automatic only)"
PinType=(PinCategory="struct",PinSubCategoryObject=ScriptStruct'/Script/CoreUObject.Transform',bIsConst=True)
bDefaultValueIsIgnored=True
End Object
Begin Object Name="EdGraphPin_357"
PinName="bManualAttachment"
PinToolTip="Manual Attachment
Boolean

Whether manual or automatic attachment is to be used"
PinType=(PinCategory="bool")
DefaultValue="false"
AutogeneratedDefaultValue="false"
End Object
Begin Object Name="EdGraphPin_356"
PinName="TemplateName"
PinToolTip="Template Name
Name

The name of the Component Template to use."
PinType=(PinCategory="name")
DefaultValue="Static Mesh Component_0"
AutogeneratedDefaultValue="None"
bHidden=True
bNotConnectable=True
End Object
Begin Object Name="EdGraphPin_355"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Actor Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.Actor')
End Object
Begin Object Name="EdGraphPin_354"
PinName="then"
PinToolTip="
Exec"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_353"
PinName="execute"
PinToolTip="
Exec"
PinType=(PinCategory="exec")
End Object
TemplateBlueprint="/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test"
Pins(0)=EdGraphPin'EdGraphPin_353'
Pins(1)=EdGraphPin'EdGraphPin_354'
Pins(2)=EdGraphPin'EdGraphPin_355'
Pins(3)=EdGraphPin'EdGraphPin_356'
Pins(4)=EdGraphPin'EdGraphPin_357'
Pins(5)=EdGraphPin'EdGraphPin_358'
Pins(6)=EdGraphPin'EdGraphPin_359'
Pins(7)=EdGraphPin'EdGraphPin_360'
NodePosX=1184
NodePosY=-32
NodeGuid=005BD44A461BCDAE234BB397D0094118
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_0"
Begin Object Class=EdGraphPin Name="EdGraphPin_364"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_363"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_362"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_361"
End Object
Begin Object Name="EdGraphPin_364"
PinName="ReturnValue"
PinToolTip="Return Value
Float"
Direction=EGPD_Output
PinType=(PinCategory="float")
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_363"
PinName="B"
PinToolTip="B
Float"
PinType=(PinCategory="float")
DefaultValue="5"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_362"
PinName="A"
PinToolTip="A
Integer"
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_361"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="Multiply_IntFloat")
Pins(0)=EdGraphPin'EdGraphPin_361'
Pins(1)=EdGraphPin'EdGraphPin_362'
Pins(2)=EdGraphPin'EdGraphPin_363'
Pins(3)=EdGraphPin'EdGraphPin_364'
NodePosX=496
NodePosY=80
NodeGuid=A26C92D1455C0139F0EFE2976302EEF1
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_1"
Begin Object Class=EdGraphPin Name="EdGraphPin_369"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_368"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_367"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_366"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_365"
End Object
Begin Object Name="EdGraphPin_369"
PinName="ReturnValue"
PinToolTip="Return Value
Vector "
Direction=EGPD_Output
PinType=(PinCategory="struct",PinSubCategoryObject=ScriptStruct'/Script/CoreUObject.Vector')
AutogeneratedDefaultValue="0, 0, 0"
End Object
Begin Object Name="EdGraphPin_368"
PinName="Z"
PinToolTip="Z
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_367"
PinName="Y"
PinToolTip="Y
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_366"
PinName="X"
PinToolTip="X
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_365"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="MakeVector")
Pins(0)=EdGraphPin'EdGraphPin_365'
Pins(1)=EdGraphPin'EdGraphPin_366'
Pins(2)=EdGraphPin'EdGraphPin_367'
Pins(3)=EdGraphPin'EdGraphPin_368'
Pins(4)=EdGraphPin'EdGraphPin_369'
NodePosX=624
NodePosY=96
NodeGuid=57370A05453FB76914EC1BAF7259C9F3
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_6"
Begin Object Class=EdGraphPin Name="EdGraphPin_374"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_373"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_372"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_371"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_370"
End Object
Begin Object Name="EdGraphPin_374"
PinName="ReturnValue"
PinToolTip="Return Value
Transform "
Direction=EGPD_Output
PinType=(PinCategory="struct",PinSubCategoryObject=ScriptStruct'/Script/CoreUObject.Transform')
End Object
Begin Object Name="EdGraphPin_373"
PinName="Scale"
PinToolTip="Scale
Vector "
PinType=(PinCategory="struct",PinSubCategoryObject=ScriptStruct'/Script/CoreUObject.Vector')
DefaultValue="5.000000,100.000000,50.000000"
AutogeneratedDefaultValue="1,1,1"
End Object
Begin Object Name="EdGraphPin_372"
PinName="Rotation"
PinToolTip="Rotation
Rotator "
PinType=(PinCategory="struct",PinSubCategoryObject=ScriptStruct'/Script/CoreUObject.Rotator')
DefaultValue="0.000000, 0, 0"
AutogeneratedDefaultValue="0, 0, 0"
End Object
Begin Object Name="EdGraphPin_371"
PinName="Location"
PinToolTip="Location
Vector "
PinType=(PinCategory="struct",PinSubCategoryObject=ScriptStruct'/Script/CoreUObject.Vector')
DefaultValue="0.000000, 0, 0"
AutogeneratedDefaultValue="0, 0, 0"
End Object
Begin Object Name="EdGraphPin_370"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="MakeTransform")
Pins(0)=EdGraphPin'EdGraphPin_370'
Pins(1)=EdGraphPin'EdGraphPin_371'
Pins(2)=EdGraphPin'EdGraphPin_372'
Pins(3)=EdGraphPin'EdGraphPin_373'
Pins(4)=EdGraphPin'EdGraphPin_374'
NodePosX=848
NodePosY=96
NodeGuid=CC3175DA4368C06D1577BBB3C0F5BEC8
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_409"
Begin Object Class=EdGraphPin Name="EdGraphPin_161"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_160"
End Object
Begin Object Name="EdGraphPin_161"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_160"
PinName="Heights"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True)
End Object
VariableReference=(MemberName="Heights",MemberGuid=830B427D41DE99964D3B4DB38526F2A6,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_160'
Pins(1)=EdGraphPin'EdGraphPin_161'
NodePosX=1760
NodePosY=128
NodeGuid=3F0083D046A991CB84A70E9D4083A81A
End Object
Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_83"
Begin Object Class=EdGraphPin Name="EdGraphPin_380"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_379"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_378"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_377"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_376"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_375"
End Object
Begin Object Name="EdGraphPin_380"
PinName="ReturnValue"
PinToolTip="Return Value
Integer

The index of the newly added item"
Direction=EGPD_Output
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_379"
PinName="NewItem"
PinToolTip="New Item
Float (by ref)

The item to add to the array"
PinType=(PinCategory="float",bIsReference=True,bIsConst=True)
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_378"
PinName="TargetArray"
PinToolTip="Target Array
Array of Floats

The array to add item to"
PinType=(PinCategory="float",bIsArray=True,bIsReference=True,bIsConst=True)
bDefaultValueIsIgnored=True
End Object
Begin Object Name="EdGraphPin_377"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Array Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
DefaultObject=Default__KismetArrayLibrary
bHidden=True
End Object
Begin Object Name="EdGraphPin_376"
PinName="then"
PinToolTip="
Exec"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_375"
PinName="execute"
PinToolTip="
Exec"
PinType=(PinCategory="exec")
End Object
Pins(0)=EdGraphPin'EdGraphPin_375'
Pins(1)=EdGraphPin'EdGraphPin_376'
Pins(2)=EdGraphPin'EdGraphPin_377'
Pins(3)=EdGraphPin'EdGraphPin_378'
Pins(4)=EdGraphPin'EdGraphPin_379'
Pins(5)=EdGraphPin'EdGraphPin_380'
NodePosX=1984
NodePosY=32
NodeGuid=DBEB042844893333955066B44F6DEAF8
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_413"
Begin Object Class=EdGraphPin Name="EdGraphPin_147"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_146"
End Object
Begin Object Name="EdGraphPin_147"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_146"
PinName="Meshes"
Direction=EGPD_Output
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.StaticMeshComponent',bIsArray=True)
End Object
VariableReference=(MemberName="Meshes",MemberGuid=253C550444F28C71DA684BA0763633BC,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_146'
Pins(1)=EdGraphPin'EdGraphPin_147'
NodePosX=1536
NodePosY=32
End Object
Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_2"
Begin Object Class=EdGraphPin Name="EdGraphPin_386"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_385"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_384"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_383"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_382"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_381"
End Object
Begin Object Name="EdGraphPin_386"
PinName="ReturnValue"
PinToolTip="Return Value
Integer

The index of the newly added item"
Direction=EGPD_Output
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_385"
PinName="NewItem"
PinToolTip="New Item
Static Mesh Component Reference (by ref)

The item to add to the array"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.StaticMeshComponent',bIsReference=True,bIsConst=True)
End Object
Begin Object Name="EdGraphPin_384"
PinName="TargetArray"
PinToolTip="Target Array
Array of Static Mesh Component References

The array to add item to"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.StaticMeshComponent',bIsArray=True,bIsReference=True,bIsConst=True)
bDefaultValueIsIgnored=True
End Object
Begin Object Name="EdGraphPin_383"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Array Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
DefaultObject=Default__KismetArrayLibrary
bHidden=True
End Object
Begin Object Name="EdGraphPin_382"
PinName="then"
PinToolTip="
Exec"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_381"
PinName="execute"
PinToolTip="
Exec"
PinType=(PinCategory="exec")
End Object
Pins(0)=EdGraphPin'EdGraphPin_381'
Pins(1)=EdGraphPin'EdGraphPin_382'
Pins(2)=EdGraphPin'EdGraphPin_383'
Pins(3)=EdGraphPin'EdGraphPin_384'
Pins(4)=EdGraphPin'EdGraphPin_385'
Pins(5)=EdGraphPin'EdGraphPin_386'
NodePosX=1728
NodePosY=16
NodeGuid=8EE37C9440EB8B60EBF3FE8402B473E4
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_456"
Begin Object Class=EdGraphPin Name="EdGraphPin_64"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_63"
End Object
Begin Object Name="EdGraphPin_64"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_63"
PinName="OldHeights"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True)
End Object
VariableReference=(MemberName="OldHeights",MemberGuid=37C3FFB54A479F16AB6A15809EE6E416,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_63'
Pins(1)=EdGraphPin'EdGraphPin_64'
NodePosX=1760
NodePosY=240
NodeGuid=1A5EB2D4445D2D7CC70C67A960655CF8
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_457"
Begin Object Class=EdGraphPin Name="EdGraphPin_66"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_65"
End Object
Begin Object Name="EdGraphPin_66"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_65"
PinName="NewHeights"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True)
End Object
VariableReference=(MemberName="NewHeights",MemberGuid=0ECC85F54A324A5A4A95D5A6B5E2B89C,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_65'
Pins(1)=EdGraphPin'EdGraphPin_66'
NodePosX=1760
NodePosY=352
NodeGuid=7E31AF5C463286A3C90C2E97D73D8A58
End Object
Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_82"
Begin Object Class=EdGraphPin Name="EdGraphPin_399"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_398"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_397"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_396"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_395"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_394"
End Object
Begin Object Name="EdGraphPin_399"
PinName="ReturnValue"
PinToolTip="Return Value
Integer

The index of the newly added item"
Direction=EGPD_Output
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_398"
PinName="NewItem"
PinToolTip="New Item
Float (by ref)

The item to add to the array"
PinType=(PinCategory="float",bIsReference=True,bIsConst=True)
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_397"
PinName="TargetArray"
PinToolTip="Target Array
Array of Floats

The array to add item to"
PinType=(PinCategory="float",bIsArray=True,bIsReference=True,bIsConst=True)
bDefaultValueIsIgnored=True
End Object
Begin Object Name="EdGraphPin_396"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Array Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
DefaultObject=Default__KismetArrayLibrary
bHidden=True
End Object
Begin Object Name="EdGraphPin_395"
PinName="then"
PinToolTip="
Exec"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_394"
PinName="execute"
PinToolTip="
Exec"
PinType=(PinCategory="exec")
End Object
Pins(0)=EdGraphPin'EdGraphPin_394'
Pins(1)=EdGraphPin'EdGraphPin_395'
Pins(2)=EdGraphPin'EdGraphPin_396'
Pins(3)=EdGraphPin'EdGraphPin_397'
Pins(4)=EdGraphPin'EdGraphPin_398'
Pins(5)=EdGraphPin'EdGraphPin_399'
NodePosX=1984
NodePosY=160
NodeGuid=14D4F1C145879C800F506DABE0C1CA28
End Object
Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_84"
Begin Object Class=EdGraphPin Name="EdGraphPin_405"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_404"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_403"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_402"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_401"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_400"
End Object
Begin Object Name="EdGraphPin_405"
PinName="ReturnValue"
PinToolTip="Return Value
Integer

The index of the newly added item"
Direction=EGPD_Output
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_404"
PinName="NewItem"
PinToolTip="New Item
Float (by ref)

The item to add to the array"
PinType=(PinCategory="float",bIsReference=True,bIsConst=True)
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_403"
PinName="TargetArray"
PinToolTip="Target Array
Array of Floats

The array to add item to"
PinType=(PinCategory="float",bIsArray=True,bIsReference=True,bIsConst=True)
bDefaultValueIsIgnored=True
End Object
Begin Object Name="EdGraphPin_402"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Array Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
DefaultObject=Default__KismetArrayLibrary
bHidden=True
End Object
Begin Object Name="EdGraphPin_401"
PinName="then"
PinToolTip="
Exec"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_400"
PinName="execute"
PinToolTip="
Exec"
PinType=(PinCategory="exec")
End Object
Pins(0)=EdGraphPin'EdGraphPin_400'
Pins(1)=EdGraphPin'EdGraphPin_401'
Pins(2)=EdGraphPin'EdGraphPin_402'
Pins(3)=EdGraphPin'EdGraphPin_403'
Pins(4)=EdGraphPin'EdGraphPin_404'
Pins(5)=EdGraphPin'EdGraphPin_405'
NodePosX=1984
NodePosY=272
NodeGuid=2CAC4A0145217FDE16B7DBAF2F678DE5
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_368"
Begin Object Class=EdGraphPin Name="EdGraphPin_84"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_83"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_82"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_81"
End Object
Begin Object Name="EdGraphPin_84"
PinName="Array"
PinToolTip="Array
Array of Floats"
PinType=(PinCategory="float",bIsArray=True,bIsReference=True)
End Object
Begin Object Name="EdGraphPin_83"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Self Reference"
PinType=(PinCategory="object",PinSubCategory="self")
End Object
Begin Object Name="EdGraphPin_82"
PinName="then"
PinToolTip="
Exec"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_81"
PinName="execute"
PinToolTip="
Exec"
PinType=(PinCategory="exec")
End Object
FunctionReference=(MemberName="SetCubeHeights",MemberGuid=00A3FF944C3D555551C46D847B6D4BED,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_81'
Pins(1)=EdGraphPin'EdGraphPin_82'
Pins(2)=EdGraphPin'EdGraphPin_83'
Pins(3)=EdGraphPin'EdGraphPin_84'
NodePosX=1168
NodePosY=448
ErrorType=1
ErrorMsg="Error The current value of the \' Array \' pin is invalid: Array inputs (like \'Array\') must have an input wired into them (try connecting a MakeArray node)."
NodeGuid=427288124D6C9425922188A9AC1A5880
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_33"
Begin Object Class=EdGraphPin Name="EdGraphPin_86"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_85"
End Object
Begin Object Name="EdGraphPin_86"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_85"
PinName="NewHeights"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True)
End Object
VariableReference=(MemberName="NewHeights",MemberGuid=0ECC85F54A324A5A4A95D5A6B5E2B89C,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_85'
Pins(1)=EdGraphPin'EdGraphPin_86'
NodePosX=320
NodePosY=656
NodeGuid=F708B4CD448EE8073E4A3DAB7C068351
End Object
Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_189"
Begin Object Class=EdGraphPin Name="EdGraphPin_412"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_411"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_410"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_409"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_408"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_407"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_406"
End Object
Begin Object Name="EdGraphPin_412"
PinName="bSizeToFit"
PinToolTip="Size to Fit
Boolean

If true, the array will expand if Index is greater than the current size of the array"
PinType=(PinCategory="bool")
DefaultValue="false"
AutogeneratedDefaultValue="false"
End Object
Begin Object Name="EdGraphPin_411"
PinName="Item"
PinToolTip="Item
Float (by ref)

The item to assign to the index of the array *"
PinType=(PinCategory="float",bIsReference=True,bIsConst=True)
DefaultValue="30"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_410"
PinName="Index"
PinToolTip="Index
Integer

The index to assign the item to *"
PinType=(PinCategory="int")
DefaultValue="40"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_409"
PinName="TargetArray"
PinToolTip="Target Array
Array of Floats

The array to perform the operation on *"
PinType=(PinCategory="float",bIsArray=True,bIsReference=True,bIsConst=True)
bDefaultValueIsIgnored=True
End Object
Begin Object Name="EdGraphPin_408"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Array Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
DefaultObject=Default__KismetArrayLibrary
bHidden=True
End Object
Begin Object Name="EdGraphPin_407"
PinName="then"
PinToolTip="
Exec"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_406"
PinName="execute"
PinToolTip="
Exec"
PinType=(PinCategory="exec")
End Object
FunctionReference=(MemberParent=Class'/Script/Engine.KismetArrayLibrary',MemberName="Array_Set")
Pins(0)=EdGraphPin'EdGraphPin_406'
Pins(1)=EdGraphPin'EdGraphPin_407'
Pins(2)=EdGraphPin'EdGraphPin_408'
Pins(3)=EdGraphPin'EdGraphPin_409'
Pins(4)=EdGraphPin'EdGraphPin_410'
Pins(5)=EdGraphPin'EdGraphPin_411'
Pins(6)=EdGraphPin'EdGraphPin_412'
NodePosX=544
NodePosY=464
NodeGuid=6F2073E1447B7380108660BB2D466825
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_36"
Begin Object Class=EdGraphPin Name="EdGraphPin_95"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_94"
End Object
Begin Object Name="EdGraphPin_95"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_94"
PinName="NewHeights"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True)
End Object
VariableReference=(MemberName="NewHeights",MemberGuid=0ECC85F54A324A5A4A95D5A6B5E2B89C,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_94'
Pins(1)=EdGraphPin'EdGraphPin_95'
NodePosX=560
NodePosY=656
NodeGuid=B1F83A054F72B473D12260BC6E68351B
End Object
Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_195"
Begin Object Class=EdGraphPin Name="EdGraphPin_419"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_418"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_417"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_416"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_415"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_414"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_413"
End Object
Begin Object Name="EdGraphPin_419"
PinName="bSizeToFit"
PinToolTip="Size to Fit
Boolean

If true, the array will expand if Index is greater than the current size of the array"
PinType=(PinCategory="bool")
DefaultValue="false"
AutogeneratedDefaultValue="false"
End Object
Begin Object Name="EdGraphPin_418"
PinName="Item"
PinToolTip="Item
Float (by ref)

The item to assign to the index of the array *"
PinType=(PinCategory="float",bIsReference=True,bIsConst=True)
DefaultValue="30"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_417"
PinName="Index"
PinToolTip="Index
Integer

The index to assign the item to *"
PinType=(PinCategory="int")
DefaultValue="41"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_416"
PinName="TargetArray"
PinToolTip="Target Array
Array of Floats

The array to perform the operation on *"
PinType=(PinCategory="float",bIsArray=True,bIsReference=True,bIsConst=True)
bDefaultValueIsIgnored=True
End Object
Begin Object Name="EdGraphPin_415"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Array Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
DefaultObject=Default__KismetArrayLibrary
bHidden=True
End Object
Begin Object Name="EdGraphPin_414"
PinName="then"
PinToolTip="
Exec"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_413"
PinName="execute"
PinToolTip="
Exec"
PinType=(PinCategory="exec")
End Object
FunctionReference=(MemberParent=Class'/Script/Engine.KismetArrayLibrary',MemberName="Array_Set")
Pins(0)=EdGraphPin'EdGraphPin_413'
Pins(1)=EdGraphPin'EdGraphPin_414'
Pins(2)=EdGraphPin'EdGraphPin_415'
Pins(3)=EdGraphPin'EdGraphPin_416'
Pins(4)=EdGraphPin'EdGraphPin_417'
Pins(5)=EdGraphPin'EdGraphPin_418'
Pins(6)=EdGraphPin'EdGraphPin_419'
NodePosX=752
NodePosY=464
NodeGuid=18E1FC78460A4C346BFA5DB0959E684C
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_506"
Begin Object Class=EdGraphPin Name="EdGraphPin_104"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_103"
End Object
Begin Object Name="EdGraphPin_104"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_103"
PinName="NewHeights"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True)
End Object
VariableReference=(MemberName="NewHeights",MemberGuid=0ECC85F54A324A5A4A95D5A6B5E2B89C,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_103'
Pins(1)=EdGraphPin'EdGraphPin_104'
NodePosX=784
NodePosY=672
NodeGuid=4B054D9D48AE5B9F9E4C6AA0E6C071D6
End Object
Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_194"
Begin Object Class=EdGraphPin Name="EdGraphPin_426"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_425"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_424"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_423"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_422"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_421"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_420"
End Object
Begin Object Name="EdGraphPin_426"
PinName="bSizeToFit"
PinToolTip="Size to Fit
Boolean

If true, the array will expand if Index is greater than the current size of the array"
PinType=(PinCategory="bool")
DefaultValue="false"
AutogeneratedDefaultValue="false"
End Object
Begin Object Name="EdGraphPin_425"
PinName="Item"
PinToolTip="Item
Float (by ref)

The item to assign to the index of the array *"
PinType=(PinCategory="float",bIsReference=True,bIsConst=True)
DefaultValue="30"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_424"
PinName="Index"
PinToolTip="Index
Integer

The index to assign the item to *"
PinType=(PinCategory="int")
DefaultValue="42"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_423"
PinName="TargetArray"
PinToolTip="Target Array
Array of Floats

The array to perform the operation on *"
PinType=(PinCategory="float",bIsArray=True,bIsReference=True,bIsConst=True)
bDefaultValueIsIgnored=True
End Object
Begin Object Name="EdGraphPin_422"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Array Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
DefaultObject=Default__KismetArrayLibrary
bHidden=True
End Object
Begin Object Name="EdGraphPin_421"
PinName="then"
PinToolTip="
Exec"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_420"
PinName="execute"
PinToolTip="
Exec"
PinType=(PinCategory="exec")
End Object
FunctionReference=(MemberParent=Class'/Script/Engine.KismetArrayLibrary',MemberName="Array_Set")
Pins(0)=EdGraphPin'EdGraphPin_420'
Pins(1)=EdGraphPin'EdGraphPin_421'
Pins(2)=EdGraphPin'EdGraphPin_422'
Pins(3)=EdGraphPin'EdGraphPin_423'
Pins(4)=EdGraphPin'EdGraphPin_424'
Pins(5)=EdGraphPin'EdGraphPin_425'
Pins(6)=EdGraphPin'EdGraphPin_426'
NodePosX=960
NodePosY=464
NodeGuid=4AAE3CD64BEA3C85E2DDBBA6D652C50B
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_83"
Begin Object Class=EdGraphPin Name="EdGraphPin_1464"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_1463"
End Object
Begin Object Name="EdGraphPin_1464"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_1463"
PinName="Number of Cells"
Direction=EGPD_Output
PinType=(PinCategory="int")
AutogeneratedDefaultValue="0"
End Object
VariableReference=(MemberName="Number of Cells",MemberGuid=94B3AB9B4547BE2B1656DE884EA5F5CF,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_1463'
Pins(1)=EdGraphPin'EdGraphPin_1464'
NodePosX=-176
NodePosY=96
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_235"
Begin Object Class=EdGraphPin Name="EdGraphPin_1468"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_1467"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_1466"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_1465"
End Object
Begin Object Name="EdGraphPin_1468"
PinName="ReturnValue"
PinToolTip="Return Value
Integer"
Direction=EGPD_Output
PinType=(PinCategory="int")
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_1467"
PinName="B"
PinToolTip="B
Integer"
PinType=(PinCategory="int")
DefaultValue="1"
AutogeneratedDefaultValue="1"
End Object
Begin Object Name="EdGraphPin_1466"
PinName="A"
PinToolTip="A
Integer"
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_1465"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="Subtract_IntInt")
Pins(0)=EdGraphPin'EdGraphPin_1465'
Pins(1)=EdGraphPin'EdGraphPin_1466'
Pins(2)=EdGraphPin'EdGraphPin_1467'
Pins(3)=EdGraphPin'EdGraphPin_1468'
NodePosX=-16
NodePosY=96
NodeGuid=F446599A409804477C4536BE22C5B006
End Object

``````

Event Graph:

``````
Begin Object Class=K2Node_Event Name="K2Node_Event_2"
Begin Object Class=EdGraphPin Name="EdGraphPin_545"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_544"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_543"
End Object
Begin Object Name="EdGraphPin_545"
PinName="DeltaSeconds"
PinToolTip="Delta Seconds
Float"
Direction=EGPD_Output
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_544"
PinName="then"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_543"
PinName="OutputDelegate"
Direction=EGPD_Output
End Object
bOverrideFunction=True
Pins(0)=EdGraphPin'EdGraphPin_543'
Pins(1)=EdGraphPin'EdGraphPin_544'
Pins(2)=EdGraphPin'EdGraphPin_545'
NodePosY=400
bCommentBubblePinned=True
NodeGuid=48E6E23A4B60B0E8797165B7BD4E37CF
End Object
Begin Object Class=K2Node_CustomEvent Name="K2Node_CustomEvent_0"
Begin Object Class=EdGraphPin Name="EdGraphPin_35"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_34"
End Object
Begin Object Name="EdGraphPin_35"
PinName="then"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_34"
PinName="OutputDelegate"
Direction=EGPD_Output
PinType=(PinCategory="delegate",PinSubCategoryMemberReference=(MemberParent=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C',MemberName="Step",MemberGuid=C53B8B7644AA9B03DFB9E1A1E9004F39))
End Object
bCallInEditor=True
CustomFunctionName="Step"
Pins(0)=EdGraphPin'EdGraphPin_34'
Pins(1)=EdGraphPin'EdGraphPin_35'
NodePosY=560
ErrorType=3
ErrorMsg="Conflicted with K2Node_CustomEvent_69 and was replaced as a Custom Event!"
NodeGuid=C53B8B7644AA9B03DFB9E1A1E9004F39
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_621"
Begin Object Class=EdGraphPin Name="EdGraphPin_303"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_302"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_301"
End Object
Begin Object Name="EdGraphPin_303"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Self Reference"
PinType=(PinCategory="object",PinSubCategory="self")
End Object
Begin Object Name="EdGraphPin_302"
PinName="then"
PinToolTip="
Exec"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_301"
PinName="execute"
PinToolTip="
Exec"
PinType=(PinCategory="exec")
End Object
FunctionReference=(MemberName="Simulation Step",MemberGuid=2F7CB4E74FFC7F8FBA481B99510F91F1,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_301'
Pins(1)=EdGraphPin'EdGraphPin_302'
Pins(2)=EdGraphPin'EdGraphPin_303'
NodePosX=208
NodePosY=384
NodeGuid=ABECA89749032DCA63DA0ABF73CCA41A
End Object

``````

Set Cube Heights:

``````
Begin Object Class=K2Node_FunctionEntry Name="K2Node_FunctionEntry_1"
Begin Object Class=EdGraphPin Name="EdGraphPin_30"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_29"
End Object
Begin Object Name="EdGraphPin_30"
PinName="Array"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True,bIsReference=True)
End Object
Begin Object Name="EdGraphPin_29"
PinName="then"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
ExtraFlags=201457664
SignatureName="SetCubeHeights"
bIsEditable=True
Pins(0)=EdGraphPin'EdGraphPin_29'
Pins(1)=EdGraphPin'EdGraphPin_30'
NodePosX=-240
NodePosY=80
NodeGuid=EF05188D42F6C38A5B7111B5DDCEA4C3
CustomProperties UserDefinedPin Name="Array" IsArray=1 IsReference=1 Category=float
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_422"
Begin Object Class=EdGraphPin Name="EdGraphPin_120"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_119"
End Object
Begin Object Name="EdGraphPin_120"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_119"
PinName="Meshes"
Direction=EGPD_Output
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.StaticMeshComponent',bIsArray=True)
End Object
VariableReference=(MemberName="Meshes",MemberGuid=253C550444F28C71DA684BA0763633BC,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_119'
Pins(1)=EdGraphPin'EdGraphPin_120'
NodePosX=96
NodePosY=144
NodeGuid=6CA2D106478D6F479FE6D6A851F4CE38
End Object
Begin Object Class=K2Node_MacroInstance Name="K2Node_MacroInstance_1"
Begin Object Class=EdGraphPin Name="EdGraphPin_432"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_431"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_430"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_429"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_428"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_427"
End Object
Begin Object Name="EdGraphPin_432"
PinName="Completed"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_431"
PinName="Array Index"
Direction=EGPD_Output
PinType=(PinCategory="int")
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_430"
PinName="Array Element"
Direction=EGPD_Output
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.StaticMeshComponent')
End Object
Begin Object Name="EdGraphPin_429"
PinName="LoopBody"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_428"
PinName="Array"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.StaticMeshComponent',bIsArray=True)
End Object
Begin Object Name="EdGraphPin_427"
PinName="Exec"
PinType=(PinCategory="exec")
End Object
MacroGraphReference=(MacroGraph=EdGraph'/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForEachLoop',GraphBlueprint=Blueprint'/Engine/EditorBlueprintResources/StandardMacros.StandardMacros',GraphGuid=99DBFD5540A796041F72A5A9DA655026)
ResolvedWildcardType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.StaticMeshComponent',bIsArray=True)
Pins(0)=EdGraphPin'EdGraphPin_427'
Pins(1)=EdGraphPin'EdGraphPin_428'
Pins(2)=EdGraphPin'EdGraphPin_429'
Pins(3)=EdGraphPin'EdGraphPin_430'
Pins(4)=EdGraphPin'EdGraphPin_431'
Pins(5)=EdGraphPin'EdGraphPin_432'
NodePosX=288
NodePosY=80
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_20"
Begin Object Class=EdGraphPin Name="EdGraphPin_436"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_435"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_434"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_433"
End Object
Begin Object Name="EdGraphPin_436"
PinName="NewScale"
PinToolTip="New Scale
Vector

New scale in world space for this component."
PinType=(PinCategory="struct",PinSubCategoryObject=ScriptStruct'/Script/CoreUObject.Vector')
DefaultValue="0, 0, 0"
AutogeneratedDefaultValue="0, 0, 0"
End Object
Begin Object Name="EdGraphPin_435"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Scene Component Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.SceneComponent')
End Object
Begin Object Name="EdGraphPin_434"
PinName="then"
PinToolTip="
Exec"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_433"
PinName="execute"
PinToolTip="
Exec"
PinType=(PinCategory="exec")
End Object
FunctionReference=(MemberParent=Class'/Script/Engine.SceneComponent',MemberName="SetWorldScale3D")
Pins(0)=EdGraphPin'EdGraphPin_433'
Pins(1)=EdGraphPin'EdGraphPin_434'
Pins(2)=EdGraphPin'EdGraphPin_435'
Pins(3)=EdGraphPin'EdGraphPin_436'
NodePosX=992
NodePosY=64
NodeGuid=9795D8F240AB1027053F61A0E6334E52
End Object
Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_6"
Begin Object Class=EdGraphPin Name="EdGraphPin_440"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_439"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_438"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_437"
End Object
Begin Object Name="EdGraphPin_440"
PinName="Item"
PinToolTip="Item
Float"
Direction=EGPD_Output
PinType=(PinCategory="float")
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_439"
PinName="Index"
PinToolTip="Index
Integer

The index in the array to get an item from *"
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_438"
PinName="TargetArray"
PinToolTip="Target Array
Array of Floats

The array to get an item from *"
PinType=(PinCategory="float",bIsArray=True,bIsReference=True,bIsConst=True)
bDefaultValueIsIgnored=True
End Object
Begin Object Name="EdGraphPin_437"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Array Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
DefaultObject=Default__KismetArrayLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetArrayLibrary',MemberName="Array_Get")
Pins(0)=EdGraphPin'EdGraphPin_437'
Pins(1)=EdGraphPin'EdGraphPin_438'
Pins(2)=EdGraphPin'EdGraphPin_439'
Pins(3)=EdGraphPin'EdGraphPin_440'
NodePosX=400
NodePosY=288
NodeGuid=7375F7FC4599D1985DB6E280501BD1C4
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_21"
Begin Object Class=EdGraphPin Name="EdGraphPin_445"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_444"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_443"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_442"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_441"
End Object
Begin Object Name="EdGraphPin_445"
PinName="ReturnValue"
PinToolTip="Return Value
Vector "
Direction=EGPD_Output
PinType=(PinCategory="struct",PinSubCategoryObject=ScriptStruct'/Script/CoreUObject.Vector')
AutogeneratedDefaultValue="0, 0, 0"
End Object
Begin Object Name="EdGraphPin_444"
PinName="Z"
PinToolTip="Z
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_443"
PinName="Y"
PinToolTip="Y
Float"
PinType=(PinCategory="float")
DefaultValue="100"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_442"
PinName="X"
PinToolTip="X
Float"
PinType=(PinCategory="float")
DefaultValue="5"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_441"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="MakeVector")
Pins(0)=EdGraphPin'EdGraphPin_441'
Pins(1)=EdGraphPin'EdGraphPin_442'
Pins(2)=EdGraphPin'EdGraphPin_443'
Pins(3)=EdGraphPin'EdGraphPin_444'
Pins(4)=EdGraphPin'EdGraphPin_445'
NodePosX=768
NodePosY=256
NodeGuid=3E89EE454B6BAF3CA6F7F6A1742EB95F
End Object
Begin Object Class=K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_0"
Begin Object Class=EdGraphPin Name="EdGraphPin_449"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_448"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_447"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_446"
End Object
Begin Object Name="EdGraphPin_449"
PinName="ReturnValue"
PinToolTip="Return Value
Float"
Direction=EGPD_Output
PinType=(PinCategory="float")
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_448"
PinName="B"
PinToolTip="B
Float"
PinType=(PinCategory="float")
DefaultValue="50"
AutogeneratedDefaultValue="1.000000"
End Object
Begin Object Name="EdGraphPin_447"
PinName="A"
PinToolTip="A
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_446"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
Pins(0)=EdGraphPin'EdGraphPin_446'
Pins(1)=EdGraphPin'EdGraphPin_447'
Pins(2)=EdGraphPin'EdGraphPin_448'
Pins(3)=EdGraphPin'EdGraphPin_449'
NodePosX=576
NodePosY=288
NodeGuid=867B92014542F5112497C1A7D3AAA9ED
End Object

``````

Simulation Step:

``````
Begin Object Class=K2Node_FunctionEntry Name="K2Node_FunctionEntry_10"
Begin Object Class=EdGraphPin Name="EdGraphPin_36"
End Object
Begin Object Name="EdGraphPin_36"
PinName="then"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
ExtraFlags=201457664
SignatureName="Simulation Step"
bIsEditable=True
Pins(0)=EdGraphPin'EdGraphPin_36'
NodePosX=-336
NodePosY=64
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_12"
Begin Object Class=EdGraphPin Name="EdGraphPin_149"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_148"
End Object
Begin Object Name="EdGraphPin_149"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_148"
PinName="Heights"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True)
End Object
VariableReference=(MemberName="Heights",MemberGuid=830B427D41DE99964D3B4DB38526F2A6,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_148'
Pins(1)=EdGraphPin'EdGraphPin_149'
NodePosX=16
NodePosY=192
NodeGuid=F5E1BC9D4612962A55D9998E2C563C2A
End Object
Begin Object Class=K2Node_MacroInstance Name="K2Node_MacroInstance_2"
Begin Object Class=EdGraphPin Name="EdGraphPin_455"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_454"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_453"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_452"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_451"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_450"
End Object
Begin Object Name="EdGraphPin_455"
PinName="Completed"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_454"
PinName="Array Index"
Direction=EGPD_Output
PinType=(PinCategory="int")
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_453"
PinName="Array Element"
Direction=EGPD_Output
PinType=(PinCategory="float")
End Object
Begin Object Name="EdGraphPin_452"
PinName="LoopBody"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_451"
PinName="Array"
PinType=(PinCategory="float",bIsArray=True)
End Object
Begin Object Name="EdGraphPin_450"
PinName="Exec"
PinType=(PinCategory="exec")
End Object
MacroGraphReference=(MacroGraph=EdGraph'/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForEachLoop',GraphBlueprint=Blueprint'/Engine/EditorBlueprintResources/StandardMacros.StandardMacros',GraphGuid=99DBFD5540A796041F72A5A9DA655026)
ResolvedWildcardType=(PinCategory="float",bIsArray=True)
Pins(0)=EdGraphPin'EdGraphPin_450'
Pins(1)=EdGraphPin'EdGraphPin_451'
Pins(2)=EdGraphPin'EdGraphPin_452'
Pins(3)=EdGraphPin'EdGraphPin_453'
Pins(4)=EdGraphPin'EdGraphPin_454'
Pins(5)=EdGraphPin'EdGraphPin_455'
NodePosX=256
NodePosY=64
NodeGuid=C3CFEE8F4DD974E0423B339D90B7A624
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_41"
Begin Object Class=EdGraphPin Name="EdGraphPin_459"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_458"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_457"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_456"
End Object
Begin Object Name="EdGraphPin_459"
PinName="ReturnValue"
PinToolTip="Return Value
Integer"
Direction=EGPD_Output
PinType=(PinCategory="int")
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_458"
PinName="B"
PinToolTip="B
Integer"
PinType=(PinCategory="int")
DefaultValue="1"
AutogeneratedDefaultValue="1"
End Object
Begin Object Name="EdGraphPin_457"
PinName="A"
PinToolTip="A
Integer"
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_456"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="Subtract_IntInt")
Pins(0)=EdGraphPin'EdGraphPin_456'
Pins(1)=EdGraphPin'EdGraphPin_457'
Pins(2)=EdGraphPin'EdGraphPin_458'
Pins(3)=EdGraphPin'EdGraphPin_459'
NodePosX=736
NodePosY=272
NodeGuid=894C2EFC4273671AC3EE23AC327863B4
End Object
Begin Object Class=K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_1"
Begin Object Class=EdGraphPin Name="EdGraphPin_463"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_462"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_461"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_460"
End Object
Begin Object Name="EdGraphPin_463"
PinName="ReturnValue"
PinToolTip="Return Value
Integer"
Direction=EGPD_Output
PinType=(PinCategory="int")
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_462"
PinName="B"
PinToolTip="B
Integer"
PinType=(PinCategory="int")
DefaultValue="1"
AutogeneratedDefaultValue="1"
End Object
Begin Object Name="EdGraphPin_461"
PinName="A"
PinToolTip="A
Integer"
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_460"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
Pins(0)=EdGraphPin'EdGraphPin_460'
Pins(1)=EdGraphPin'EdGraphPin_461'
Pins(2)=EdGraphPin'EdGraphPin_462'
Pins(3)=EdGraphPin'EdGraphPin_463'
NodePosX=720
NodePosY=384
NodeGuid=46636BCB45CFF42340FCE3BB321B672A
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_213"
Begin Object Class=EdGraphPin Name="EdGraphPin_467"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_466"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_465"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_464"
End Object
Begin Object Name="EdGraphPin_467"
PinName="ReturnValue"
PinToolTip="Return Value
Integer"
Direction=EGPD_Output
PinType=(PinCategory="int")
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_466"
PinName="B"
PinToolTip="B
Integer"
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="1"
End Object
Begin Object Name="EdGraphPin_465"
PinName="A"
PinToolTip="A
Integer"
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_464"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="Percent_IntInt")
Pins(0)=EdGraphPin'EdGraphPin_464'
Pins(1)=EdGraphPin'EdGraphPin_465'
Pins(2)=EdGraphPin'EdGraphPin_466'
Pins(3)=EdGraphPin'EdGraphPin_467'
NodePosX=880
NodePosY=272
NodeGuid=73C50C574F9FFA5A203231AC42C28471
End Object
Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_62"
Begin Object Class=EdGraphPin Name="EdGraphPin_470"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_469"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_468"
End Object
Begin Object Name="EdGraphPin_470"
PinName="ReturnValue"
PinToolTip="Return Value
Integer

The length of the array"
Direction=EGPD_Output
PinType=(PinCategory="int")
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_469"
PinName="TargetArray"
PinToolTip="Target Array
Array of Floats

The array to get the length of *"
PinType=(PinCategory="float",bIsArray=True,bIsReference=True,bIsConst=True)
bDefaultValueIsIgnored=True
End Object
Begin Object Name="EdGraphPin_468"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Array Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
DefaultObject=Default__KismetArrayLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetArrayLibrary',MemberName="Array_Length")
Pins(0)=EdGraphPin'EdGraphPin_468'
Pins(1)=EdGraphPin'EdGraphPin_469'
Pins(2)=EdGraphPin'EdGraphPin_470'
NodePosX=688
NodePosY=448
NodeGuid=2DE8B95E4DF8CCA12E4C85A5BD91D802
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_43"
Begin Object Class=EdGraphPin Name="EdGraphPin_474"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_473"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_472"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_471"
End Object
Begin Object Name="EdGraphPin_474"
PinName="ReturnValue"
PinToolTip="Return Value
Integer"
Direction=EGPD_Output
PinType=(PinCategory="int")
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_473"
PinName="B"
PinToolTip="B
Integer"
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="1"
End Object
Begin Object Name="EdGraphPin_472"
PinName="A"
PinToolTip="A
Integer"
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_471"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="Percent_IntInt")
Pins(0)=EdGraphPin'EdGraphPin_471'
Pins(1)=EdGraphPin'EdGraphPin_472'
Pins(2)=EdGraphPin'EdGraphPin_473'
Pins(3)=EdGraphPin'EdGraphPin_474'
NodePosX=896
NodePosY=400
NodeGuid=1BBF052F4AE765DE62FEDD8DE5D9B19A
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_430"
Begin Object Class=EdGraphPin Name="EdGraphPin_174"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_173"
End Object
Begin Object Name="EdGraphPin_174"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_173"
PinName="Heights"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True)
End Object
VariableReference=(MemberName="Heights",MemberGuid=830B427D41DE99964D3B4DB38526F2A6,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_173'
Pins(1)=EdGraphPin'EdGraphPin_174'
NodePosX=896
NodePosY=336
NodeGuid=9299A0364649720096C9B7A65E1C62C6
End Object
Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_76"
Begin Object Class=EdGraphPin Name="EdGraphPin_478"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_477"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_476"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_475"
End Object
Begin Object Name="EdGraphPin_478"
PinName="Item"
PinToolTip="Item
Float"
Direction=EGPD_Output
PinType=(PinCategory="float")
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_477"
PinName="Index"
PinToolTip="Index
Integer

The index in the array to get an item from *"
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_476"
PinName="TargetArray"
PinToolTip="Target Array
Array of Floats

The array to get an item from *"
PinType=(PinCategory="float",bIsArray=True,bIsReference=True,bIsConst=True)
bDefaultValueIsIgnored=True
End Object
Begin Object Name="EdGraphPin_475"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Array Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
DefaultObject=Default__KismetArrayLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetArrayLibrary',MemberName="Array_Get")
Pins(0)=EdGraphPin'EdGraphPin_475'
Pins(1)=EdGraphPin'EdGraphPin_476'
Pins(2)=EdGraphPin'EdGraphPin_477'
Pins(3)=EdGraphPin'EdGraphPin_478'
NodePosX=1072
NodePosY=256
NodeGuid=E0D555D143360CF50C75F48295EFBFD9
End Object
Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_75"
Begin Object Class=EdGraphPin Name="EdGraphPin_482"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_481"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_480"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_479"
End Object
Begin Object Name="EdGraphPin_482"
PinName="Item"
PinToolTip="Item
Float"
Direction=EGPD_Output
PinType=(PinCategory="float")
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_481"
PinName="Index"
PinToolTip="Index
Integer

The index in the array to get an item from *"
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_480"
PinName="TargetArray"
PinToolTip="Target Array
Array of Floats

The array to get an item from *"
PinType=(PinCategory="float",bIsArray=True,bIsReference=True,bIsConst=True)
bDefaultValueIsIgnored=True
End Object
Begin Object Name="EdGraphPin_479"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Array Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
DefaultObject=Default__KismetArrayLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetArrayLibrary',MemberName="Array_Get")
Pins(0)=EdGraphPin'EdGraphPin_479'
Pins(1)=EdGraphPin'EdGraphPin_480'
Pins(2)=EdGraphPin'EdGraphPin_481'
Pins(3)=EdGraphPin'EdGraphPin_482'
NodePosX=1072
NodePosY=368
NodeGuid=D7BC805C424F4E9FE85107898B05A501
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_214"
Begin Object Class=EdGraphPin Name="EdGraphPin_486"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_485"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_484"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_483"
End Object
Begin Object Name="EdGraphPin_486"
PinName="ReturnValue"
PinToolTip="Return Value
Vector 2D Structure"
Direction=EGPD_Output
PinType=(PinCategory="struct",PinSubCategoryObject=ScriptStruct'/Script/CoreUObject.Vector2D')
End Object
Begin Object Name="EdGraphPin_485"
PinName="Y"
PinToolTip="Y
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_484"
PinName="X"
PinToolTip="X
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_483"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="MakeVector2D")
Pins(0)=EdGraphPin'EdGraphPin_483'
Pins(1)=EdGraphPin'EdGraphPin_484'
Pins(2)=EdGraphPin'EdGraphPin_485'
Pins(3)=EdGraphPin'EdGraphPin_486'
NodePosX=1264
NodePosY=320
NodeGuid=7B39991343D77E07311CDEBFB22947AE
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_215"
Begin Object Class=EdGraphPin Name="EdGraphPin_490"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_489"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_488"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_487"
End Object
Begin Object Name="EdGraphPin_490"
PinName="ReturnValue"
Direction=EGPD_Output
PinType=(PinCategory="float")
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_489"
PinName="B"
PinType=(PinCategory="struct",PinSubCategoryObject=ScriptStruct'/Script/CoreUObject.Vector2D')
DefaultValue="(X=1.000000,Y=1.000000)"
End Object
Begin Object Name="EdGraphPin_488"
PinName="A"
PinType=(PinCategory="struct",PinSubCategoryObject=ScriptStruct'/Script/CoreUObject.Vector2D')
End Object
Begin Object Name="EdGraphPin_487"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="DotProduct2D")
Pins(0)=EdGraphPin'EdGraphPin_487'
Pins(1)=EdGraphPin'EdGraphPin_488'
Pins(2)=EdGraphPin'EdGraphPin_489'
Pins(3)=EdGraphPin'EdGraphPin_490'
NodePosX=1472
NodePosY=336
NodeComment="Neighbors Height"
bCommentBubbleVisible=True
NodeGuid=0F6B56D945AA2843C28FA599CBDCB6A0
End Object
Begin Object Class=K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_2"
Begin Object Class=EdGraphPin Name="EdGraphPin_494"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_493"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_492"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_491"
End Object
Begin Object Name="EdGraphPin_494"
PinName="ReturnValue"
PinToolTip="Return Value
Float"
Direction=EGPD_Output
PinType=(PinCategory="float")
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_493"
PinName="B"
PinToolTip="B
Float"
PinType=(PinCategory="float")
DefaultValue="2"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_492"
PinName="A"
PinToolTip="A
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_491"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="Multiply_FloatFloat")
Pins(0)=EdGraphPin'EdGraphPin_491'
Pins(1)=EdGraphPin'EdGraphPin_492'
Pins(2)=EdGraphPin'EdGraphPin_493'
Pins(3)=EdGraphPin'EdGraphPin_494'
NodePosX=1280
NodePosY=192
NodeComment="Midpoint height"
bCommentBubbleVisible=True
NodeGuid=1C24B25444565233BEAC789810121D1C
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_216"
Begin Object Class=EdGraphPin Name="EdGraphPin_498"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_497"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_496"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_495"
End Object
Begin Object Name="EdGraphPin_498"
PinName="ReturnValue"
PinToolTip="Return Value
Float"
Direction=EGPD_Output
PinType=(PinCategory="float")
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_497"
PinName="B"
PinToolTip="B
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="1.000000"
End Object
Begin Object Name="EdGraphPin_496"
PinName="A"
PinToolTip="A
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_495"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="Subtract_FloatFloat")
Pins(0)=EdGraphPin'EdGraphPin_495'
Pins(1)=EdGraphPin'EdGraphPin_496'
Pins(2)=EdGraphPin'EdGraphPin_497'
Pins(3)=EdGraphPin'EdGraphPin_498'
NodePosX=1728
NodePosY=256
NodeGuid=514297384A6E91FD2B7F47953F11C695
End Object
Begin Object Class=K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_3"
Begin Object Class=EdGraphPin Name="EdGraphPin_502"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_501"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_500"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_499"
End Object
Begin Object Name="EdGraphPin_502"
PinName="ReturnValue"
PinToolTip="Return Value
Float"
Direction=EGPD_Output
PinType=(PinCategory="float")
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_501"
PinName="B"
PinToolTip="B
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_500"
PinName="A"
PinToolTip="A
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_499"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="Multiply_FloatFloat")
Pins(0)=EdGraphPin'EdGraphPin_499'
Pins(1)=EdGraphPin'EdGraphPin_500'
Pins(2)=EdGraphPin'EdGraphPin_501'
Pins(3)=EdGraphPin'EdGraphPin_502'
NodePosX=1904
NodePosY=288
NodeGuid=56E1D8AB49E2DAE30EC74291D72E9833
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_450"
Begin Object Class=EdGraphPin Name="EdGraphPin_204"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_203"
End Object
Begin Object Name="EdGraphPin_204"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_203"
PinName="TravelSpeed"
Direction=EGPD_Output
PinType=(PinCategory="float")
AutogeneratedDefaultValue="0.0"
End Object
VariableReference=(MemberName="TravelSpeed",MemberGuid=CFE37AC046A20A832B4717B4D921B993,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_203'
Pins(1)=EdGraphPin'EdGraphPin_204'
NodePosX=1728
NodePosY=352
End Object
Begin Object Class=K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_4"
Begin Object Class=EdGraphPin Name="EdGraphPin_506"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_505"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_504"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_503"
End Object
Begin Object Name="EdGraphPin_506"
PinName="ReturnValue"
PinToolTip="Return Value
Float"
Direction=EGPD_Output
PinType=(PinCategory="float")
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_505"
PinName="B"
PinToolTip="B
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="1.000000"
End Object
Begin Object Name="EdGraphPin_504"
PinName="A"
PinToolTip="A
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_503"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
Pins(0)=EdGraphPin'EdGraphPin_503'
Pins(1)=EdGraphPin'EdGraphPin_504'
Pins(2)=EdGraphPin'EdGraphPin_505'
Pins(3)=EdGraphPin'EdGraphPin_506'
NodePosX=2064
NodePosY=192
NodeComment="Curve"
bCommentBubbleVisible=True
NodeGuid=6A4779104716A15321088F80133BB828
End Object
Begin Object Class=K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_5"
Begin Object Class=EdGraphPin Name="EdGraphPin_510"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_509"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_508"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_507"
End Object
Begin Object Name="EdGraphPin_510"
PinName="ReturnValue"
PinToolTip="Return Value
Float"
Direction=EGPD_Output
PinType=(PinCategory="float")
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_509"
PinName="B"
PinToolTip="B
Float"
PinType=(PinCategory="float")
DefaultValue="0.5"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_508"
PinName="A"
PinToolTip="A
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_507"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="Multiply_FloatFloat")
Pins(0)=EdGraphPin'EdGraphPin_507'
Pins(1)=EdGraphPin'EdGraphPin_508'
Pins(2)=EdGraphPin'EdGraphPin_509'
Pins(3)=EdGraphPin'EdGraphPin_510'
NodePosX=2224
NodePosY=176
NodeGuid=AC2599374C86BE8CD7F6C7BAC870B6F4
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_465"
Begin Object Class=EdGraphPin Name="EdGraphPin_214"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_213"
End Object
Begin Object Name="EdGraphPin_214"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_213"
PinName="NewHeights"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True)
End Object
VariableReference=(MemberName="NewHeights",MemberGuid=0ECC85F54A324A5A4A95D5A6B5E2B89C,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_213'
Pins(1)=EdGraphPin'EdGraphPin_214'
NodePosX=3040
NodePosY=112
NodeGuid=8D051C1E4D6C50BDDF0FD08CA149F96A
End Object
Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_89"
Begin Object Class=EdGraphPin Name="EdGraphPin_517"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_516"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_515"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_514"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_513"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_512"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_511"
End Object
Begin Object Name="EdGraphPin_517"
PinName="bSizeToFit"
PinToolTip="Size to Fit
Boolean

If true, the array will expand if Index is greater than the current size of the array"
PinType=(PinCategory="bool")
DefaultValue="false"
AutogeneratedDefaultValue="false"
End Object
Begin Object Name="EdGraphPin_516"
PinName="Item"
PinToolTip="Item
Float (by ref)

The item to assign to the index of the array *"
PinType=(PinCategory="float",bIsReference=True,bIsConst=True)
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_515"
PinName="Index"
PinToolTip="Index
Integer

The index to assign the item to *"
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_514"
PinName="TargetArray"
PinToolTip="Target Array
Array of Floats

The array to perform the operation on *"
PinType=(PinCategory="float",bIsArray=True,bIsReference=True,bIsConst=True)
bDefaultValueIsIgnored=True
End Object
Begin Object Name="EdGraphPin_513"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Array Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
DefaultObject=Default__KismetArrayLibrary
bHidden=True
End Object
Begin Object Name="EdGraphPin_512"
PinName="then"
PinToolTip="
Exec"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_511"
PinName="execute"
PinToolTip="
Exec"
PinType=(PinCategory="exec")
End Object
FunctionReference=(MemberParent=Class'/Script/Engine.KismetArrayLibrary',MemberName="Array_Set")
Pins(0)=EdGraphPin'EdGraphPin_511'
Pins(1)=EdGraphPin'EdGraphPin_512'
Pins(2)=EdGraphPin'EdGraphPin_513'
Pins(3)=EdGraphPin'EdGraphPin_514'
Pins(4)=EdGraphPin'EdGraphPin_515'
Pins(5)=EdGraphPin'EdGraphPin_516'
Pins(6)=EdGraphPin'EdGraphPin_517'
NodePosX=3248
NodePosY=64
NodeGuid=E6063D4243C8D97DCA8EC49C30ED98E9
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_473"
Begin Object Class=EdGraphPin Name="EdGraphPin_223"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_222"
End Object
Begin Object Name="EdGraphPin_223"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_222"
PinName="OldHeights"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True)
End Object
VariableReference=(MemberName="OldHeights",MemberGuid=37C3FFB54A479F16AB6A15809EE6E416,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_222'
Pins(1)=EdGraphPin'EdGraphPin_223'
NodePosX=2320
NodePosY=320
NodeGuid=C88522004F6D14ACAE70CE82CFE9F978
End Object
Begin Object Class=K2Node_CallArrayFunction Name="K2Node_CallArrayFunction_90"
Begin Object Class=EdGraphPin Name="EdGraphPin_521"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_520"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_519"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_518"
End Object
Begin Object Name="EdGraphPin_521"
PinName="Item"
PinToolTip="Item
Float"
Direction=EGPD_Output
PinType=(PinCategory="float")
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_520"
PinName="Index"
PinToolTip="Index
Integer

The index in the array to get an item from *"
PinType=(PinCategory="int")
DefaultValue="0"
AutogeneratedDefaultValue="0"
End Object
Begin Object Name="EdGraphPin_519"
PinName="TargetArray"
PinToolTip="Target Array
Array of Floats

The array to get an item from *"
PinType=(PinCategory="float",bIsArray=True,bIsReference=True,bIsConst=True)
bDefaultValueIsIgnored=True
End Object
Begin Object Name="EdGraphPin_518"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Array Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetArrayLibrary')
DefaultObject=Default__KismetArrayLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetArrayLibrary',MemberName="Array_Get")
Pins(0)=EdGraphPin'EdGraphPin_518'
Pins(1)=EdGraphPin'EdGraphPin_519'
Pins(2)=EdGraphPin'EdGraphPin_520'
Pins(3)=EdGraphPin'EdGraphPin_521'
NodePosX=2544
NodePosY=256
NodeComment="PrevHeight"
bCommentBubbleVisible=True
NodeGuid=5CC3CC0B4CA80F6D3304C9929D65FD11
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_255"
Begin Object Class=EdGraphPin Name="EdGraphPin_525"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_524"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_523"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_522"
End Object
Begin Object Name="EdGraphPin_525"
PinName="ReturnValue"
PinToolTip="Return Value
Float"
Direction=EGPD_Output
PinType=(PinCategory="float")
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_524"
PinName="B"
PinToolTip="B
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="1.000000"
End Object
Begin Object Name="EdGraphPin_523"
PinName="A"
PinToolTip="A
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_522"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="Subtract_FloatFloat")
Pins(0)=EdGraphPin'EdGraphPin_522'
Pins(1)=EdGraphPin'EdGraphPin_523'
Pins(2)=EdGraphPin'EdGraphPin_524'
Pins(3)=EdGraphPin'EdGraphPin_525'
NodePosX=2784
NodePosY=176
NodeGuid=13D05E4B41DF0B21FDE88294C5B5D6FC
End Object
Begin Object Class=K2Node_CommutativeAssociativeBinaryOperator Name="K2Node_CommutativeAssociativeBinaryOperator_6"
Begin Object Class=EdGraphPin Name="EdGraphPin_529"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_528"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_527"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_526"
End Object
Begin Object Name="EdGraphPin_529"
PinName="ReturnValue"
PinToolTip="Return Value
Float"
Direction=EGPD_Output
PinType=(PinCategory="float")
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_528"
PinName="B"
PinToolTip="B
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_527"
PinName="A"
PinToolTip="A
Float"
PinType=(PinCategory="float")
DefaultValue="0.0"
AutogeneratedDefaultValue="0.0"
End Object
Begin Object Name="EdGraphPin_526"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Kismet Math Library Reference"
PinType=(PinCategory="object",PinSubCategoryObject=Class'/Script/Engine.KismetMathLibrary')
DefaultObject=Default__KismetMathLibrary
bHidden=True
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class'/Script/Engine.KismetMathLibrary',MemberName="Multiply_FloatFloat")
Pins(0)=EdGraphPin'EdGraphPin_526'
Pins(1)=EdGraphPin'EdGraphPin_527'
Pins(2)=EdGraphPin'EdGraphPin_528'
Pins(3)=EdGraphPin'EdGraphPin_529'
NodePosX=2976
NodePosY=192
NodeGuid=2EDA600F4F438E70122B958376E076A8
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_474"
Begin Object Class=EdGraphPin Name="EdGraphPin_237"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_236"
End Object
Begin Object Name="EdGraphPin_237"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_236"
PinName="Damp Factor"
Direction=EGPD_Output
PinType=(PinCategory="float")
AutogeneratedDefaultValue="0.0"
End Object
VariableReference=(MemberName="Damp Factor",MemberGuid=69E766AF4FD529AB6CE9859AA5981651,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_236'
Pins(1)=EdGraphPin'EdGraphPin_237'
NodePosX=2816
NodePosY=256
NodeGuid=151E12834784382FE45461BD62C45C98
End Object
Begin Object Class=K2Node_VariableSet Name="K2Node_VariableSet_368"
Begin Object Class=EdGraphPin Name="EdGraphPin_242"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_241"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_240"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_239"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_238"
End Object
Begin Object Name="EdGraphPin_242"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_241"
PinName="Output_Get"
PinToolTip="Retrieves the value of the variable, can use instead of a separate Get node"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True)
End Object
Begin Object Name="EdGraphPin_240"
PinName="OldHeights"
PinType=(PinCategory="float",bIsArray=True)
End Object
Begin Object Name="EdGraphPin_239"
PinName="then"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_238"
PinName="execute"
PinType=(PinCategory="exec")
End Object
VariableReference=(MemberName="OldHeights",MemberGuid=37C3FFB54A479F16AB6A15809EE6E416,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_238'
Pins(1)=EdGraphPin'EdGraphPin_239'
Pins(2)=EdGraphPin'EdGraphPin_240'
Pins(3)=EdGraphPin'EdGraphPin_241'
Pins(4)=EdGraphPin'EdGraphPin_242'
NodePosX=624
NodePosY=576
NodeGuid=0D1CB39A4460E418BD8746A64BA82450
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_475"
Begin Object Class=EdGraphPin Name="EdGraphPin_244"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_243"
End Object
Begin Object Name="EdGraphPin_244"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_243"
PinName="Heights"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True)
End Object
VariableReference=(MemberName="Heights",MemberGuid=830B427D41DE99964D3B4DB38526F2A6,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_243'
Pins(1)=EdGraphPin'EdGraphPin_244'
NodePosX=400
NodePosY=640
NodeGuid=66DBA71C4A4CF39D15BB289805F3EEFE
End Object
Begin Object Class=K2Node_VariableSet Name="K2Node_VariableSet_369"
Begin Object Class=EdGraphPin Name="EdGraphPin_249"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_248"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_247"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_246"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_245"
End Object
Begin Object Name="EdGraphPin_249"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_248"
PinName="Output_Get"
PinToolTip="Retrieves the value of the variable, can use instead of a separate Get node"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True)
End Object
Begin Object Name="EdGraphPin_247"
PinName="Heights"
PinType=(PinCategory="float",bIsArray=True)
End Object
Begin Object Name="EdGraphPin_246"
PinName="then"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_245"
PinName="execute"
PinType=(PinCategory="exec")
End Object
VariableReference=(MemberName="Heights",MemberGuid=830B427D41DE99964D3B4DB38526F2A6,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_245'
Pins(1)=EdGraphPin'EdGraphPin_246'
Pins(2)=EdGraphPin'EdGraphPin_247'
Pins(3)=EdGraphPin'EdGraphPin_248'
Pins(4)=EdGraphPin'EdGraphPin_249'
NodePosX=16
NodePosY=80
NodeGuid=7AC861A04720E9A910DDC589CD0B128D
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_476"
Begin Object Class=EdGraphPin Name="EdGraphPin_251"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_250"
End Object
Begin Object Name="EdGraphPin_251"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_250"
PinName="NewHeights"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True)
End Object
VariableReference=(MemberName="NewHeights",MemberGuid=0ECC85F54A324A5A4A95D5A6B5E2B89C,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_250'
Pins(1)=EdGraphPin'EdGraphPin_251'
NodePosX=-320
NodePosY=144
End Object
Begin Object Class=K2Node_CallFunction Name="K2Node_CallFunction_278"
Begin Object Class=EdGraphPin Name="EdGraphPin_255"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_254"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_253"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_252"
End Object
Begin Object Name="EdGraphPin_255"
PinName="Array"
PinToolTip="Array
Array of Floats"
PinType=(PinCategory="float",bIsArray=True,bIsReference=True)
End Object
Begin Object Name="EdGraphPin_254"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinToolTip="Target
Self Reference"
PinType=(PinCategory="object",PinSubCategory="self")
End Object
Begin Object Name="EdGraphPin_253"
PinName="then"
PinToolTip="
Exec"
Direction=EGPD_Output
PinType=(PinCategory="exec")
End Object
Begin Object Name="EdGraphPin_252"
PinName="execute"
PinToolTip="
Exec"
PinType=(PinCategory="exec")
End Object
FunctionReference=(MemberName="SetCubeHeights",MemberGuid=00A3FF944C3D555551C46D847B6D4BED,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_252'
Pins(1)=EdGraphPin'EdGraphPin_253'
Pins(2)=EdGraphPin'EdGraphPin_254'
Pins(3)=EdGraphPin'EdGraphPin_255'
NodePosX=976
NodePosY=544
ErrorType=1
ErrorMsg="Error The current value of the \' Array \' pin is invalid: Array inputs (like \'Array\') must have an input wired into them (try connecting a MakeArray node)."
NodeGuid=A6F44FCA43787AC5207D0CAB8BB444B1
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_505"
Begin Object Class=EdGraphPin Name="EdGraphPin_257"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_256"
End Object
Begin Object Name="EdGraphPin_257"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_256"
PinName="NewHeights"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True)
End Object
VariableReference=(MemberName="NewHeights",MemberGuid=0ECC85F54A324A5A4A95D5A6B5E2B89C,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_256'
Pins(1)=EdGraphPin'EdGraphPin_257'
NodePosX=672
NodePosY=720
NodeGuid=E41DC8534DCE7D56D3CDEBBE7A663495
End Object
Begin Object Class=K2Node_VariableGet Name="K2Node_VariableGet_0"
Begin Object Class=EdGraphPin Name="EdGraphPin_1037"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_1036"
End Object
Begin Object Name="EdGraphPin_1037"
PinName="self"
PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target")
PinType=(PinCategory="object",PinSubCategoryObject=BlueprintGeneratedClass'/Game/Developers/ryanbrucks/RenderTargetTest/FluidSim/Materials/Reflection_Test.Reflection_Test_C')
bHidden=True
End Object
Begin Object Name="EdGraphPin_1036"
PinName="Heights"
Direction=EGPD_Output
PinType=(PinCategory="float",bIsArray=True)
End Object
VariableReference=(MemberName="Heights",MemberGuid=830B427D41DE99964D3B4DB38526F2A6,bSelfContext=True)
Pins(0)=EdGraphPin'EdGraphPin_1036'
Pins(1)=EdGraphPin'EdGraphPin_1037'
NodePosX=544
NodePosY=448
NodeGuid=2531DAB146D728B19C0E658877FE052D
End Object
Begin Object Class=K2Node_Knot Name="K2Node_Knot_0"
Begin Object Class=EdGraphPin Name="EdGraphPin_1103"
End Object
Begin Object Class=EdGraphPin Name="EdGraphPin_1102"
End Object
Begin Object Name="EdGraphPin_1103"
PinName="OutputPin"
Direction=EGPD_Output
PinType=(PinCategory="int")
End Object
Begin Object Name="EdGraphPin_1102"
PinName="InputPin"
PinType=(PinCategory="int")
bDefaultValueIsIgnored=True
End Object
Pins(0)=EdGraphPin'EdGraphPin_1102'
Pins(1)=EdGraphPin'EdGraphPin_1103'
NodePosX=2336
NodePosY=144
NodeGuid=FE9007E94E9B752ED604289AB31642DA
End Object

``````

Good starting values for speed and damping are 0.95.

Hi Ryan it’s 1am here in France and i was still study and made some research about this nice 2d water effect … but most important and first at all thanks for your time and your two answer on the question , honestly as i’m still lost and i know that what i’m trying to do will be waste of time soon ,but it’s cool to investigate. As Gameplay programmer , all this Material and effect is amazing and so interesting, but complicated to get the concept. anyway your answer make me happy and confident.

i just checked who was Daniel Wright , i know now he come from Epic too ! good i’m surrounded of pro.
just for information i’m working on a 2D games plan on PS4 i can’t say the name but Michael Noland and billy bramer already know

Ryan when you say with BP version i will be limited around 1000x time slower it’s huge, compare to what kind of version exactly ? because our main idea is to match exactly the same result as in the video posted so it will be a 2D grid.
great to see a 1d BP setup soon , i think it will illuminate me and my undestanding.

Thank Again Ryan !!!

I mean it will be significantly slower than doing it using the GPU with render targets. The reason is because on the CPU you need to iterate one cell at a time over all cells and due to the overhead of blueprints, each cell will have a fixed overhead. On the GPU using a texture, there is an implicit forloop happening for all pixels so you can consider you are instead only looking up a few neighbors at each step. So a 512x512 fluid sim only takes like 0.01-0.03ms or so which is crazy fast. You couldn’t even complete the 512x512 loop in blueprints without locking up your machine for 30 seconds and hitting the instruction limit (its 250k points after all). Even on the CPU without blueprints you would have to do a bunch of work to multithread your sim to get anywhere near gpu speeds.

I just tested 4k, 1d cells using my BP and it was noticeably chuggy (even when I made the camera look mostly offscreen to avoid the cost of 4k draw calls). With setting the cube heights on all 4k it ran at 20fps, and when I disabled the ‘set cube heights’ function to test just simulating the 4k points, the fps was still only 34. This is down from ~170+. But a few hundred points run no problem. I am still at 130fps with 256 points. But the point is this will cost whole milliseconds instead of tiny fractions of milliseconds.

Forces:

To add forces to the above, all you would need to do is make another function that adds some value to any number of cells. You could get random cells and add a random value and that is a great way to try out rain.

Doing this on the GPU is so much fun because you can actually use textures and things as your forces. In one of my tests I printed debug text into the material and the changing digits made really cool fluid ripples. Once the next engine comes out we should have some cool examples to show.

Just lurking over this interesting topic…

… Maybe the BP → C++ converter (‘Nativize Blueprint Assets’ feature) could help a little with this?

Yes Slavq this is a very interesting Topic and i think it will interest hundred for not say thousand of developers soon ! thanks Ryan for this amazing beginning !
i just sent an email to Daniel Wright to introduce me and this post to see if he can bring his talent to help me to progress in this very interesting task

Ryan thanks thanks for your time and consideration !

@Bryan by respect i’m creating the BP right now, i will back to you tomorrow, to tell you my progress and maybe some new comment

In video it seems that Ori is only simulating first layer of water and rest of the body is just using that with fallof towards simple plane. On top of that there seems to be graphical normal distortion but no additional geometric waves.

That is pretty much how all 2d fluid sims work that are not full 3d volumetric sims. Its just a standard 2d sim. I think you are confusing the two axes. The 2nd axis in the ‘2d’ part is not the vertical axis on the screen, it is going in and out of the screen.

Here is what I mean. So imagine that this ‘2d’ sim is actually the fluid from the Ori video posted. Notice the directions of the red and green arrows. These are the two axes of the simulation. The blue arrow is NOT an axis of simulation since it is in 2d.

So from the sideways view of the game camera, the fluid sim would appear like this:

So the 2nd axis is not the blue up and down vertical axis (which does not exist here for all intents and purposes); its the green axis going deeper into the scene and it is why you can see the ripples are round. They most likely do not let the character travel along the Y axis so it simply exists for ripples to spread in 2d.

To me it seems like the Z axis (blue arrow) motion is controlled entirely by player input but it is possible they are adding in some value from the surface simulation based on depth. That is what you would do if for example you had particles under the water, you would want the ones just under the surface to move with nearly the motion of the surface until you get down a few feet and the influence would be almost gone.

Simulation look pretty similar like this. Unity3d 2D Dynamic Mesh Based Water [Update] - YouTube
Rendering is much more sophisticated. If you look down to y axis there is no simulated behavior after water clipping plane.

Hi Ryan ! Hope you’re fine and thank again to be here today to illuminate us

from my own since yesterday i have tried your solution and play with. i’ve reconstruct the blueprint node by node to understand the process, the result is pretty good but as
you’ve mentionned unfortunately sometime the framerate drop once the number of cells equal several hundred. (that’s why on this topic i’m really curious to get your concept with the feature written by Daniel Wright)

i still have some question or comment, due to my actual lack of 3D knowledge. but i don’t want to annoy you Ryan. Even if i think this topic will meet a great success soon.
As we are a lot in term of 2D concerned about new technics.

this is my bunch of question :

1 - i set a very basic water material 'who not handle the ripple) in the construction script for each new mesh in the loop but i can see this is not the correct solution as i can observ a difference between each mesh.
you seem to have already a material who handle ripple correctly and i guess this one should handle the difference between the top wave color and wave color (guess it’s handle trhought fresnel) could you light me on this material settings.

2 - if i get correctly the concept of the reflection blueprint it handle only the simulaiton of the top wave itself, what about the rest of the water surface below the wave ? should it be handle by an independant plane mesh with a material with distorsion
or in your logic you intend to use the different face of the cube mesh ? because in the movie when the character is below the wave we can see in transparency the ripple surface

3 - i’ve tried to add a function to apply a force to generate a simulation when i want while changing the number of cell to a random value but it doesn’t work, actually i can only do it again when i’m changing the value cell number “which is public” in the map while i’m playing the game.

hey @kalle_H

Yes it’s also a simulation mesh in your video, so it’s the same concept, but again yes the rendering can’t be compare , i started this topic to covering both technics and rendering, the Hero is Bryan for now who already explain and give serious sample about how create the mesh technics in UE4 ! Did you anything to bring about the sophisticated rendering ?

1. The screenshot with nice ripples I showed was from the render target GPU version. It was 512x512 res

2. No, there is no ‘top wave’ or ‘ripples’, it is all just the same thing, propagation of ripples through diffusion. The size of the ripple has to do with the size of the forces you add and they get smaller the further they have traveled. It is typical to add some slight additional normal map detail that pans on top of the simulation, but you have to be VERY feint with it or it will kill the realism of the simulation. And the texture chosen needs to match the kind of simulation you are going for. It can often make it look worse so I only suggest trying it as a polish item. The image I posted had no additional normal.

3. You cannot change the number of cells after the construction script is run. You have to keep those arrays the same size the whole time. You should just have to add some extra height to a few cells and that should be all that is required. I will try it out later this evening.

I don’t think there is much to the rendering other than some nice refraction and frsenel. This could be accomplished with regular refraction using a translucent material and the reflections could be made pretty with planar reflections.

For rendering you also need depth fog. From pixel depth to scene depth. Simple but effective formula is calcululate distance from pixel position to positionBehindTranlucency and then multiply that with density. Density can be different for each wavelength. Then you plug this to exp2 function with minus sign.

``````
color = lerp(waterColor, sceneColor, pow(2.0, -density * distance))

``````