Download

How to create the sun in a space sim?

Greetings,

I am having trouble with creating the Sun in a space sim game I am making. I am very new to UE and game development so forgive me for this simple question.

First off, I am using a directional light to simulate the light from the sun and have “Used as Atmosphere Sun Light” checked. Although this directional light is correctly lighting my environment, whenever I hit play I can not actually see the object emitting the light (the sun).

How would I go about visually seeing an object representing the sun in my environment?

In addition, I would like to have the object representing the sun give off a glowing effect.

Any help is greatly appreciated.

Thanks

Munich

You’d surely want a mesh representing the sun?

If I created a mesh representing the sun (centered on the directional light) and applied a material to it how would I get that material to glow properly (like the sun does) if the light is inside that mesh?

These questions are so basic, you should be able to answer them yourself by spending five minutes playing with the editor and you should definitely spend time with the documentation and example content before trying to implement things.

  1. Directional lights are directional. They have no location, only a direction, so it’s completely irrelevant where you place the actor.
  2. If you selected your sun mesh and looked at it’s properties, you’d notice you can tell it not to cast shadows.
  3. Using lights to make things glow is nonsense. The material applied to the sun needs to be emissive.

Thanks for your reply. Yes, it is evident that I need to spent a lot more time with the documentation. I will create my sun mesh and tell it not to cast shadows and apply an emissive material to it like you mention. Thanks again.

Munich

@ Muunich - Some people can be a bit harsh with their response for some reason. Don’t take it to heart. Just like the documentation is there to help you, so are these forums. The fact that you came here “first” and asked the questions you did is quite normal and shouldn’t be scrutinized. So, in the future, if you have any questions, post away. Someone who is nice will get back to you sooner or later :slight_smile:

To reiterate on your questions:

  1. The reason you are unable to see the sun, is due to the fact that there isn’t a sun object (i.e. mesh). The sphere mesh you create needs to have all shadow information disabled. Not just (Cast shadows) but also receiving shadows, etc. This way, it is left out of the shadow calculation process since this object is going to be “unlit” within its material and solely driven through the emissive channel - since it’s a giant ball of plasma :smiley:

  2. In order to get the mesh to glow like the sun, you need to create an emissive material. Here is a lava material. As you can see, there are a few panning and rotating nodes that are plugged into a texture that is then plugged into the emissive channel of the material.

  3. Another element of the “Glow” is going to be your Post Process and Bloom settings which you can find Here.

Give me a few minutes and I will whip something up for you :slight_smile:

You are very kind good sir. I do like criticism, it makes me work harder and makes me more determined :slight_smile: I really appreciate your detailed response. I am currently @ work (3D mathematical modeller) and will implement this later tonight.

Thanks

Muunich

Here is a simple prototype sun you can create just to get yourself familiar with the workflow and setup of certain functions. Download the Fire picture and use it as the texture. (You might need to save it as a .tga first).
Fire Texture: 387cb25e4909f11f3611fe10219d0f512ee76069.jpeg
Simple Sun Material: SimpleSun01.jpg

You want to give your sun a bright, emissive color, and you may want to give it a color value that’s greater than 1.0. Values greater than 1 will cause bloom in post process, which makes it look brighter than it is.
So, for example, you could create a sphere, and give it the constant emissive color red=5, green=3, blue=0.5. Make the material itself be unlit, and make the mesh not cast shadows.

@JBaldwin

Just implemented your material and its glorious! I really appreciate you sharing your knowledge and providing your example :D. This helps me tremendously with the workflow and how these things are done.

@jwatte

Thanks for that info. With that I was able to tweak the right amount of ‘glow’ that I wanted.

No problem Muunich. After you become familiar with everything, then you can create some advanced shaders for the sun and other objects within your scene :slight_smile:

Great posts and attitude JBaldwin, good for the community!

Totally agree 100%.

Just wanted to post and thank JBaldwin! It’s so incredibly helpful for a newbie like myself.

