diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoRoomTiles.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoRoomTiles.uasset new file mode 100644 index 0000000..80fac46 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoRoomTiles.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWall.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWall.uasset new file mode 100644 index 0000000..da36327 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWall.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWallPattern.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWallPattern.uasset new file mode 100644 index 0000000..84c7923 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWallPattern.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWall_02.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWall_02.uasset new file mode 100644 index 0000000..d1e4f09 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWall_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWall_03.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWall_03.uasset new file mode 100644 index 0000000..6b21a33 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWall_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWall_BaseFloor.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWall_BaseFloor.uasset new file mode 100644 index 0000000..02908f0 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWall_BaseFloor.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWall_NamePlate.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWall_NamePlate.uasset new file mode 100644 index 0000000..9dfd819 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_DemoWall_NamePlate.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_LightSculpture.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_LightSculpture.uasset new file mode 100644 index 0000000..857b974 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_LightSculpture.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_LightTube.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_LightTube.uasset new file mode 100644 index 0000000..1b13c2a Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/MI_LightTube.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/M_BasicShapeMaterial.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/M_BasicShapeMaterial.uasset new file mode 100644 index 0000000..635cb46 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/M_BasicShapeMaterial.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/M_DemoRoomTiles.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/M_DemoRoomTiles.uasset new file mode 100644 index 0000000..553b8d1 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/M_DemoRoomTiles.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/M_DemoWall.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/M_DemoWall.uasset new file mode 100644 index 0000000..ee9e81f Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/M_DemoWall.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/M_DemoWallPattern.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/M_DemoWallPattern.uasset new file mode 100644 index 0000000..2e53e1b Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/M_DemoWallPattern.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/M_LightTube.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/M_LightTube.uasset new file mode 100644 index 0000000..81e83d2 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/M_LightTube.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/Physical_Materials/Concrete.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/Physical_Materials/Concrete.uasset new file mode 100644 index 0000000..8c2f09d Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/Physical_Materials/Concrete.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/Physical_Materials/Metal.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/Physical_Materials/Metal.uasset new file mode 100644 index 0000000..e1cadfc Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/Physical_Materials/Metal.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Materials/Physical_Materials/Rubber.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/Physical_Materials/Rubber.uasset new file mode 100644 index 0000000..cee4ea1 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Materials/Physical_Materials/Rubber.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_Base.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_Base.uasset new file mode 100644 index 0000000..3c7e714 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_Base.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_Base_FlatWall.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_Base_FlatWall.uasset new file mode 100644 index 0000000..52319b2 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_Base_FlatWall.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_Cube.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_Cube.uasset new file mode 100644 index 0000000..3b0416c Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_Cube.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_DemoDivider_1.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_DemoDivider_1.uasset new file mode 100644 index 0000000..bad29eb Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_DemoDivider_1.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_DemoRoomBackWall.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_DemoRoomBackWall.uasset new file mode 100644 index 0000000..a80a1d6 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_DemoRoomBackWall.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_DemoRoomClamp.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_DemoRoomClamp.uasset new file mode 100644 index 0000000..679c2d9 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_DemoRoomClamp.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_DemoRoomTrim.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_DemoRoomTrim.uasset new file mode 100644 index 0000000..581dbd5 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_DemoRoomTrim.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_DemoRoomU.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_DemoRoomU.uasset new file mode 100644 index 0000000..2509078 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_DemoRoomU.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_NamePlate.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_NamePlate.uasset new file mode 100644 index 0000000..a2822e6 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_NamePlate.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_Sphere.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_Sphere.uasset new file mode 100644 index 0000000..0a93927 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_Sphere.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_URoom_Wall.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_URoom_Wall.uasset new file mode 100644 index 0000000..c19e6ac Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Meshes/SM_URoom_Wall.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Textures/T_Pattern_M.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Textures/T_Pattern_M.uasset new file mode 100644 index 0000000..e6600ec Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Textures/T_Pattern_M.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Textures/T_RoomTiles_M.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Textures/T_RoomTiles_M.uasset new file mode 100644 index 0000000..1c30027 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Textures/T_RoomTiles_M.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Textures/T_RoomTiles_N.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Textures/T_RoomTiles_N.uasset new file mode 100644 index 0000000..ba23617 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Textures/T_RoomTiles_N.uasset differ diff --git a/FlightSimulation/Content/ForceShields/DemoRoom/Textures/T_UnrealEngineDecal.uasset b/FlightSimulation/Content/ForceShields/DemoRoom/Textures/T_UnrealEngineDecal.uasset new file mode 100644 index 0000000..f051e5d Binary files /dev/null and b/FlightSimulation/Content/ForceShields/DemoRoom/Textures/T_UnrealEngineDecal.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Maps/L_Advanced_Overview.umap b/FlightSimulation/Content/ForceShields/Maps/L_Advanced_Overview.umap new file mode 100644 index 0000000..0bbe022 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Maps/L_Advanced_Overview.umap differ diff --git a/FlightSimulation/Content/ForceShields/Maps/L_Basic_Overview.umap b/FlightSimulation/Content/ForceShields/Maps/L_Basic_Overview.umap new file mode 100644 index 0000000..1c56b16 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Maps/L_Basic_Overview.umap differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color+EdgeFade+Emissive+Noise+Shake_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color+EdgeFade+Emissive+Noise+Shake_01.uasset new file mode 100644 index 0000000..fc8dc1f Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color+EdgeFade+Emissive+Noise+Shake_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color+EdgeFade+Emissive+Noise+Shake_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color+EdgeFade+Emissive+Noise+Shake_02.uasset new file mode 100644 index 0000000..fac0381 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color+EdgeFade+Emissive+Noise+Shake_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color+EdgeFade+Emissive+Noise+Shake_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color+EdgeFade+Emissive+Noise+Shake_03.uasset new file mode 100644 index 0000000..1a94366 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color+EdgeFade+Emissive+Noise+Shake_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color_EdgeFade_Pulse_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color_EdgeFade_Pulse_01.uasset new file mode 100644 index 0000000..1a455a6 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color_EdgeFade_Pulse_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color_EdgeFade_Pulse_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color_EdgeFade_Pulse_02.uasset new file mode 100644 index 0000000..740b76c Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color_EdgeFade_Pulse_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color_EdgeFade_Pulse_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color_EdgeFade_Pulse_03.uasset new file mode 100644 index 0000000..0c93c9b Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Color_EdgeFade_Pulse_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EdgeFade+Emissive+Pulse+Wave_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EdgeFade+Emissive+Pulse+Wave_01.uasset new file mode 100644 index 0000000..35ebbb6 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EdgeFade+Emissive+Pulse+Wave_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EdgeFade+Emissive+Pulse+Wave_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EdgeFade+Emissive+Pulse+Wave_02.uasset new file mode 100644 index 0000000..bb6ce26 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EdgeFade+Emissive+Pulse+Wave_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EdgeFade+Emissive+Pulse+Wave_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EdgeFade+Emissive+Pulse+Wave_03.uasset new file mode 100644 index 0000000..45be00e Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EdgeFade+Emissive+Pulse+Wave_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EveryEffect_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EveryEffect_01.uasset new file mode 100644 index 0000000..c153223 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EveryEffect_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EveryEffect_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EveryEffect_02.uasset new file mode 100644 index 0000000..ee6636b Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EveryEffect_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EveryEffect_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EveryEffect_03.uasset new file mode 100644 index 0000000..4493573 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_EveryEffect_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse+Wave_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse+Wave_01.uasset new file mode 100644 index 0000000..797aba5 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse+Wave_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse+Wave_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse+Wave_02.uasset new file mode 100644 index 0000000..c5ea244 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse+Wave_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse+Wave_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse+Wave_03.uasset new file mode 100644 index 0000000..1d80b22 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse+Wave_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse_01.uasset new file mode 100644 index 0000000..ac61097 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse_02.uasset new file mode 100644 index 0000000..c3bef25 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse_03.uasset new file mode 100644 index 0000000..90afa14 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Pulse_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Wave_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Wave_01.uasset new file mode 100644 index 0000000..e4a9210 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Wave_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Wave_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Wave_02.uasset new file mode 100644 index 0000000..1adfdda Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Wave_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Wave_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Wave_03.uasset new file mode 100644 index 0000000..fe8f6d9 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise+Wave_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise_01.uasset new file mode 100644 index 0000000..4816416 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise_02.uasset new file mode 100644 index 0000000..7d4d80f Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise_03.uasset new file mode 100644 index 0000000..2e77ce7 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Noise_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Pulse_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Pulse_01.uasset new file mode 100644 index 0000000..707854e Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Pulse_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Pulse_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Pulse_02.uasset new file mode 100644 index 0000000..f891dfd Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Pulse_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Pulse_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Pulse_03.uasset new file mode 100644 index 0000000..927abd4 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Pulse_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Wave_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Wave_01.uasset new file mode 100644 index 0000000..633e58e Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Wave_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Wave_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Wave_02.uasset new file mode 100644 index 0000000..4267992 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Wave_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Wave_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Wave_03.uasset new file mode 100644 index 0000000..d47e83e Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/MI_Wave_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Advanced/M_ForceShield_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Advanced/M_ForceShield_01.uasset new file mode 100644 index 0000000..911a092 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Advanced/M_ForceShield_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+EdgeFade_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+EdgeFade_01.uasset new file mode 100644 index 0000000..1b669d5 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+EdgeFade_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+EdgeFade_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+EdgeFade_02.uasset new file mode 100644 index 0000000..e6fdb5c Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+EdgeFade_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+EdgeFade_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+EdgeFade_03.uasset new file mode 100644 index 0000000..b25a3dd Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+EdgeFade_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Emissive_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Emissive_01.uasset new file mode 100644 index 0000000..03b24af Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Emissive_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Emissive_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Emissive_02.uasset new file mode 100644 index 0000000..5f2329d Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Emissive_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Emissive_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Emissive_03.uasset new file mode 100644 index 0000000..46baf56 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Emissive_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Shake_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Shake_01.uasset new file mode 100644 index 0000000..b2ff5f6 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Shake_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Shake_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Shake_02.uasset new file mode 100644 index 0000000..30a19e5 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Shake_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Shake_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Shake_03.uasset new file mode 100644 index 0000000..048707a Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color+Shake_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color_01.uasset new file mode 100644 index 0000000..0bf1533 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color_02.uasset new file mode 100644 index 0000000..84f5279 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color_03.uasset new file mode 100644 index 0000000..1bfdd37 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Color_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_EdgeFade_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_EdgeFade_01.uasset new file mode 100644 index 0000000..cf5e594 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_EdgeFade_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_EdgeFade_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_EdgeFade_02.uasset new file mode 100644 index 0000000..67dac17 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_EdgeFade_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_EdgeFade_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_EdgeFade_03.uasset new file mode 100644 index 0000000..1dc9eae Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_EdgeFade_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Emissive_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Emissive_01.uasset new file mode 100644 index 0000000..70c8aa2 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Emissive_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Emissive_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Emissive_02.uasset new file mode 100644 index 0000000..e71d6c4 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Emissive_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Emissive_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Emissive_03.uasset new file mode 100644 index 0000000..f6c2d34 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Emissive_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_QuadEffect_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_QuadEffect_01.uasset new file mode 100644 index 0000000..575debc Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_QuadEffect_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_QuadEffect_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_QuadEffect_02.uasset new file mode 100644 index 0000000..19f6a84 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_QuadEffect_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_QuadEffect_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_QuadEffect_03.uasset new file mode 100644 index 0000000..b83c143 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_QuadEffect_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Shake_01.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Shake_01.uasset new file mode 100644 index 0000000..e47eb76 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Shake_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Shake_02.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Shake_02.uasset new file mode 100644 index 0000000..2c3fe9d Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Shake_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Shake_03.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Shake_03.uasset new file mode 100644 index 0000000..8c864c9 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/MI_Shake_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Basic/M_ForceShield_Basic.uasset b/FlightSimulation/Content/ForceShields/Materials/Basic/M_ForceShield_Basic.uasset new file mode 100644 index 0000000..c50a098 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Basic/M_ForceShield_Basic.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Functions/MF_Movement.uasset b/FlightSimulation/Content/ForceShields/Materials/Functions/MF_Movement.uasset new file mode 100644 index 0000000..65c148b Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Functions/MF_Movement.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Functions/MF_Noise+Pulse.uasset b/FlightSimulation/Content/ForceShields/Materials/Functions/MF_Noise+Pulse.uasset new file mode 100644 index 0000000..2c6a461 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Functions/MF_Noise+Pulse.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Materials/Functions/MF_Wave.uasset b/FlightSimulation/Content/ForceShields/Materials/Functions/MF_Wave.uasset new file mode 100644 index 0000000..89bddfc Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Materials/Functions/MF_Wave.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Textures/T_Brick_01.uasset b/FlightSimulation/Content/ForceShields/Textures/T_Brick_01.uasset new file mode 100644 index 0000000..fba9fba Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Textures/T_Brick_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Textures/T_Brick_02.uasset b/FlightSimulation/Content/ForceShields/Textures/T_Brick_02.uasset new file mode 100644 index 0000000..426616d Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Textures/T_Brick_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Textures/T_Caustics_01.uasset b/FlightSimulation/Content/ForceShields/Textures/T_Caustics_01.uasset new file mode 100644 index 0000000..c3dbfa6 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Textures/T_Caustics_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Textures/T_Dots_01.uasset b/FlightSimulation/Content/ForceShields/Textures/T_Dots_01.uasset new file mode 100644 index 0000000..d5dd33b Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Textures/T_Dots_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Textures/T_GradientVoronoi_01.uasset b/FlightSimulation/Content/ForceShields/Textures/T_GradientVoronoi_01.uasset new file mode 100644 index 0000000..a769654 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Textures/T_GradientVoronoi_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Textures/T_Gradient_01.uasset b/FlightSimulation/Content/ForceShields/Textures/T_Gradient_01.uasset new file mode 100644 index 0000000..e2fc355 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Textures/T_Gradient_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Textures/T_GroundSand_01.uasset b/FlightSimulation/Content/ForceShields/Textures/T_GroundSand_01.uasset new file mode 100644 index 0000000..50283a2 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Textures/T_GroundSand_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Textures/T_GroundSnow_01.uasset b/FlightSimulation/Content/ForceShields/Textures/T_GroundSnow_01.uasset new file mode 100644 index 0000000..f405cf7 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Textures/T_GroundSnow_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Textures/T_Hexagonal_01.uasset b/FlightSimulation/Content/ForceShields/Textures/T_Hexagonal_01.uasset new file mode 100644 index 0000000..b8937d9 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Textures/T_Hexagonal_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Textures/T_NoiseElectric_01.uasset b/FlightSimulation/Content/ForceShields/Textures/T_NoiseElectric_01.uasset new file mode 100644 index 0000000..ad82912 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Textures/T_NoiseElectric_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Textures/T_Rocks_01.uasset b/FlightSimulation/Content/ForceShields/Textures/T_Rocks_01.uasset new file mode 100644 index 0000000..17a7064 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Textures/T_Rocks_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Textures/T_ScanLine_01.uasset b/FlightSimulation/Content/ForceShields/Textures/T_ScanLine_01.uasset new file mode 100644 index 0000000..da5be28 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Textures/T_ScanLine_01.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Textures/T_ScanLine_02.uasset b/FlightSimulation/Content/ForceShields/Textures/T_ScanLine_02.uasset new file mode 100644 index 0000000..787c088 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Textures/T_ScanLine_02.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Textures/T_ScanLine_03.uasset b/FlightSimulation/Content/ForceShields/Textures/T_ScanLine_03.uasset new file mode 100644 index 0000000..fb46167 Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Textures/T_ScanLine_03.uasset differ diff --git a/FlightSimulation/Content/ForceShields/Textures/T_Water_01.uasset b/FlightSimulation/Content/ForceShields/Textures/T_Water_01.uasset new file mode 100644 index 0000000..1cc7bac Binary files /dev/null and b/FlightSimulation/Content/ForceShields/Textures/T_Water_01.uasset differ diff --git a/FlightSimulation/Content/Radar/Blueprints/BP_Beam.uasset b/FlightSimulation/Content/Radar/Blueprints/BP_Beam.uasset new file mode 100644 index 0000000..731a757 Binary files /dev/null and b/FlightSimulation/Content/Radar/Blueprints/BP_Beam.uasset differ diff --git a/FlightSimulation/Content/Radar/Blueprints/BP_FanScanRadar.uasset b/FlightSimulation/Content/Radar/Blueprints/BP_FanScanRadar.uasset new file mode 100644 index 0000000..8022cf4 Binary files /dev/null and b/FlightSimulation/Content/Radar/Blueprints/BP_FanScanRadar.uasset differ diff --git a/FlightSimulation/Content/Radar/Blueprints/BP_GroundRadar.uasset b/FlightSimulation/Content/Radar/Blueprints/BP_GroundRadar.uasset new file mode 100644 index 0000000..0eb7d70 Binary files /dev/null and b/FlightSimulation/Content/Radar/Blueprints/BP_GroundRadar.uasset differ diff --git a/FlightSimulation/Content/Radar/Blueprints/BP_ShieldRadar.uasset b/FlightSimulation/Content/Radar/Blueprints/BP_ShieldRadar.uasset new file mode 100644 index 0000000..6b9782f Binary files /dev/null and b/FlightSimulation/Content/Radar/Blueprints/BP_ShieldRadar.uasset differ diff --git a/FlightSimulation/Content/Radar/Materials/MI_EdgeFade+Emissive+Pulse+Wave_01.uasset b/FlightSimulation/Content/Radar/Materials/MI_EdgeFade+Emissive+Pulse+Wave_01.uasset new file mode 100644 index 0000000..b5b2c09 Binary files /dev/null and b/FlightSimulation/Content/Radar/Materials/MI_EdgeFade+Emissive+Pulse+Wave_01.uasset differ diff --git a/FlightSimulation/Content/Radar/Materials/MI_Noise+Wave_02.uasset b/FlightSimulation/Content/Radar/Materials/MI_Noise+Wave_02.uasset new file mode 100644 index 0000000..2555588 Binary files /dev/null and b/FlightSimulation/Content/Radar/Materials/MI_Noise+Wave_02.uasset differ diff --git a/FlightSimulation/Content/Radar/Materials/M_ForceShield_02.uasset b/FlightSimulation/Content/Radar/Materials/M_ForceShield_02.uasset new file mode 100644 index 0000000..06b2658 Binary files /dev/null and b/FlightSimulation/Content/Radar/Materials/M_ForceShield_02.uasset differ diff --git a/FlightSimulation/Content/Radar/Meshes/SplineCube.uasset b/FlightSimulation/Content/Radar/Meshes/SplineCube.uasset new file mode 100644 index 0000000..c5cfc86 Binary files /dev/null and b/FlightSimulation/Content/Radar/Meshes/SplineCube.uasset differ diff --git a/FlightSimulation/Content/Radar/Meshes/SplineCylinder.uasset b/FlightSimulation/Content/Radar/Meshes/SplineCylinder.uasset new file mode 100644 index 0000000..451e215 Binary files /dev/null and b/FlightSimulation/Content/Radar/Meshes/SplineCylinder.uasset differ diff --git a/FlightSimulation/Content/Radar/RadarTestMap.umap b/FlightSimulation/Content/Radar/RadarTestMap.umap new file mode 100644 index 0000000..0cfa29d Binary files /dev/null and b/FlightSimulation/Content/Radar/RadarTestMap.umap differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Actor/ArrowPlotActor.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Actor/ArrowPlotActor.uasset new file mode 100644 index 0000000..18776b8 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Actor/ArrowPlotActor.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Actor/EarthPlotActor.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Actor/EarthPlotActor.uasset new file mode 100644 index 0000000..2eb59c8 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Actor/EarthPlotActor.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Actor/LinePlotActor.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Actor/LinePlotActor.uasset new file mode 100644 index 0000000..51a3ed7 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Actor/LinePlotActor.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Actor/MovePlotActor.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Actor/MovePlotActor.uasset new file mode 100644 index 0000000..645a779 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Actor/MovePlotActor.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Actor/RadarPlotActor.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Actor/RadarPlotActor.uasset new file mode 100644 index 0000000..13b1df8 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Actor/RadarPlotActor.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Actor/StaticPlotActor.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Actor/StaticPlotActor.uasset new file mode 100644 index 0000000..94e3ac9 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Actor/StaticPlotActor.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Component/EarthPlotComponent.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Component/EarthPlotComponent.uasset new file mode 100644 index 0000000..f6ed717 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Component/EarthPlotComponent.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Component/GroundRadarComponent.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Component/GroundRadarComponent.uasset new file mode 100644 index 0000000..69a2190 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Component/GroundRadarComponent.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Component/RadarComponent.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Component/RadarComponent.uasset new file mode 100644 index 0000000..0d70b09 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Component/RadarComponent.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Component/RadarPlotComponent.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Component/RadarPlotComponent.uasset new file mode 100644 index 0000000..3592eee Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Component/RadarPlotComponent.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Ico/airport.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Ico/airport.uasset new file mode 100644 index 0000000..8cff3b9 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Ico/airport.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Ico/school.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Ico/school.uasset new file mode 100644 index 0000000..cd8ac74 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Ico/school.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Materials/ArrowMaterial.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Materials/ArrowMaterial.uasset new file mode 100644 index 0000000..8a515c6 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Materials/ArrowMaterial.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Materials/BaseMaterial.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Materials/BaseMaterial.uasset new file mode 100644 index 0000000..7833994 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Materials/BaseMaterial.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Materials/BlueMaterial.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Materials/BlueMaterial.uasset new file mode 100644 index 0000000..5399050 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Materials/BlueMaterial.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Materials/RadarBoxMaterial.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Materials/RadarBoxMaterial.uasset new file mode 100644 index 0000000..1ca3ed7 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Materials/RadarBoxMaterial.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Materials/RadarMaterial.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Materials/RadarMaterial.uasset new file mode 100644 index 0000000..eda9134 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Materials/RadarMaterial.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Materials/RadarScanMaterial.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Materials/RadarScanMaterial.uasset new file mode 100644 index 0000000..3d34c82 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Materials/RadarScanMaterial.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Materials/RedMaterial.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Materials/RedMaterial.uasset new file mode 100644 index 0000000..1e9b3fd Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Materials/RedMaterial.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Materials/RedSkyRadarMaterial.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Materials/RedSkyRadarMaterial.uasset new file mode 100644 index 0000000..8f9923e Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Materials/RedSkyRadarMaterial.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Meshs/Radar.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Meshs/Radar.uasset new file mode 100644 index 0000000..8270bd7 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Meshs/Radar.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Meshs/UFO.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Meshs/UFO.uasset new file mode 100644 index 0000000..b9e33a7 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Meshs/UFO.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Content/Plot/Widget/LabelWidgetBlueprint.uasset b/FlightSimulation/Plugins/Earth/Content/Plot/Widget/LabelWidgetBlueprint.uasset new file mode 100644 index 0000000..279c995 Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Content/Plot/Widget/LabelWidgetBlueprint.uasset differ diff --git a/FlightSimulation/Plugins/Earth/Earth.uplugin b/FlightSimulation/Plugins/Earth/Earth.uplugin new file mode 100644 index 0000000..732c994 --- /dev/null +++ b/FlightSimulation/Plugins/Earth/Earth.uplugin @@ -0,0 +1,23 @@ +{ + "FileVersion": 3, + "Version": 1, + "VersionName": "1.0", + "FriendlyName": "Earth", + "Description": "", + "Category": "Other", + "CreatedBy": "", + "CreatedByURL": "", + "DocsURL": "", + "MarketplaceURL": "", + "SupportURL": "", + "CanContainContent": true, + "IsBetaVersion": false, + "Installed": false, + "Modules": [ + { + "Name": "Earth", + "Type": "Runtime", + "LoadingPhase": "PostConfigInit" + } + ] +} \ No newline at end of file diff --git a/FlightSimulation/Plugins/Earth/Resources/Icon128.png b/FlightSimulation/Plugins/Earth/Resources/Icon128.png new file mode 100644 index 0000000..1231d4a Binary files /dev/null and b/FlightSimulation/Plugins/Earth/Resources/Icon128.png differ diff --git a/FlightSimulation/Plugins/Earth/Source/Earth/Earth.Build.cs b/FlightSimulation/Plugins/Earth/Source/Earth/Earth.Build.cs new file mode 100644 index 0000000..5b27061 --- /dev/null +++ b/FlightSimulation/Plugins/Earth/Source/Earth/Earth.Build.cs @@ -0,0 +1,97 @@ +// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved. + +using UnrealBuildTool; +using System.IO; + +public class Earth : ModuleRules +{ + // private string ThirdPartyPath + // { + // get + // { + // return Path.GetFullPath(Path.Combine(ModuleDirectory, "../../ThirdParty")); + // } + // } + + public Earth(ReadOnlyTargetRules Target) : base(Target) + { + PrivatePCHHeaderFile = "Public/Earth.h"; + //PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + // Definitions.Add("_TIMESPEC_DEFINED"); + // bEnableExceptions = true; + // bUseRTTI = true; + + PublicIncludePaths.AddRange( + new string[] { + // ... add public include paths required here ... + // Path.Combine(ThirdPartyPath, "include"), + } + ); + + + PrivateIncludePaths.AddRange( + new string[] { + // ... add other private include paths required here ... + } + ); + + + PublicDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + "RHI", + "RenderCore", + // ... add other public dependencies that you statically link with here ... + } + ); + + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "CoreUObject", + "Engine", + "Slate", + "SlateCore", + "RHI", + "RenderCore", + "Projects", + "ImageWrapper", + // ... add private dependencies that you statically link with here ... + } + ); + + + DynamicallyLoadedModuleNames.AddRange( + new string[] + { + // ... add any modules that your module loads dynamically here ... + } + ); + + // PublicLibraryPaths.AddRange( + // new string[] + // { + // // Path.Combine(ThirdPartyPath, "lib"), + // } + // ); + + // PublicAdditionalLibraries.AddRange( + // new string[] + // { + // // "libtiff.lib", + // // "pthreadVC2.lib", + // } + // ); + + // PublicDelayLoadDLLs.Add(Path.Combine(ThirdPartyPath, "bin", "pthreadVC2.dll")); + // RuntimeDependencies.Add(new RuntimeDependency(Path.Combine(ThirdPartyPath, "bin", "pthreadVC2.dll"))); + + // PublicDelayLoadDLLs.Add(Path.Combine(ThirdPartyPath, "bin", "libtiff.dll")); + // RuntimeDependencies.Add(new RuntimeDependency(Path.Combine(ThirdPartyPath, "bin", "libtiff.dll"))); + + } +} diff --git a/FlightSimulation/Plugins/Earth/Source/Earth/Private/Earth.cpp b/FlightSimulation/Plugins/Earth/Source/Earth/Private/Earth.cpp new file mode 100644 index 0000000..4719dec --- /dev/null +++ b/FlightSimulation/Plugins/Earth/Source/Earth/Private/Earth.cpp @@ -0,0 +1,27 @@ +// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved. + +#include "Earth.h" +#include "Interfaces/IPluginManager.h" + +#define LOCTEXT_NAMESPACE "FEarthModule" + +void FEarthModule::StartupModule() +{ + // This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module + +// #if (ENGINE_MINOR_VERSION >= 21) +// FString ShaderDirectory = FPaths::Combine(IPluginManager::Get().FindPlugin(TEXT("Earth"))->GetBaseDir(), TEXT("Shaders")); +// AddShaderSourceDirectoryMapping("/Plugin/Earth", ShaderDirectory); +// #endif + +} + +void FEarthModule::ShutdownModule() +{ + // This function may be called during shutdown to clean up your module. For modules that support dynamic reloading, + // we call this function before unloading the module. +} + +#undef LOCTEXT_NAMESPACE + +IMPLEMENT_MODULE(FEarthModule, Earth) \ No newline at end of file diff --git a/FlightSimulation/Plugins/Earth/Source/Earth/Private/PlotComponent.cpp b/FlightSimulation/Plugins/Earth/Source/Earth/Private/PlotComponent.cpp new file mode 100644 index 0000000..90e06f7 --- /dev/null +++ b/FlightSimulation/Plugins/Earth/Source/Earth/Private/PlotComponent.cpp @@ -0,0 +1,350 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "PlotComponent.h" + +#include "EngineGlobals.h" +#include "PrimitiveViewRelevance.h" +#include "PrimitiveSceneProxy.h" +#include "Engine/Engine.h" +#include "MaterialShared.h" +#include "Materials/Material.h" +#include "Materials/MaterialRenderProxy.h" +#include "Engine/CollisionProfile.h" +#include "SceneManagement.h" +#include "DynamicMeshBuilder.h" + +FPlotSceneProxy::FPlotSceneProxy(const UPlotComponent* InComponent) : + FPrimitiveSceneProxy(InComponent), Lines(InComponent->PlotLines), + Points(InComponent->PlotPoints), Meshes(InComponent->PlotMeshes) +{ + bWillEverBeLit = false; +} + +SIZE_T FPlotSceneProxy::GetTypeHash() const +{ + static size_t UniquePointer; + return reinterpret_cast(&UniquePointer); +} + +void FPlotSceneProxy::GetDynamicMeshElements(const TArray& Views, const FSceneViewFamily& ViewFamily, uint32 VisibilityMap, FMeshElementCollector& Collector) const +{ + QUICK_SCOPE_CYCLE_COUNTER( STAT_PlotSceneProxy_GetDynamicMeshElements ); + + for (int32 ViewIndex = 0; ViewIndex < Views.Num(); ViewIndex++) + { + if (VisibilityMap & (1 << ViewIndex)) + { + const FSceneView* View = Views[ViewIndex]; + FPrimitiveDrawInterface* PDI = Collector.GetPDI(ViewIndex); + + for (int32 i = 0; i < Lines.Num(); i++) + { + PDI->DrawLine(Lines[i].Start, Lines[i].End, Lines[i].Color, Lines[i].DepthPriority, Lines[i].Thickness,0,true); + } + + for (int32 i = 0; i < Points.Num(); i++) + { + PDI->DrawPoint(Points[i].Position, Points[i].Color, Points[i].PointSize, Points[i].DepthPriority); + } + + for (int32 i = 0; i < Meshes.Num(); i++) + { + static FVector3f const PosX(1.f,0,0); + static FVector3f const PosY(0,1.f,0); + static FVector3f const PosZ(0,0,1.f); + + FPlotMesh const& M = Meshes[i]; + + // this seems far from optimal in terms of perf, but it's for debugging + FDynamicMeshBuilder MeshBuilder(View->GetFeatureLevel()); + + // set up geometry + for (int32 VertIdx=0; VertIdx < M.MeshVerts.Num(); ++VertIdx) + { + MeshBuilder.AddVertex( FVector3f(M.MeshVerts[VertIdx]), FVector2f::ZeroVector, PosX, PosY, PosZ, FColor::White ); + } + //MeshBuilder.AddTriangles(M.MeshIndices); + for (int32 Idx=0; Idx < M.MeshIndices.Num(); Idx+=3) + { + MeshBuilder.AddTriangle( M.MeshIndices[Idx], M.MeshIndices[Idx+1], M.MeshIndices[Idx+2] ); + } + + FMaterialRenderProxy* const MaterialRenderProxy = new(FMemStack::Get()) FColoredMaterialRenderProxy(GEngine->DebugMeshMaterial->GetRenderProxy(), M.Color); + MeshBuilder.GetMesh(FMatrix::Identity, MaterialRenderProxy, M.DepthPriority, false, false, ViewIndex, Collector); + } + } + } +} + +/** +* Returns a struct that describes to the renderer when to draw this proxy. +* @param Scene view to use to determine our relevence. +* @return View relevance struct +*/ +FPrimitiveViewRelevance FPlotSceneProxy::GetViewRelevance(const FSceneView* View) const +{ + FPrimitiveViewRelevance ViewRelevance; + ViewRelevance.bDrawRelevance = IsShown(View); + ViewRelevance.bDynamicRelevance = true; + // ideally the TranslucencyRelevance should be filled out by the material, here we do it conservative + ViewRelevance.bSeparateTranslucency = ViewRelevance.bNormalTranslucency = true; + return ViewRelevance; +} + +uint32 FPlotSceneProxy::GetMemoryFootprint( void ) const +{ + return( sizeof( *this ) + GetAllocatedSize() ); +} + +uint32 FPlotSceneProxy::GetAllocatedSize( void ) const +{ + return( FPrimitiveSceneProxy::GetAllocatedSize() + Lines.GetAllocatedSize() + Points.GetAllocatedSize() + Meshes.GetAllocatedSize() ); +} + + +UPlotComponent::UPlotComponent(const FObjectInitializer& ObjectInitializer) + : Super(ObjectInitializer) +{ + bAutoActivate = true; + bTickInEditor = true; + PrimaryComponentTick.bCanEverTick = true; + + SetCollisionProfileName(UCollisionProfile::NoCollision_ProfileName); + + bUseEditorCompositing = true; + SetGenerateOverlapEvents(false); + + // Ignore streaming updates since GetUsedMaterials() is not implemented. + bIgnoreStreamingManagerUpdate = true; +} + +void UPlotComponent::DrawLine(const FVector& Start, const FVector& End, const FLinearColor& Color, uint8 DepthPriority, const float Thickness) +{ + new(PlotLines) FPlotLine(Start, End, Color, Thickness, DepthPriority); + + MarkRenderStateDirty(); +} + +void UPlotComponent::DrawLines(const TArray& InLines) +{ + PlotLines.Append(InLines); + + MarkRenderStateDirty(); +} + +void UPlotComponent::DrawPoint( + const FVector& Position, + const FLinearColor& Color, + float PointSize, + uint8 DepthPriority + ) +{ + new(PlotPoints) FPlotPoint(Position, Color, PointSize, DepthPriority); + + MarkRenderStateDirty(); +} + +void UPlotComponent::DrawBox(const FBox& Box, const FMatrix& TM, const FColor& Color, uint8 InDepthPriorityGroup) +{ + FVector B[2], P, Q; + int32 ai, aj; + B[0] = Box.Min; + B[1] = Box.Max; + + for( ai=0; ai<2; ai++ ) for( aj=0; aj<2; aj++ ) + { + P.X=B[ai].X; Q.X=B[ai].X; + P.Y=B[aj].Y; Q.Y=B[aj].Y; + P.Z=B[0].Z; Q.Z=B[1].Z; + new(PlotLines) FPlotLine(TM.TransformPosition(P), TM.TransformPosition(Q), Color, 0.0f, InDepthPriorityGroup); + + P.Y=B[ai].Y; Q.Y=B[ai].Y; + P.Z=B[aj].Z; Q.Z=B[aj].Z; + P.X=B[0].X; Q.X=B[1].X; + new(PlotLines) FPlotLine(TM.TransformPosition(P), TM.TransformPosition(Q), Color, 0.0f, InDepthPriorityGroup); + + P.Z=B[ai].Z; Q.Z=B[ai].Z; + P.X=B[aj].X; Q.X=B[aj].X; + P.Y=B[0].Y; Q.Y=B[1].Y; + new(PlotLines) FPlotLine(TM.TransformPosition(P), TM.TransformPosition(Q), Color, 0.0f, InDepthPriorityGroup); + } + + MarkRenderStateDirty(); +} + +void UPlotComponent::DrawSolidBox(const FBox& Box, const FTransform& Xform, const FColor& Color, uint8 DepthPriority) +{ + int32 const NewMeshIdx = PlotMeshes.Add(FPlotMesh()); + FPlotMesh& BM = PlotMeshes[NewMeshIdx]; + + BM.Color = Color; + BM.DepthPriority = DepthPriority; + + BM.MeshVerts.AddUninitialized(8); + BM.MeshVerts[0] = Xform.TransformPosition( FVector(Box.Min.X, Box.Min.Y, Box.Max.Z) ); + BM.MeshVerts[1] = Xform.TransformPosition( FVector(Box.Max.X, Box.Min.Y, Box.Max.Z) ); + BM.MeshVerts[2] = Xform.TransformPosition( FVector(Box.Min.X, Box.Min.Y, Box.Min.Z) ); + BM.MeshVerts[3] = Xform.TransformPosition( FVector(Box.Max.X, Box.Min.Y, Box.Min.Z) ); + BM.MeshVerts[4] = Xform.TransformPosition( FVector(Box.Min.X, Box.Max.Y, Box.Max.Z) ); + BM.MeshVerts[5] = Xform.TransformPosition( FVector(Box.Max.X, Box.Max.Y, Box.Max.Z) ); + BM.MeshVerts[6] = Xform.TransformPosition( FVector(Box.Min.X, Box.Max.Y, Box.Min.Z) ); + BM.MeshVerts[7] = Xform.TransformPosition( FVector(Box.Max.X, Box.Max.Y, Box.Min.Z) ); + + // clockwise + BM.MeshIndices.AddUninitialized(36); + int32 const Indices[36] = { 3,2,0, + 3,0,1, + 7,3,1, + 7,1,5, + 6,7,5, + 6,5,4, + 2,6,4, + 2,4,0, + 1,0,4, + 1,4,5, + 7,6,2, + 7,2,3 }; + + for (int32 Idx=0; Idx<36; ++Idx) + { + BM.MeshIndices[Idx] = Indices[Idx]; + } + + MarkRenderStateDirty(); +} + +void UPlotComponent::DrawMesh(TArray const& Verts, TArray const& Indices, FColor const& Color, uint8 DepthPriority) +{ + // modifying array element directly to avoid copying arrays + int32 const NewMeshIdx = PlotMeshes.Add(FPlotMesh()); + FPlotMesh& BM = PlotMeshes[NewMeshIdx]; + + BM.MeshIndices = Indices; + BM.MeshVerts = Verts; + BM.Color = Color; + BM.DepthPriority = DepthPriority; + + MarkRenderStateDirty(); +} + +void UPlotComponent::DrawDirectionalArrow(const FMatrix& ArrowToWorld,FColor InColor,float Length,float ArrowSize,uint8 DepthPriority) +{ + const FVector Tip = ArrowToWorld.TransformPosition(FVector(Length,0,0)); + new(PlotLines) FPlotLine(Tip,ArrowToWorld.TransformPosition(FVector::ZeroVector),InColor,0.0f,DepthPriority); + new(PlotLines) FPlotLine(Tip,ArrowToWorld.TransformPosition(FVector(Length-ArrowSize,+ArrowSize,+ArrowSize)),InColor,0.0f,DepthPriority); + new(PlotLines) FPlotLine(Tip,ArrowToWorld.TransformPosition(FVector(Length-ArrowSize,+ArrowSize,-ArrowSize)),InColor,0.0f,DepthPriority); + new(PlotLines) FPlotLine(Tip,ArrowToWorld.TransformPosition(FVector(Length-ArrowSize,-ArrowSize,+ArrowSize)),InColor,0.0f,DepthPriority); + new(PlotLines) FPlotLine(Tip,ArrowToWorld.TransformPosition(FVector(Length-ArrowSize,-ArrowSize,-ArrowSize)),InColor,0.0f,DepthPriority); + MarkRenderStateDirty(); +} + +/** Draw a circle */ +void UPlotComponent::DrawCircle(const FVector& Base,const FVector& X,const FVector& Y,FColor Color,float Radius,int32 NumSides,uint8 DepthPriority) +{ + const float AngleDelta = 2.0f * PI / NumSides; + FVector LastVertex = Base + X * Radius; + + for(int32 SideIndex = 0;SideIndex < NumSides;SideIndex++) + { + const FVector Vertex = Base + (X * FMath::Cos(AngleDelta * (SideIndex + 1)) + Y * FMath::Sin(AngleDelta * (SideIndex + 1))) * Radius; + new(PlotLines) FPlotLine(LastVertex,Vertex,Color,0.0f,DepthPriority); + LastVertex = Vertex; + } + + MarkRenderStateDirty(); +} + +void UPlotComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction) +{ + Super::TickComponent(DeltaTime, TickType, ThisTickFunction); + +} + +void UPlotComponent::ApplyWorldOffset(const FVector& InOffset, bool bWorldShift) +{ + Super::ApplyWorldOffset(InOffset, bWorldShift); + + bool bDirty = false; + for (FPlotLine& Line : PlotLines) + { + Line.Start += InOffset; + Line.End += InOffset; + bDirty = true; + } + + for (FPlotPoint& Point : PlotPoints) + { + Point.Position += InOffset; + bDirty = true; + } + + for (FPlotMesh& Mesh : PlotMeshes) + { + for (FVector& Vert : Mesh.MeshVerts) + { + Vert += InOffset; + bDirty = true; + } + } + + if (bDirty) + { + MarkRenderStateDirty(); + } +} + +/** +* Creates a new scene proxy for the line batcher component. +* @return Pointer to the FLineBatcherSceneProxy +*/ +FPrimitiveSceneProxy* UPlotComponent::CreateSceneProxy() +{ + return new FPlotSceneProxy(this); +} + +FBoxSphereBounds UPlotComponent::CalcBounds( const FTransform& LocalToWorld ) const +{ + + FBox BBox(ForceInit); + for (const FPlotLine& Line : PlotLines) + { + BBox += Line.Start; + BBox += Line.End; + } + + for (const FPlotPoint& Point : PlotPoints) + { + BBox += Point.Position; + } + + for (const FPlotMesh& Mesh : PlotMeshes) + { + for (const FVector& Vert : Mesh.MeshVerts) + { + BBox += Vert; + } + } + + if (BBox.IsValid) + { + // Points are in world space, so no need to transform. + return FBoxSphereBounds(BBox); + } + else + { + const FVector BoxExtent(1.f); + return FBoxSphereBounds(LocalToWorld.GetLocation(), BoxExtent, 1.f); + } +} + +void UPlotComponent::Flush() +{ + if (PlotLines.Num() > 0 || PlotPoints.Num() > 0 || PlotMeshes.Num() > 0) + { + PlotLines.Empty(); + PlotPoints.Empty(); + PlotMeshes.Empty(); + MarkRenderStateDirty(); + } +} \ No newline at end of file diff --git a/FlightSimulation/Plugins/Earth/Source/Earth/Public/Earth.h b/FlightSimulation/Plugins/Earth/Source/Earth/Public/Earth.h new file mode 100644 index 0000000..cef128b --- /dev/null +++ b/FlightSimulation/Plugins/Earth/Source/Earth/Public/Earth.h @@ -0,0 +1,15 @@ +// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" +#include "Modules/ModuleManager.h" + +class FEarthModule : public IModuleInterface +{ +public: + + /** IModuleInterface implementation */ + virtual void StartupModule() override; + virtual void ShutdownModule() override; +}; diff --git a/FlightSimulation/Plugins/Earth/Source/Earth/Public/PlotComponent.h b/FlightSimulation/Plugins/Earth/Source/Earth/Public/PlotComponent.h new file mode 100644 index 0000000..3f24327 --- /dev/null +++ b/FlightSimulation/Plugins/Earth/Source/Earth/Public/PlotComponent.h @@ -0,0 +1,199 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Components/PrimitiveComponent.h" +#include "PrimitiveSceneProxy.h" +#include "DynamicMeshBuilder.h" + +#include "PlotComponent.generated.h" + + + +USTRUCT(BlueprintType) +struct FPlotLine +{ + GENERATED_USTRUCT_BODY() + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Plot") + FVector Start; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Plot") + FVector End; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Plot") + FLinearColor Color; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Plot") + float Thickness; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Plot") + uint8 DepthPriority; + + FPlotLine() + : Start(ForceInit) + , End(ForceInit) + , Color(ForceInit) + , Thickness(0) + , DepthPriority(0) + {} + FPlotLine(const FVector& InStart, const FVector& InEnd, const FLinearColor& InColor, float InThickness, uint8 InDepthPriority) + : Start(InStart) + , End(InEnd) + , Color(InColor) + , Thickness(InThickness) + , DepthPriority(InDepthPriority) + {} +}; + +USTRUCT(BlueprintType) +struct FPlotPoint +{ + GENERATED_USTRUCT_BODY() + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Plot") + FVector Position; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Plot") + FLinearColor Color; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Plot") + float PointSize; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Plot") + uint8 DepthPriority; + + FPlotPoint() + : Position(ForceInit) + , Color(ForceInit) + , PointSize(0) + , DepthPriority(0) + {} + FPlotPoint(const FVector& InPosition, const FLinearColor& InColor, float InPointSize, uint8 InDepthPriority) + : Position(InPosition) + , Color(InColor) + , PointSize(InPointSize) + , DepthPriority(InDepthPriority) + {} +}; + +USTRUCT(BlueprintType) +struct FPlotMesh +{ + GENERATED_USTRUCT_BODY() + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Plot") + TArray MeshVerts; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Plot") + TArray MeshIndices; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Plot") + FColor Color; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Plot") + uint8 DepthPriority; + + FPlotMesh() + {}; + + /** + * MeshVerts - linear array of world space vertex positions + * MeshIndices - array of indices into MeshVerts. Each triplet is a tri. i.e. [0,1,2] is first tri, [3,4,5] is 2nd tri, etc + */ + FPlotMesh(TArray const& InMeshVerts, TArray const& InMeshIndices, FColor const& InColor, uint8 InDepthPriority) + : MeshVerts(InMeshVerts), MeshIndices(InMeshIndices), + Color(InColor), DepthPriority(InDepthPriority) + {} + +}; + +/** + * + */ +UCLASS(Blueprintable, BlueprintType, meta = (BlueprintSpawnableComponent)) +class EARTH_API UPlotComponent : public UPrimitiveComponent +{ + GENERATED_UCLASS_BODY() + + TArray PlotLines; + + TArray PlotPoints; + + TArray PlotMeshes; + + UFUNCTION(BlueprintCallable, Category = "Earth") + void DrawLines(const TArray& InLines); + + UFUNCTION(BlueprintCallable, Category = "Earth") + void DrawBox(const FBox& Box, const FMatrix& TM, const FColor& Color, uint8 InDepthPriorityGroup); + + UFUNCTION(BlueprintCallable, Category = "Earth") + void DrawDirectionalArrow(const FMatrix& ArrowToWorld,FColor InColor,float Length,float ArrowSize,uint8 DepthPriority); + + UFUNCTION(BlueprintCallable, Category = "Earth") + void DrawCircle(const FVector& Base, const FVector& X, const FVector& Y, FColor Color, float Radius, int32 NumSides, uint8 DepthPriority); + + UFUNCTION(BlueprintCallable, Category = "Earth") + virtual void DrawLine( + const FVector& Start, + const FVector& End, + const FLinearColor& Color, + uint8 DepthPriority, + float Thickness = 0.0f + ); + + UFUNCTION(BlueprintCallable, Category = "Earth") + virtual void DrawPoint( + const FVector& Position, + const FLinearColor& Color, + float PointSize, + uint8 DepthPriority + ); + + UFUNCTION(BlueprintCallable, Category = "Earth") + void DrawSolidBox(FBox const& Box, FTransform const& Xform, const FColor& Color, uint8 DepthPriority); + + UFUNCTION(BlueprintCallable, Category = "Earth") + void DrawMesh(TArray const& Verts, TArray const& Indices, FColor const& Color, uint8 DepthPriority); + + UFUNCTION(BlueprintCallable, Category = "Earth") + void Flush(); + + //~ Begin UPrimitiveComponent Interface. + virtual FPrimitiveSceneProxy* CreateSceneProxy() override; + virtual FBoxSphereBounds CalcBounds(const FTransform& LocalToWorld) const override; + //~ End UPrimitiveComponent Interface. + + + //~ Begin UActorComponent Interface. + virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction) override; + virtual void ApplyWorldOffset(const FVector& InOffset, bool bWorldShift) override; + //~ End UActorComponent Interface. + +}; + +class FPlotSceneProxy : public FPrimitiveSceneProxy +{ +public: + SIZE_T GetTypeHash() const override; + + FPlotSceneProxy(const UPlotComponent* InComponent); + + virtual void GetDynamicMeshElements(const TArray& Views, const FSceneViewFamily& ViewFamily, uint32 VisibilityMap, FMeshElementCollector& Collector) const override; + + /** + * Returns a struct that describes to the renderer when to draw this proxy. + * @param Scene view to use to determine our relevence. + * @return View relevance struct + */ + virtual FPrimitiveViewRelevance GetViewRelevance(const FSceneView* View) const override; + virtual uint32 GetMemoryFootprint( void ) const override; + uint32 GetAllocatedSize( void ) const; + +private: + TArray Lines; + TArray Points; + TArray Meshes; +}; \ No newline at end of file