No problem. That is what the UE4 community should be all about :slight_smile:

I’d like to add a Blueprint that allows you to place your sun along the direction of your directional light, so it’s easier to visualize where the sun’s position is.

b656b7f22378ada0cba314ab808b3b7e592e8856.jpeg

In the BP Instance, make sure to connect your directional light, and set a distance, these put the sun at the very edge of my skydome, which worked for me.

f45976a02f588073e3ca3b96ad95a9e32553efa1.jpeg

This Code is intended for the Construction BP, so it will not auto-update, so if you move the directional light, move the SunBP a bit, and the sun position will update.

Begin Object Class=K2Node_FunctionEntry Name=“K2Node_FunctionEntry_0”
Begin Object Class=EdGraphPin Name=“EdGraphPin_65”
End Object
Begin Object Name=“EdGraphPin_65”
PinName=“then”
Direction=EGPD_Output
PinType=(PinCategory=“exec”)
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_2.EdGraphPin_70’
End Object
SignatureClass=Class’/Script/Engine.Actor’
SignatureName=“UserConstructionScript”
Pins(0)=EdGraphPin’EdGraphPin_65’
NodePosX=-800
NodePosY=-128
NodeGuid=B6D1649E4E8D625FE774E6A45A53D289
End Object
Begin Object Class=K2Node_VariableGet Name=“K2Node_VariableGet_1633”
Begin Object Class=EdGraphPin Name=“EdGraphPin_18”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_19”
End Object
Begin Object Name=“EdGraphPin_18”
PinName=“Distance”
Direction=EGPD_Output
PinType=(PinCategory=“float”)
AutogeneratedDefaultValue=“0.0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_1.EdGraphPin_68’
End Object
Begin Object Name=“EdGraphPin_19”
PinName=“self”
PinFriendlyName=NSLOCTEXT(“K2Node”, “Target”, “Target”)
PinType=(PinCategory=“object”,PinSubCategoryObject=BlueprintGeneratedClass’/Game/Space/Sun/Blueprint/Sun_BP.Sun_BP_C’)
bHidden=True
End Object
VariableReference=(MemberName=“Distance”,MemberGuid=76C86BFB4BDFBE2F7FB712A619085D7F,bSelfContext=True)
Pins(0)=EdGraphPin’EdGraphPin_18’
Pins(1)=EdGraphPin’EdGraphPin_19’
NodePosX=-48
NodePosY=304
NodeGuid=281B1CFF471C211E276FA8B1969D6111
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_1”
Begin Object Class=EdGraphPin Name=“EdGraphPin_66”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_67”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_68”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_69”
End Object
Begin Object Name=“EdGraphPin_66”
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
Begin Object Name=“EdGraphPin_67”
PinName=“A”
PinToolTip=“A
Vector "
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
DefaultValue=“0, 0, 0”
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_11.EdGraphPin_90’
End Object
Begin Object Name=“EdGraphPin_68”
PinName=“B”
PinToolTip=“B
Float”
PinType=(PinCategory=“float”)
DefaultValue=“0.0”
AutogeneratedDefaultValue=“0.0”
LinkedTo(0)=EdGraphPin’K2Node_VariableGet_1633.EdGraphPin_18’
End Object
Begin Object Name=“EdGraphPin_69”
PinName=“ReturnValue”
PinToolTip=“Return Value
Vector "
Direction=EGPD_Output
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_2.EdGraphPin_73’
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class’/Script/Engine.KismetMathLibrary’,MemberName=“Multiply_VectorFloat”)
Pins(0)=EdGraphPin’EdGraphPin_66’
Pins(1)=EdGraphPin’EdGraphPin_67’
Pins(2)=EdGraphPin’EdGraphPin_68’
Pins(3)=EdGraphPin’EdGraphPin_69’
NodePosX=288
NodePosY=176
NodeGuid=B35D75AF4AFDECB9A7BCA6A5025F471A
End Object
Begin Object Class=K2Node_VariableGet Name=“K2Node_VariableGet_1638”
Begin Object Class=EdGraphPin Name=“EdGraphPin_20”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_23”
End Object
Begin Object Name=“EdGraphPin_20”
PinName=“Sphere”
Direction=EGPD_Output
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.StaticMeshComponent’)
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_2.EdGraphPin_72’
LinkedTo(1)=EdGraphPin’K2Node_CallFunction_3.EdGraphPin_79’
End Object
Begin Object Name=“EdGraphPin_23”
PinName=“self”
PinFriendlyName=NSLOCTEXT(“K2Node”, “Target”, “Target”)
PinType=(PinCategory=“object”,PinSubCategoryObject=BlueprintGeneratedClass’/Game/Space/Sun/Blueprint/Sun_BP.Sun_BP_C’)
bHidden=True
End Object
VariableReference=(MemberName=“Sphere”,bSelfContext=True)
Pins(0)=EdGraphPin’EdGraphPin_20’
Pins(1)=EdGraphPin’EdGraphPin_23’
NodePosX=-816
NodePosY=48
NodeGuid=0C239BF44FC3289921757CB53B0FC60B
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_2”
Begin Object Class=EdGraphPin Name=“EdGraphPin_70”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_71”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_72”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_73”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_74”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_75”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_76”
End Object
Begin Object Name=“EdGraphPin_70”
PinName=“execute”
PinToolTip=”
Exec”
PinType=(PinCategory=“exec”)
LinkedTo(0)=EdGraphPin’K2Node_FunctionEntry_0.EdGraphPin_65’
End Object
Begin Object Name=“EdGraphPin_71”
PinName=“then”
PinToolTip="
Exec"
Direction=EGPD_Output
PinType=(PinCategory=“exec”)
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_3.EdGraphPin_77’
End Object
Begin Object Name=“EdGraphPin_72”
PinName=“self”
PinFriendlyName=NSLOCTEXT(“K2Node”, “Target”, “Target”)
PinToolTip=“Target
Scene Component Reference”
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.SceneComponent’)
LinkedTo(0)=EdGraphPin’K2Node_VariableGet_1638.EdGraphPin_20’
End Object
Begin Object Name=“EdGraphPin_73”
PinName=“DeltaLocation”
PinToolTip="Delta Location
Vector

Change in location in world space for the component."
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
DefaultValue=“0, 0, 0”
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_1.EdGraphPin_69’
End Object
Begin Object Name=“EdGraphPin_74”
PinName=“bSweep”
PinToolTip="Sweep
Boolean

Whether we sweep to the destination location, triggering overlaps along the way and stopping short of the target if blocked by something. Only the root component is swept and checked for blocking collision, child components move without sweeping. If collision is off, this has no effect."
PinType=(PinCategory=“bool”)
DefaultValue=“false”
AutogeneratedDefaultValue=“false”
End Object
Begin Object Name=“EdGraphPin_75”
PinName=“SweepHitResult”
PinToolTip="Sweep Hit Result
Hit Result Structure

Hit result from any impact if sweep is true."
Direction=EGPD_Output
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/Engine.HitResult’)
End Object
Begin Object Name=“EdGraphPin_76”
PinName=“bTeleport”
PinToolTip="Teleport
Boolean

Whether we teleport the physics state (if physics collision is enabled for this object). If true, physics velocity for this object is unchanged (so ragdoll parts are not affected by change in location). If false, physics velocity is updated based on the change in position (affecting ragdoll parts). If CCD is on and not teleporting, this will affect objects along the entire sweep volume."
PinType=(PinCategory=“bool”)
DefaultValue=“false”
AutogeneratedDefaultValue=“false”
End Object
FunctionReference=(MemberParent=Class’/Script/Engine.SceneComponent’,MemberName=“K2_AddWorldOffset”)
Pins(0)=EdGraphPin’EdGraphPin_70’
Pins(1)=EdGraphPin’EdGraphPin_71’
Pins(2)=EdGraphPin’EdGraphPin_72’
Pins(3)=EdGraphPin’EdGraphPin_73’
Pins(4)=EdGraphPin’EdGraphPin_74’
Pins(5)=EdGraphPin’EdGraphPin_75’
Pins(6)=EdGraphPin’EdGraphPin_76’
NodePosX=448
NodeGuid=C2C8E50740139D45C3C41F8D2E18231D
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_3”
Begin Object Class=EdGraphPin Name=“EdGraphPin_77”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_78”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_79”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_80”
End Object
Begin Object Name=“EdGraphPin_77”
PinName=“execute”
PinToolTip="
Exec"
PinType=(PinCategory=“exec”)
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_2.EdGraphPin_71’
End Object
Begin Object Name=“EdGraphPin_78”
PinName=“then”
PinToolTip="
Exec"
Direction=EGPD_Output
PinType=(PinCategory=“exec”)
End Object
Begin Object Name=“EdGraphPin_79”
PinName=“self”
PinFriendlyName=NSLOCTEXT(“K2Node”, “Target”, “Target”)
PinToolTip=“Target
Scene Component Reference”
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.SceneComponent’)
LinkedTo(0)=EdGraphPin’K2Node_VariableGet_1638.EdGraphPin_20’
End Object
Begin Object Name=“EdGraphPin_80”
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”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_2531.EdGraphPin_83’
End Object
FunctionReference=(MemberParent=Class’/Script/Engine.SceneComponent’,MemberName=“SetWorldScale3D”)
Pins(0)=EdGraphPin’EdGraphPin_77’
Pins(1)=EdGraphPin’EdGraphPin_78’
Pins(2)=EdGraphPin’EdGraphPin_79’
Pins(3)=EdGraphPin’EdGraphPin_80’
NodePosX=752
NodePosY=80
NodeGuid=A13C59AE4D3F3DF74A1A2398AE723ACC
End Object
Begin Object Class=K2Node_VariableGet Name=“K2Node_VariableGet_1643”
Begin Object Class=EdGraphPin Name=“EdGraphPin_16”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_17”
End Object
Begin Object Name=“EdGraphPin_16”
PinName=“Size”
Direction=EGPD_Output
PinType=(PinCategory=“float”)
AutogeneratedDefaultValue=“0.0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_2531.EdGraphPin_82’
End Object
Begin Object Name=“EdGraphPin_17”
PinName=“self”
PinFriendlyName=NSLOCTEXT(“K2Node”, “Target”, “Target”)
PinType=(PinCategory=“object”,PinSubCategoryObject=BlueprintGeneratedClass’/Game/Space/Sun/Blueprint/Sun_BP.Sun_BP_C’)
bHidden=True
End Object
VariableReference=(MemberName=“Size”,MemberGuid=DC375B294EBB8C8FA20ABD9DD10F9BDA,bSelfContext=True)
Pins(0)=EdGraphPin’EdGraphPin_16’
Pins(1)=EdGraphPin’EdGraphPin_17’
NodePosX=-32
NodePosY=384
NodeGuid=FAD0C42D4C24572045623BA7F8878DDB
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_2531”
Begin Object Class=EdGraphPin Name=“EdGraphPin_81”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_82”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_83”
End Object
Begin Object Name=“EdGraphPin_81”
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
Begin Object Name=“EdGraphPin_82”
PinName=“InFloat”
PinToolTip=“In Float
Float”
PinType=(PinCategory=“float”)
DefaultValue=“0.0”
AutogeneratedDefaultValue=“0.0”
LinkedTo(0)=EdGraphPin’K2Node_VariableGet_1643.EdGraphPin_16’
End Object
Begin Object Name=“EdGraphPin_83”
PinName=“ReturnValue”
PinToolTip="Return Value
Vector "
Direction=EGPD_Output
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_3.EdGraphPin_80’
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class’/Script/Engine.KismetMathLibrary’,MemberName=“Conv_FloatToVector”)
Pins(0)=EdGraphPin’EdGraphPin_81’
Pins(1)=EdGraphPin’EdGraphPin_82’
Pins(2)=EdGraphPin’EdGraphPin_83’
NodePosX=272
NodePosY=352
NodeGuid=C3EF2AD041F87054AD5DB0A78618DB7F
End Object
Begin Object Class=K2Node_VariableGet Name=“K2Node_VariableGet_1650”
Begin Object Class=EdGraphPin Name=“EdGraphPin_55”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_56”
End Object
Begin Object Name=“EdGraphPin_55”
PinName=“DirectionalLight”
Direction=EGPD_Output
PinType=(PinCategory=“asset”,PinSubCategoryObject=Class’/Script/Engine.DirectionalLight’)
LinkedTo(0)=EdGraphPin’K2Node_ConvertAsset_0.EdGraphPin_57’
End Object
Begin Object Name=“EdGraphPin_56”
PinName=“self”
PinFriendlyName=NSLOCTEXT(“K2Node”, “Target”, “Target”)
PinType=(PinCategory=“object”,PinSubCategoryObject=BlueprintGeneratedClass’/Game/Space/Sun/Blueprint/Sun_BP.Sun_BP_C’)
bHidden=True
End Object
VariableReference=(MemberName=“DirectionalLight”,MemberGuid=EFBC14E54C62FE14338B5B9B6AF56472,bSelfContext=True)
Pins(0)=EdGraphPin’EdGraphPin_55’
Pins(1)=EdGraphPin’EdGraphPin_56’
NodePosX=-816
NodePosY=160
NodeGuid=CC7980CE416C68629F22ACBB68ABB41E
End Object
Begin Object Class=K2Node_ConvertAsset Name=“K2Node_ConvertAsset_0”
Begin Object Class=EdGraphPin Name=“EdGraphPin_57”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_58”
End Object
Begin Object Name=“EdGraphPin_57”
PinName=“Asset”
PinType=(PinCategory=“asset”,PinSubCategoryObject=Class’/Script/Engine.DirectionalLight’)
LinkedTo(0)=EdGraphPin’K2Node_VariableGet_1650.EdGraphPin_55’
End Object
Begin Object Name=“EdGraphPin_58”
PinName=“Object”
Direction=EGPD_Output
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.DirectionalLight’)
LinkedTo(0)=EdGraphPin’K2Node_VariableGet_2.EdGraphPin_87’
End Object
Pins(0)=EdGraphPin’EdGraphPin_57’
Pins(1)=EdGraphPin’EdGraphPin_58’
NodePosX=-656
NodePosY=144
NodeGuid=9E5222C5482CC11F32A325A2BEA929E7
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_5”
Begin Object Class=EdGraphPin Name=“EdGraphPin_84”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_85”
End Object
Begin Object Name=“EdGraphPin_84”
PinName=“self”
PinFriendlyName=NSLOCTEXT(“K2Node”, “Target”, “Target”)
PinToolTip=“Target
Scene Component Reference”
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.SceneComponent’)
LinkedTo(0)=EdGraphPin’K2Node_VariableGet_2.EdGraphPin_86’
End Object
Begin Object Name=“EdGraphPin_85”
PinName=“ReturnValue”
PinToolTip="Return Value
Vector "
Direction=EGPD_Output
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_17.EdGraphPin_92’
End Object
bIsPureFunc=True
bIsConstFunc=True
FunctionReference=(MemberParent=Class’/Script/Engine.SceneComponent’,MemberName=“GetForwardVector”)
Pins(0)=EdGraphPin’EdGraphPin_84’
Pins(1)=EdGraphPin’EdGraphPin_85’
NodePosX=-272
NodePosY=128
NodeGuid=5A2DD71945C21823C751DBBC6C904862
End Object
Begin Object Class=K2Node_VariableGet Name=“K2Node_VariableGet_2”
Begin Object Class=EdGraphPin Name=“EdGraphPin_86”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_87”
End Object
Begin Object Name=“EdGraphPin_86”
PinName=“LightComponent”
Direction=EGPD_Output
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.LightComponent’)
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_5.EdGraphPin_84’
End Object
Begin Object Name=“EdGraphPin_87”
PinName=“self”
PinFriendlyName=NSLOCTEXT(“K2Node”, “Target”, “Target”)
PinType=(PinCategory=“object”,PinSubCategoryObject=Class’/Script/Engine.Light’)
LinkedTo(0)=EdGraphPin’K2Node_ConvertAsset_0.EdGraphPin_58’
End Object
VariableReference=(MemberParent=Class’/Script/Engine.Light’,MemberName=“LightComponent”)
SelfContextInfo=NotSelfContext
Pins(0)=EdGraphPin’EdGraphPin_86’
Pins(1)=EdGraphPin’EdGraphPin_87’
NodePosX=-528
NodePosY=160
NodeGuid=5415F38349968C8F1D5A8AA70D208B5E
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_11”
Begin Object Class=EdGraphPin Name=“EdGraphPin_88”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_89”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_90”
End Object
Begin Object Name=“EdGraphPin_88”
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
Begin Object Name=“EdGraphPin_89”
PinName=“A”
PinToolTip="A
Vector "
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
DefaultValue=“0, 0, 0”
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_17.EdGraphPin_94’
End Object
Begin Object Name=“EdGraphPin_90”
PinName=“ReturnValue”
PinToolTip=“Return Value
Vector "
Direction=EGPD_Output
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_1.EdGraphPin_67’
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class’/Script/Engine.KismetMathLibrary’,MemberName=“Normal”)
Pins(0)=EdGraphPin’EdGraphPin_88’
Pins(1)=EdGraphPin’EdGraphPin_89’
Pins(2)=EdGraphPin’EdGraphPin_90’
NodePosX=96
NodePosY=160
NodeGuid=5FCB933240994F92F19D3097D7D6E8B9
End Object
Begin Object Class=K2Node_CallFunction Name=“K2Node_CallFunction_17”
Begin Object Class=EdGraphPin Name=“EdGraphPin_91”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_92”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_93”
End Object
Begin Object Class=EdGraphPin Name=“EdGraphPin_94”
End Object
Begin Object Name=“EdGraphPin_91”
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
Begin Object Name=“EdGraphPin_92”
PinName=“A”
PinToolTip=“A
Vector "
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
DefaultValue=“0, 0, 0”
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_5.EdGraphPin_85’
End Object
Begin Object Name=“EdGraphPin_93”
PinName=“B”
PinToolTip=“B
Integer”
PinType=(PinCategory=“int”)
DefaultValue=”-1”
AutogeneratedDefaultValue=“0”
End Object
Begin Object Name=“EdGraphPin_94”
PinName=“ReturnValue”
PinToolTip="Return Value
Vector "
Direction=EGPD_Output
PinType=(PinCategory=“struct”,PinSubCategoryObject=ScriptStruct’/Script/CoreUObject.Vector’)
AutogeneratedDefaultValue=“0, 0, 0”
LinkedTo(0)=EdGraphPin’K2Node_CallFunction_11.EdGraphPin_89’
End Object
bIsPureFunc=True
FunctionReference=(MemberParent=Class’/Script/Engine.KismetMathLibrary’,MemberName=“Multiply_VectorInt”)
Pins(0)=EdGraphPin’EdGraphPin_91’
Pins(1)=EdGraphPin’EdGraphPin_92’
Pins(2)=EdGraphPin’EdGraphPin_93’
Pins(3)=EdGraphPin’EdGraphPin_94’
NodePosX=-48
NodePosY=160
NodeGuid=8ED4A1AC4A972E81D425DF96080F343B
End Object

This is gorgeous, great work.