diff --git a/.idea/.idea.BladeSmith/.idea/.gitignore b/.idea/.idea.BladeSmith/.idea/.gitignore
new file mode 100644
index 0000000..44dfeb7
--- /dev/null
+++ b/.idea/.idea.BladeSmith/.idea/.gitignore
@@ -0,0 +1,13 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# Rider 忽略的文件
+/.idea.BladeSmith.iml
+/projectSettingsUpdater.xml
+/contentModel.xml
+/modules.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.idea.BladeSmith/.idea/encodings.xml b/.idea/.idea.BladeSmith/.idea/encodings.xml
new file mode 100644
index 0000000..dd05a7e
--- /dev/null
+++ b/.idea/.idea.BladeSmith/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.BladeSmith/.idea/indexLayout.xml b/.idea/.idea.BladeSmith/.idea/indexLayout.xml
new file mode 100644
index 0000000..7b08163
--- /dev/null
+++ b/.idea/.idea.BladeSmith/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.vsconfig b/.vsconfig
new file mode 100644
index 0000000..b3c233d
--- /dev/null
+++ b/.vsconfig
@@ -0,0 +1,15 @@
+{
+ "version": "1.0",
+ "components": [
+ "Microsoft.Net.Component.4.6.2.TargetingPack",
+ "Microsoft.VisualStudio.Component.Unreal.Workspace",
+ "Microsoft.VisualStudio.Component.VC.14.38.17.8.ATL",
+ "Microsoft.VisualStudio.Component.VC.14.38.17.8.x86.x64",
+ "Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
+ "Microsoft.VisualStudio.Component.Windows11SDK.22621",
+ "Microsoft.VisualStudio.Workload.CoreEditor",
+ "Microsoft.VisualStudio.Workload.ManagedDesktop",
+ "Microsoft.VisualStudio.Workload.NativeDesktop",
+ "Microsoft.VisualStudio.Workload.NativeGame"
+ ]
+}
diff --git a/BladeSmith.sln.DotSettings.user b/BladeSmith.sln.DotSettings.user
new file mode 100644
index 0000000..8ace9b1
--- /dev/null
+++ b/BladeSmith.sln.DotSettings.user
@@ -0,0 +1,2 @@
+
+ ForceIncluded
\ No newline at end of file
diff --git a/BladeSmith.uproject b/BladeSmith.uproject
new file mode 100644
index 0000000..511e59d
--- /dev/null
+++ b/BladeSmith.uproject
@@ -0,0 +1,25 @@
+{
+ "FileVersion": 3,
+ "EngineAssociation": "5.5",
+ "Category": "",
+ "Description": "",
+ "Modules": [
+ {
+ "Name": "BladeSmith",
+ "Type": "Runtime",
+ "LoadingPhase": "Default",
+ "AdditionalDependencies": [
+ "Engine"
+ ]
+ }
+ ],
+ "Plugins": [
+ {
+ "Name": "ModelingToolsEditorMode",
+ "Enabled": true,
+ "TargetAllowList": [
+ "Editor"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Config/DefaultEditor.ini b/Config/DefaultEditor.ini
new file mode 100644
index 0000000..8b9730a
--- /dev/null
+++ b/Config/DefaultEditor.ini
@@ -0,0 +1,13 @@
+[UnrealEd.SimpleMap]
+SimpleMapName=/Game/FirstPerson/Maps/FirstPersonExampleMap
+
+[EditoronlyBP]
+bAllowClassAndBlueprintPinMatching=true
+bReplaceBlueprintWithClass= true
+bDontLoadBlueprintOutsideEditor= true
+bBlueprintIsNotBlueprintType= true
+
+[/Script/AdvancedPreviewScene.SharedProfiles]
++Profiles=(ProfileName="Epic Headquarters",bSharedProfile=True,bIsEngineDefaultProfile=True,bUseSkyLighting=True,DirectionalLightIntensity=1.000000,DirectionalLightColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),SkyLightIntensity=1.000000,bRotateLightingRig=False,bShowEnvironment=True,bShowFloor=True,bShowGrid=False,EnvironmentColor=(R=0.200000,G=0.200000,B=0.200000,A=1.000000),EnvironmentIntensity=1.000000,EnvironmentCubeMapPath="/Engine/EditorMaterials/AssetViewer/EpicQuadPanorama_CC+EV1.EpicQuadPanorama_CC+EV1",bPostProcessingEnabled=True,PostProcessingSettings=(bOverride_TemperatureType=False,bOverride_WhiteTemp=False,bOverride_WhiteTint=False,bOverride_ColorSaturation=False,bOverride_ColorContrast=False,bOverride_ColorGamma=False,bOverride_ColorGain=False,bOverride_ColorOffset=False,bOverride_ColorSaturationShadows=False,bOverride_ColorContrastShadows=False,bOverride_ColorGammaShadows=False,bOverride_ColorGainShadows=False,bOverride_ColorOffsetShadows=False,bOverride_ColorSaturationMidtones=False,bOverride_ColorContrastMidtones=False,bOverride_ColorGammaMidtones=False,bOverride_ColorGainMidtones=False,bOverride_ColorOffsetMidtones=False,bOverride_ColorSaturationHighlights=False,bOverride_ColorContrastHighlights=False,bOverride_ColorGammaHighlights=False,bOverride_ColorGainHighlights=False,bOverride_ColorOffsetHighlights=False,bOverride_ColorCorrectionShadowsMax=False,bOverride_ColorCorrectionHighlightsMin=False,bOverride_ColorCorrectionHighlightsMax=False,bOverride_BlueCorrection=False,bOverride_ExpandGamut=False,bOverride_ToneCurveAmount=False,bOverride_FilmSlope=False,bOverride_FilmToe=False,bOverride_FilmShoulder=False,bOverride_FilmBlackClip=False,bOverride_FilmWhiteClip=False,bOverride_SceneColorTint=False,bOverride_SceneFringeIntensity=False,bOverride_ChromaticAberrationStartOffset=False,bOverride_bMegaLights=False,bOverride_AmbientCubemapTint=False,bOverride_AmbientCubemapIntensity=False,bOverride_BloomMethod=False,bOverride_BloomIntensity=False,bOverride_BloomThreshold=False,bOverride_Bloom1Tint=False,bOverride_Bloom1Size=False,bOverride_Bloom2Size=False,bOverride_Bloom2Tint=False,bOverride_Bloom3Tint=False,bOverride_Bloom3Size=False,bOverride_Bloom4Tint=False,bOverride_Bloom4Size=False,bOverride_Bloom5Tint=False,bOverride_Bloom5Size=False,bOverride_Bloom6Tint=False,bOverride_Bloom6Size=False,bOverride_BloomSizeScale=False,bOverride_BloomConvolutionTexture=False,bOverride_BloomConvolutionScatterDispersion=False,bOverride_BloomConvolutionSize=False,bOverride_BloomConvolutionCenterUV=False,bOverride_BloomConvolutionPreFilterMin=False,bOverride_BloomConvolutionPreFilterMax=False,bOverride_BloomConvolutionPreFilterMult=False,bOverride_BloomConvolutionBufferScale=False,bOverride_BloomDirtMaskIntensity=False,bOverride_BloomDirtMaskTint=False,bOverride_BloomDirtMask=False,bOverride_CameraShutterSpeed=False,bOverride_CameraISO=False,bOverride_AutoExposureMethod=False,bOverride_AutoExposureLowPercent=False,bOverride_AutoExposureHighPercent=False,bOverride_AutoExposureMinBrightness=False,bOverride_AutoExposureMaxBrightness=False,bOverride_AutoExposureSpeedUp=False,bOverride_AutoExposureSpeedDown=False,bOverride_AutoExposureBias=False,bOverride_AutoExposureBiasCurve=False,bOverride_AutoExposureMeterMask=False,bOverride_AutoExposureApplyPhysicalCameraExposure=False,bOverride_HistogramLogMin=False,bOverride_HistogramLogMax=False,bOverride_LocalExposureMethod=False,bOverride_LocalExposureHighlightContrastScale=False,bOverride_LocalExposureShadowContrastScale=False,bOverride_LocalExposureHighlightContrastCurve=False,bOverride_LocalExposureShadowContrastCurve=False,bOverride_LocalExposureHighlightThreshold=False,bOverride_LocalExposureShadowThreshold=False,bOverride_LocalExposureDetailStrength=False,bOverride_LocalExposureBlurredLuminanceBlend=False,bOverride_LocalExposureBlurredLuminanceKernelSizePercent=False,bOverride_LocalExposureMiddleGreyBias=False,bOverride_LensFlareIntensity=False,bOverride_LensFlareTint=False,bOverride_LensFlareTints=False,bOverride_LensFlareBokehSize=False,bOverride_LensFlareBokehShape=False,bOverride_LensFlareThreshold=False,bOverride_VignetteIntensity=False,bOverride_Sharpen=False,bOverride_FilmGrainIntensity=False,bOverride_FilmGrainIntensityShadows=False,bOverride_FilmGrainIntensityMidtones=False,bOverride_FilmGrainIntensityHighlights=False,bOverride_FilmGrainShadowsMax=False,bOverride_FilmGrainHighlightsMin=False,bOverride_FilmGrainHighlightsMax=False,bOverride_FilmGrainTexelSize=False,bOverride_FilmGrainTexture=False,bOverride_AmbientOcclusionIntensity=False,bOverride_AmbientOcclusionStaticFraction=False,bOverride_AmbientOcclusionRadius=False,bOverride_AmbientOcclusionFadeDistance=False,bOverride_AmbientOcclusionFadeRadius=False,bOverride_AmbientOcclusionRadiusInWS=False,bOverride_AmbientOcclusionPower=False,bOverride_AmbientOcclusionBias=False,bOverride_AmbientOcclusionQuality=False,bOverride_AmbientOcclusionMipBlend=False,bOverride_AmbientOcclusionMipScale=False,bOverride_AmbientOcclusionMipThreshold=False,bOverride_AmbientOcclusionTemporalBlendWeight=False,bOverride_RayTracingAO=False,bOverride_RayTracingAOSamplesPerPixel=False,bOverride_RayTracingAOIntensity=False,bOverride_RayTracingAORadius=False,bOverride_IndirectLightingColor=False,bOverride_IndirectLightingIntensity=False,bOverride_ColorGradingIntensity=False,bOverride_ColorGradingLUT=False,bOverride_DepthOfFieldFocalDistance=False,bOverride_DepthOfFieldFstop=False,bOverride_DepthOfFieldMinFstop=False,bOverride_DepthOfFieldBladeCount=False,bOverride_DepthOfFieldSensorWidth=False,bOverride_DepthOfFieldSqueezeFactor=False,bOverride_DepthOfFieldDepthBlurRadius=False,bOverride_DepthOfFieldUseHairDepth=False,bOverride_DepthOfFieldDepthBlurAmount=False,bOverride_DepthOfFieldFocalRegion=False,bOverride_DepthOfFieldNearTransitionRegion=False,bOverride_DepthOfFieldFarTransitionRegion=False,bOverride_DepthOfFieldScale=False,bOverride_DepthOfFieldNearBlurSize=False,bOverride_DepthOfFieldFarBlurSize=False,bOverride_MobileHQGaussian=False,bOverride_DepthOfFieldOcclusion=False,bOverride_DepthOfFieldSkyFocusDistance=False,bOverride_DepthOfFieldVignetteSize=False,bOverride_MotionBlurAmount=False,bOverride_MotionBlurMax=False,bOverride_MotionBlurTargetFPS=False,bOverride_MotionBlurPerObjectSize=False,bOverride_ReflectionMethod=False,bOverride_LumenReflectionQuality=False,bOverride_ScreenSpaceReflectionIntensity=False,bOverride_ScreenSpaceReflectionQuality=False,bOverride_ScreenSpaceReflectionMaxRoughness=False,bOverride_ScreenSpaceReflectionRoughnessScale=False,bOverride_UserFlags=False,bOverride_RayTracingReflectionsMaxRoughness=False,bOverride_RayTracingReflectionsMaxBounces=False,bOverride_RayTracingReflectionsSamplesPerPixel=False,bOverride_RayTracingReflectionsShadows=False,bOverride_RayTracingReflectionsTranslucency=False,bOverride_TranslucencyType=False,bOverride_RayTracingTranslucencyMaxRoughness=False,bOverride_RayTracingTranslucencyRefractionRays=False,bOverride_RayTracingTranslucencySamplesPerPixel=False,bOverride_RayTracingTranslucencyShadows=False,bOverride_RayTracingTranslucencyRefraction=False,bOverride_DynamicGlobalIlluminationMethod=False,bOverride_LumenSceneLightingQuality=False,bOverride_LumenSceneDetail=False,bOverride_LumenSceneViewDistance=False,bOverride_LumenSceneLightingUpdateSpeed=False,bOverride_LumenFinalGatherQuality=False,bOverride_LumenFinalGatherLightingUpdateSpeed=False,bOverride_LumenFinalGatherScreenTraces=False,bOverride_LumenMaxTraceDistance=False,bOverride_LumenDiffuseColorBoost=False,bOverride_LumenSkylightLeaking=False,bOverride_LumenFullSkylightLeakingDistance=False,bOverride_LumenRayLightingMode=False,bOverride_LumenReflectionsScreenTraces=False,bOverride_LumenFrontLayerTranslucencyReflections=False,bOverride_LumenMaxRoughnessToTraceReflections=False,bOverride_LumenMaxReflectionBounces=False,bOverride_LumenMaxRefractionBounces=False,bOverride_LumenSurfaceCacheResolution=False,bOverride_RayTracingGI=False,bOverride_RayTracingGIMaxBounces=False,bOverride_RayTracingGISamplesPerPixel=False,bOverride_PathTracingMaxBounces=False,bOverride_PathTracingSamplesPerPixel=False,bOverride_PathTracingMaxPathIntensity=False,bOverride_PathTracingEnableEmissiveMaterials=False,bOverride_PathTracingEnableReferenceDOF=False,bOverride_PathTracingEnableReferenceAtmosphere=False,bOverride_PathTracingEnableDenoiser=False,bOverride_PathTracingIncludeEmissive=False,bOverride_PathTracingIncludeDiffuse=False,bOverride_PathTracingIncludeIndirectDiffuse=False,bOverride_PathTracingIncludeSpecular=False,bOverride_PathTracingIncludeIndirectSpecular=False,bOverride_PathTracingIncludeVolume=False,bOverride_PathTracingIncludeIndirectVolume=False,bMobileHQGaussian=False,BloomMethod=BM_SOG,AutoExposureMethod=AEM_Histogram,TemperatureType=TEMP_WhiteBalance,WhiteTemp=6500.000000,WhiteTint=0.000000,ColorSaturation=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrast=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGamma=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGain=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffset=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetShadows=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetMidtones=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetHighlights=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorCorrectionHighlightsMin=0.500000,ColorCorrectionHighlightsMax=1.000000,ColorCorrectionShadowsMax=0.090000,BlueCorrection=0.600000,ExpandGamut=1.000000,ToneCurveAmount=1.000000,FilmSlope=0.880000,FilmToe=0.550000,FilmShoulder=0.260000,FilmBlackClip=0.000000,FilmWhiteClip=0.040000,SceneColorTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),SceneFringeIntensity=0.000000,ChromaticAberrationStartOffset=0.000000,BloomIntensity=0.675000,BloomThreshold=-1.000000,BloomSizeScale=4.000000,Bloom1Size=0.300000,Bloom2Size=1.000000,Bloom3Size=2.000000,Bloom4Size=10.000000,Bloom5Size=30.000000,Bloom6Size=64.000000,Bloom1Tint=(R=0.346500,G=0.346500,B=0.346500,A=1.000000),Bloom2Tint=(R=0.138000,G=0.138000,B=0.138000,A=1.000000),Bloom3Tint=(R=0.117600,G=0.117600,B=0.117600,A=1.000000),Bloom4Tint=(R=0.066000,G=0.066000,B=0.066000,A=1.000000),Bloom5Tint=(R=0.066000,G=0.066000,B=0.066000,A=1.000000),Bloom6Tint=(R=0.061000,G=0.061000,B=0.061000,A=1.000000),BloomConvolutionScatterDispersion=1.000000,BloomConvolutionSize=1.000000,BloomConvolutionTexture=None,BloomConvolutionCenterUV=(X=0.500000,Y=0.500000),BloomConvolutionPreFilterMin=7.000000,BloomConvolutionPreFilterMax=15000.000000,BloomConvolutionPreFilterMult=15.000000,BloomConvolutionBufferScale=0.133000,BloomDirtMask=None,BloomDirtMaskIntensity=0.000000,BloomDirtMaskTint=(R=0.500000,G=0.500000,B=0.500000,A=1.000000),DynamicGlobalIlluminationMethod=Lumen,IndirectLightingColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),IndirectLightingIntensity=1.000000,LumenRayLightingMode=Default,LumenSceneLightingQuality=1.000000,LumenSceneDetail=1.000000,LumenSceneViewDistance=20000.000000,LumenSceneLightingUpdateSpeed=1.000000,LumenFinalGatherQuality=1.000000,LumenFinalGatherLightingUpdateSpeed=1.000000,LumenFinalGatherScreenTraces=True,LumenMaxTraceDistance=20000.000000,LumenDiffuseColorBoost=1.000000,LumenSkylightLeaking=0.000000,LumenFullSkylightLeakingDistance=1000.000000,LumenSurfaceCacheResolution=1.000000,ReflectionMethod=Lumen,LumenReflectionQuality=1.000000,LumenReflectionsScreenTraces=True,LumenFrontLayerTranslucencyReflections=False,LumenMaxRoughnessToTraceReflections=0.400000,LumenMaxReflectionBounces=1,LumenMaxRefractionBounces=0,ScreenSpaceReflectionIntensity=100.000000,ScreenSpaceReflectionQuality=50.000000,ScreenSpaceReflectionMaxRoughness=0.600000,bMegaLights=True,AmbientCubemapTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),AmbientCubemapIntensity=1.000000,AmbientCubemap=None,CameraShutterSpeed=60.000000,CameraISO=100.000000,DepthOfFieldFstop=4.000000,DepthOfFieldMinFstop=1.200000,DepthOfFieldBladeCount=5,AutoExposureBias=1.000000,AutoExposureBiasBackup=0.000000,bOverride_AutoExposureBiasBackup=False,AutoExposureApplyPhysicalCameraExposure=True,AutoExposureBiasCurve=None,AutoExposureMeterMask=None,AutoExposureLowPercent=10.000000,AutoExposureHighPercent=90.000000,AutoExposureMinBrightness=-10.000000,AutoExposureMaxBrightness=20.000000,AutoExposureSpeedUp=3.000000,AutoExposureSpeedDown=1.000000,HistogramLogMin=-10.000000,HistogramLogMax=20.000000,LocalExposureMethod=Bilateral,LocalExposureHighlightContrastScale=1.000000,LocalExposureShadowContrastScale=1.000000,LocalExposureHighlightContrastCurve=None,LocalExposureShadowContrastCurve=None,LocalExposureHighlightThreshold=0.000000,LocalExposureShadowThreshold=0.000000,LocalExposureDetailStrength=1.000000,LocalExposureBlurredLuminanceBlend=0.600000,LocalExposureBlurredLuminanceKernelSizePercent=50.000000,LocalExposureMiddleGreyBias=0.000000,LensFlareIntensity=1.000000,LensFlareTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),LensFlareBokehSize=3.000000,LensFlareThreshold=8.000000,LensFlareBokehShape=None,LensFlareTints[0]=(R=1.000000,G=0.800000,B=0.400000,A=0.600000),LensFlareTints[1]=(R=1.000000,G=1.000000,B=0.600000,A=0.530000),LensFlareTints[2]=(R=0.800000,G=0.800000,B=1.000000,A=0.460000),LensFlareTints[3]=(R=0.500000,G=1.000000,B=0.400000,A=0.390000),LensFlareTints[4]=(R=0.500000,G=0.800000,B=1.000000,A=0.310000),LensFlareTints[5]=(R=0.900000,G=1.000000,B=0.800000,A=0.270000),LensFlareTints[6]=(R=1.000000,G=0.800000,B=0.400000,A=0.220000),LensFlareTints[7]=(R=0.900000,G=0.700000,B=0.700000,A=0.150000),VignetteIntensity=0.400000,Sharpen=0.000000,FilmGrainIntensity=0.000000,FilmGrainIntensityShadows=1.000000,FilmGrainIntensityMidtones=1.000000,FilmGrainIntensityHighlights=1.000000,FilmGrainShadowsMax=0.090000,FilmGrainHighlightsMin=0.500000,FilmGrainHighlightsMax=1.000000,FilmGrainTexelSize=1.000000,FilmGrainTexture=None,AmbientOcclusionIntensity=0.500000,AmbientOcclusionStaticFraction=1.000000,AmbientOcclusionRadius=200.000000,AmbientOcclusionRadiusInWS=False,AmbientOcclusionFadeDistance=8000.000000,AmbientOcclusionFadeRadius=5000.000000,AmbientOcclusionPower=2.000000,AmbientOcclusionBias=3.000000,AmbientOcclusionQuality=50.000000,AmbientOcclusionMipBlend=0.600000,AmbientOcclusionMipScale=1.700000,AmbientOcclusionMipThreshold=0.010000,AmbientOcclusionTemporalBlendWeight=0.100000,RayTracingAO=False,RayTracingAOSamplesPerPixel=1,RayTracingAOIntensity=1.000000,RayTracingAORadius=200.000000,ColorGradingIntensity=1.000000,ColorGradingLUT=None,DepthOfFieldSensorWidth=24.576000,DepthOfFieldSqueezeFactor=1.000000,DepthOfFieldFocalDistance=0.000000,DepthOfFieldDepthBlurAmount=1.000000,DepthOfFieldDepthBlurRadius=0.000000,DepthOfFieldUseHairDepth=False,DepthOfFieldFocalRegion=0.000000,DepthOfFieldNearTransitionRegion=300.000000,DepthOfFieldFarTransitionRegion=500.000000,DepthOfFieldScale=0.000000,DepthOfFieldNearBlurSize=15.000000,DepthOfFieldFarBlurSize=15.000000,DepthOfFieldOcclusion=0.400000,DepthOfFieldSkyFocusDistance=0.000000,DepthOfFieldVignetteSize=200.000000,MotionBlurAmount=0.500000,MotionBlurMax=5.000000,MotionBlurTargetFPS=30,MotionBlurPerObjectSize=0.000000,TranslucencyType=Raster,RayTracingTranslucencyMaxRoughness=0.600000,RayTracingTranslucencyRefractionRays=3,RayTracingTranslucencySamplesPerPixel=1,RayTracingTranslucencyShadows=Hard_shadows,RayTracingTranslucencyRefraction=True,PathTracingMaxBounces=32,PathTracingSamplesPerPixel=2048,PathTracingMaxPathIntensity=24.000000,PathTracingEnableEmissiveMaterials=True,PathTracingEnableReferenceDOF=False,PathTracingEnableReferenceAtmosphere=False,PathTracingEnableDenoiser=True,PathTracingIncludeEmissive=True,PathTracingIncludeDiffuse=True,PathTracingIncludeIndirectDiffuse=True,PathTracingIncludeSpecular=True,PathTracingIncludeIndirectSpecular=True,PathTracingIncludeVolume=True,PathTracingIncludeIndirectVolume=True,UserFlags=0,WeightedBlendables=(Array=)),LightingRigRotation=0.000000,RotationSpeed=2.000000,DirectionalLightRotation=(Pitch=-40.000000,Yaw=-67.500000,Roll=0.000000),bEnableToneMapping=True,bShowMeshEdges=False)
++Profiles=(ProfileName="Grey Wireframe",bSharedProfile=True,bIsEngineDefaultProfile=True,bUseSkyLighting=True,DirectionalLightIntensity=1.000000,DirectionalLightColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),SkyLightIntensity=1.000000,bRotateLightingRig=False,bShowEnvironment=False,bShowFloor=False,bShowGrid=True,EnvironmentColor=(R=0.039216,G=0.039216,B=0.039216,A=1.000000),EnvironmentIntensity=1.000000,EnvironmentCubeMapPath="/Engine/EditorMaterials/AssetViewer/EpicQuadPanorama_CC+EV1.EpicQuadPanorama_CC+EV1",bPostProcessingEnabled=False,PostProcessingSettings=(bOverride_TemperatureType=False,bOverride_WhiteTemp=False,bOverride_WhiteTint=False,bOverride_ColorSaturation=False,bOverride_ColorContrast=False,bOverride_ColorGamma=False,bOverride_ColorGain=False,bOverride_ColorOffset=False,bOverride_ColorSaturationShadows=False,bOverride_ColorContrastShadows=False,bOverride_ColorGammaShadows=False,bOverride_ColorGainShadows=False,bOverride_ColorOffsetShadows=False,bOverride_ColorSaturationMidtones=False,bOverride_ColorContrastMidtones=False,bOverride_ColorGammaMidtones=False,bOverride_ColorGainMidtones=False,bOverride_ColorOffsetMidtones=False,bOverride_ColorSaturationHighlights=False,bOverride_ColorContrastHighlights=False,bOverride_ColorGammaHighlights=False,bOverride_ColorGainHighlights=False,bOverride_ColorOffsetHighlights=False,bOverride_ColorCorrectionShadowsMax=False,bOverride_ColorCorrectionHighlightsMin=False,bOverride_ColorCorrectionHighlightsMax=False,bOverride_BlueCorrection=False,bOverride_ExpandGamut=False,bOverride_ToneCurveAmount=False,bOverride_FilmSlope=False,bOverride_FilmToe=False,bOverride_FilmShoulder=False,bOverride_FilmBlackClip=False,bOverride_FilmWhiteClip=False,bOverride_SceneColorTint=False,bOverride_SceneFringeIntensity=False,bOverride_ChromaticAberrationStartOffset=False,bOverride_bMegaLights=False,bOverride_AmbientCubemapTint=False,bOverride_AmbientCubemapIntensity=False,bOverride_BloomMethod=False,bOverride_BloomIntensity=False,bOverride_BloomThreshold=False,bOverride_Bloom1Tint=False,bOverride_Bloom1Size=False,bOverride_Bloom2Size=False,bOverride_Bloom2Tint=False,bOverride_Bloom3Tint=False,bOverride_Bloom3Size=False,bOverride_Bloom4Tint=False,bOverride_Bloom4Size=False,bOverride_Bloom5Tint=False,bOverride_Bloom5Size=False,bOverride_Bloom6Tint=False,bOverride_Bloom6Size=False,bOverride_BloomSizeScale=False,bOverride_BloomConvolutionTexture=False,bOverride_BloomConvolutionScatterDispersion=False,bOverride_BloomConvolutionSize=False,bOverride_BloomConvolutionCenterUV=False,bOverride_BloomConvolutionPreFilterMin=False,bOverride_BloomConvolutionPreFilterMax=False,bOverride_BloomConvolutionPreFilterMult=False,bOverride_BloomConvolutionBufferScale=False,bOverride_BloomDirtMaskIntensity=False,bOverride_BloomDirtMaskTint=False,bOverride_BloomDirtMask=False,bOverride_CameraShutterSpeed=False,bOverride_CameraISO=False,bOverride_AutoExposureMethod=False,bOverride_AutoExposureLowPercent=False,bOverride_AutoExposureHighPercent=False,bOverride_AutoExposureMinBrightness=False,bOverride_AutoExposureMaxBrightness=False,bOverride_AutoExposureSpeedUp=False,bOverride_AutoExposureSpeedDown=False,bOverride_AutoExposureBias=False,bOverride_AutoExposureBiasCurve=False,bOverride_AutoExposureMeterMask=False,bOverride_AutoExposureApplyPhysicalCameraExposure=False,bOverride_HistogramLogMin=False,bOverride_HistogramLogMax=False,bOverride_LocalExposureMethod=False,bOverride_LocalExposureHighlightContrastScale=False,bOverride_LocalExposureShadowContrastScale=False,bOverride_LocalExposureHighlightContrastCurve=False,bOverride_LocalExposureShadowContrastCurve=False,bOverride_LocalExposureHighlightThreshold=False,bOverride_LocalExposureShadowThreshold=False,bOverride_LocalExposureDetailStrength=False,bOverride_LocalExposureBlurredLuminanceBlend=False,bOverride_LocalExposureBlurredLuminanceKernelSizePercent=False,bOverride_LocalExposureMiddleGreyBias=False,bOverride_LensFlareIntensity=False,bOverride_LensFlareTint=False,bOverride_LensFlareTints=False,bOverride_LensFlareBokehSize=False,bOverride_LensFlareBokehShape=False,bOverride_LensFlareThreshold=False,bOverride_VignetteIntensity=False,bOverride_Sharpen=False,bOverride_FilmGrainIntensity=False,bOverride_FilmGrainIntensityShadows=False,bOverride_FilmGrainIntensityMidtones=False,bOverride_FilmGrainIntensityHighlights=False,bOverride_FilmGrainShadowsMax=False,bOverride_FilmGrainHighlightsMin=False,bOverride_FilmGrainHighlightsMax=False,bOverride_FilmGrainTexelSize=False,bOverride_FilmGrainTexture=False,bOverride_AmbientOcclusionIntensity=False,bOverride_AmbientOcclusionStaticFraction=False,bOverride_AmbientOcclusionRadius=False,bOverride_AmbientOcclusionFadeDistance=False,bOverride_AmbientOcclusionFadeRadius=False,bOverride_AmbientOcclusionRadiusInWS=False,bOverride_AmbientOcclusionPower=False,bOverride_AmbientOcclusionBias=False,bOverride_AmbientOcclusionQuality=False,bOverride_AmbientOcclusionMipBlend=False,bOverride_AmbientOcclusionMipScale=False,bOverride_AmbientOcclusionMipThreshold=False,bOverride_AmbientOcclusionTemporalBlendWeight=False,bOverride_RayTracingAO=False,bOverride_RayTracingAOSamplesPerPixel=False,bOverride_RayTracingAOIntensity=False,bOverride_RayTracingAORadius=False,bOverride_IndirectLightingColor=False,bOverride_IndirectLightingIntensity=False,bOverride_ColorGradingIntensity=False,bOverride_ColorGradingLUT=False,bOverride_DepthOfFieldFocalDistance=False,bOverride_DepthOfFieldFstop=False,bOverride_DepthOfFieldMinFstop=False,bOverride_DepthOfFieldBladeCount=False,bOverride_DepthOfFieldSensorWidth=False,bOverride_DepthOfFieldSqueezeFactor=False,bOverride_DepthOfFieldDepthBlurRadius=False,bOverride_DepthOfFieldUseHairDepth=False,bOverride_DepthOfFieldDepthBlurAmount=False,bOverride_DepthOfFieldFocalRegion=False,bOverride_DepthOfFieldNearTransitionRegion=False,bOverride_DepthOfFieldFarTransitionRegion=False,bOverride_DepthOfFieldScale=False,bOverride_DepthOfFieldNearBlurSize=False,bOverride_DepthOfFieldFarBlurSize=False,bOverride_MobileHQGaussian=False,bOverride_DepthOfFieldOcclusion=False,bOverride_DepthOfFieldSkyFocusDistance=False,bOverride_DepthOfFieldVignetteSize=False,bOverride_MotionBlurAmount=False,bOverride_MotionBlurMax=False,bOverride_MotionBlurTargetFPS=False,bOverride_MotionBlurPerObjectSize=False,bOverride_ReflectionMethod=False,bOverride_LumenReflectionQuality=False,bOverride_ScreenSpaceReflectionIntensity=False,bOverride_ScreenSpaceReflectionQuality=False,bOverride_ScreenSpaceReflectionMaxRoughness=False,bOverride_ScreenSpaceReflectionRoughnessScale=False,bOverride_UserFlags=False,bOverride_RayTracingReflectionsMaxRoughness=False,bOverride_RayTracingReflectionsMaxBounces=False,bOverride_RayTracingReflectionsSamplesPerPixel=False,bOverride_RayTracingReflectionsShadows=False,bOverride_RayTracingReflectionsTranslucency=False,bOverride_TranslucencyType=False,bOverride_RayTracingTranslucencyMaxRoughness=False,bOverride_RayTracingTranslucencyRefractionRays=False,bOverride_RayTracingTranslucencySamplesPerPixel=False,bOverride_RayTracingTranslucencyShadows=False,bOverride_RayTracingTranslucencyRefraction=False,bOverride_DynamicGlobalIlluminationMethod=False,bOverride_LumenSceneLightingQuality=False,bOverride_LumenSceneDetail=False,bOverride_LumenSceneViewDistance=False,bOverride_LumenSceneLightingUpdateSpeed=False,bOverride_LumenFinalGatherQuality=False,bOverride_LumenFinalGatherLightingUpdateSpeed=False,bOverride_LumenFinalGatherScreenTraces=False,bOverride_LumenMaxTraceDistance=False,bOverride_LumenDiffuseColorBoost=False,bOverride_LumenSkylightLeaking=False,bOverride_LumenFullSkylightLeakingDistance=False,bOverride_LumenRayLightingMode=False,bOverride_LumenReflectionsScreenTraces=False,bOverride_LumenFrontLayerTranslucencyReflections=False,bOverride_LumenMaxRoughnessToTraceReflections=False,bOverride_LumenMaxReflectionBounces=False,bOverride_LumenMaxRefractionBounces=False,bOverride_LumenSurfaceCacheResolution=False,bOverride_RayTracingGI=False,bOverride_RayTracingGIMaxBounces=False,bOverride_RayTracingGISamplesPerPixel=False,bOverride_PathTracingMaxBounces=False,bOverride_PathTracingSamplesPerPixel=False,bOverride_PathTracingMaxPathIntensity=False,bOverride_PathTracingEnableEmissiveMaterials=False,bOverride_PathTracingEnableReferenceDOF=False,bOverride_PathTracingEnableReferenceAtmosphere=False,bOverride_PathTracingEnableDenoiser=False,bOverride_PathTracingIncludeEmissive=False,bOverride_PathTracingIncludeDiffuse=False,bOverride_PathTracingIncludeIndirectDiffuse=False,bOverride_PathTracingIncludeSpecular=False,bOverride_PathTracingIncludeIndirectSpecular=False,bOverride_PathTracingIncludeVolume=False,bOverride_PathTracingIncludeIndirectVolume=False,bMobileHQGaussian=False,BloomMethod=BM_SOG,AutoExposureMethod=AEM_Histogram,TemperatureType=TEMP_WhiteBalance,WhiteTemp=6500.000000,WhiteTint=0.000000,ColorSaturation=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrast=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGamma=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGain=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffset=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainShadows=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetShadows=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainMidtones=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetMidtones=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorSaturationHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorContrastHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGammaHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorGainHighlights=(X=1.000000,Y=1.000000,Z=1.000000,W=1.000000),ColorOffsetHighlights=(X=0.000000,Y=0.000000,Z=0.000000,W=0.000000),ColorCorrectionHighlightsMin=0.500000,ColorCorrectionHighlightsMax=1.000000,ColorCorrectionShadowsMax=0.090000,BlueCorrection=0.600000,ExpandGamut=1.000000,ToneCurveAmount=1.000000,FilmSlope=0.880000,FilmToe=0.550000,FilmShoulder=0.260000,FilmBlackClip=0.000000,FilmWhiteClip=0.040000,SceneColorTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),SceneFringeIntensity=0.000000,ChromaticAberrationStartOffset=0.000000,BloomIntensity=0.675000,BloomThreshold=-1.000000,BloomSizeScale=4.000000,Bloom1Size=0.300000,Bloom2Size=1.000000,Bloom3Size=2.000000,Bloom4Size=10.000000,Bloom5Size=30.000000,Bloom6Size=64.000000,Bloom1Tint=(R=0.346500,G=0.346500,B=0.346500,A=1.000000),Bloom2Tint=(R=0.138000,G=0.138000,B=0.138000,A=1.000000),Bloom3Tint=(R=0.117600,G=0.117600,B=0.117600,A=1.000000),Bloom4Tint=(R=0.066000,G=0.066000,B=0.066000,A=1.000000),Bloom5Tint=(R=0.066000,G=0.066000,B=0.066000,A=1.000000),Bloom6Tint=(R=0.061000,G=0.061000,B=0.061000,A=1.000000),BloomConvolutionScatterDispersion=1.000000,BloomConvolutionSize=1.000000,BloomConvolutionTexture=None,BloomConvolutionCenterUV=(X=0.500000,Y=0.500000),BloomConvolutionPreFilterMin=7.000000,BloomConvolutionPreFilterMax=15000.000000,BloomConvolutionPreFilterMult=15.000000,BloomConvolutionBufferScale=0.133000,BloomDirtMask=None,BloomDirtMaskIntensity=0.000000,BloomDirtMaskTint=(R=0.500000,G=0.500000,B=0.500000,A=1.000000),DynamicGlobalIlluminationMethod=Lumen,IndirectLightingColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),IndirectLightingIntensity=1.000000,LumenRayLightingMode=Default,LumenSceneLightingQuality=1.000000,LumenSceneDetail=1.000000,LumenSceneViewDistance=20000.000000,LumenSceneLightingUpdateSpeed=1.000000,LumenFinalGatherQuality=1.000000,LumenFinalGatherLightingUpdateSpeed=1.000000,LumenFinalGatherScreenTraces=True,LumenMaxTraceDistance=20000.000000,LumenDiffuseColorBoost=1.000000,LumenSkylightLeaking=0.000000,LumenFullSkylightLeakingDistance=1000.000000,LumenSurfaceCacheResolution=1.000000,ReflectionMethod=Lumen,LumenReflectionQuality=1.000000,LumenReflectionsScreenTraces=True,LumenFrontLayerTranslucencyReflections=False,LumenMaxRoughnessToTraceReflections=0.400000,LumenMaxReflectionBounces=1,LumenMaxRefractionBounces=0,ScreenSpaceReflectionIntensity=100.000000,ScreenSpaceReflectionQuality=50.000000,ScreenSpaceReflectionMaxRoughness=0.600000,bMegaLights=True,AmbientCubemapTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),AmbientCubemapIntensity=1.000000,AmbientCubemap=None,CameraShutterSpeed=60.000000,CameraISO=100.000000,DepthOfFieldFstop=4.000000,DepthOfFieldMinFstop=1.200000,DepthOfFieldBladeCount=5,AutoExposureBias=1.000000,AutoExposureBiasBackup=0.000000,bOverride_AutoExposureBiasBackup=False,AutoExposureApplyPhysicalCameraExposure=True,AutoExposureBiasCurve=None,AutoExposureMeterMask=None,AutoExposureLowPercent=10.000000,AutoExposureHighPercent=90.000000,AutoExposureMinBrightness=-10.000000,AutoExposureMaxBrightness=20.000000,AutoExposureSpeedUp=3.000000,AutoExposureSpeedDown=1.000000,HistogramLogMin=-10.000000,HistogramLogMax=20.000000,LocalExposureMethod=Bilateral,LocalExposureHighlightContrastScale=1.000000,LocalExposureShadowContrastScale=1.000000,LocalExposureHighlightContrastCurve=None,LocalExposureShadowContrastCurve=None,LocalExposureHighlightThreshold=0.000000,LocalExposureShadowThreshold=0.000000,LocalExposureDetailStrength=1.000000,LocalExposureBlurredLuminanceBlend=0.600000,LocalExposureBlurredLuminanceKernelSizePercent=50.000000,LocalExposureMiddleGreyBias=0.000000,LensFlareIntensity=1.000000,LensFlareTint=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),LensFlareBokehSize=3.000000,LensFlareThreshold=8.000000,LensFlareBokehShape=None,LensFlareTints[0]=(R=1.000000,G=0.800000,B=0.400000,A=0.600000),LensFlareTints[1]=(R=1.000000,G=1.000000,B=0.600000,A=0.530000),LensFlareTints[2]=(R=0.800000,G=0.800000,B=1.000000,A=0.460000),LensFlareTints[3]=(R=0.500000,G=1.000000,B=0.400000,A=0.390000),LensFlareTints[4]=(R=0.500000,G=0.800000,B=1.000000,A=0.310000),LensFlareTints[5]=(R=0.900000,G=1.000000,B=0.800000,A=0.270000),LensFlareTints[6]=(R=1.000000,G=0.800000,B=0.400000,A=0.220000),LensFlareTints[7]=(R=0.900000,G=0.700000,B=0.700000,A=0.150000),VignetteIntensity=0.400000,Sharpen=0.000000,FilmGrainIntensity=0.000000,FilmGrainIntensityShadows=1.000000,FilmGrainIntensityMidtones=1.000000,FilmGrainIntensityHighlights=1.000000,FilmGrainShadowsMax=0.090000,FilmGrainHighlightsMin=0.500000,FilmGrainHighlightsMax=1.000000,FilmGrainTexelSize=1.000000,FilmGrainTexture=None,AmbientOcclusionIntensity=0.500000,AmbientOcclusionStaticFraction=1.000000,AmbientOcclusionRadius=200.000000,AmbientOcclusionRadiusInWS=False,AmbientOcclusionFadeDistance=8000.000000,AmbientOcclusionFadeRadius=5000.000000,AmbientOcclusionPower=2.000000,AmbientOcclusionBias=3.000000,AmbientOcclusionQuality=50.000000,AmbientOcclusionMipBlend=0.600000,AmbientOcclusionMipScale=1.700000,AmbientOcclusionMipThreshold=0.010000,AmbientOcclusionTemporalBlendWeight=0.100000,RayTracingAO=False,RayTracingAOSamplesPerPixel=1,RayTracingAOIntensity=1.000000,RayTracingAORadius=200.000000,ColorGradingIntensity=1.000000,ColorGradingLUT=None,DepthOfFieldSensorWidth=24.576000,DepthOfFieldSqueezeFactor=1.000000,DepthOfFieldFocalDistance=0.000000,DepthOfFieldDepthBlurAmount=1.000000,DepthOfFieldDepthBlurRadius=0.000000,DepthOfFieldUseHairDepth=False,DepthOfFieldFocalRegion=0.000000,DepthOfFieldNearTransitionRegion=300.000000,DepthOfFieldFarTransitionRegion=500.000000,DepthOfFieldScale=0.000000,DepthOfFieldNearBlurSize=15.000000,DepthOfFieldFarBlurSize=15.000000,DepthOfFieldOcclusion=0.400000,DepthOfFieldSkyFocusDistance=0.000000,DepthOfFieldVignetteSize=200.000000,MotionBlurAmount=0.500000,MotionBlurMax=5.000000,MotionBlurTargetFPS=30,MotionBlurPerObjectSize=0.000000,TranslucencyType=Raster,RayTracingTranslucencyMaxRoughness=0.600000,RayTracingTranslucencyRefractionRays=3,RayTracingTranslucencySamplesPerPixel=1,RayTracingTranslucencyShadows=Hard_shadows,RayTracingTranslucencyRefraction=True,PathTracingMaxBounces=32,PathTracingSamplesPerPixel=2048,PathTracingMaxPathIntensity=24.000000,PathTracingEnableEmissiveMaterials=True,PathTracingEnableReferenceDOF=False,PathTracingEnableReferenceAtmosphere=False,PathTracingEnableDenoiser=True,PathTracingIncludeEmissive=True,PathTracingIncludeDiffuse=True,PathTracingIncludeIndirectDiffuse=True,PathTracingIncludeSpecular=True,PathTracingIncludeIndirectSpecular=True,PathTracingIncludeVolume=True,PathTracingIncludeIndirectVolume=True,UserFlags=0,WeightedBlendables=(Array=)),LightingRigRotation=0.000000,RotationSpeed=2.000000,DirectionalLightRotation=(Pitch=-40.000000,Yaw=-67.500000,Roll=0.000000),bEnableToneMapping=False,bShowMeshEdges=True)
+
diff --git a/Config/DefaultEditorPerProjectUserSettings.ini b/Config/DefaultEditorPerProjectUserSettings.ini
new file mode 100644
index 0000000..220a551
--- /dev/null
+++ b/Config/DefaultEditorPerProjectUserSettings.ini
@@ -0,0 +1,2 @@
+[ContentBrowser]
+ContentBrowserTab1.SelectedPaths=/Game/FirstPerson
\ No newline at end of file
diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini
new file mode 100644
index 0000000..20b38fd
--- /dev/null
+++ b/Config/DefaultEngine.ini
@@ -0,0 +1,104 @@
+[DevOptions.Shaders]
+DirectoriesToWatch=/BladeSmith/Shaders
+
+[/Script/Engine.CollisionProfile]
++Profiles=(Name="Projectile",CollisionEnabled=QueryOnly,ObjectTypeName="Projectile",CustomResponses=,HelpMessage="Preset for projectiles",bCanModify=True)
++DefaultChannelResponses=(Channel=ECC_GameTraceChannel1,Name="Projectile",DefaultResponse=ECR_Block,bTraceType=False,bStaticObject=False)
++EditProfiles=(Name="Trigger",CustomResponses=((Channel=Projectile, Response=ECR_Ignore)))
+
+[/Script/EngineSettings.GameMapsSettings]
+EditorStartupMap=/Game/FirstPerson/Maps/FirstPersonMap.FirstPersonMap
+LocalMapOptions=
+TransitionMap=
+bUseSplitscreen=True
+TwoPlayerSplitscreenLayout=Horizontal
+ThreePlayerSplitscreenLayout=FavorTop
+GameInstanceClass=/Script/Engine.GameInstance
+GameDefaultMap=/Game/FirstPerson/Maps/FirstPersonMap.FirstPersonMap
+ServerDefaultMap=/Engine/Maps/Entry
+GlobalDefaultGameMode=/Game/FirstPerson/Blueprints/BP_FirstPersonGameMode.BP_FirstPersonGameMode_C
+GlobalDefaultServerGameMode=None
+
+[/Script/Engine.RendererSettings]
+r.ReflectionMethod=1
+r.GenerateMeshDistanceFields=True
+r.DynamicGlobalIlluminationMethod=1
+r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=True
+r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=true
+r.AllowStaticLighting=False
+
+
+r.SkinCache.CompileShaders=True
+
+r.RayTracing=True
+
+r.Shadow.Virtual.Enable=1
+
+r.DefaultFeature.LocalExposure.HighlightContrastScale=0.8
+
+r.DefaultFeature.LocalExposure.ShadowContrastScale=0.8
+
+[/Script/WindowsTargetPlatform.WindowsTargetSettings]
+DefaultGraphicsRHI=DefaultGraphicsRHI_DX12
+DefaultGraphicsRHI=DefaultGraphicsRHI_DX12
+-D3D12TargetedShaderFormats=PCD3D_SM5
++D3D12TargetedShaderFormats=PCD3D_SM6
+-D3D11TargetedShaderFormats=PCD3D_SM5
++D3D11TargetedShaderFormats=PCD3D_SM5
+Compiler=Default
+AudioSampleRate=48000
+AudioCallbackBufferFrameSize=1024
+AudioNumBuffersToEnqueue=1
+AudioMaxChannels=0
+AudioNumSourceWorkers=4
+SpatializationPlugin=
+SourceDataOverridePlugin=
+ReverbPlugin=
+OcclusionPlugin=
+CompressionOverrides=(bOverrideCompressionTimes=False,DurationThreshold=5.000000,MaxNumRandomBranches=0,SoundCueQualityIndex=0)
+CacheSizeKB=65536
+MaxChunkSizeOverrideKB=0
+bResampleForDevice=False
+MaxSampleRate=48000.000000
+HighSampleRate=32000.000000
+MedSampleRate=24000.000000
+LowSampleRate=12000.000000
+MinSampleRate=8000.000000
+CompressionQualityModifier=1.000000
+AutoStreamingThreshold=0.000000
+SoundCueCookQualityIndex=-1
+
+[/Script/LinuxTargetPlatform.LinuxTargetSettings]
+-TargetedRHIs=SF_VULKAN_SM5
++TargetedRHIs=SF_VULKAN_SM6
+
+[/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings]
+bEnablePlugin=True
+bAllowNetworkConnection=True
+SecurityToken=7B0AA718435214EB1E253DACC60399C4
+bIncludeInShipping=False
+bAllowExternalStartInShipping=False
+bCompileAFSProject=False
+bUseCompression=False
+bLogFiles=False
+bReportStats=False
+ConnectionType=USBOnly
+bUseManualIPAddress=False
+ManualIPAddress=
+
+
+[/Script/HardwareTargeting.HardwareTargetingSettings]
+TargetedHardwareClass=Desktop
+AppliedTargetedHardwareClass=Desktop
+DefaultGraphicsPerformance=Maximum
+AppliedDefaultGraphicsPerformance=Maximum
+
+[/Script/Engine.Engine]
++ActiveGameNameRedirects=(OldGameName="TP_FirstPerson",NewGameName="/Script/BladeSmith")
++ActiveGameNameRedirects=(OldGameName="/Script/TP_FirstPerson",NewGameName="/Script/BladeSmith")
++ActiveClassRedirects=(OldClassName="TP_FirstPersonWeaponComponent",NewClassName="BladeSmithWeaponComponent")
++ActiveClassRedirects=(OldClassName="TP_FirstPersonProjectile",NewClassName="BladeSmithProjectile")
++ActiveClassRedirects=(OldClassName="TP_FirstPersonPickUpComponent",NewClassName="BladeSmithPickUpComponent")
++ActiveClassRedirects=(OldClassName="TP_FirstPersonGameMode",NewClassName="BladeSmithGameMode")
++ActiveClassRedirects=(OldClassName="TP_FirstPersonCharacter",NewClassName="BladeSmithCharacter")
+
diff --git a/Config/DefaultGame.ini b/Config/DefaultGame.ini
new file mode 100644
index 0000000..35a8f43
--- /dev/null
+++ b/Config/DefaultGame.ini
@@ -0,0 +1,13 @@
+[ProjectSettings]
+ProjectID=(A=1823396784,B=1298598689,C=1743498150,D=-2048051708)
+ProjectName=First Person Template
+
+[/Script/EngineSettings.GeneralProjectSettings]
+ProjectID=C83E956449141B36672C24AFE972FE8E
+
+[StartupActions]
+bAddPacks=True
+InsertPack=(PackSource="StarterContent.upack",PackName="StarterContent")
+
+[SectionsToSave]
++Section=StartupActions
diff --git a/Config/DefaultInput.ini b/Config/DefaultInput.ini
new file mode 100644
index 0000000..0d0b0e5
--- /dev/null
+++ b/Config/DefaultInput.ini
@@ -0,0 +1,109 @@
+[/Script/Engine.InputSettings]
+-AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
+-AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
+-AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
+-AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f))
+-AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f))
+-AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f))
+-AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f))
++AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MouseWheelAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_LeftTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_RightTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Vive_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Vive_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Touch",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Left_FaceButton1",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Left_FaceButton2",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Left_IndexPointing",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Left_ThumbUp",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Left_ThumbRest",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Right_FaceButton1",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Right_FaceButton2",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Right_IndexPointing",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Right_ThumbUp",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusTouch_Right_ThumbRest",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusHand_Left_ThumbPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusHand_Left_IndexPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusHand_Left_MiddlePinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusHand_Left_RingPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusHand_Left_PinkPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusHand_Right_ThumbPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusHand_Right_IndexPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusHand_Right_MiddlePinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusHand_Right_RingPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
++AxisConfig=(AxisKeyName="OculusHand_Right_PinkPinchStrength",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
+bAltEnterTogglesFullscreen=True
+bF11TogglesFullscreen=True
+bUseMouseForTouch=False
+bEnableMouseSmoothing=True
+bEnableFOVScaling=True
+bCaptureMouseOnLaunch=True
+bEnableLegacyInputScales=True
+bEnableMotionControls=True
+bFilterInputByPlatformUser=False
+bShouldFlushPressedKeysOnViewportFocusLost=True
+bAlwaysShowTouchInterface=False
+bShowConsoleOnFourFingerTap=True
+bEnableGestureRecognizer=False
+bUseAutocorrect=False
+DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown
+DefaultViewportMouseLockMode=LockOnCapture
+FOVScale=0.011110
+DoubleClickTime=0.200000
+DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput
+DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent
+DefaultTouchInterface=/Game/FirstPerson/Input/MobileControls.MobileControls
+-ConsoleKeys=Tilde
++ConsoleKeys=Tilde
+
diff --git a/Content/FPWeapon/Audio/FirstPersonTemplateWeaponFire02.uasset b/Content/FPWeapon/Audio/FirstPersonTemplateWeaponFire02.uasset
new file mode 100644
index 0000000..fc187ea
Binary files /dev/null and b/Content/FPWeapon/Audio/FirstPersonTemplateWeaponFire02.uasset differ
diff --git a/Content/FPWeapon/Materials/BaseMaterial.uasset b/Content/FPWeapon/Materials/BaseMaterial.uasset
new file mode 100644
index 0000000..a6f834c
Binary files /dev/null and b/Content/FPWeapon/Materials/BaseMaterial.uasset differ
diff --git a/Content/FPWeapon/Materials/FirstPersonProjectileMaterial.uasset b/Content/FPWeapon/Materials/FirstPersonProjectileMaterial.uasset
new file mode 100644
index 0000000..8efce7e
Binary files /dev/null and b/Content/FPWeapon/Materials/FirstPersonProjectileMaterial.uasset differ
diff --git a/Content/FPWeapon/Materials/M_FPGun.uasset b/Content/FPWeapon/Materials/M_FPGun.uasset
new file mode 100644
index 0000000..5595aa7
Binary files /dev/null and b/Content/FPWeapon/Materials/M_FPGun.uasset differ
diff --git a/Content/FPWeapon/Materials/M_FPPistol.uasset b/Content/FPWeapon/Materials/M_FPPistol.uasset
new file mode 100644
index 0000000..71ebba3
Binary files /dev/null and b/Content/FPWeapon/Materials/M_FPPistol.uasset differ
diff --git a/Content/FPWeapon/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset b/Content/FPWeapon/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset
new file mode 100644
index 0000000..c6436a2
Binary files /dev/null and b/Content/FPWeapon/Materials/MaterialLayers/ML_GlossyBlack_Latex_UE4.uasset differ
diff --git a/Content/FPWeapon/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset b/Content/FPWeapon/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset
new file mode 100644
index 0000000..c3124ee
Binary files /dev/null and b/Content/FPWeapon/Materials/MaterialLayers/ML_Plastic_Shiny_Beige.uasset differ
diff --git a/Content/FPWeapon/Materials/MaterialLayers/ML_Screen.uasset b/Content/FPWeapon/Materials/MaterialLayers/ML_Screen.uasset
new file mode 100644
index 0000000..a93197f
Binary files /dev/null and b/Content/FPWeapon/Materials/MaterialLayers/ML_Screen.uasset differ
diff --git a/Content/FPWeapon/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset b/Content/FPWeapon/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset
new file mode 100644
index 0000000..1fbfe3e
Binary files /dev/null and b/Content/FPWeapon/Materials/MaterialLayers/ML_SoftMetal_UE4.uasset differ
diff --git a/Content/FPWeapon/Materials/MaterialLayers/T_ML_Aluminum01.uasset b/Content/FPWeapon/Materials/MaterialLayers/T_ML_Aluminum01.uasset
new file mode 100644
index 0000000..abb5c8f
Binary files /dev/null and b/Content/FPWeapon/Materials/MaterialLayers/T_ML_Aluminum01.uasset differ
diff --git a/Content/FPWeapon/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset b/Content/FPWeapon/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset
new file mode 100644
index 0000000..91bfa7b
Binary files /dev/null and b/Content/FPWeapon/Materials/MaterialLayers/T_ML_Aluminum01_N.uasset differ
diff --git a/Content/FPWeapon/Materials/MaterialLayers/T_ML_FineRubber.uasset b/Content/FPWeapon/Materials/MaterialLayers/T_ML_FineRubber.uasset
new file mode 100644
index 0000000..809ab90
Binary files /dev/null and b/Content/FPWeapon/Materials/MaterialLayers/T_ML_FineRubber.uasset differ
diff --git a/Content/FPWeapon/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset b/Content/FPWeapon/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset
new file mode 100644
index 0000000..9003b8a
Binary files /dev/null and b/Content/FPWeapon/Materials/MaterialLayers/T_ML_Rubber_Blue_01_D.uasset differ
diff --git a/Content/FPWeapon/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset b/Content/FPWeapon/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset
new file mode 100644
index 0000000..7b8f783
Binary files /dev/null and b/Content/FPWeapon/Materials/MaterialLayers/T_ML_Rubber_Blue_01_N.uasset differ
diff --git a/Content/FPWeapon/Mesh/FirstPersonProjectileMesh.uasset b/Content/FPWeapon/Mesh/FirstPersonProjectileMesh.uasset
new file mode 100644
index 0000000..2fd90d6
Binary files /dev/null and b/Content/FPWeapon/Mesh/FirstPersonProjectileMesh.uasset differ
diff --git a/Content/FPWeapon/Mesh/SK_FPGun.uasset b/Content/FPWeapon/Mesh/SK_FPGun.uasset
new file mode 100644
index 0000000..5355b9b
Binary files /dev/null and b/Content/FPWeapon/Mesh/SK_FPGun.uasset differ
diff --git a/Content/FPWeapon/Mesh/SK_FPGun_Physics.uasset b/Content/FPWeapon/Mesh/SK_FPGun_Physics.uasset
new file mode 100644
index 0000000..a5c2ad8
Binary files /dev/null and b/Content/FPWeapon/Mesh/SK_FPGun_Physics.uasset differ
diff --git a/Content/FPWeapon/Mesh/SK_FPGun_PhysicsAsset.uasset b/Content/FPWeapon/Mesh/SK_FPGun_PhysicsAsset.uasset
new file mode 100644
index 0000000..45fe584
Binary files /dev/null and b/Content/FPWeapon/Mesh/SK_FPGun_PhysicsAsset.uasset differ
diff --git a/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset b/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset
new file mode 100644
index 0000000..74c94d5
Binary files /dev/null and b/Content/FPWeapon/Mesh/SK_FPGun_Skeleton.uasset differ
diff --git a/Content/FPWeapon/Mesh/SM_Pistol.uasset b/Content/FPWeapon/Mesh/SM_Pistol.uasset
new file mode 100644
index 0000000..8986b98
Binary files /dev/null and b/Content/FPWeapon/Mesh/SM_Pistol.uasset differ
diff --git a/Content/FPWeapon/Textures/T_FPGun_M.uasset b/Content/FPWeapon/Textures/T_FPGun_M.uasset
new file mode 100644
index 0000000..62349ed
Binary files /dev/null and b/Content/FPWeapon/Textures/T_FPGun_M.uasset differ
diff --git a/Content/FPWeapon/Textures/T_FPGun_N.uasset b/Content/FPWeapon/Textures/T_FPGun_N.uasset
new file mode 100644
index 0000000..82db14c
Binary files /dev/null and b/Content/FPWeapon/Textures/T_FPGun_N.uasset differ
diff --git a/Content/FPWeapon/Textures/T_Pistol_Masks.uasset b/Content/FPWeapon/Textures/T_Pistol_Masks.uasset
new file mode 100644
index 0000000..d124846
Binary files /dev/null and b/Content/FPWeapon/Textures/T_Pistol_Masks.uasset differ
diff --git a/Content/FPWeapon/Textures/T_Pistol_N.uasset b/Content/FPWeapon/Textures/T_Pistol_N.uasset
new file mode 100644
index 0000000..f07b5ea
Binary files /dev/null and b/Content/FPWeapon/Textures/T_Pistol_N.uasset differ
diff --git a/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset b/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset
new file mode 100644
index 0000000..2f90c49
Binary files /dev/null and b/Content/FirstPerson/Blueprints/BP_FirstPersonCharacter.uasset differ
diff --git a/Content/FirstPerson/Blueprints/BP_FirstPersonGameMode.uasset b/Content/FirstPerson/Blueprints/BP_FirstPersonGameMode.uasset
new file mode 100644
index 0000000..bbac1f8
Binary files /dev/null and b/Content/FirstPerson/Blueprints/BP_FirstPersonGameMode.uasset differ
diff --git a/Content/FirstPerson/Blueprints/BP_FirstPersonProjectile.uasset b/Content/FirstPerson/Blueprints/BP_FirstPersonProjectile.uasset
new file mode 100644
index 0000000..a6ef71b
Binary files /dev/null and b/Content/FirstPerson/Blueprints/BP_FirstPersonProjectile.uasset differ
diff --git a/Content/FirstPerson/Blueprints/BP_IronBlock.uasset b/Content/FirstPerson/Blueprints/BP_IronBlock.uasset
new file mode 100644
index 0000000..77aad8d
Binary files /dev/null and b/Content/FirstPerson/Blueprints/BP_IronBlock.uasset differ
diff --git a/Content/FirstPerson/Blueprints/BP_PickUp_Rifle.uasset b/Content/FirstPerson/Blueprints/BP_PickUp_Rifle.uasset
new file mode 100644
index 0000000..aba823a
Binary files /dev/null and b/Content/FirstPerson/Blueprints/BP_PickUp_Rifle.uasset differ
diff --git a/Content/FirstPerson/Input/Actions/IA_ChangeCam.uasset b/Content/FirstPerson/Input/Actions/IA_ChangeCam.uasset
new file mode 100644
index 0000000..7e1b23a
Binary files /dev/null and b/Content/FirstPerson/Input/Actions/IA_ChangeCam.uasset differ
diff --git a/Content/FirstPerson/Input/Actions/IA_Hammer.uasset b/Content/FirstPerson/Input/Actions/IA_Hammer.uasset
new file mode 100644
index 0000000..c243ea1
Binary files /dev/null and b/Content/FirstPerson/Input/Actions/IA_Hammer.uasset differ
diff --git a/Content/FirstPerson/Input/Actions/IA_Jump.uasset b/Content/FirstPerson/Input/Actions/IA_Jump.uasset
new file mode 100644
index 0000000..9201295
Binary files /dev/null and b/Content/FirstPerson/Input/Actions/IA_Jump.uasset differ
diff --git a/Content/FirstPerson/Input/Actions/IA_Look.uasset b/Content/FirstPerson/Input/Actions/IA_Look.uasset
new file mode 100644
index 0000000..b6b818a
Binary files /dev/null and b/Content/FirstPerson/Input/Actions/IA_Look.uasset differ
diff --git a/Content/FirstPerson/Input/Actions/IA_Move.uasset b/Content/FirstPerson/Input/Actions/IA_Move.uasset
new file mode 100644
index 0000000..51bd8d3
Binary files /dev/null and b/Content/FirstPerson/Input/Actions/IA_Move.uasset differ
diff --git a/Content/FirstPerson/Input/Actions/IA_Shoot.uasset b/Content/FirstPerson/Input/Actions/IA_Shoot.uasset
new file mode 100644
index 0000000..842a1ba
Binary files /dev/null and b/Content/FirstPerson/Input/Actions/IA_Shoot.uasset differ
diff --git a/Content/FirstPerson/Input/IMC_Default.uasset b/Content/FirstPerson/Input/IMC_Default.uasset
new file mode 100644
index 0000000..99ca0e2
Binary files /dev/null and b/Content/FirstPerson/Input/IMC_Default.uasset differ
diff --git a/Content/FirstPerson/Input/IMC_Weapons.uasset b/Content/FirstPerson/Input/IMC_Weapons.uasset
new file mode 100644
index 0000000..bf34dab
Binary files /dev/null and b/Content/FirstPerson/Input/IMC_Weapons.uasset differ
diff --git a/Content/FirstPerson/Input/MobileControls.uasset b/Content/FirstPerson/Input/MobileControls.uasset
new file mode 100644
index 0000000..1ec494b
Binary files /dev/null and b/Content/FirstPerson/Input/MobileControls.uasset differ
diff --git a/Content/FirstPerson/IronBlock.uasset b/Content/FirstPerson/IronBlock.uasset
new file mode 100644
index 0000000..0ce45a3
Binary files /dev/null and b/Content/FirstPerson/IronBlock.uasset differ
diff --git a/Content/FirstPerson/Maps/FirstPersonMap.umap b/Content/FirstPerson/Maps/FirstPersonMap.umap
new file mode 100644
index 0000000..f9c99e9
Binary files /dev/null and b/Content/FirstPerson/Maps/FirstPersonMap.umap differ
diff --git a/Content/FirstPerson/Maps/_GENERATED/starm/Box_55C221F2.uasset b/Content/FirstPerson/Maps/_GENERATED/starm/Box_55C221F2.uasset
new file mode 100644
index 0000000..568834b
Binary files /dev/null and b/Content/FirstPerson/Maps/_GENERATED/starm/Box_55C221F2.uasset differ
diff --git a/Content/FirstPerson/Material.uasset b/Content/FirstPerson/Material.uasset
new file mode 100644
index 0000000..05b61d5
Binary files /dev/null and b/Content/FirstPerson/Material.uasset differ
diff --git a/Content/FirstPerson/NewMaterial.uasset b/Content/FirstPerson/NewMaterial.uasset
new file mode 100644
index 0000000..fe99311
Binary files /dev/null and b/Content/FirstPerson/NewMaterial.uasset differ
diff --git a/Content/FirstPerson/iron_displacement.uasset b/Content/FirstPerson/iron_displacement.uasset
new file mode 100644
index 0000000..59fa0e8
Binary files /dev/null and b/Content/FirstPerson/iron_displacement.uasset differ
diff --git a/Content/FirstPersonArms/Animations/FP_Falling.uasset b/Content/FirstPersonArms/Animations/FP_Falling.uasset
new file mode 100644
index 0000000..e794510
Binary files /dev/null and b/Content/FirstPersonArms/Animations/FP_Falling.uasset differ
diff --git a/Content/FirstPersonArms/Animations/FP_Idle.uasset b/Content/FirstPersonArms/Animations/FP_Idle.uasset
new file mode 100644
index 0000000..019b8e7
Binary files /dev/null and b/Content/FirstPersonArms/Animations/FP_Idle.uasset differ
diff --git a/Content/FirstPersonArms/Animations/FP_Jump.uasset b/Content/FirstPersonArms/Animations/FP_Jump.uasset
new file mode 100644
index 0000000..11e7634
Binary files /dev/null and b/Content/FirstPersonArms/Animations/FP_Jump.uasset differ
diff --git a/Content/FirstPersonArms/Animations/FP_Land.uasset b/Content/FirstPersonArms/Animations/FP_Land.uasset
new file mode 100644
index 0000000..562be0a
Binary files /dev/null and b/Content/FirstPersonArms/Animations/FP_Land.uasset differ
diff --git a/Content/FirstPersonArms/Animations/FP_Rifle_Falling.uasset b/Content/FirstPersonArms/Animations/FP_Rifle_Falling.uasset
new file mode 100644
index 0000000..0c33c78
Binary files /dev/null and b/Content/FirstPersonArms/Animations/FP_Rifle_Falling.uasset differ
diff --git a/Content/FirstPersonArms/Animations/FP_Rifle_Fire.uasset b/Content/FirstPersonArms/Animations/FP_Rifle_Fire.uasset
new file mode 100644
index 0000000..286d2c7
Binary files /dev/null and b/Content/FirstPersonArms/Animations/FP_Rifle_Fire.uasset differ
diff --git a/Content/FirstPersonArms/Animations/FP_Rifle_Idle.uasset b/Content/FirstPersonArms/Animations/FP_Rifle_Idle.uasset
new file mode 100644
index 0000000..46d80cf
Binary files /dev/null and b/Content/FirstPersonArms/Animations/FP_Rifle_Idle.uasset differ
diff --git a/Content/FirstPersonArms/Animations/FP_Rifle_Jump.uasset b/Content/FirstPersonArms/Animations/FP_Rifle_Jump.uasset
new file mode 100644
index 0000000..6393742
Binary files /dev/null and b/Content/FirstPersonArms/Animations/FP_Rifle_Jump.uasset differ
diff --git a/Content/FirstPersonArms/Animations/FP_Rifle_Land.uasset b/Content/FirstPersonArms/Animations/FP_Rifle_Land.uasset
new file mode 100644
index 0000000..05ccc7d
Binary files /dev/null and b/Content/FirstPersonArms/Animations/FP_Rifle_Land.uasset differ
diff --git a/Content/FirstPersonArms/Animations/FP_Rifle_Run.uasset b/Content/FirstPersonArms/Animations/FP_Rifle_Run.uasset
new file mode 100644
index 0000000..3bf7baf
Binary files /dev/null and b/Content/FirstPersonArms/Animations/FP_Rifle_Run.uasset differ
diff --git a/Content/FirstPersonArms/Animations/FP_Rifle_Shoot_Montage.uasset b/Content/FirstPersonArms/Animations/FP_Rifle_Shoot_Montage.uasset
new file mode 100644
index 0000000..db54723
Binary files /dev/null and b/Content/FirstPersonArms/Animations/FP_Rifle_Shoot_Montage.uasset differ
diff --git a/Content/FirstPersonArms/Animations/FP_Run_Fwd.uasset b/Content/FirstPersonArms/Animations/FP_Run_Fwd.uasset
new file mode 100644
index 0000000..ac4400c
Binary files /dev/null and b/Content/FirstPersonArms/Animations/FP_Run_Fwd.uasset differ
diff --git a/Content/FirstPersonArms/Animations/FirstPerson_AnimBP.uasset b/Content/FirstPersonArms/Animations/FirstPerson_AnimBP.uasset
new file mode 100644
index 0000000..764bf6f
Binary files /dev/null and b/Content/FirstPersonArms/Animations/FirstPerson_AnimBP.uasset differ
diff --git a/Content/FirstPersonArms/Character/Materials/Functions/CA_Mannequin.uasset b/Content/FirstPersonArms/Character/Materials/Functions/CA_Mannequin.uasset
new file mode 100644
index 0000000..d1c8f07
Binary files /dev/null and b/Content/FirstPersonArms/Character/Materials/Functions/CA_Mannequin.uasset differ
diff --git a/Content/FirstPersonArms/Character/Materials/Functions/ChromaticCurve.uasset b/Content/FirstPersonArms/Character/Materials/Functions/ChromaticCurve.uasset
new file mode 100644
index 0000000..4e4aa79
Binary files /dev/null and b/Content/FirstPersonArms/Character/Materials/Functions/ChromaticCurve.uasset differ
diff --git a/Content/FirstPersonArms/Character/Materials/Functions/MF_Diffraction.uasset b/Content/FirstPersonArms/Character/Materials/Functions/MF_Diffraction.uasset
new file mode 100644
index 0000000..7f5e7c6
Binary files /dev/null and b/Content/FirstPersonArms/Character/Materials/Functions/MF_Diffraction.uasset differ
diff --git a/Content/FirstPersonArms/Character/Materials/Functions/MF_logo3layers.uasset b/Content/FirstPersonArms/Character/Materials/Functions/MF_logo3layers.uasset
new file mode 100644
index 0000000..13b36fb
Binary files /dev/null and b/Content/FirstPersonArms/Character/Materials/Functions/MF_logo3layers.uasset differ
diff --git a/Content/FirstPersonArms/Character/Materials/Functions/ML_BaseColorFallOff.uasset b/Content/FirstPersonArms/Character/Materials/Functions/ML_BaseColorFallOff.uasset
new file mode 100644
index 0000000..d061fc2
Binary files /dev/null and b/Content/FirstPersonArms/Character/Materials/Functions/ML_BaseColorFallOff.uasset differ
diff --git a/Content/FirstPersonArms/Character/Materials/Instances/Manny/MI_Manny_01.uasset b/Content/FirstPersonArms/Character/Materials/Instances/Manny/MI_Manny_01.uasset
new file mode 100644
index 0000000..168b822
Binary files /dev/null and b/Content/FirstPersonArms/Character/Materials/Instances/Manny/MI_Manny_01.uasset differ
diff --git a/Content/FirstPersonArms/Character/Materials/Instances/Manny/MI_Manny_02.uasset b/Content/FirstPersonArms/Character/Materials/Instances/Manny/MI_Manny_02.uasset
new file mode 100644
index 0000000..56dcb9e
Binary files /dev/null and b/Content/FirstPersonArms/Character/Materials/Instances/Manny/MI_Manny_02.uasset differ
diff --git a/Content/FirstPersonArms/Character/Materials/M_Mannequin.uasset b/Content/FirstPersonArms/Character/Materials/M_Mannequin.uasset
new file mode 100644
index 0000000..ded1ffe
Binary files /dev/null and b/Content/FirstPersonArms/Character/Materials/M_Mannequin.uasset differ
diff --git a/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms.uasset b/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms.uasset
new file mode 100644
index 0000000..a06ab61
Binary files /dev/null and b/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms.uasset differ
diff --git a/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms_PhysicsAsset.uasset b/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms_PhysicsAsset.uasset
new file mode 100644
index 0000000..204f1f0
Binary files /dev/null and b/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms_PhysicsAsset.uasset differ
diff --git a/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms_Skeleton.uasset b/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms_Skeleton.uasset
new file mode 100644
index 0000000..0e893ec
Binary files /dev/null and b/Content/FirstPersonArms/Character/Mesh/SK_Mannequin_Arms_Skeleton.uasset differ
diff --git a/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_ASAOPMASK_MSK.uasset b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_ASAOPMASK_MSK.uasset
new file mode 100644
index 0000000..d0a8410
Binary files /dev/null and b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_ASAOPMASK_MSK.uasset differ
diff --git a/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_BN.uasset b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_BN.uasset
new file mode 100644
index 0000000..0c29012
Binary files /dev/null and b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_BN.uasset differ
diff --git a/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_CCRCCPlastic_MSK.uasset b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_CCRCCPlastic_MSK.uasset
new file mode 100644
index 0000000..9998bef
Binary files /dev/null and b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_CCRCCPlastic_MSK.uasset differ
diff --git a/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_D.uasset b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_D.uasset
new file mode 100644
index 0000000..28cff0c
Binary files /dev/null and b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_D.uasset differ
diff --git a/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_MSR_MSK.uasset b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_MSR_MSK.uasset
new file mode 100644
index 0000000..1a6eb0c
Binary files /dev/null and b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_MSR_MSK.uasset differ
diff --git a/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_N.uasset b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_N.uasset
new file mode 100644
index 0000000..d8451ac
Binary files /dev/null and b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_N.uasset differ
diff --git a/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_Tan.uasset b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_Tan.uasset
new file mode 100644
index 0000000..67202b5
Binary files /dev/null and b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_01_Tan.uasset differ
diff --git a/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_ASAOPMASK_MSK.uasset b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_ASAOPMASK_MSK.uasset
new file mode 100644
index 0000000..0367acc
Binary files /dev/null and b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_ASAOPMASK_MSK.uasset differ
diff --git a/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_BN.uasset b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_BN.uasset
new file mode 100644
index 0000000..6b9a723
Binary files /dev/null and b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_BN.uasset differ
diff --git a/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_CCRCCPlastic_MSK.uasset b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_CCRCCPlastic_MSK.uasset
new file mode 100644
index 0000000..c30481b
Binary files /dev/null and b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_CCRCCPlastic_MSK.uasset differ
diff --git a/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_D.uasset b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_D.uasset
new file mode 100644
index 0000000..e0b3c82
Binary files /dev/null and b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_D.uasset differ
diff --git a/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_MSR_MSK.uasset b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_MSR_MSK.uasset
new file mode 100644
index 0000000..b6b921a
Binary files /dev/null and b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_MSR_MSK.uasset differ
diff --git a/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_N.uasset b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_N.uasset
new file mode 100644
index 0000000..3ba7dec
Binary files /dev/null and b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_N.uasset differ
diff --git a/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_Tan.uasset b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_Tan.uasset
new file mode 100644
index 0000000..2ab4d61
Binary files /dev/null and b/Content/FirstPersonArms/Character/Textures/Manny/T_Manny_02_Tan.uasset differ
diff --git a/Content/FirstPersonArms/Character/Textures/Shared/T_UE_Logo_M.uasset b/Content/FirstPersonArms/Character/Textures/Shared/T_UE_Logo_M.uasset
new file mode 100644
index 0000000..30213c8
Binary files /dev/null and b/Content/FirstPersonArms/Character/Textures/Shared/T_UE_Logo_M.uasset differ
diff --git a/Content/LevelPrototyping/Materials/MF_ProcGrid.uasset b/Content/LevelPrototyping/Materials/MF_ProcGrid.uasset
new file mode 100644
index 0000000..84dde04
Binary files /dev/null and b/Content/LevelPrototyping/Materials/MF_ProcGrid.uasset differ
diff --git a/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray.uasset b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray.uasset
new file mode 100644
index 0000000..4605682
Binary files /dev/null and b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray.uasset differ
diff --git a/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_02.uasset b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_02.uasset
new file mode 100644
index 0000000..2accd35
Binary files /dev/null and b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_02.uasset differ
diff --git a/Content/LevelPrototyping/Materials/MI_PrototypeGrid_TopDark.uasset b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_TopDark.uasset
new file mode 100644
index 0000000..bc39915
Binary files /dev/null and b/Content/LevelPrototyping/Materials/MI_PrototypeGrid_TopDark.uasset differ
diff --git a/Content/LevelPrototyping/Materials/MI_Solid_Blue.uasset b/Content/LevelPrototyping/Materials/MI_Solid_Blue.uasset
new file mode 100644
index 0000000..7b7ad88
Binary files /dev/null and b/Content/LevelPrototyping/Materials/MI_Solid_Blue.uasset differ
diff --git a/Content/LevelPrototyping/Materials/M_PrototypeGrid.uasset b/Content/LevelPrototyping/Materials/M_PrototypeGrid.uasset
new file mode 100644
index 0000000..f61487d
Binary files /dev/null and b/Content/LevelPrototyping/Materials/M_PrototypeGrid.uasset differ
diff --git a/Content/LevelPrototyping/Materials/M_Solid.uasset b/Content/LevelPrototyping/Materials/M_Solid.uasset
new file mode 100644
index 0000000..37a29b9
Binary files /dev/null and b/Content/LevelPrototyping/Materials/M_Solid.uasset differ
diff --git a/Content/LevelPrototyping/Meshes/SM_ChamferCube.uasset b/Content/LevelPrototyping/Meshes/SM_ChamferCube.uasset
new file mode 100644
index 0000000..fe6da62
Binary files /dev/null and b/Content/LevelPrototyping/Meshes/SM_ChamferCube.uasset differ
diff --git a/Content/LevelPrototyping/Meshes/SM_Cube.uasset b/Content/LevelPrototyping/Meshes/SM_Cube.uasset
new file mode 100644
index 0000000..0e7d2a3
Binary files /dev/null and b/Content/LevelPrototyping/Meshes/SM_Cube.uasset differ
diff --git a/Content/LevelPrototyping/Meshes/SM_Cylinder.uasset b/Content/LevelPrototyping/Meshes/SM_Cylinder.uasset
new file mode 100644
index 0000000..2dc5fab
Binary files /dev/null and b/Content/LevelPrototyping/Meshes/SM_Cylinder.uasset differ
diff --git a/Content/LevelPrototyping/Meshes/SM_QuarterCylinder.uasset b/Content/LevelPrototyping/Meshes/SM_QuarterCylinder.uasset
new file mode 100644
index 0000000..cbd952c
Binary files /dev/null and b/Content/LevelPrototyping/Meshes/SM_QuarterCylinder.uasset differ
diff --git a/Content/LevelPrototyping/Meshes/SM_Ramp.uasset b/Content/LevelPrototyping/Meshes/SM_Ramp.uasset
new file mode 100644
index 0000000..f1f05c6
Binary files /dev/null and b/Content/LevelPrototyping/Meshes/SM_Ramp.uasset differ
diff --git a/Content/LevelPrototyping/Textures/T_GridChecker_A.uasset b/Content/LevelPrototyping/Textures/T_GridChecker_A.uasset
new file mode 100644
index 0000000..e901d24
Binary files /dev/null and b/Content/LevelPrototyping/Textures/T_GridChecker_A.uasset differ
diff --git a/Content/Res/Box2w4.uasset b/Content/Res/Box2w4.uasset
new file mode 100644
index 0000000..56db3c7
Binary files /dev/null and b/Content/Res/Box2w4.uasset differ
diff --git a/Content/Res/Material.uasset b/Content/Res/Material.uasset
new file mode 100644
index 0000000..4409ae6
Binary files /dev/null and b/Content/Res/Material.uasset differ
diff --git a/Content/StarterContent/Architecture/Floor_400x400.uasset b/Content/StarterContent/Architecture/Floor_400x400.uasset
new file mode 100644
index 0000000..e3b449a
Binary files /dev/null and b/Content/StarterContent/Architecture/Floor_400x400.uasset differ
diff --git a/Content/StarterContent/Architecture/Pillar_50x500.uasset b/Content/StarterContent/Architecture/Pillar_50x500.uasset
new file mode 100644
index 0000000..46aed7d
Binary files /dev/null and b/Content/StarterContent/Architecture/Pillar_50x500.uasset differ
diff --git a/Content/StarterContent/Architecture/SM_AssetPlatform.uasset b/Content/StarterContent/Architecture/SM_AssetPlatform.uasset
new file mode 100644
index 0000000..1f0f0be
Binary files /dev/null and b/Content/StarterContent/Architecture/SM_AssetPlatform.uasset differ
diff --git a/Content/StarterContent/Architecture/Wall_400x200.uasset b/Content/StarterContent/Architecture/Wall_400x200.uasset
new file mode 100644
index 0000000..a7aeff7
Binary files /dev/null and b/Content/StarterContent/Architecture/Wall_400x200.uasset differ
diff --git a/Content/StarterContent/Architecture/Wall_400x300.uasset b/Content/StarterContent/Architecture/Wall_400x300.uasset
new file mode 100644
index 0000000..959fd41
Binary files /dev/null and b/Content/StarterContent/Architecture/Wall_400x300.uasset differ
diff --git a/Content/StarterContent/Architecture/Wall_400x400.uasset b/Content/StarterContent/Architecture/Wall_400x400.uasset
new file mode 100644
index 0000000..9ad5e36
Binary files /dev/null and b/Content/StarterContent/Architecture/Wall_400x400.uasset differ
diff --git a/Content/StarterContent/Architecture/Wall_500x500.uasset b/Content/StarterContent/Architecture/Wall_500x500.uasset
new file mode 100644
index 0000000..96e5e9b
Binary files /dev/null and b/Content/StarterContent/Architecture/Wall_500x500.uasset differ
diff --git a/Content/StarterContent/Architecture/Wall_Door_400x300.uasset b/Content/StarterContent/Architecture/Wall_Door_400x300.uasset
new file mode 100644
index 0000000..8b60b28
Binary files /dev/null and b/Content/StarterContent/Architecture/Wall_Door_400x300.uasset differ
diff --git a/Content/StarterContent/Architecture/Wall_Door_400x400.uasset b/Content/StarterContent/Architecture/Wall_Door_400x400.uasset
new file mode 100644
index 0000000..55b60cb
Binary files /dev/null and b/Content/StarterContent/Architecture/Wall_Door_400x400.uasset differ
diff --git a/Content/StarterContent/Architecture/Wall_Window_400x300.uasset b/Content/StarterContent/Architecture/Wall_Window_400x300.uasset
new file mode 100644
index 0000000..cb91768
Binary files /dev/null and b/Content/StarterContent/Architecture/Wall_Window_400x300.uasset differ
diff --git a/Content/StarterContent/Architecture/Wall_Window_400x400.uasset b/Content/StarterContent/Architecture/Wall_Window_400x400.uasset
new file mode 100644
index 0000000..1d2259d
Binary files /dev/null and b/Content/StarterContent/Architecture/Wall_Window_400x400.uasset differ
diff --git a/Content/StarterContent/Audio/Collapse01.uasset b/Content/StarterContent/Audio/Collapse01.uasset
new file mode 100644
index 0000000..9c68be4
Binary files /dev/null and b/Content/StarterContent/Audio/Collapse01.uasset differ
diff --git a/Content/StarterContent/Audio/Collapse02.uasset b/Content/StarterContent/Audio/Collapse02.uasset
new file mode 100644
index 0000000..5bd3fec
Binary files /dev/null and b/Content/StarterContent/Audio/Collapse02.uasset differ
diff --git a/Content/StarterContent/Audio/Collapse_Cue.uasset b/Content/StarterContent/Audio/Collapse_Cue.uasset
new file mode 100644
index 0000000..4548e1e
Binary files /dev/null and b/Content/StarterContent/Audio/Collapse_Cue.uasset differ
diff --git a/Content/StarterContent/Audio/Explosion01.uasset b/Content/StarterContent/Audio/Explosion01.uasset
new file mode 100644
index 0000000..2ec32d8
Binary files /dev/null and b/Content/StarterContent/Audio/Explosion01.uasset differ
diff --git a/Content/StarterContent/Audio/Explosion02.uasset b/Content/StarterContent/Audio/Explosion02.uasset
new file mode 100644
index 0000000..98174ab
Binary files /dev/null and b/Content/StarterContent/Audio/Explosion02.uasset differ
diff --git a/Content/StarterContent/Audio/Explosion_Cue.uasset b/Content/StarterContent/Audio/Explosion_Cue.uasset
new file mode 100644
index 0000000..7984faf
Binary files /dev/null and b/Content/StarterContent/Audio/Explosion_Cue.uasset differ
diff --git a/Content/StarterContent/Audio/Fire01.uasset b/Content/StarterContent/Audio/Fire01.uasset
new file mode 100644
index 0000000..0c495f4
Binary files /dev/null and b/Content/StarterContent/Audio/Fire01.uasset differ
diff --git a/Content/StarterContent/Audio/Fire01_Cue.uasset b/Content/StarterContent/Audio/Fire01_Cue.uasset
new file mode 100644
index 0000000..86861b6
Binary files /dev/null and b/Content/StarterContent/Audio/Fire01_Cue.uasset differ
diff --git a/Content/StarterContent/Audio/Fire_Sparks01.uasset b/Content/StarterContent/Audio/Fire_Sparks01.uasset
new file mode 100644
index 0000000..1479dad
Binary files /dev/null and b/Content/StarterContent/Audio/Fire_Sparks01.uasset differ
diff --git a/Content/StarterContent/Audio/Fire_Sparks01_Cue.uasset b/Content/StarterContent/Audio/Fire_Sparks01_Cue.uasset
new file mode 100644
index 0000000..f93b729
Binary files /dev/null and b/Content/StarterContent/Audio/Fire_Sparks01_Cue.uasset differ
diff --git a/Content/StarterContent/Audio/Light01.uasset b/Content/StarterContent/Audio/Light01.uasset
new file mode 100644
index 0000000..8e02bab
Binary files /dev/null and b/Content/StarterContent/Audio/Light01.uasset differ
diff --git a/Content/StarterContent/Audio/Light01_Cue.uasset b/Content/StarterContent/Audio/Light01_Cue.uasset
new file mode 100644
index 0000000..a165870
Binary files /dev/null and b/Content/StarterContent/Audio/Light01_Cue.uasset differ
diff --git a/Content/StarterContent/Audio/Light02.uasset b/Content/StarterContent/Audio/Light02.uasset
new file mode 100644
index 0000000..907cd0e
Binary files /dev/null and b/Content/StarterContent/Audio/Light02.uasset differ
diff --git a/Content/StarterContent/Audio/Light02_Cue.uasset b/Content/StarterContent/Audio/Light02_Cue.uasset
new file mode 100644
index 0000000..1a63569
Binary files /dev/null and b/Content/StarterContent/Audio/Light02_Cue.uasset differ
diff --git a/Content/StarterContent/Audio/Smoke01.uasset b/Content/StarterContent/Audio/Smoke01.uasset
new file mode 100644
index 0000000..023a555
Binary files /dev/null and b/Content/StarterContent/Audio/Smoke01.uasset differ
diff --git a/Content/StarterContent/Audio/Smoke01_Cue.uasset b/Content/StarterContent/Audio/Smoke01_Cue.uasset
new file mode 100644
index 0000000..b7d7bad
Binary files /dev/null and b/Content/StarterContent/Audio/Smoke01_Cue.uasset differ
diff --git a/Content/StarterContent/Audio/Starter_Background_Cue.uasset b/Content/StarterContent/Audio/Starter_Background_Cue.uasset
new file mode 100644
index 0000000..fc9649f
Binary files /dev/null and b/Content/StarterContent/Audio/Starter_Background_Cue.uasset differ
diff --git a/Content/StarterContent/Audio/Starter_Birds01.uasset b/Content/StarterContent/Audio/Starter_Birds01.uasset
new file mode 100644
index 0000000..900fc5e
Binary files /dev/null and b/Content/StarterContent/Audio/Starter_Birds01.uasset differ
diff --git a/Content/StarterContent/Audio/Starter_Music01.uasset b/Content/StarterContent/Audio/Starter_Music01.uasset
new file mode 100644
index 0000000..d404003
Binary files /dev/null and b/Content/StarterContent/Audio/Starter_Music01.uasset differ
diff --git a/Content/StarterContent/Audio/Starter_Music_Cue.uasset b/Content/StarterContent/Audio/Starter_Music_Cue.uasset
new file mode 100644
index 0000000..1bba60d
Binary files /dev/null and b/Content/StarterContent/Audio/Starter_Music_Cue.uasset differ
diff --git a/Content/StarterContent/Audio/Starter_Wind05.uasset b/Content/StarterContent/Audio/Starter_Wind05.uasset
new file mode 100644
index 0000000..36bf8d9
Binary files /dev/null and b/Content/StarterContent/Audio/Starter_Wind05.uasset differ
diff --git a/Content/StarterContent/Audio/Starter_Wind06.uasset b/Content/StarterContent/Audio/Starter_Wind06.uasset
new file mode 100644
index 0000000..0867c74
Binary files /dev/null and b/Content/StarterContent/Audio/Starter_Wind06.uasset differ
diff --git a/Content/StarterContent/Audio/Steam01.uasset b/Content/StarterContent/Audio/Steam01.uasset
new file mode 100644
index 0000000..a1ee8a7
Binary files /dev/null and b/Content/StarterContent/Audio/Steam01.uasset differ
diff --git a/Content/StarterContent/Audio/Steam01_Cue.uasset b/Content/StarterContent/Audio/Steam01_Cue.uasset
new file mode 100644
index 0000000..2ef161f
Binary files /dev/null and b/Content/StarterContent/Audio/Steam01_Cue.uasset differ
diff --git a/Content/StarterContent/Blueprints/Assets/FogBrightnessLUT.uasset b/Content/StarterContent/Blueprints/Assets/FogBrightnessLUT.uasset
new file mode 100644
index 0000000..6babc5b
Binary files /dev/null and b/Content/StarterContent/Blueprints/Assets/FogBrightnessLUT.uasset differ
diff --git a/Content/StarterContent/Blueprints/Assets/M_LightStage_Arrows.uasset b/Content/StarterContent/Blueprints/Assets/M_LightStage_Arrows.uasset
new file mode 100644
index 0000000..55151f5
Binary files /dev/null and b/Content/StarterContent/Blueprints/Assets/M_LightStage_Arrows.uasset differ
diff --git a/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Black.uasset b/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Black.uasset
new file mode 100644
index 0000000..1e8f009
Binary files /dev/null and b/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Black.uasset differ
diff --git a/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_HDRI.uasset b/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_HDRI.uasset
new file mode 100644
index 0000000..c81172b
Binary files /dev/null and b/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_HDRI.uasset differ
diff --git a/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Master.uasset b/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Master.uasset
new file mode 100644
index 0000000..e47d5e0
Binary files /dev/null and b/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Master.uasset differ
diff --git a/Content/StarterContent/Blueprints/Assets/SM_Arrows.uasset b/Content/StarterContent/Blueprints/Assets/SM_Arrows.uasset
new file mode 100644
index 0000000..94e6203
Binary files /dev/null and b/Content/StarterContent/Blueprints/Assets/SM_Arrows.uasset differ
diff --git a/Content/StarterContent/Blueprints/Assets/Skybox.uasset b/Content/StarterContent/Blueprints/Assets/Skybox.uasset
new file mode 100644
index 0000000..54dc67a
Binary files /dev/null and b/Content/StarterContent/Blueprints/Assets/Skybox.uasset differ
diff --git a/Content/StarterContent/Blueprints/Assets/SunlightColorLUT.uasset b/Content/StarterContent/Blueprints/Assets/SunlightColorLUT.uasset
new file mode 100644
index 0000000..e2c3765
Binary files /dev/null and b/Content/StarterContent/Blueprints/Assets/SunlightColorLUT.uasset differ
diff --git a/Content/StarterContent/Blueprints/BP_LightStudio.uasset b/Content/StarterContent/Blueprints/BP_LightStudio.uasset
new file mode 100644
index 0000000..b85ba86
Binary files /dev/null and b/Content/StarterContent/Blueprints/BP_LightStudio.uasset differ
diff --git a/Content/StarterContent/Blueprints/Blueprint_CeilingLight.uasset b/Content/StarterContent/Blueprints/Blueprint_CeilingLight.uasset
new file mode 100644
index 0000000..b5b40a2
Binary files /dev/null and b/Content/StarterContent/Blueprints/Blueprint_CeilingLight.uasset differ
diff --git a/Content/StarterContent/Blueprints/Blueprint_Effect_Explosion.uasset b/Content/StarterContent/Blueprints/Blueprint_Effect_Explosion.uasset
new file mode 100644
index 0000000..3e92029
Binary files /dev/null and b/Content/StarterContent/Blueprints/Blueprint_Effect_Explosion.uasset differ
diff --git a/Content/StarterContent/Blueprints/Blueprint_Effect_Fire.uasset b/Content/StarterContent/Blueprints/Blueprint_Effect_Fire.uasset
new file mode 100644
index 0000000..a0c45b8
Binary files /dev/null and b/Content/StarterContent/Blueprints/Blueprint_Effect_Fire.uasset differ
diff --git a/Content/StarterContent/Blueprints/Blueprint_Effect_Smoke.uasset b/Content/StarterContent/Blueprints/Blueprint_Effect_Smoke.uasset
new file mode 100644
index 0000000..bb648c9
Binary files /dev/null and b/Content/StarterContent/Blueprints/Blueprint_Effect_Smoke.uasset differ
diff --git a/Content/StarterContent/Blueprints/Blueprint_Effect_Sparks.uasset b/Content/StarterContent/Blueprints/Blueprint_Effect_Sparks.uasset
new file mode 100644
index 0000000..1c27dc4
Binary files /dev/null and b/Content/StarterContent/Blueprints/Blueprint_Effect_Sparks.uasset differ
diff --git a/Content/StarterContent/Blueprints/Blueprint_Effect_Steam.uasset b/Content/StarterContent/Blueprints/Blueprint_Effect_Steam.uasset
new file mode 100644
index 0000000..45417c8
Binary files /dev/null and b/Content/StarterContent/Blueprints/Blueprint_Effect_Steam.uasset differ
diff --git a/Content/StarterContent/Blueprints/Blueprint_WallSconce.uasset b/Content/StarterContent/Blueprints/Blueprint_WallSconce.uasset
new file mode 100644
index 0000000..3f29873
Binary files /dev/null and b/Content/StarterContent/Blueprints/Blueprint_WallSconce.uasset differ
diff --git a/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset b/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset
new file mode 100644
index 0000000..9b1f1be
Binary files /dev/null and b/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset differ
diff --git a/Content/StarterContent/Maps/Advanced_Lighting.umap b/Content/StarterContent/Maps/Advanced_Lighting.umap
new file mode 100644
index 0000000..ebf6966
Binary files /dev/null and b/Content/StarterContent/Maps/Advanced_Lighting.umap differ
diff --git a/Content/StarterContent/Maps/Minimal_Default.umap b/Content/StarterContent/Maps/Minimal_Default.umap
new file mode 100644
index 0000000..378270c
Binary files /dev/null and b/Content/StarterContent/Maps/Minimal_Default.umap differ
diff --git a/Content/StarterContent/Maps/StarterMap.umap b/Content/StarterContent/Maps/StarterMap.umap
new file mode 100644
index 0000000..3d55147
Binary files /dev/null and b/Content/StarterContent/Maps/StarterMap.umap differ
diff --git a/Content/StarterContent/Materials/M_AssetPlatform.uasset b/Content/StarterContent/Materials/M_AssetPlatform.uasset
new file mode 100644
index 0000000..4962777
Binary files /dev/null and b/Content/StarterContent/Materials/M_AssetPlatform.uasset differ
diff --git a/Content/StarterContent/Materials/M_Basic_Floor.uasset b/Content/StarterContent/Materials/M_Basic_Floor.uasset
new file mode 100644
index 0000000..6b05cb4
Binary files /dev/null and b/Content/StarterContent/Materials/M_Basic_Floor.uasset differ
diff --git a/Content/StarterContent/Materials/M_Basic_Wall.uasset b/Content/StarterContent/Materials/M_Basic_Wall.uasset
new file mode 100644
index 0000000..dd5ae24
Binary files /dev/null and b/Content/StarterContent/Materials/M_Basic_Wall.uasset differ
diff --git a/Content/StarterContent/Materials/M_Brick_Clay_Beveled.uasset b/Content/StarterContent/Materials/M_Brick_Clay_Beveled.uasset
new file mode 100644
index 0000000..2b8a349
Binary files /dev/null and b/Content/StarterContent/Materials/M_Brick_Clay_Beveled.uasset differ
diff --git a/Content/StarterContent/Materials/M_Brick_Clay_New.uasset b/Content/StarterContent/Materials/M_Brick_Clay_New.uasset
new file mode 100644
index 0000000..e519245
Binary files /dev/null and b/Content/StarterContent/Materials/M_Brick_Clay_New.uasset differ
diff --git a/Content/StarterContent/Materials/M_Brick_Clay_Old.uasset b/Content/StarterContent/Materials/M_Brick_Clay_Old.uasset
new file mode 100644
index 0000000..bd49323
Binary files /dev/null and b/Content/StarterContent/Materials/M_Brick_Clay_Old.uasset differ
diff --git a/Content/StarterContent/Materials/M_Brick_Cut_Stone.uasset b/Content/StarterContent/Materials/M_Brick_Cut_Stone.uasset
new file mode 100644
index 0000000..2ff69bc
Binary files /dev/null and b/Content/StarterContent/Materials/M_Brick_Cut_Stone.uasset differ
diff --git a/Content/StarterContent/Materials/M_Brick_Hewn_Stone.uasset b/Content/StarterContent/Materials/M_Brick_Hewn_Stone.uasset
new file mode 100644
index 0000000..d1d7e67
Binary files /dev/null and b/Content/StarterContent/Materials/M_Brick_Hewn_Stone.uasset differ
diff --git a/Content/StarterContent/Materials/M_Ceramic_Tile_Checker.uasset b/Content/StarterContent/Materials/M_Ceramic_Tile_Checker.uasset
new file mode 100644
index 0000000..e5f0590
Binary files /dev/null and b/Content/StarterContent/Materials/M_Ceramic_Tile_Checker.uasset differ
diff --git a/Content/StarterContent/Materials/M_CobbleStone_Pebble.uasset b/Content/StarterContent/Materials/M_CobbleStone_Pebble.uasset
new file mode 100644
index 0000000..958dd1b
Binary files /dev/null and b/Content/StarterContent/Materials/M_CobbleStone_Pebble.uasset differ
diff --git a/Content/StarterContent/Materials/M_CobbleStone_Rough.uasset b/Content/StarterContent/Materials/M_CobbleStone_Rough.uasset
new file mode 100644
index 0000000..fb1c6d3
Binary files /dev/null and b/Content/StarterContent/Materials/M_CobbleStone_Rough.uasset differ
diff --git a/Content/StarterContent/Materials/M_CobbleStone_Smooth.uasset b/Content/StarterContent/Materials/M_CobbleStone_Smooth.uasset
new file mode 100644
index 0000000..642aaaa
Binary files /dev/null and b/Content/StarterContent/Materials/M_CobbleStone_Smooth.uasset differ
diff --git a/Content/StarterContent/Materials/M_ColorGrid_LowSpec.uasset b/Content/StarterContent/Materials/M_ColorGrid_LowSpec.uasset
new file mode 100644
index 0000000..4b25f74
Binary files /dev/null and b/Content/StarterContent/Materials/M_ColorGrid_LowSpec.uasset differ
diff --git a/Content/StarterContent/Materials/M_Concrete_Grime.uasset b/Content/StarterContent/Materials/M_Concrete_Grime.uasset
new file mode 100644
index 0000000..3be6070
Binary files /dev/null and b/Content/StarterContent/Materials/M_Concrete_Grime.uasset differ
diff --git a/Content/StarterContent/Materials/M_Concrete_Panels.uasset b/Content/StarterContent/Materials/M_Concrete_Panels.uasset
new file mode 100644
index 0000000..d843626
Binary files /dev/null and b/Content/StarterContent/Materials/M_Concrete_Panels.uasset differ
diff --git a/Content/StarterContent/Materials/M_Concrete_Poured.uasset b/Content/StarterContent/Materials/M_Concrete_Poured.uasset
new file mode 100644
index 0000000..34661da
Binary files /dev/null and b/Content/StarterContent/Materials/M_Concrete_Poured.uasset differ
diff --git a/Content/StarterContent/Materials/M_Concrete_Tiles.uasset b/Content/StarterContent/Materials/M_Concrete_Tiles.uasset
new file mode 100644
index 0000000..26e7163
Binary files /dev/null and b/Content/StarterContent/Materials/M_Concrete_Tiles.uasset differ
diff --git a/Content/StarterContent/Materials/M_Glass.uasset b/Content/StarterContent/Materials/M_Glass.uasset
new file mode 100644
index 0000000..7168e4f
Binary files /dev/null and b/Content/StarterContent/Materials/M_Glass.uasset differ
diff --git a/Content/StarterContent/Materials/M_Ground_Grass.uasset b/Content/StarterContent/Materials/M_Ground_Grass.uasset
new file mode 100644
index 0000000..1cbe2a5
Binary files /dev/null and b/Content/StarterContent/Materials/M_Ground_Grass.uasset differ
diff --git a/Content/StarterContent/Materials/M_Ground_Gravel.uasset b/Content/StarterContent/Materials/M_Ground_Gravel.uasset
new file mode 100644
index 0000000..7d3d68f
Binary files /dev/null and b/Content/StarterContent/Materials/M_Ground_Gravel.uasset differ
diff --git a/Content/StarterContent/Materials/M_Ground_Moss.uasset b/Content/StarterContent/Materials/M_Ground_Moss.uasset
new file mode 100644
index 0000000..ff1f454
Binary files /dev/null and b/Content/StarterContent/Materials/M_Ground_Moss.uasset differ
diff --git a/Content/StarterContent/Materials/M_Metal_Brushed_Nickel.uasset b/Content/StarterContent/Materials/M_Metal_Brushed_Nickel.uasset
new file mode 100644
index 0000000..e34b606
Binary files /dev/null and b/Content/StarterContent/Materials/M_Metal_Brushed_Nickel.uasset differ
diff --git a/Content/StarterContent/Materials/M_Metal_Burnished_Steel.uasset b/Content/StarterContent/Materials/M_Metal_Burnished_Steel.uasset
new file mode 100644
index 0000000..5091518
Binary files /dev/null and b/Content/StarterContent/Materials/M_Metal_Burnished_Steel.uasset differ
diff --git a/Content/StarterContent/Materials/M_Metal_Chrome.uasset b/Content/StarterContent/Materials/M_Metal_Chrome.uasset
new file mode 100644
index 0000000..2997cde
Binary files /dev/null and b/Content/StarterContent/Materials/M_Metal_Chrome.uasset differ
diff --git a/Content/StarterContent/Materials/M_Metal_Copper.uasset b/Content/StarterContent/Materials/M_Metal_Copper.uasset
new file mode 100644
index 0000000..2f3841c
Binary files /dev/null and b/Content/StarterContent/Materials/M_Metal_Copper.uasset differ
diff --git a/Content/StarterContent/Materials/M_Metal_Gold.uasset b/Content/StarterContent/Materials/M_Metal_Gold.uasset
new file mode 100644
index 0000000..0fc3df3
Binary files /dev/null and b/Content/StarterContent/Materials/M_Metal_Gold.uasset differ
diff --git a/Content/StarterContent/Materials/M_Metal_Rust.uasset b/Content/StarterContent/Materials/M_Metal_Rust.uasset
new file mode 100644
index 0000000..8402144
Binary files /dev/null and b/Content/StarterContent/Materials/M_Metal_Rust.uasset differ
diff --git a/Content/StarterContent/Materials/M_Metal_Steel.uasset b/Content/StarterContent/Materials/M_Metal_Steel.uasset
new file mode 100644
index 0000000..e303340
Binary files /dev/null and b/Content/StarterContent/Materials/M_Metal_Steel.uasset differ
diff --git a/Content/StarterContent/Materials/M_Rock_Basalt.uasset b/Content/StarterContent/Materials/M_Rock_Basalt.uasset
new file mode 100644
index 0000000..d2cf1ba
Binary files /dev/null and b/Content/StarterContent/Materials/M_Rock_Basalt.uasset differ
diff --git a/Content/StarterContent/Materials/M_Rock_Marble_Polished.uasset b/Content/StarterContent/Materials/M_Rock_Marble_Polished.uasset
new file mode 100644
index 0000000..d177e32
Binary files /dev/null and b/Content/StarterContent/Materials/M_Rock_Marble_Polished.uasset differ
diff --git a/Content/StarterContent/Materials/M_Rock_Sandstone.uasset b/Content/StarterContent/Materials/M_Rock_Sandstone.uasset
new file mode 100644
index 0000000..4ca7e31
Binary files /dev/null and b/Content/StarterContent/Materials/M_Rock_Sandstone.uasset differ
diff --git a/Content/StarterContent/Materials/M_Rock_Slate.uasset b/Content/StarterContent/Materials/M_Rock_Slate.uasset
new file mode 100644
index 0000000..53f6bb8
Binary files /dev/null and b/Content/StarterContent/Materials/M_Rock_Slate.uasset differ
diff --git a/Content/StarterContent/Materials/M_Tech_Checker_Dot.uasset b/Content/StarterContent/Materials/M_Tech_Checker_Dot.uasset
new file mode 100644
index 0000000..041b0f8
Binary files /dev/null and b/Content/StarterContent/Materials/M_Tech_Checker_Dot.uasset differ
diff --git a/Content/StarterContent/Materials/M_Tech_Hex_Tile.uasset b/Content/StarterContent/Materials/M_Tech_Hex_Tile.uasset
new file mode 100644
index 0000000..f102368
Binary files /dev/null and b/Content/StarterContent/Materials/M_Tech_Hex_Tile.uasset differ
diff --git a/Content/StarterContent/Materials/M_Tech_Hex_Tile_Pulse.uasset b/Content/StarterContent/Materials/M_Tech_Hex_Tile_Pulse.uasset
new file mode 100644
index 0000000..570262a
Binary files /dev/null and b/Content/StarterContent/Materials/M_Tech_Hex_Tile_Pulse.uasset differ
diff --git a/Content/StarterContent/Materials/M_Tech_Panel.uasset b/Content/StarterContent/Materials/M_Tech_Panel.uasset
new file mode 100644
index 0000000..1afccae
Binary files /dev/null and b/Content/StarterContent/Materials/M_Tech_Panel.uasset differ
diff --git a/Content/StarterContent/Materials/M_Water_Lake.uasset b/Content/StarterContent/Materials/M_Water_Lake.uasset
new file mode 100644
index 0000000..88a6333
Binary files /dev/null and b/Content/StarterContent/Materials/M_Water_Lake.uasset differ
diff --git a/Content/StarterContent/Materials/M_Water_Ocean.uasset b/Content/StarterContent/Materials/M_Water_Ocean.uasset
new file mode 100644
index 0000000..1ff0460
Binary files /dev/null and b/Content/StarterContent/Materials/M_Water_Ocean.uasset differ
diff --git a/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Polished.uasset b/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Polished.uasset
new file mode 100644
index 0000000..8bbba08
Binary files /dev/null and b/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Polished.uasset differ
diff --git a/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Worn.uasset b/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Worn.uasset
new file mode 100644
index 0000000..229a294
Binary files /dev/null and b/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Worn.uasset differ
diff --git a/Content/StarterContent/Materials/M_Wood_Oak.uasset b/Content/StarterContent/Materials/M_Wood_Oak.uasset
new file mode 100644
index 0000000..d722444
Binary files /dev/null and b/Content/StarterContent/Materials/M_Wood_Oak.uasset differ
diff --git a/Content/StarterContent/Materials/M_Wood_Pine.uasset b/Content/StarterContent/Materials/M_Wood_Pine.uasset
new file mode 100644
index 0000000..b02101c
Binary files /dev/null and b/Content/StarterContent/Materials/M_Wood_Pine.uasset differ
diff --git a/Content/StarterContent/Materials/M_Wood_Walnut.uasset b/Content/StarterContent/Materials/M_Wood_Walnut.uasset
new file mode 100644
index 0000000..6e76341
Binary files /dev/null and b/Content/StarterContent/Materials/M_Wood_Walnut.uasset differ
diff --git a/Content/StarterContent/Particles/Materials/M_Burst.uasset b/Content/StarterContent/Particles/Materials/M_Burst.uasset
new file mode 100644
index 0000000..12caa0a
Binary files /dev/null and b/Content/StarterContent/Particles/Materials/M_Burst.uasset differ
diff --git a/Content/StarterContent/Particles/Materials/M_Dust_Particle.uasset b/Content/StarterContent/Particles/Materials/M_Dust_Particle.uasset
new file mode 100644
index 0000000..4f665d0
Binary files /dev/null and b/Content/StarterContent/Particles/Materials/M_Dust_Particle.uasset differ
diff --git a/Content/StarterContent/Particles/Materials/M_Fire_SubUV.uasset b/Content/StarterContent/Particles/Materials/M_Fire_SubUV.uasset
new file mode 100644
index 0000000..73f3eaa
Binary files /dev/null and b/Content/StarterContent/Particles/Materials/M_Fire_SubUV.uasset differ
diff --git a/Content/StarterContent/Particles/Materials/M_Heat_Distortion.uasset b/Content/StarterContent/Particles/Materials/M_Heat_Distortion.uasset
new file mode 100644
index 0000000..d34ee58
Binary files /dev/null and b/Content/StarterContent/Particles/Materials/M_Heat_Distortion.uasset differ
diff --git a/Content/StarterContent/Particles/Materials/M_Radial_Gradient.uasset b/Content/StarterContent/Particles/Materials/M_Radial_Gradient.uasset
new file mode 100644
index 0000000..9829b9a
Binary files /dev/null and b/Content/StarterContent/Particles/Materials/M_Radial_Gradient.uasset differ
diff --git a/Content/StarterContent/Particles/Materials/M_Spark.uasset b/Content/StarterContent/Particles/Materials/M_Spark.uasset
new file mode 100644
index 0000000..6f6f699
Binary files /dev/null and b/Content/StarterContent/Particles/Materials/M_Spark.uasset differ
diff --git a/Content/StarterContent/Particles/Materials/M_explosion_subUV.uasset b/Content/StarterContent/Particles/Materials/M_explosion_subUV.uasset
new file mode 100644
index 0000000..1af76e6
Binary files /dev/null and b/Content/StarterContent/Particles/Materials/M_explosion_subUV.uasset differ
diff --git a/Content/StarterContent/Particles/Materials/M_radial_ramp.uasset b/Content/StarterContent/Particles/Materials/M_radial_ramp.uasset
new file mode 100644
index 0000000..b022826
Binary files /dev/null and b/Content/StarterContent/Particles/Materials/M_radial_ramp.uasset differ
diff --git a/Content/StarterContent/Particles/Materials/M_smoke_subUV.uasset b/Content/StarterContent/Particles/Materials/M_smoke_subUV.uasset
new file mode 100644
index 0000000..2086e5f
Binary files /dev/null and b/Content/StarterContent/Particles/Materials/M_smoke_subUV.uasset differ
diff --git a/Content/StarterContent/Particles/Materials/m_flare_01.uasset b/Content/StarterContent/Particles/Materials/m_flare_01.uasset
new file mode 100644
index 0000000..824b44b
Binary files /dev/null and b/Content/StarterContent/Particles/Materials/m_flare_01.uasset differ
diff --git a/Content/StarterContent/Particles/P_Ambient_Dust.uasset b/Content/StarterContent/Particles/P_Ambient_Dust.uasset
new file mode 100644
index 0000000..38b6cab
Binary files /dev/null and b/Content/StarterContent/Particles/P_Ambient_Dust.uasset differ
diff --git a/Content/StarterContent/Particles/P_Explosion.uasset b/Content/StarterContent/Particles/P_Explosion.uasset
new file mode 100644
index 0000000..8f6e03a
Binary files /dev/null and b/Content/StarterContent/Particles/P_Explosion.uasset differ
diff --git a/Content/StarterContent/Particles/P_Fire.uasset b/Content/StarterContent/Particles/P_Fire.uasset
new file mode 100644
index 0000000..3fb74a8
Binary files /dev/null and b/Content/StarterContent/Particles/P_Fire.uasset differ
diff --git a/Content/StarterContent/Particles/P_Smoke.uasset b/Content/StarterContent/Particles/P_Smoke.uasset
new file mode 100644
index 0000000..a6014df
Binary files /dev/null and b/Content/StarterContent/Particles/P_Smoke.uasset differ
diff --git a/Content/StarterContent/Particles/P_Sparks.uasset b/Content/StarterContent/Particles/P_Sparks.uasset
new file mode 100644
index 0000000..8a6dc37
Binary files /dev/null and b/Content/StarterContent/Particles/P_Sparks.uasset differ
diff --git a/Content/StarterContent/Particles/P_Steam_Lit.uasset b/Content/StarterContent/Particles/P_Steam_Lit.uasset
new file mode 100644
index 0000000..3e96da7
Binary files /dev/null and b/Content/StarterContent/Particles/P_Steam_Lit.uasset differ
diff --git a/Content/StarterContent/Props/MaterialSphere.uasset b/Content/StarterContent/Props/MaterialSphere.uasset
new file mode 100644
index 0000000..6a2538f
Binary files /dev/null and b/Content/StarterContent/Props/MaterialSphere.uasset differ
diff --git a/Content/StarterContent/Props/Materials/M_Bush.uasset b/Content/StarterContent/Props/Materials/M_Bush.uasset
new file mode 100644
index 0000000..eaa4a2a
Binary files /dev/null and b/Content/StarterContent/Props/Materials/M_Bush.uasset differ
diff --git a/Content/StarterContent/Props/Materials/M_Chair.uasset b/Content/StarterContent/Props/Materials/M_Chair.uasset
new file mode 100644
index 0000000..e7446be
Binary files /dev/null and b/Content/StarterContent/Props/Materials/M_Chair.uasset differ
diff --git a/Content/StarterContent/Props/Materials/M_Door.uasset b/Content/StarterContent/Props/Materials/M_Door.uasset
new file mode 100644
index 0000000..714d0f6
Binary files /dev/null and b/Content/StarterContent/Props/Materials/M_Door.uasset differ
diff --git a/Content/StarterContent/Props/Materials/M_Frame.uasset b/Content/StarterContent/Props/Materials/M_Frame.uasset
new file mode 100644
index 0000000..2a2dff8
Binary files /dev/null and b/Content/StarterContent/Props/Materials/M_Frame.uasset differ
diff --git a/Content/StarterContent/Props/Materials/M_Lamp.uasset b/Content/StarterContent/Props/Materials/M_Lamp.uasset
new file mode 100644
index 0000000..3eb6663
Binary files /dev/null and b/Content/StarterContent/Props/Materials/M_Lamp.uasset differ
diff --git a/Content/StarterContent/Props/Materials/M_Rock.uasset b/Content/StarterContent/Props/Materials/M_Rock.uasset
new file mode 100644
index 0000000..2d59537
Binary files /dev/null and b/Content/StarterContent/Props/Materials/M_Rock.uasset differ
diff --git a/Content/StarterContent/Props/Materials/M_Shelf.uasset b/Content/StarterContent/Props/Materials/M_Shelf.uasset
new file mode 100644
index 0000000..2444258
Binary files /dev/null and b/Content/StarterContent/Props/Materials/M_Shelf.uasset differ
diff --git a/Content/StarterContent/Props/Materials/M_Statue.uasset b/Content/StarterContent/Props/Materials/M_Statue.uasset
new file mode 100644
index 0000000..775313d
Binary files /dev/null and b/Content/StarterContent/Props/Materials/M_Statue.uasset differ
diff --git a/Content/StarterContent/Props/Materials/M_StatueGlass.uasset b/Content/StarterContent/Props/Materials/M_StatueGlass.uasset
new file mode 100644
index 0000000..d1592b3
Binary files /dev/null and b/Content/StarterContent/Props/Materials/M_StatueGlass.uasset differ
diff --git a/Content/StarterContent/Props/Materials/M_TableRound.uasset b/Content/StarterContent/Props/Materials/M_TableRound.uasset
new file mode 100644
index 0000000..66b487c
Binary files /dev/null and b/Content/StarterContent/Props/Materials/M_TableRound.uasset differ
diff --git a/Content/StarterContent/Props/SM_Bush.uasset b/Content/StarterContent/Props/SM_Bush.uasset
new file mode 100644
index 0000000..060a376
Binary files /dev/null and b/Content/StarterContent/Props/SM_Bush.uasset differ
diff --git a/Content/StarterContent/Props/SM_Chair.uasset b/Content/StarterContent/Props/SM_Chair.uasset
new file mode 100644
index 0000000..e062426
Binary files /dev/null and b/Content/StarterContent/Props/SM_Chair.uasset differ
diff --git a/Content/StarterContent/Props/SM_CornerFrame.uasset b/Content/StarterContent/Props/SM_CornerFrame.uasset
new file mode 100644
index 0000000..5710151
Binary files /dev/null and b/Content/StarterContent/Props/SM_CornerFrame.uasset differ
diff --git a/Content/StarterContent/Props/SM_Couch.uasset b/Content/StarterContent/Props/SM_Couch.uasset
new file mode 100644
index 0000000..cc7d408
Binary files /dev/null and b/Content/StarterContent/Props/SM_Couch.uasset differ
diff --git a/Content/StarterContent/Props/SM_Door.uasset b/Content/StarterContent/Props/SM_Door.uasset
new file mode 100644
index 0000000..22c9bfc
Binary files /dev/null and b/Content/StarterContent/Props/SM_Door.uasset differ
diff --git a/Content/StarterContent/Props/SM_DoorFrame.uasset b/Content/StarterContent/Props/SM_DoorFrame.uasset
new file mode 100644
index 0000000..ab5e96f
Binary files /dev/null and b/Content/StarterContent/Props/SM_DoorFrame.uasset differ
diff --git a/Content/StarterContent/Props/SM_GlassWindow.uasset b/Content/StarterContent/Props/SM_GlassWindow.uasset
new file mode 100644
index 0000000..93863f4
Binary files /dev/null and b/Content/StarterContent/Props/SM_GlassWindow.uasset differ
diff --git a/Content/StarterContent/Props/SM_Lamp_Ceiling.uasset b/Content/StarterContent/Props/SM_Lamp_Ceiling.uasset
new file mode 100644
index 0000000..4e55f04
Binary files /dev/null and b/Content/StarterContent/Props/SM_Lamp_Ceiling.uasset differ
diff --git a/Content/StarterContent/Props/SM_Lamp_Wall.uasset b/Content/StarterContent/Props/SM_Lamp_Wall.uasset
new file mode 100644
index 0000000..a1b112f
Binary files /dev/null and b/Content/StarterContent/Props/SM_Lamp_Wall.uasset differ
diff --git a/Content/StarterContent/Props/SM_PillarFrame.uasset b/Content/StarterContent/Props/SM_PillarFrame.uasset
new file mode 100644
index 0000000..7cafefe
Binary files /dev/null and b/Content/StarterContent/Props/SM_PillarFrame.uasset differ
diff --git a/Content/StarterContent/Props/SM_PillarFrame300.uasset b/Content/StarterContent/Props/SM_PillarFrame300.uasset
new file mode 100644
index 0000000..c681a0a
Binary files /dev/null and b/Content/StarterContent/Props/SM_PillarFrame300.uasset differ
diff --git a/Content/StarterContent/Props/SM_Rock.uasset b/Content/StarterContent/Props/SM_Rock.uasset
new file mode 100644
index 0000000..419f4d5
Binary files /dev/null and b/Content/StarterContent/Props/SM_Rock.uasset differ
diff --git a/Content/StarterContent/Props/SM_Shelf.uasset b/Content/StarterContent/Props/SM_Shelf.uasset
new file mode 100644
index 0000000..7ebb820
Binary files /dev/null and b/Content/StarterContent/Props/SM_Shelf.uasset differ
diff --git a/Content/StarterContent/Props/SM_Stairs.uasset b/Content/StarterContent/Props/SM_Stairs.uasset
new file mode 100644
index 0000000..d0e84cc
Binary files /dev/null and b/Content/StarterContent/Props/SM_Stairs.uasset differ
diff --git a/Content/StarterContent/Props/SM_Statue.uasset b/Content/StarterContent/Props/SM_Statue.uasset
new file mode 100644
index 0000000..d0e5b8d
Binary files /dev/null and b/Content/StarterContent/Props/SM_Statue.uasset differ
diff --git a/Content/StarterContent/Props/SM_TableRound.uasset b/Content/StarterContent/Props/SM_TableRound.uasset
new file mode 100644
index 0000000..317b8ff
Binary files /dev/null and b/Content/StarterContent/Props/SM_TableRound.uasset differ
diff --git a/Content/StarterContent/Props/SM_WindowFrame.uasset b/Content/StarterContent/Props/SM_WindowFrame.uasset
new file mode 100644
index 0000000..bfc9f90
Binary files /dev/null and b/Content/StarterContent/Props/SM_WindowFrame.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_Cone.uasset b/Content/StarterContent/Shapes/Shape_Cone.uasset
new file mode 100644
index 0000000..200f0a2
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_Cone.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_Cube.uasset b/Content/StarterContent/Shapes/Shape_Cube.uasset
new file mode 100644
index 0000000..4d169fe
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_Cube.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_Cylinder.uasset b/Content/StarterContent/Shapes/Shape_Cylinder.uasset
new file mode 100644
index 0000000..06541d9
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_Cylinder.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_NarrowCapsule.uasset b/Content/StarterContent/Shapes/Shape_NarrowCapsule.uasset
new file mode 100644
index 0000000..0322b31
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_NarrowCapsule.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_Pipe.uasset b/Content/StarterContent/Shapes/Shape_Pipe.uasset
new file mode 100644
index 0000000..f2549a3
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_Pipe.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_Pipe_180.uasset b/Content/StarterContent/Shapes/Shape_Pipe_180.uasset
new file mode 100644
index 0000000..b152330
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_Pipe_180.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_Pipe_90.uasset b/Content/StarterContent/Shapes/Shape_Pipe_90.uasset
new file mode 100644
index 0000000..db79ad4
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_Pipe_90.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_Plane.uasset b/Content/StarterContent/Shapes/Shape_Plane.uasset
new file mode 100644
index 0000000..f338efa
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_Plane.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_QuadPyramid.uasset b/Content/StarterContent/Shapes/Shape_QuadPyramid.uasset
new file mode 100644
index 0000000..e228f15
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_QuadPyramid.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_Sphere.uasset b/Content/StarterContent/Shapes/Shape_Sphere.uasset
new file mode 100644
index 0000000..0b7fc69
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_Sphere.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_Torus.uasset b/Content/StarterContent/Shapes/Shape_Torus.uasset
new file mode 100644
index 0000000..cfbaac4
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_Torus.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_TriPyramid.uasset b/Content/StarterContent/Shapes/Shape_TriPyramid.uasset
new file mode 100644
index 0000000..f28d857
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_TriPyramid.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_Trim.uasset b/Content/StarterContent/Shapes/Shape_Trim.uasset
new file mode 100644
index 0000000..0909161
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_Trim.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_Trim_90_In.uasset b/Content/StarterContent/Shapes/Shape_Trim_90_In.uasset
new file mode 100644
index 0000000..6e33a90
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_Trim_90_In.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_Trim_90_Out.uasset b/Content/StarterContent/Shapes/Shape_Trim_90_Out.uasset
new file mode 100644
index 0000000..8125f77
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_Trim_90_Out.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_Tube.uasset b/Content/StarterContent/Shapes/Shape_Tube.uasset
new file mode 100644
index 0000000..b2e9a43
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_Tube.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_Wedge_A.uasset b/Content/StarterContent/Shapes/Shape_Wedge_A.uasset
new file mode 100644
index 0000000..b99fde7
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_Wedge_A.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_Wedge_B.uasset b/Content/StarterContent/Shapes/Shape_Wedge_B.uasset
new file mode 100644
index 0000000..2e8f430
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_Wedge_B.uasset differ
diff --git a/Content/StarterContent/Shapes/Shape_WideCapsule.uasset b/Content/StarterContent/Shapes/Shape_WideCapsule.uasset
new file mode 100644
index 0000000..830b90d
Binary files /dev/null and b/Content/StarterContent/Shapes/Shape_WideCapsule.uasset differ
diff --git a/Content/StarterContent/Textures/T_Brick_Clay_Beveled_D.uasset b/Content/StarterContent/Textures/T_Brick_Clay_Beveled_D.uasset
new file mode 100644
index 0000000..8ea9227
Binary files /dev/null and b/Content/StarterContent/Textures/T_Brick_Clay_Beveled_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Brick_Clay_Beveled_M.uasset b/Content/StarterContent/Textures/T_Brick_Clay_Beveled_M.uasset
new file mode 100644
index 0000000..995cc82
Binary files /dev/null and b/Content/StarterContent/Textures/T_Brick_Clay_Beveled_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Brick_Clay_Beveled_N.uasset b/Content/StarterContent/Textures/T_Brick_Clay_Beveled_N.uasset
new file mode 100644
index 0000000..bf6633d
Binary files /dev/null and b/Content/StarterContent/Textures/T_Brick_Clay_Beveled_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Brick_Clay_New_D.uasset b/Content/StarterContent/Textures/T_Brick_Clay_New_D.uasset
new file mode 100644
index 0000000..5d32850
Binary files /dev/null and b/Content/StarterContent/Textures/T_Brick_Clay_New_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Brick_Clay_New_M.uasset b/Content/StarterContent/Textures/T_Brick_Clay_New_M.uasset
new file mode 100644
index 0000000..e386e9d
Binary files /dev/null and b/Content/StarterContent/Textures/T_Brick_Clay_New_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Brick_Clay_New_N.uasset b/Content/StarterContent/Textures/T_Brick_Clay_New_N.uasset
new file mode 100644
index 0000000..f4dc14a
Binary files /dev/null and b/Content/StarterContent/Textures/T_Brick_Clay_New_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Brick_Clay_Old_D.uasset b/Content/StarterContent/Textures/T_Brick_Clay_Old_D.uasset
new file mode 100644
index 0000000..acec520
Binary files /dev/null and b/Content/StarterContent/Textures/T_Brick_Clay_Old_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Brick_Clay_Old_N.uasset b/Content/StarterContent/Textures/T_Brick_Clay_Old_N.uasset
new file mode 100644
index 0000000..49fac3f
Binary files /dev/null and b/Content/StarterContent/Textures/T_Brick_Clay_Old_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Brick_Cut_Stone_D.uasset b/Content/StarterContent/Textures/T_Brick_Cut_Stone_D.uasset
new file mode 100644
index 0000000..1f76e63
Binary files /dev/null and b/Content/StarterContent/Textures/T_Brick_Cut_Stone_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Brick_Cut_Stone_N.uasset b/Content/StarterContent/Textures/T_Brick_Cut_Stone_N.uasset
new file mode 100644
index 0000000..9cf63ce
Binary files /dev/null and b/Content/StarterContent/Textures/T_Brick_Cut_Stone_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Brick_Hewn_Stone_D.uasset b/Content/StarterContent/Textures/T_Brick_Hewn_Stone_D.uasset
new file mode 100644
index 0000000..cf67614
Binary files /dev/null and b/Content/StarterContent/Textures/T_Brick_Hewn_Stone_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Brick_Hewn_Stone_M.uasset b/Content/StarterContent/Textures/T_Brick_Hewn_Stone_M.uasset
new file mode 100644
index 0000000..81c5fcf
Binary files /dev/null and b/Content/StarterContent/Textures/T_Brick_Hewn_Stone_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Brick_Hewn_Stone_N.uasset b/Content/StarterContent/Textures/T_Brick_Hewn_Stone_N.uasset
new file mode 100644
index 0000000..27c49b5
Binary files /dev/null and b/Content/StarterContent/Textures/T_Brick_Hewn_Stone_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Burst_M.uasset b/Content/StarterContent/Textures/T_Burst_M.uasset
new file mode 100644
index 0000000..35b26fc
Binary files /dev/null and b/Content/StarterContent/Textures/T_Burst_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Bush_D.uasset b/Content/StarterContent/Textures/T_Bush_D.uasset
new file mode 100644
index 0000000..d539936
Binary files /dev/null and b/Content/StarterContent/Textures/T_Bush_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Bush_N.uasset b/Content/StarterContent/Textures/T_Bush_N.uasset
new file mode 100644
index 0000000..a9f1c7e
Binary files /dev/null and b/Content/StarterContent/Textures/T_Bush_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Ceramic_Tile_M.uasset b/Content/StarterContent/Textures/T_Ceramic_Tile_M.uasset
new file mode 100644
index 0000000..8214218
Binary files /dev/null and b/Content/StarterContent/Textures/T_Ceramic_Tile_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Ceramic_Tile_N.uasset b/Content/StarterContent/Textures/T_Ceramic_Tile_N.uasset
new file mode 100644
index 0000000..343aeb8
Binary files /dev/null and b/Content/StarterContent/Textures/T_Ceramic_Tile_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Chair_M.uasset b/Content/StarterContent/Textures/T_Chair_M.uasset
new file mode 100644
index 0000000..40e1e6f
Binary files /dev/null and b/Content/StarterContent/Textures/T_Chair_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Chair_N.uasset b/Content/StarterContent/Textures/T_Chair_N.uasset
new file mode 100644
index 0000000..af1c8a4
Binary files /dev/null and b/Content/StarterContent/Textures/T_Chair_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Checker_Noise_M.uasset b/Content/StarterContent/Textures/T_Checker_Noise_M.uasset
new file mode 100644
index 0000000..58b5668
Binary files /dev/null and b/Content/StarterContent/Textures/T_Checker_Noise_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_CobbleStone_Pebble_D.uasset b/Content/StarterContent/Textures/T_CobbleStone_Pebble_D.uasset
new file mode 100644
index 0000000..bc3db66
Binary files /dev/null and b/Content/StarterContent/Textures/T_CobbleStone_Pebble_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_CobbleStone_Pebble_M.uasset b/Content/StarterContent/Textures/T_CobbleStone_Pebble_M.uasset
new file mode 100644
index 0000000..7a953e9
Binary files /dev/null and b/Content/StarterContent/Textures/T_CobbleStone_Pebble_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_CobbleStone_Pebble_N.uasset b/Content/StarterContent/Textures/T_CobbleStone_Pebble_N.uasset
new file mode 100644
index 0000000..46da547
Binary files /dev/null and b/Content/StarterContent/Textures/T_CobbleStone_Pebble_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_CobbleStone_Rough_D.uasset b/Content/StarterContent/Textures/T_CobbleStone_Rough_D.uasset
new file mode 100644
index 0000000..1bc4666
Binary files /dev/null and b/Content/StarterContent/Textures/T_CobbleStone_Rough_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_CobbleStone_Rough_N.uasset b/Content/StarterContent/Textures/T_CobbleStone_Rough_N.uasset
new file mode 100644
index 0000000..935d1af
Binary files /dev/null and b/Content/StarterContent/Textures/T_CobbleStone_Rough_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_CobbleStone_Smooth_D.uasset b/Content/StarterContent/Textures/T_CobbleStone_Smooth_D.uasset
new file mode 100644
index 0000000..44e5597
Binary files /dev/null and b/Content/StarterContent/Textures/T_CobbleStone_Smooth_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_CobbleStone_Smooth_M.uasset b/Content/StarterContent/Textures/T_CobbleStone_Smooth_M.uasset
new file mode 100644
index 0000000..165106f
Binary files /dev/null and b/Content/StarterContent/Textures/T_CobbleStone_Smooth_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_CobbleStone_Smooth_N.uasset b/Content/StarterContent/Textures/T_CobbleStone_Smooth_N.uasset
new file mode 100644
index 0000000..4207398
Binary files /dev/null and b/Content/StarterContent/Textures/T_CobbleStone_Smooth_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Concrete_Grime_D.uasset b/Content/StarterContent/Textures/T_Concrete_Grime_D.uasset
new file mode 100644
index 0000000..d6667d2
Binary files /dev/null and b/Content/StarterContent/Textures/T_Concrete_Grime_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Concrete_Panels_D.uasset b/Content/StarterContent/Textures/T_Concrete_Panels_D.uasset
new file mode 100644
index 0000000..75134e3
Binary files /dev/null and b/Content/StarterContent/Textures/T_Concrete_Panels_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Concrete_Panels_N.uasset b/Content/StarterContent/Textures/T_Concrete_Panels_N.uasset
new file mode 100644
index 0000000..6db0432
Binary files /dev/null and b/Content/StarterContent/Textures/T_Concrete_Panels_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Concrete_Poured_D.uasset b/Content/StarterContent/Textures/T_Concrete_Poured_D.uasset
new file mode 100644
index 0000000..f2d651c
Binary files /dev/null and b/Content/StarterContent/Textures/T_Concrete_Poured_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Concrete_Poured_N.uasset b/Content/StarterContent/Textures/T_Concrete_Poured_N.uasset
new file mode 100644
index 0000000..edc2e1b
Binary files /dev/null and b/Content/StarterContent/Textures/T_Concrete_Poured_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Concrete_Tiles_D.uasset b/Content/StarterContent/Textures/T_Concrete_Tiles_D.uasset
new file mode 100644
index 0000000..b98f3a7
Binary files /dev/null and b/Content/StarterContent/Textures/T_Concrete_Tiles_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Concrete_Tiles_M.uasset b/Content/StarterContent/Textures/T_Concrete_Tiles_M.uasset
new file mode 100644
index 0000000..cc1fe76
Binary files /dev/null and b/Content/StarterContent/Textures/T_Concrete_Tiles_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Concrete_Tiles_N.uasset b/Content/StarterContent/Textures/T_Concrete_Tiles_N.uasset
new file mode 100644
index 0000000..d5d6b3a
Binary files /dev/null and b/Content/StarterContent/Textures/T_Concrete_Tiles_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Concrete_Tiles_Variation_M.uasset b/Content/StarterContent/Textures/T_Concrete_Tiles_Variation_M.uasset
new file mode 100644
index 0000000..5edef8f
Binary files /dev/null and b/Content/StarterContent/Textures/T_Concrete_Tiles_Variation_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Detail_Rocky_N.uasset b/Content/StarterContent/Textures/T_Detail_Rocky_N.uasset
new file mode 100644
index 0000000..a80dc77
Binary files /dev/null and b/Content/StarterContent/Textures/T_Detail_Rocky_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Door_M.uasset b/Content/StarterContent/Textures/T_Door_M.uasset
new file mode 100644
index 0000000..b5eec21
Binary files /dev/null and b/Content/StarterContent/Textures/T_Door_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Door_N.uasset b/Content/StarterContent/Textures/T_Door_N.uasset
new file mode 100644
index 0000000..93e2c30
Binary files /dev/null and b/Content/StarterContent/Textures/T_Door_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Dust_Particle_D.uasset b/Content/StarterContent/Textures/T_Dust_Particle_D.uasset
new file mode 100644
index 0000000..d80b3a0
Binary files /dev/null and b/Content/StarterContent/Textures/T_Dust_Particle_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Explosion_SubUV.uasset b/Content/StarterContent/Textures/T_Explosion_SubUV.uasset
new file mode 100644
index 0000000..d30f842
Binary files /dev/null and b/Content/StarterContent/Textures/T_Explosion_SubUV.uasset differ
diff --git a/Content/StarterContent/Textures/T_Fire_SubUV.uasset b/Content/StarterContent/Textures/T_Fire_SubUV.uasset
new file mode 100644
index 0000000..6e87ac7
Binary files /dev/null and b/Content/StarterContent/Textures/T_Fire_SubUV.uasset differ
diff --git a/Content/StarterContent/Textures/T_Fire_Tiled_D.uasset b/Content/StarterContent/Textures/T_Fire_Tiled_D.uasset
new file mode 100644
index 0000000..825765f
Binary files /dev/null and b/Content/StarterContent/Textures/T_Fire_Tiled_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Frame_M.uasset b/Content/StarterContent/Textures/T_Frame_M.uasset
new file mode 100644
index 0000000..4aeac1c
Binary files /dev/null and b/Content/StarterContent/Textures/T_Frame_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Frame_N.uasset b/Content/StarterContent/Textures/T_Frame_N.uasset
new file mode 100644
index 0000000..b1a335d
Binary files /dev/null and b/Content/StarterContent/Textures/T_Frame_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Gradinet_01.uasset b/Content/StarterContent/Textures/T_Gradinet_01.uasset
new file mode 100644
index 0000000..a71d3dd
Binary files /dev/null and b/Content/StarterContent/Textures/T_Gradinet_01.uasset differ
diff --git a/Content/StarterContent/Textures/T_Ground_Grass_D.uasset b/Content/StarterContent/Textures/T_Ground_Grass_D.uasset
new file mode 100644
index 0000000..0ce49d3
Binary files /dev/null and b/Content/StarterContent/Textures/T_Ground_Grass_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Ground_Grass_N.uasset b/Content/StarterContent/Textures/T_Ground_Grass_N.uasset
new file mode 100644
index 0000000..c69da0d
Binary files /dev/null and b/Content/StarterContent/Textures/T_Ground_Grass_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Ground_Gravel_D.uasset b/Content/StarterContent/Textures/T_Ground_Gravel_D.uasset
new file mode 100644
index 0000000..3064541
Binary files /dev/null and b/Content/StarterContent/Textures/T_Ground_Gravel_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Ground_Gravel_N.uasset b/Content/StarterContent/Textures/T_Ground_Gravel_N.uasset
new file mode 100644
index 0000000..e9f55a7
Binary files /dev/null and b/Content/StarterContent/Textures/T_Ground_Gravel_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Ground_Moss_N.uasset b/Content/StarterContent/Textures/T_Ground_Moss_N.uasset
new file mode 100644
index 0000000..898e6ee
Binary files /dev/null and b/Content/StarterContent/Textures/T_Ground_Moss_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Lamp_M.uasset b/Content/StarterContent/Textures/T_Lamp_M.uasset
new file mode 100644
index 0000000..e1958b0
Binary files /dev/null and b/Content/StarterContent/Textures/T_Lamp_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Lamp_N.uasset b/Content/StarterContent/Textures/T_Lamp_N.uasset
new file mode 100644
index 0000000..77e47bd
Binary files /dev/null and b/Content/StarterContent/Textures/T_Lamp_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_MacroVariation.uasset b/Content/StarterContent/Textures/T_MacroVariation.uasset
new file mode 100644
index 0000000..dca6463
Binary files /dev/null and b/Content/StarterContent/Textures/T_MacroVariation.uasset differ
diff --git a/Content/StarterContent/Textures/T_Metal_Aluminum_D.uasset b/Content/StarterContent/Textures/T_Metal_Aluminum_D.uasset
new file mode 100644
index 0000000..225628a
Binary files /dev/null and b/Content/StarterContent/Textures/T_Metal_Aluminum_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Metal_Copper_D.uasset b/Content/StarterContent/Textures/T_Metal_Copper_D.uasset
new file mode 100644
index 0000000..df0cacb
Binary files /dev/null and b/Content/StarterContent/Textures/T_Metal_Copper_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Metal_Gold_D.uasset b/Content/StarterContent/Textures/T_Metal_Gold_D.uasset
new file mode 100644
index 0000000..0762c01
Binary files /dev/null and b/Content/StarterContent/Textures/T_Metal_Gold_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Metal_Gold_N.uasset b/Content/StarterContent/Textures/T_Metal_Gold_N.uasset
new file mode 100644
index 0000000..938e7c3
Binary files /dev/null and b/Content/StarterContent/Textures/T_Metal_Gold_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Metal_Rust_D.uasset b/Content/StarterContent/Textures/T_Metal_Rust_D.uasset
new file mode 100644
index 0000000..2a47b53
Binary files /dev/null and b/Content/StarterContent/Textures/T_Metal_Rust_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Metal_Rust_N.uasset b/Content/StarterContent/Textures/T_Metal_Rust_N.uasset
new file mode 100644
index 0000000..c94e24d
Binary files /dev/null and b/Content/StarterContent/Textures/T_Metal_Rust_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Metal_Steel_D.uasset b/Content/StarterContent/Textures/T_Metal_Steel_D.uasset
new file mode 100644
index 0000000..bc8ee97
Binary files /dev/null and b/Content/StarterContent/Textures/T_Metal_Steel_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Metal_Steel_N.uasset b/Content/StarterContent/Textures/T_Metal_Steel_N.uasset
new file mode 100644
index 0000000..bd90253
Binary files /dev/null and b/Content/StarterContent/Textures/T_Metal_Steel_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Perlin_Noise_M.uasset b/Content/StarterContent/Textures/T_Perlin_Noise_M.uasset
new file mode 100644
index 0000000..a71f39d
Binary files /dev/null and b/Content/StarterContent/Textures/T_Perlin_Noise_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_RockMesh_M.uasset b/Content/StarterContent/Textures/T_RockMesh_M.uasset
new file mode 100644
index 0000000..91a8dbe
Binary files /dev/null and b/Content/StarterContent/Textures/T_RockMesh_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_RockMesh_N.uasset b/Content/StarterContent/Textures/T_RockMesh_N.uasset
new file mode 100644
index 0000000..cf18346
Binary files /dev/null and b/Content/StarterContent/Textures/T_RockMesh_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Rock_Basalt_D.uasset b/Content/StarterContent/Textures/T_Rock_Basalt_D.uasset
new file mode 100644
index 0000000..15197b2
Binary files /dev/null and b/Content/StarterContent/Textures/T_Rock_Basalt_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Rock_Basalt_N.uasset b/Content/StarterContent/Textures/T_Rock_Basalt_N.uasset
new file mode 100644
index 0000000..17ac16e
Binary files /dev/null and b/Content/StarterContent/Textures/T_Rock_Basalt_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Rock_Marble_Polished_D.uasset b/Content/StarterContent/Textures/T_Rock_Marble_Polished_D.uasset
new file mode 100644
index 0000000..cc564e5
Binary files /dev/null and b/Content/StarterContent/Textures/T_Rock_Marble_Polished_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Rock_Sandstone_D.uasset b/Content/StarterContent/Textures/T_Rock_Sandstone_D.uasset
new file mode 100644
index 0000000..efc7c83
Binary files /dev/null and b/Content/StarterContent/Textures/T_Rock_Sandstone_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Rock_Sandstone_N.uasset b/Content/StarterContent/Textures/T_Rock_Sandstone_N.uasset
new file mode 100644
index 0000000..942331b
Binary files /dev/null and b/Content/StarterContent/Textures/T_Rock_Sandstone_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Rock_Slate_D.uasset b/Content/StarterContent/Textures/T_Rock_Slate_D.uasset
new file mode 100644
index 0000000..b460e81
Binary files /dev/null and b/Content/StarterContent/Textures/T_Rock_Slate_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Rock_Slate_N.uasset b/Content/StarterContent/Textures/T_Rock_Slate_N.uasset
new file mode 100644
index 0000000..3eb6b14
Binary files /dev/null and b/Content/StarterContent/Textures/T_Rock_Slate_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Rock_Smooth_Granite_D.uasset b/Content/StarterContent/Textures/T_Rock_Smooth_Granite_D.uasset
new file mode 100644
index 0000000..9c11db2
Binary files /dev/null and b/Content/StarterContent/Textures/T_Rock_Smooth_Granite_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Shelf_M.uasset b/Content/StarterContent/Textures/T_Shelf_M.uasset
new file mode 100644
index 0000000..40bea03
Binary files /dev/null and b/Content/StarterContent/Textures/T_Shelf_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Shelf_N.uasset b/Content/StarterContent/Textures/T_Shelf_N.uasset
new file mode 100644
index 0000000..5cb6c71
Binary files /dev/null and b/Content/StarterContent/Textures/T_Shelf_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Single_Tile_N.uasset b/Content/StarterContent/Textures/T_Single_Tile_N.uasset
new file mode 100644
index 0000000..ddc0828
Binary files /dev/null and b/Content/StarterContent/Textures/T_Single_Tile_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Smoke_SubUV.uasset b/Content/StarterContent/Textures/T_Smoke_SubUV.uasset
new file mode 100644
index 0000000..5c8a2d9
Binary files /dev/null and b/Content/StarterContent/Textures/T_Smoke_SubUV.uasset differ
diff --git a/Content/StarterContent/Textures/T_Smoke_Tiled_D.uasset b/Content/StarterContent/Textures/T_Smoke_Tiled_D.uasset
new file mode 100644
index 0000000..aad7a5e
Binary files /dev/null and b/Content/StarterContent/Textures/T_Smoke_Tiled_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Spark_Core.uasset b/Content/StarterContent/Textures/T_Spark_Core.uasset
new file mode 100644
index 0000000..3881b88
Binary files /dev/null and b/Content/StarterContent/Textures/T_Spark_Core.uasset differ
diff --git a/Content/StarterContent/Textures/T_Statue_M.uasset b/Content/StarterContent/Textures/T_Statue_M.uasset
new file mode 100644
index 0000000..d43158a
Binary files /dev/null and b/Content/StarterContent/Textures/T_Statue_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Statue_N.uasset b/Content/StarterContent/Textures/T_Statue_N.uasset
new file mode 100644
index 0000000..787d2d5
Binary files /dev/null and b/Content/StarterContent/Textures/T_Statue_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_TableRound_M.uasset b/Content/StarterContent/Textures/T_TableRound_M.uasset
new file mode 100644
index 0000000..a76573e
Binary files /dev/null and b/Content/StarterContent/Textures/T_TableRound_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_TableRound_N.uasset b/Content/StarterContent/Textures/T_TableRound_N.uasset
new file mode 100644
index 0000000..619c420
Binary files /dev/null and b/Content/StarterContent/Textures/T_TableRound_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Tech_Dot_M.uasset b/Content/StarterContent/Textures/T_Tech_Dot_M.uasset
new file mode 100644
index 0000000..fb692b3
Binary files /dev/null and b/Content/StarterContent/Textures/T_Tech_Dot_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Tech_Dot_N.uasset b/Content/StarterContent/Textures/T_Tech_Dot_N.uasset
new file mode 100644
index 0000000..50d81c2
Binary files /dev/null and b/Content/StarterContent/Textures/T_Tech_Dot_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Tech_Hex_Tile_M.uasset b/Content/StarterContent/Textures/T_Tech_Hex_Tile_M.uasset
new file mode 100644
index 0000000..502170b
Binary files /dev/null and b/Content/StarterContent/Textures/T_Tech_Hex_Tile_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Tech_Hex_Tile_N.uasset b/Content/StarterContent/Textures/T_Tech_Hex_Tile_N.uasset
new file mode 100644
index 0000000..549633c
Binary files /dev/null and b/Content/StarterContent/Textures/T_Tech_Hex_Tile_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Tech_Panel_M.uasset b/Content/StarterContent/Textures/T_Tech_Panel_M.uasset
new file mode 100644
index 0000000..192a8e4
Binary files /dev/null and b/Content/StarterContent/Textures/T_Tech_Panel_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Tech_Panel_N.uasset b/Content/StarterContent/Textures/T_Tech_Panel_N.uasset
new file mode 100644
index 0000000..b12087e
Binary files /dev/null and b/Content/StarterContent/Textures/T_Tech_Panel_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Water_M.uasset b/Content/StarterContent/Textures/T_Water_M.uasset
new file mode 100644
index 0000000..63e9b4e
Binary files /dev/null and b/Content/StarterContent/Textures/T_Water_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Water_N.uasset b/Content/StarterContent/Textures/T_Water_N.uasset
new file mode 100644
index 0000000..dc83c1b
Binary files /dev/null and b/Content/StarterContent/Textures/T_Water_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Wood_Floor_Walnut_D.uasset b/Content/StarterContent/Textures/T_Wood_Floor_Walnut_D.uasset
new file mode 100644
index 0000000..0598d9e
Binary files /dev/null and b/Content/StarterContent/Textures/T_Wood_Floor_Walnut_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Wood_Floor_Walnut_M.uasset b/Content/StarterContent/Textures/T_Wood_Floor_Walnut_M.uasset
new file mode 100644
index 0000000..1af473f
Binary files /dev/null and b/Content/StarterContent/Textures/T_Wood_Floor_Walnut_M.uasset differ
diff --git a/Content/StarterContent/Textures/T_Wood_Floor_Walnut_N.uasset b/Content/StarterContent/Textures/T_Wood_Floor_Walnut_N.uasset
new file mode 100644
index 0000000..dae4bb4
Binary files /dev/null and b/Content/StarterContent/Textures/T_Wood_Floor_Walnut_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Wood_Oak_D.uasset b/Content/StarterContent/Textures/T_Wood_Oak_D.uasset
new file mode 100644
index 0000000..c5494a9
Binary files /dev/null and b/Content/StarterContent/Textures/T_Wood_Oak_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Wood_Oak_N.uasset b/Content/StarterContent/Textures/T_Wood_Oak_N.uasset
new file mode 100644
index 0000000..71543aa
Binary files /dev/null and b/Content/StarterContent/Textures/T_Wood_Oak_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Wood_Pine_D.uasset b/Content/StarterContent/Textures/T_Wood_Pine_D.uasset
new file mode 100644
index 0000000..eac50af
Binary files /dev/null and b/Content/StarterContent/Textures/T_Wood_Pine_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Wood_Pine_N.uasset b/Content/StarterContent/Textures/T_Wood_Pine_N.uasset
new file mode 100644
index 0000000..051a794
Binary files /dev/null and b/Content/StarterContent/Textures/T_Wood_Pine_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_Wood_Walnut_D.uasset b/Content/StarterContent/Textures/T_Wood_Walnut_D.uasset
new file mode 100644
index 0000000..bc3c3df
Binary files /dev/null and b/Content/StarterContent/Textures/T_Wood_Walnut_D.uasset differ
diff --git a/Content/StarterContent/Textures/T_Wood_Walnut_N.uasset b/Content/StarterContent/Textures/T_Wood_Walnut_N.uasset
new file mode 100644
index 0000000..856a1f8
Binary files /dev/null and b/Content/StarterContent/Textures/T_Wood_Walnut_N.uasset differ
diff --git a/Content/StarterContent/Textures/T_ground_Moss_D.uasset b/Content/StarterContent/Textures/T_ground_Moss_D.uasset
new file mode 100644
index 0000000..2b9ca5b
Binary files /dev/null and b/Content/StarterContent/Textures/T_ground_Moss_D.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/0M/LYKU8MRWM4BO3O1FDZBG2U.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/0M/LYKU8MRWM4BO3O1FDZBG2U.uasset
new file mode 100644
index 0000000..e4d3cea
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/0M/LYKU8MRWM4BO3O1FDZBG2U.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/7P/QZX5AESKLO855EVPT5JU20.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/7P/QZX5AESKLO855EVPT5JU20.uasset
new file mode 100644
index 0000000..a0d9e2c
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/7P/QZX5AESKLO855EVPT5JU20.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/CL/381LM03PFI8AF9NED1SEV2.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/CL/381LM03PFI8AF9NED1SEV2.uasset
new file mode 100644
index 0000000..6215a03
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/CL/381LM03PFI8AF9NED1SEV2.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/GO/I8WEFD3RY9V3NVQLSU6QM4.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/GO/I8WEFD3RY9V3NVQLSU6QM4.uasset
new file mode 100644
index 0000000..f192f74
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/GO/I8WEFD3RY9V3NVQLSU6QM4.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/NB/NWWEVRQSGT6ARVZ8HQLCM9.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/NB/NWWEVRQSGT6ARVZ8HQLCM9.uasset
new file mode 100644
index 0000000..0891db0
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/NB/NWWEVRQSGT6ARVZ8HQLCM9.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/XV/VTAF5COFGLO9YT51MQCVTR.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/XV/VTAF5COFGLO9YT51MQCVTR.uasset
new file mode 100644
index 0000000..1f62e85
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/0/XV/VTAF5COFGLO9YT51MQCVTR.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/1/2J/R4MRTH8FEAO7ML1BCJFIZ2.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/1/2J/R4MRTH8FEAO7ML1BCJFIZ2.uasset
new file mode 100644
index 0000000..efd5343
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/1/2J/R4MRTH8FEAO7ML1BCJFIZ2.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/1/63/MG6FOV6QQX2CAZCGF7O9MM.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/1/63/MG6FOV6QQX2CAZCGF7O9MM.uasset
new file mode 100644
index 0000000..b69a6d7
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/1/63/MG6FOV6QQX2CAZCGF7O9MM.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/1/JT/XIHYQ8ZTVL6F9GCUZX1AQ2.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/1/JT/XIHYQ8ZTVL6F9GCUZX1AQ2.uasset
new file mode 100644
index 0000000..9ac2332
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/1/JT/XIHYQ8ZTVL6F9GCUZX1AQ2.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/1/JW/IQ4HLH5ISNNAXZQ2O2OR6P.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/1/JW/IQ4HLH5ISNNAXZQ2O2OR6P.uasset
new file mode 100644
index 0000000..f18d5ae
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/1/JW/IQ4HLH5ISNNAXZQ2O2OR6P.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/1/OD/YPSPM063O6XAJVKSDHY2JX.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/1/OD/YPSPM063O6XAJVKSDHY2JX.uasset
new file mode 100644
index 0000000..415d604
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/1/OD/YPSPM063O6XAJVKSDHY2JX.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/3/0O/4IRR0TBO7VGKMMYSZRQTB1.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/3/0O/4IRR0TBO7VGKMMYSZRQTB1.uasset
new file mode 100644
index 0000000..4d9cfb3
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/3/0O/4IRR0TBO7VGKMMYSZRQTB1.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/3/AI/0XWE3RNM2XQC0ST1KXG02O.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/3/AI/0XWE3RNM2XQC0ST1KXG02O.uasset
new file mode 100644
index 0000000..86a5c92
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/3/AI/0XWE3RNM2XQC0ST1KXG02O.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/3/C8/Z38FT77DKZLKDXTQ7PZNM4.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/3/C8/Z38FT77DKZLKDXTQ7PZNM4.uasset
new file mode 100644
index 0000000..0361117
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/3/C8/Z38FT77DKZLKDXTQ7PZNM4.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/3/CP/XRLOR3HVYVHJA3N9PKGXZH.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/3/CP/XRLOR3HVYVHJA3N9PKGXZH.uasset
new file mode 100644
index 0000000..80aa393
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/3/CP/XRLOR3HVYVHJA3N9PKGXZH.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/4/CR/SRVPLA8UNZ8XIIP0E036DI.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/4/CR/SRVPLA8UNZ8XIIP0E036DI.uasset
new file mode 100644
index 0000000..be81427
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/4/CR/SRVPLA8UNZ8XIIP0E036DI.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/4/E5/6XON0XLIRNWJCBCE62P2VV.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/4/E5/6XON0XLIRNWJCBCE62P2VV.uasset
new file mode 100644
index 0000000..2ec1344
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/4/E5/6XON0XLIRNWJCBCE62P2VV.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/4/G2/DXY1ROMU8NVTUPH999VNGV.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/4/G2/DXY1ROMU8NVTUPH999VNGV.uasset
new file mode 100644
index 0000000..967bc8f
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/4/G2/DXY1ROMU8NVTUPH999VNGV.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/4/PT/ZXUQMNLL9GZ2UNQ5D0R4A4.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/4/PT/ZXUQMNLL9GZ2UNQ5D0R4A4.uasset
new file mode 100644
index 0000000..73a00da
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/4/PT/ZXUQMNLL9GZ2UNQ5D0R4A4.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/5/80/QQN0UFFAA797E1UT4IMD29.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/5/80/QQN0UFFAA797E1UT4IMD29.uasset
new file mode 100644
index 0000000..aeee2d3
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/5/80/QQN0UFFAA797E1UT4IMD29.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/5/DI/1JZHHCOBVQ2F5XRUWSES1X.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/5/DI/1JZHHCOBVQ2F5XRUWSES1X.uasset
new file mode 100644
index 0000000..4496c0f
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/5/DI/1JZHHCOBVQ2F5XRUWSES1X.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/5/SI/6K90CL2ZSQWKILI9NQQLEA.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/5/SI/6K90CL2ZSQWKILI9NQQLEA.uasset
new file mode 100644
index 0000000..6eab154
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/5/SI/6K90CL2ZSQWKILI9NQQLEA.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/5/W4/MXSOOLN47B2MJB5ZNQINHQ.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/5/W4/MXSOOLN47B2MJB5ZNQINHQ.uasset
new file mode 100644
index 0000000..0103c32
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/5/W4/MXSOOLN47B2MJB5ZNQINHQ.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/6/0Z/5RQIHCZ9W3UXRGL4LTLQAK.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/6/0Z/5RQIHCZ9W3UXRGL4LTLQAK.uasset
new file mode 100644
index 0000000..3203a3f
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/6/0Z/5RQIHCZ9W3UXRGL4LTLQAK.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/6/7T/GM0EQ2Z7BN3RV91M3TA1BD.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/6/7T/GM0EQ2Z7BN3RV91M3TA1BD.uasset
new file mode 100644
index 0000000..d4ec6d5
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/6/7T/GM0EQ2Z7BN3RV91M3TA1BD.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/6/7Z/7EHFAZ5HVWXAWQ04QO5TH0.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/6/7Z/7EHFAZ5HVWXAWQ04QO5TH0.uasset
new file mode 100644
index 0000000..084bfad
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/6/7Z/7EHFAZ5HVWXAWQ04QO5TH0.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/6/AJ/2XZ3RUK0LFB63FVNQE7P5R.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/6/AJ/2XZ3RUK0LFB63FVNQE7P5R.uasset
new file mode 100644
index 0000000..ce51006
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/6/AJ/2XZ3RUK0LFB63FVNQE7P5R.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/6/HC/FI3CQDKJY4J00D2B21FYQZ.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/6/HC/FI3CQDKJY4J00D2B21FYQZ.uasset
new file mode 100644
index 0000000..381dbe6
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/6/HC/FI3CQDKJY4J00D2B21FYQZ.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/5X/6EW8RE9VA2GGHRWK614FCI.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/5X/6EW8RE9VA2GGHRWK614FCI.uasset
new file mode 100644
index 0000000..d0457c5
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/5X/6EW8RE9VA2GGHRWK614FCI.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/8K/0OLPBOSZCPU1X7E3PCLCGF.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/8K/0OLPBOSZCPU1X7E3PCLCGF.uasset
new file mode 100644
index 0000000..2b8bdf2
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/8K/0OLPBOSZCPU1X7E3PCLCGF.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/DF/1GID8P6B00XRWKYCXU7HT1.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/DF/1GID8P6B00XRWKYCXU7HT1.uasset
new file mode 100644
index 0000000..4e958e8
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/DF/1GID8P6B00XRWKYCXU7HT1.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/GI/GZM47KS5FPIQH5TLSYC1ME.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/GI/GZM47KS5FPIQH5TLSYC1ME.uasset
new file mode 100644
index 0000000..aa10913
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/GI/GZM47KS5FPIQH5TLSYC1ME.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/I8/LH9T10MU22N3EEPTZ4GAFC.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/I8/LH9T10MU22N3EEPTZ4GAFC.uasset
new file mode 100644
index 0000000..aefad10
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/I8/LH9T10MU22N3EEPTZ4GAFC.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/L5/1ZJ54FMA0DAL3I2Q8RFAIB.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/L5/1ZJ54FMA0DAL3I2Q8RFAIB.uasset
new file mode 100644
index 0000000..2a3eba8
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/7/L5/1ZJ54FMA0DAL3I2Q8RFAIB.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/3M/4ATOKH0ZGPCVBS85MPKAXK.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/3M/4ATOKH0ZGPCVBS85MPKAXK.uasset
new file mode 100644
index 0000000..33592c4
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/3M/4ATOKH0ZGPCVBS85MPKAXK.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/80/RCXALNT3NG94XMV0V6D4XE.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/80/RCXALNT3NG94XMV0V6D4XE.uasset
new file mode 100644
index 0000000..badd240
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/80/RCXALNT3NG94XMV0V6D4XE.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/CF/ZNIOCRD90Z70MMV9NMW778.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/CF/ZNIOCRD90Z70MMV9NMW778.uasset
new file mode 100644
index 0000000..4d40449
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/CF/ZNIOCRD90Z70MMV9NMW778.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/CW/6HT16P8P5RAXNJG3EVYWE9.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/CW/6HT16P8P5RAXNJG3EVYWE9.uasset
new file mode 100644
index 0000000..cc18cf4
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/CW/6HT16P8P5RAXNJG3EVYWE9.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/N6/7HWHBG6K5ONLNTKPMLXMYR.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/N6/7HWHBG6K5ONLNTKPMLXMYR.uasset
new file mode 100644
index 0000000..9e4facd
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/N6/7HWHBG6K5ONLNTKPMLXMYR.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/SZ/D1AHM62WL9TXSNPYQDXQMZ.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/SZ/D1AHM62WL9TXSNPYQDXQMZ.uasset
new file mode 100644
index 0000000..07e1045
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/SZ/D1AHM62WL9TXSNPYQDXQMZ.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/Y4/KY9ZXT77SAVGWBRTNCFCSC.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/Y4/KY9ZXT77SAVGWBRTNCFCSC.uasset
new file mode 100644
index 0000000..c6c879a
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/Y4/KY9ZXT77SAVGWBRTNCFCSC.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/Z7/W1SXRCM1KAKBJOIZDLHZ47.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/Z7/W1SXRCM1KAKBJOIZDLHZ47.uasset
new file mode 100644
index 0000000..5e70b62
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/8/Z7/W1SXRCM1KAKBJOIZDLHZ47.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/9/6K/53TOYTOLDEUBMS5SLUFP3V.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/9/6K/53TOYTOLDEUBMS5SLUFP3V.uasset
new file mode 100644
index 0000000..3725193
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/9/6K/53TOYTOLDEUBMS5SLUFP3V.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/9/JW/IY5R6I5N0YWU9LYWKXFXH9.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/9/JW/IY5R6I5N0YWU9LYWKXFXH9.uasset
new file mode 100644
index 0000000..9a7d4aa
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/9/JW/IY5R6I5N0YWU9LYWKXFXH9.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/9/OJ/9MHHMH0XHVZ04YDZ7NPC32.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/9/OJ/9MHHMH0XHVZ04YDZ7NPC32.uasset
new file mode 100644
index 0000000..ce950b0
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/9/OJ/9MHHMH0XHVZ04YDZ7NPC32.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/9/Q2/TOKV0KMMZ7RIQ78R0UEDQL.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/9/Q2/TOKV0KMMZ7RIQ78R0UEDQL.uasset
new file mode 100644
index 0000000..1dfe396
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/9/Q2/TOKV0KMMZ7RIQ78R0UEDQL.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/9/VP/FVTPO8KZ0WPMCSQLVJE6O9.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/9/VP/FVTPO8KZ0WPMCSQLVJE6O9.uasset
new file mode 100644
index 0000000..d574514
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/9/VP/FVTPO8KZ0WPMCSQLVJE6O9.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/A/2W/U0XT0R08XQA6C15NK8ILFA.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/A/2W/U0XT0R08XQA6C15NK8ILFA.uasset
new file mode 100644
index 0000000..28bfe8b
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/A/2W/U0XT0R08XQA6C15NK8ILFA.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/A/KU/12YG9I1QW2GU72MG8QQX1K.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/A/KU/12YG9I1QW2GU72MG8QQX1K.uasset
new file mode 100644
index 0000000..554da4f
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/A/KU/12YG9I1QW2GU72MG8QQX1K.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/A/RJ/Z7CLKO8GGJ7RXH5PUAF4T4.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/A/RJ/Z7CLKO8GGJ7RXH5PUAF4T4.uasset
new file mode 100644
index 0000000..4a1fa7a
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/A/RJ/Z7CLKO8GGJ7RXH5PUAF4T4.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/A/XJ/HL558UUAGCS9HVVOI0S7PX.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/A/XJ/HL558UUAGCS9HVVOI0S7PX.uasset
new file mode 100644
index 0000000..d8b9650
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/A/XJ/HL558UUAGCS9HVVOI0S7PX.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/B/51/6JKB4DNGJP09QUHY23FHRV.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/B/51/6JKB4DNGJP09QUHY23FHRV.uasset
new file mode 100644
index 0000000..a6135d5
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/B/51/6JKB4DNGJP09QUHY23FHRV.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/B/DD/654T6CAPVSXAN1LXEX71EI.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/B/DD/654T6CAPVSXAN1LXEX71EI.uasset
new file mode 100644
index 0000000..2a6da42
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/B/DD/654T6CAPVSXAN1LXEX71EI.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/B/EF/G3O7YJR3QU51OHQGRYB635.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/B/EF/G3O7YJR3QU51OHQGRYB635.uasset
new file mode 100644
index 0000000..740e2c2
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/B/EF/G3O7YJR3QU51OHQGRYB635.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/B/YQ/KT6JL4FVCNJJ9VFOCSF32J.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/B/YQ/KT6JL4FVCNJJ9VFOCSF32J.uasset
new file mode 100644
index 0000000..050478f
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/B/YQ/KT6JL4FVCNJJ9VFOCSF32J.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/C/P8/0GJ9TLQE2YKOIFZ6YHG33H.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/C/P8/0GJ9TLQE2YKOIFZ6YHG33H.uasset
new file mode 100644
index 0000000..5d4e371
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/C/P8/0GJ9TLQE2YKOIFZ6YHG33H.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/C/VO/VMN4G7K3NKKV6F8HTPHHDB.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/C/VO/VMN4G7K3NKKV6F8HTPHHDB.uasset
new file mode 100644
index 0000000..eb741c8
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/C/VO/VMN4G7K3NKKV6F8HTPHHDB.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/D/0W/E1FKEGVKGOLM7HGLQPCIPO.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/D/0W/E1FKEGVKGOLM7HGLQPCIPO.uasset
new file mode 100644
index 0000000..8a7f150
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/D/0W/E1FKEGVKGOLM7HGLQPCIPO.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/D/OJ/2028JO54KEAJB1N98IRKL0.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/D/OJ/2028JO54KEAJB1N98IRKL0.uasset
new file mode 100644
index 0000000..d4edc29
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/D/OJ/2028JO54KEAJB1N98IRKL0.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/E/MX/R1GV431P5FDO08OFULRA01.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/E/MX/R1GV431P5FDO08OFULRA01.uasset
new file mode 100644
index 0000000..9f9f3bb
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/E/MX/R1GV431P5FDO08OFULRA01.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/E/UE/YUZ9741T50O1SYRX90OB0S.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/E/UE/YUZ9741T50O1SYRX90OB0S.uasset
new file mode 100644
index 0000000..1304e83
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/E/UE/YUZ9741T50O1SYRX90OB0S.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/E/V3/ICWLYCF62EJ63XTK5ZSZWV.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/E/V3/ICWLYCF62EJ63XTK5ZSZWV.uasset
new file mode 100644
index 0000000..3f9a52a
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/E/V3/ICWLYCF62EJ63XTK5ZSZWV.uasset differ
diff --git a/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/F/2F/0SPQG8P507LI9VUAFG20OA.uasset b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/F/2F/0SPQG8P507LI9VUAFG20OA.uasset
new file mode 100644
index 0000000..a4fe216
Binary files /dev/null and b/Content/__ExternalActors__/FirstPerson/Maps/FirstPersonMap/F/2F/0SPQG8P507LI9VUAFG20OA.uasset differ
diff --git a/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/1/KG/WXBHR5YF7EMN5ENSKZGERE.uasset b/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/1/KG/WXBHR5YF7EMN5ENSKZGERE.uasset
new file mode 100644
index 0000000..4f8efdd
Binary files /dev/null and b/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/1/KG/WXBHR5YF7EMN5ENSKZGERE.uasset differ
diff --git a/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/3/BY/K2NKB37FY83282ZJ5Q84B9.uasset b/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/3/BY/K2NKB37FY83282ZJ5Q84B9.uasset
new file mode 100644
index 0000000..c060d56
Binary files /dev/null and b/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/3/BY/K2NKB37FY83282ZJ5Q84B9.uasset differ
diff --git a/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/5/68/DK3EWP7A4H1CU1MWJ4M3SR.uasset b/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/5/68/DK3EWP7A4H1CU1MWJ4M3SR.uasset
new file mode 100644
index 0000000..492668b
Binary files /dev/null and b/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/5/68/DK3EWP7A4H1CU1MWJ4M3SR.uasset differ
diff --git a/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/6/B8/RE8N15L5TGXIQNKLJO5ONQ.uasset b/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/6/B8/RE8N15L5TGXIQNKLJO5ONQ.uasset
new file mode 100644
index 0000000..58faa97
Binary files /dev/null and b/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/6/B8/RE8N15L5TGXIQNKLJO5ONQ.uasset differ
diff --git a/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/6/VE/TF378B0L0V6R2E9RYZ61WK.uasset b/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/6/VE/TF378B0L0V6R2E9RYZ61WK.uasset
new file mode 100644
index 0000000..df555a6
Binary files /dev/null and b/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/6/VE/TF378B0L0V6R2E9RYZ61WK.uasset differ
diff --git a/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/7/XG/B4XEEQD3M51IAE3XXUCIGI.uasset b/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/7/XG/B4XEEQD3M51IAE3XXUCIGI.uasset
new file mode 100644
index 0000000..bcff0f3
Binary files /dev/null and b/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/7/XG/B4XEEQD3M51IAE3XXUCIGI.uasset differ
diff --git a/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/9/NP/OGSW48O49NB75KV3Y5NAUU.uasset b/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/9/NP/OGSW48O49NB75KV3Y5NAUU.uasset
new file mode 100644
index 0000000..f8cd35f
Binary files /dev/null and b/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/9/NP/OGSW48O49NB75KV3Y5NAUU.uasset differ
diff --git a/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/E/D1/9XTHNJ7RYMHRDCEYQKNIYP.uasset b/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/E/D1/9XTHNJ7RYMHRDCEYQKNIYP.uasset
new file mode 100644
index 0000000..24caa46
Binary files /dev/null and b/Content/__ExternalObjects__/FirstPerson/Maps/FirstPersonMap/E/D1/9XTHNJ7RYMHRDCEYQKNIYP.uasset differ
diff --git a/Shaders/Private/DeformationCS.usf b/Shaders/Private/DeformationCS.usf
new file mode 100644
index 0000000..445c94b
--- /dev/null
+++ b/Shaders/Private/DeformationCS.usf
@@ -0,0 +1,64 @@
+// DeformationCS.usf
+#include "/Engine/Public/Platform.ush"
+// 输入输出定义
+Texture2D InputTexture;
+RWTexture2D OutputTexture;
+// 参数缓冲区
+cbuffer Parameters
+{
+ float3 ImpactPoint;
+ float ImpactForce;
+ float3 ImpactNormal;
+ float DeformationRadius;
+ float Plasticity;
+ int3 TextureSize;
+ int3 UpdateRegionMin;
+ int3 UpdateRegionSize;
+};
+// 线程组大小
+#define THREADGROUP_SIZE_X 8
+#define THREADGROUP_SIZE_Y 8
+[numthreads(THREADGROUP_SIZE_X, THREADGROUP_SIZE_Y, 1)]
+void MainCS(
+ uint3 GroupID : SV_GroupID,
+ uint3 GroupThreadID : SV_GroupThreadID,
+ uint3 DispatchThreadID : SV_DispatchThreadID
+)
+{
+ // 计算全局像素坐标
+ int2 PixelCoord = DispatchThreadID.xy + int2(UpdateRegionMin.xy);
+
+ // 检查是否在有效区域内
+ if (PixelCoord.x >= UpdateRegionMin.x + UpdateRegionSize.x ||
+ PixelCoord.y >= UpdateRegionMin.y + UpdateRegionSize.y)
+ {
+ return;
+ }
+
+ // 从输入纹理读取位置
+ float4 OriginalPos = InputTexture.Load(int3(PixelCoord, 0));
+
+ // 计算到碰撞点的距离
+ float dist = distance(OriginalPos.xyz, ImpactPoint);
+
+ // 在变形半径内处理
+ if (dist < DeformationRadius)
+ {
+ // 计算变形衰减 (高斯衰减)
+ float falloff = exp(-(dist * dist) / (2.0 * DeformationRadius * DeformationRadius));
+
+ // 计算变形量 (考虑法线方向)
+ float3 deformation = ImpactNormal * ImpactForce * falloff * 0.01;
+
+ // 应用塑性变形
+ float3 newPos = OriginalPos.xyz + deformation * Plasticity;
+
+ // 写入新位置
+ OutputTexture[PixelCoord] = float4(newPos, OriginalPos.w);
+ }
+ else
+ {
+ // 保持原位置
+ OutputTexture[PixelCoord] = OriginalPos;
+ }
+}
\ No newline at end of file
diff --git a/Source/BladeSmith.Target.cs b/Source/BladeSmith.Target.cs
new file mode 100644
index 0000000..be02ca5
--- /dev/null
+++ b/Source/BladeSmith.Target.cs
@@ -0,0 +1,15 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+using UnrealBuildTool;
+using System.Collections.Generic;
+
+public class BladeSmithTarget : TargetRules
+{
+ public BladeSmithTarget(TargetInfo Target) : base(Target)
+ {
+ Type = TargetType.Game;
+ DefaultBuildSettings = BuildSettingsVersion.V5;
+ IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_5;
+ ExtraModuleNames.Add("BladeSmith");
+ }
+}
diff --git a/Source/BladeSmith/BladeSmith.Build.cs b/Source/BladeSmith/BladeSmith.Build.cs
new file mode 100644
index 0000000..bbac650
--- /dev/null
+++ b/Source/BladeSmith/BladeSmith.Build.cs
@@ -0,0 +1,13 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+using UnrealBuildTool;
+
+public class BladeSmith : ModuleRules
+{
+ public BladeSmith(ReadOnlyTargetRules Target) : base(Target)
+ {
+ PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
+
+ PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput","RenderCore","RHI" });
+ }
+}
diff --git a/Source/BladeSmith/BladeSmith.cpp b/Source/BladeSmith/BladeSmith.cpp
new file mode 100644
index 0000000..16e2074
--- /dev/null
+++ b/Source/BladeSmith/BladeSmith.cpp
@@ -0,0 +1,7 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#include "BladeSmith.h"
+#include "Modules/ModuleManager.h"
+
+IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, BladeSmith, "BladeSmith" );
+
\ No newline at end of file
diff --git a/Source/BladeSmith/BladeSmith.h b/Source/BladeSmith/BladeSmith.h
new file mode 100644
index 0000000..ddbf2e2
--- /dev/null
+++ b/Source/BladeSmith/BladeSmith.h
@@ -0,0 +1,5 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include "CoreMinimal.h"
diff --git a/Source/BladeSmith/BladeSmithCharacter.cpp b/Source/BladeSmith/BladeSmithCharacter.cpp
new file mode 100644
index 0000000..1470af9
--- /dev/null
+++ b/Source/BladeSmith/BladeSmithCharacter.cpp
@@ -0,0 +1,102 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#include "BladeSmithCharacter.h"
+#include "BladeSmithProjectile.h"
+#include "Animation/AnimInstance.h"
+#include "Camera/CameraComponent.h"
+#include "Components/CapsuleComponent.h"
+#include "Components/SkeletalMeshComponent.h"
+#include "EnhancedInputComponent.h"
+#include "EnhancedInputSubsystems.h"
+#include "InputActionValue.h"
+#include "Engine/LocalPlayer.h"
+
+DEFINE_LOG_CATEGORY(LogTemplateCharacter);
+
+//////////////////////////////////////////////////////////////////////////
+// ABladeSmithCharacter
+
+ABladeSmithCharacter::ABladeSmithCharacter()
+{
+ // Set size for collision capsule
+ GetCapsuleComponent()->InitCapsuleSize(55.f, 96.0f);
+
+ // Create a CameraComponent
+ FirstPersonCameraComponent = CreateDefaultSubobject(TEXT("FirstPersonCamera"));
+ FirstPersonCameraComponent->SetupAttachment(GetCapsuleComponent());
+ FirstPersonCameraComponent->SetRelativeLocation(FVector(-10.f, 0.f, 60.f)); // Position the camera
+ FirstPersonCameraComponent->bUsePawnControlRotation = true;
+
+ // Create a mesh component that will be used when being viewed from a '1st person' view (when controlling this pawn)
+ Mesh1P = CreateDefaultSubobject(TEXT("CharacterMesh1P"));
+ Mesh1P->SetOnlyOwnerSee(true);
+ Mesh1P->SetupAttachment(FirstPersonCameraComponent);
+ Mesh1P->bCastDynamicShadow = false;
+ Mesh1P->CastShadow = false;
+ Mesh1P->SetRelativeLocation(FVector(-30.f, 0.f, -150.f));
+
+}
+
+//////////////////////////////////////////////////////////////////////////// Input
+
+void ABladeSmithCharacter::NotifyControllerChanged()
+{
+ Super::NotifyControllerChanged();
+
+ // Add Input Mapping Context
+ if (APlayerController* PlayerController = Cast(Controller))
+ {
+ if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem(PlayerController->GetLocalPlayer()))
+ {
+ Subsystem->AddMappingContext(DefaultMappingContext, 0);
+ }
+ }
+}
+
+void ABladeSmithCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
+{
+ // Set up action bindings
+ if (UEnhancedInputComponent* EnhancedInputComponent = Cast(PlayerInputComponent))
+ {
+ // Jumping
+ EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Started, this, &ACharacter::Jump);
+ EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Completed, this, &ACharacter::StopJumping);
+
+ // Moving
+ EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &ABladeSmithCharacter::Move);
+
+ // Looking
+ EnhancedInputComponent->BindAction(LookAction, ETriggerEvent::Triggered, this, &ABladeSmithCharacter::Look);
+ }
+ else
+ {
+ UE_LOG(LogTemplateCharacter, Error, TEXT("'%s' Failed to find an Enhanced Input Component! This template is built to use the Enhanced Input system. If you intend to use the legacy system, then you will need to update this C++ file."), *GetNameSafe(this));
+ }
+}
+
+
+void ABladeSmithCharacter::Move(const FInputActionValue& Value)
+{
+ // input is a Vector2D
+ FVector2D MovementVector = Value.Get();
+
+ if (Controller != nullptr)
+ {
+ // add movement
+ AddMovementInput(GetActorForwardVector(), MovementVector.Y);
+ AddMovementInput(GetActorRightVector(), MovementVector.X);
+ }
+}
+
+void ABladeSmithCharacter::Look(const FInputActionValue& Value)
+{
+ // input is a Vector2D
+ FVector2D LookAxisVector = Value.Get();
+
+ if (Controller != nullptr)
+ {
+ // add yaw and pitch input to controller
+ AddControllerYawInput(LookAxisVector.X);
+ AddControllerPitchInput(LookAxisVector.Y);
+ }
+}
\ No newline at end of file
diff --git a/Source/BladeSmith/BladeSmithCharacter.h b/Source/BladeSmith/BladeSmithCharacter.h
new file mode 100644
index 0000000..33b7594
--- /dev/null
+++ b/Source/BladeSmith/BladeSmithCharacter.h
@@ -0,0 +1,71 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "GameFramework/Character.h"
+#include "Logging/LogMacros.h"
+#include "BladeSmithCharacter.generated.h"
+
+class UInputComponent;
+class USkeletalMeshComponent;
+class UCameraComponent;
+class UInputAction;
+class UInputMappingContext;
+struct FInputActionValue;
+
+DECLARE_LOG_CATEGORY_EXTERN(LogTemplateCharacter, Log, All);
+
+UCLASS(config=Game)
+class ABladeSmithCharacter : public ACharacter
+{
+ GENERATED_BODY()
+
+ /** Pawn mesh: 1st person view (arms; seen only by self) */
+ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category=Mesh, meta = (AllowPrivateAccess = "true"))
+ USkeletalMeshComponent* Mesh1P;
+
+ /** First person camera */
+ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Camera, meta = (AllowPrivateAccess = "true"))
+ UCameraComponent* FirstPersonCameraComponent;
+
+ /** MappingContext */
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
+ UInputMappingContext* DefaultMappingContext;
+
+ /** Jump Input Action */
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
+ UInputAction* JumpAction;
+
+ /** Move Input Action */
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
+ UInputAction* MoveAction;
+
+ /** Look Input Action */
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
+ class UInputAction* LookAction;
+
+public:
+ ABladeSmithCharacter();
+
+protected:
+ /** Called for movement input */
+ void Move(const FInputActionValue& Value);
+
+ /** Called for looking input */
+ void Look(const FInputActionValue& Value);
+
+protected:
+ // APawn interface
+ virtual void NotifyControllerChanged() override;
+ virtual void SetupPlayerInputComponent(UInputComponent* InputComponent) override;
+ // End of APawn interface
+
+public:
+ /** Returns Mesh1P subobject **/
+ USkeletalMeshComponent* GetMesh1P() const { return Mesh1P; }
+ /** Returns FirstPersonCameraComponent subobject **/
+ UCameraComponent* GetFirstPersonCameraComponent() const { return FirstPersonCameraComponent; }
+
+};
+
diff --git a/Source/BladeSmith/BladeSmithGameMode.cpp b/Source/BladeSmith/BladeSmithGameMode.cpp
new file mode 100644
index 0000000..323b29d
--- /dev/null
+++ b/Source/BladeSmith/BladeSmithGameMode.cpp
@@ -0,0 +1,14 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#include "BladeSmithGameMode.h"
+#include "BladeSmithCharacter.h"
+#include "UObject/ConstructorHelpers.h"
+
+ABladeSmithGameMode::ABladeSmithGameMode()
+ : Super()
+{
+ // set default pawn class to our Blueprinted character
+ static ConstructorHelpers::FClassFinder PlayerPawnClassFinder(TEXT("/Game/FirstPerson/Blueprints/BP_FirstPersonCharacter"));
+ DefaultPawnClass = PlayerPawnClassFinder.Class;
+
+}
diff --git a/Source/BladeSmith/BladeSmithGameMode.h b/Source/BladeSmith/BladeSmithGameMode.h
new file mode 100644
index 0000000..cc7ddc6
--- /dev/null
+++ b/Source/BladeSmith/BladeSmithGameMode.h
@@ -0,0 +1,19 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "GameFramework/GameModeBase.h"
+#include "BladeSmithGameMode.generated.h"
+
+UCLASS(minimalapi)
+class ABladeSmithGameMode : public AGameModeBase
+{
+ GENERATED_BODY()
+
+public:
+ ABladeSmithGameMode();
+};
+
+
+
diff --git a/Source/BladeSmith/BladeSmithPickUpComponent.cpp b/Source/BladeSmith/BladeSmithPickUpComponent.cpp
new file mode 100644
index 0000000..0470aa5
--- /dev/null
+++ b/Source/BladeSmith/BladeSmithPickUpComponent.cpp
@@ -0,0 +1,31 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#include "BladeSmithPickUpComponent.h"
+
+UBladeSmithPickUpComponent::UBladeSmithPickUpComponent()
+{
+ // Setup the Sphere Collision
+ SphereRadius = 32.f;
+}
+
+void UBladeSmithPickUpComponent::BeginPlay()
+{
+ Super::BeginPlay();
+
+ // Register our Overlap Event
+ OnComponentBeginOverlap.AddDynamic(this, &UBladeSmithPickUpComponent::OnSphereBeginOverlap);
+}
+
+void UBladeSmithPickUpComponent::OnSphereBeginOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
+{
+ // Checking if it is a First Person Character overlapping
+ ABladeSmithCharacter* Character = Cast(OtherActor);
+ if(Character != nullptr)
+ {
+ // Notify that the actor is being picked up
+ OnPickUp.Broadcast(Character);
+
+ // Unregister from the Overlap Event so it is no longer triggered
+ OnComponentBeginOverlap.RemoveAll(this);
+ }
+}
diff --git a/Source/BladeSmith/BladeSmithPickUpComponent.h b/Source/BladeSmith/BladeSmithPickUpComponent.h
new file mode 100644
index 0000000..ac8ecb2
--- /dev/null
+++ b/Source/BladeSmith/BladeSmithPickUpComponent.h
@@ -0,0 +1,34 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "Components/SphereComponent.h"
+#include "BladeSmithCharacter.h"
+#include "BladeSmithPickUpComponent.generated.h"
+
+// Declaration of the delegate that will be called when someone picks this up
+// The character picking this up is the parameter sent with the notification
+DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnPickUp, ABladeSmithCharacter*, PickUpCharacter);
+
+UCLASS(Blueprintable, BlueprintType, ClassGroup = (Custom), meta = (BlueprintSpawnableComponent))
+class BLADESMITH_API UBladeSmithPickUpComponent : public USphereComponent
+{
+ GENERATED_BODY()
+
+public:
+
+ /** Delegate to whom anyone can subscribe to receive this event */
+ UPROPERTY(BlueprintAssignable, Category = "Interaction")
+ FOnPickUp OnPickUp;
+
+ UBladeSmithPickUpComponent();
+protected:
+
+ /** Called when the game starts */
+ virtual void BeginPlay() override;
+
+ /** Code for when something overlaps this component */
+ UFUNCTION()
+ void OnSphereBeginOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);
+};
\ No newline at end of file
diff --git a/Source/BladeSmith/BladeSmithProjectile.cpp b/Source/BladeSmith/BladeSmithProjectile.cpp
new file mode 100644
index 0000000..5a1552a
--- /dev/null
+++ b/Source/BladeSmith/BladeSmithProjectile.cpp
@@ -0,0 +1,43 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#include "BladeSmithProjectile.h"
+#include "GameFramework/ProjectileMovementComponent.h"
+#include "Components/SphereComponent.h"
+
+ABladeSmithProjectile::ABladeSmithProjectile()
+{
+ // Use a sphere as a simple collision representation
+ CollisionComp = CreateDefaultSubobject(TEXT("SphereComp"));
+ CollisionComp->InitSphereRadius(5.0f);
+ CollisionComp->BodyInstance.SetCollisionProfileName("Projectile");
+ CollisionComp->OnComponentHit.AddDynamic(this, &ABladeSmithProjectile::OnHit); // set up a notification for when this component hits something blocking
+
+ // Players can't walk on it
+ CollisionComp->SetWalkableSlopeOverride(FWalkableSlopeOverride(WalkableSlope_Unwalkable, 0.f));
+ CollisionComp->CanCharacterStepUpOn = ECB_No;
+
+ // Set as root component
+ RootComponent = CollisionComp;
+
+ // Use a ProjectileMovementComponent to govern this projectile's movement
+ ProjectileMovement = CreateDefaultSubobject(TEXT("ProjectileComp"));
+ ProjectileMovement->UpdatedComponent = CollisionComp;
+ ProjectileMovement->InitialSpeed = 3000.f;
+ ProjectileMovement->MaxSpeed = 3000.f;
+ ProjectileMovement->bRotationFollowsVelocity = true;
+ ProjectileMovement->bShouldBounce = true;
+
+ // Die after 3 seconds by default
+ InitialLifeSpan = 3.0f;
+}
+
+void ABladeSmithProjectile::OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit)
+{
+ // Only add impulse and destroy projectile if we hit a physics
+ if ((OtherActor != nullptr) && (OtherActor != this) && (OtherComp != nullptr) && OtherComp->IsSimulatingPhysics())
+ {
+ OtherComp->AddImpulseAtLocation(GetVelocity() * 100.0f, GetActorLocation());
+
+ Destroy();
+ }
+}
\ No newline at end of file
diff --git a/Source/BladeSmith/BladeSmithProjectile.h b/Source/BladeSmith/BladeSmithProjectile.h
new file mode 100644
index 0000000..fff19fc
--- /dev/null
+++ b/Source/BladeSmith/BladeSmithProjectile.h
@@ -0,0 +1,37 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "GameFramework/Actor.h"
+#include "BladeSmithProjectile.generated.h"
+
+class USphereComponent;
+class UProjectileMovementComponent;
+
+UCLASS(config=Game)
+class ABladeSmithProjectile : public AActor
+{
+ GENERATED_BODY()
+
+ /** Sphere collision component */
+ UPROPERTY(VisibleDefaultsOnly, Category=Projectile)
+ USphereComponent* CollisionComp;
+
+ /** Projectile movement component */
+ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Movement, meta = (AllowPrivateAccess = "true"))
+ UProjectileMovementComponent* ProjectileMovement;
+
+public:
+ ABladeSmithProjectile();
+
+ /** called when projectile hits something */
+ UFUNCTION()
+ void OnHit(UPrimitiveComponent* HitComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit);
+
+ /** Returns CollisionComp subobject **/
+ USphereComponent* GetCollisionComp() const { return CollisionComp; }
+ /** Returns ProjectileMovement subobject **/
+ UProjectileMovementComponent* GetProjectileMovement() const { return ProjectileMovement; }
+};
+
diff --git a/Source/BladeSmith/BladeSmithWeaponComponent.cpp b/Source/BladeSmith/BladeSmithWeaponComponent.cpp
new file mode 100644
index 0000000..68e2df6
--- /dev/null
+++ b/Source/BladeSmith/BladeSmithWeaponComponent.cpp
@@ -0,0 +1,119 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+
+#include "BladeSmithWeaponComponent.h"
+#include "BladeSmithCharacter.h"
+#include "BladeSmithProjectile.h"
+#include "GameFramework/PlayerController.h"
+#include "Camera/PlayerCameraManager.h"
+#include "Kismet/GameplayStatics.h"
+#include "EnhancedInputComponent.h"
+#include "EnhancedInputSubsystems.h"
+#include "Animation/AnimInstance.h"
+#include "Engine/LocalPlayer.h"
+#include "Engine/World.h"
+
+// Sets default values for this component's properties
+UBladeSmithWeaponComponent::UBladeSmithWeaponComponent()
+{
+ // Default offset from the character location for projectiles to spawn
+ MuzzleOffset = FVector(100.0f, 0.0f, 10.0f);
+}
+
+
+void UBladeSmithWeaponComponent::Fire()
+{
+ if (Character == nullptr || Character->GetController() == nullptr)
+ {
+ return;
+ }
+
+ // Try and fire a projectile
+ if (ProjectileClass != nullptr)
+ {
+ UWorld* const World = GetWorld();
+ if (World != nullptr)
+ {
+ APlayerController* PlayerController = Cast(Character->GetController());
+ const FRotator SpawnRotation = PlayerController->PlayerCameraManager->GetCameraRotation();
+ // MuzzleOffset is in camera space, so transform it to world space before offsetting from the character location to find the final muzzle position
+ const FVector SpawnLocation = GetOwner()->GetActorLocation() + SpawnRotation.RotateVector(MuzzleOffset);
+
+ //Set Spawn Collision Handling Override
+ FActorSpawnParameters ActorSpawnParams;
+ ActorSpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButDontSpawnIfColliding;
+
+ // Spawn the projectile at the muzzle
+ World->SpawnActor(ProjectileClass, SpawnLocation, SpawnRotation, ActorSpawnParams);
+ }
+ }
+
+ // Try and play the sound if specified
+ if (FireSound != nullptr)
+ {
+ UGameplayStatics::PlaySoundAtLocation(this, FireSound, Character->GetActorLocation());
+ }
+
+ // Try and play a firing animation if specified
+ if (FireAnimation != nullptr)
+ {
+ // Get the animation object for the arms mesh
+ UAnimInstance* AnimInstance = Character->GetMesh1P()->GetAnimInstance();
+ if (AnimInstance != nullptr)
+ {
+ AnimInstance->Montage_Play(FireAnimation, 1.f);
+ }
+ }
+}
+
+bool UBladeSmithWeaponComponent::AttachWeapon(ABladeSmithCharacter* TargetCharacter)
+{
+ Character = TargetCharacter;
+
+ // Check that the character is valid, and has no weapon component yet
+ if (Character == nullptr || Character->GetInstanceComponents().FindItemByClass())
+ {
+ return false;
+ }
+
+ // Attach the weapon to the First Person Character
+ FAttachmentTransformRules AttachmentRules(EAttachmentRule::SnapToTarget, true);
+ AttachToComponent(Character->GetMesh1P(), AttachmentRules, FName(TEXT("GripPoint")));
+
+ // Set up action bindings
+ if (APlayerController* PlayerController = Cast(Character->GetController()))
+ {
+ if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem(PlayerController->GetLocalPlayer()))
+ {
+ // Set the priority of the mapping to 1, so that it overrides the Jump action with the Fire action when using touch input
+ Subsystem->AddMappingContext(FireMappingContext, 1);
+ }
+
+ if (UEnhancedInputComponent* EnhancedInputComponent = Cast(PlayerController->InputComponent))
+ {
+ // Fire
+ EnhancedInputComponent->BindAction(FireAction, ETriggerEvent::Triggered, this, &UBladeSmithWeaponComponent::Fire);
+ }
+ }
+
+ return true;
+}
+
+void UBladeSmithWeaponComponent::EndPlay(const EEndPlayReason::Type EndPlayReason)
+{
+ // ensure we have a character owner
+ if (Character != nullptr)
+ {
+ // remove the input mapping context from the Player Controller
+ if (APlayerController* PlayerController = Cast(Character->GetController()))
+ {
+ if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem(PlayerController->GetLocalPlayer()))
+ {
+ Subsystem->RemoveMappingContext(FireMappingContext);
+ }
+ }
+ }
+
+ // maintain the EndPlay call chain
+ Super::EndPlay(EndPlayReason);
+}
\ No newline at end of file
diff --git a/Source/BladeSmith/BladeSmithWeaponComponent.h b/Source/BladeSmith/BladeSmithWeaponComponent.h
new file mode 100644
index 0000000..d4e01e2
--- /dev/null
+++ b/Source/BladeSmith/BladeSmithWeaponComponent.h
@@ -0,0 +1,60 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "Components/SkeletalMeshComponent.h"
+#include "BladeSmithWeaponComponent.generated.h"
+
+class ABladeSmithCharacter;
+
+UCLASS(Blueprintable, BlueprintType, ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
+class BLADESMITH_API UBladeSmithWeaponComponent : public USkeletalMeshComponent
+{
+ GENERATED_BODY()
+
+public:
+ /** Projectile class to spawn */
+ UPROPERTY(EditDefaultsOnly, Category=Projectile)
+ TSubclassOf ProjectileClass;
+
+ /** Sound to play each time we fire */
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Gameplay)
+ USoundBase* FireSound;
+
+ /** AnimMontage to play each time we fire */
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Gameplay)
+ UAnimMontage* FireAnimation;
+
+ /** Gun muzzle's offset from the characters location */
+ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Gameplay)
+ FVector MuzzleOffset;
+
+ /** MappingContext */
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
+ class UInputMappingContext* FireMappingContext;
+
+ /** Fire Input Action */
+ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Input, meta=(AllowPrivateAccess = "true"))
+ class UInputAction* FireAction;
+
+ /** Sets default values for this component's properties */
+ UBladeSmithWeaponComponent();
+
+ /** Attaches the actor to a FirstPersonCharacter */
+ UFUNCTION(BlueprintCallable, Category="Weapon")
+ bool AttachWeapon(ABladeSmithCharacter* TargetCharacter);
+
+ /** Make the weapon Fire a Projectile */
+ UFUNCTION(BlueprintCallable, Category="Weapon")
+ void Fire();
+
+protected:
+ /** Ends gameplay for this component. */
+ UFUNCTION()
+ virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
+
+private:
+ /** The Character holding this weapon*/
+ ABladeSmithCharacter* Character;
+};
diff --git a/Source/BladeSmith/FDeformComputeShader.cpp b/Source/BladeSmith/FDeformComputeShader.cpp
new file mode 100644
index 0000000..05ffcd0
--- /dev/null
+++ b/Source/BladeSmith/FDeformComputeShader.cpp
@@ -0,0 +1,79 @@
+#include "FDeformComputeShader.h"
+// DeformationCS.cpp
+#include "RenderGraphUtils.h"
+#include "ShaderParameterUtils.h"
+#include "RHICommandList.h"
+IMPLEMENT_GLOBAL_SHADER(FDeformationCS, "/CustomShaders/DeformationCS.usf", "MainCS", SF_Compute);
+FThreadSafeDeformationParams GDeformationParams;
+void FDeformationCS::Dispatch(
+ FRHICommandListImmediate& RHICmdList,
+ const FDeformationCSDispatchParams& Params)
+{
+ // 获取Shader引用
+ TShaderMapRef ComputeShader(GetGlobalShaderMap(GMaxRHIFeatureLevel));
+
+ // 设置参数
+ FParameters ShaderParams;
+ ShaderParams.ImpactPoint = FVector3f(Params.ImpactPoint);
+ ShaderParams.ImpactNormal = FVector3f(Params.ImpactNormal);
+ ShaderParams.ImpactForce = Params.ImpactForce;
+ ShaderParams.DeformationRadius = Params.DeformationRadius;
+ ShaderParams.Plasticity = Params.Plasticity;
+ ShaderParams.InputTexture = Params.InputTexture;
+ FRHIResourceCreateInfo CreateInfo(TEXT("DeformationCS_UAV"));
+ ShaderParams.OutputTexture = RHICmdList.CreateUnorderedAccessView(Params.OutputTexture,0);
+ ShaderParams.TextureSize = Params.TextureSize;
+ ShaderParams.UpdateRegionMin = FIntVector(Params.UpdateRegion.Min.X, Params.UpdateRegion.Min.Y, 0);
+ ShaderParams.UpdateRegionSize = FIntVector(Params.UpdateRegion.Width(), Params.UpdateRegion.Height(), 1);
+
+ // 设置计算Shader
+ FComputeShaderUtils::Dispatch(
+ RHICmdList,
+ ComputeShader,
+ ShaderParams,
+ FIntVector(
+ FMath::DivideAndRoundUp(Params.UpdateRegion.Width(), 8),
+ FMath::DivideAndRoundUp(Params.UpdateRegion.Height(), 8),
+ 1
+ )
+ );
+}
+// 渲染线程入口点
+void DispatchDeformationComputeShaders(FRHICommandListImmediate& RHICmdList)
+{
+ FDeformationCSDispatchParams Params;
+ while(GDeformationParams.ConsumeParams(Params))
+ {
+ FDeformationCS::Dispatch(RHICmdList, Params);
+
+ // 复制结果回源纹理
+ if(Params.InputTexture && Params.OutputTexture)
+ {
+ FRHICopyTextureInfo CopyInfo;
+ CopyInfo.SourcePosition = FIntVector(Params.UpdateRegion.Min.X, Params.UpdateRegion.Min.Y, 0);
+ CopyInfo.DestPosition = CopyInfo.SourcePosition;
+ CopyInfo.Size = FIntVector(Params.UpdateRegion.Width(), Params.UpdateRegion.Height(), 1);
+
+ RHICmdList.CopyTexture(
+ Params.OutputTexture,
+ Params.InputTexture,
+ CopyInfo
+ );
+ }
+ }
+}
+// 注册到渲染线程
+void SetupDeformationShutdown();
+FAutoConsoleCommand RegisterDeformationCmd(
+ TEXT("r.Deformation.Compute"),
+ TEXT(""),
+ FConsoleCommandDelegate::CreateStatic(SetupDeformationShutdown)
+);
+void SetupDeformationShutdown()
+{
+ // 每帧结束时调用
+ ENQUEUE_RENDER_COMMAND(DeformationShutdown)(
+ [](FRHICommandListImmediate& RHICmdList) {
+ DispatchDeformationComputeShaders(RHICmdList);
+ });
+}
\ No newline at end of file
diff --git a/Source/BladeSmith/FDeformComputeShader.h b/Source/BladeSmith/FDeformComputeShader.h
new file mode 100644
index 0000000..0499694
--- /dev/null
+++ b/Source/BladeSmith/FDeformComputeShader.h
@@ -0,0 +1,109 @@
+#pragma once
+#include "GlobalShader.h"
+// DeformComputeShader.h
+
+// DeformationCS.h
+#pragma once
+#include "CoreMinimal.h"
+#include "RHI.h"
+#include "RHIResources.h"
+#include "ShaderParameterStruct.h"
+
+// Compute Shader参数结构体
+struct FDeformationCSDispatchParams
+{
+ // 碰撞参数
+ FVector ImpactPoint;
+ FVector ImpactNormal;
+ float ImpactForce;
+ float DeformationRadius;
+ float Plasticity;
+
+ // 纹理资源
+ FTextureRHIRef InputTexture;
+ FTextureRHIRef OutputTexture;
+
+ // 更新区域 (优化部分更新)
+ FIntRect UpdateRegion;
+
+ // 纹理尺寸
+ FIntVector TextureSize;
+
+ FDeformationCSDispatchParams() : ImpactPoint(0,0,0),
+ ImpactNormal(0,0,0),
+ ImpactForce(0.0f),
+ DeformationRadius(10.0f),
+ Plasticity(0.7f),
+ TextureSize(FIntVector::ZeroValue)
+ {
+ }
+};
+// 支持多实例的线程安全参数
+struct FThreadSafeDeformationParams
+{
+ FCriticalSection ParamsCriticalSection;
+ TArray PendingParams;
+
+ void AddParams(const FDeformationCSDispatchParams& NewParams)
+ {
+ FScopeLock Lock(&ParamsCriticalSection);
+ PendingParams.Add(NewParams);
+ }
+
+ bool ConsumeParams(FDeformationCSDispatchParams& OutParams)
+ {
+ FScopeLock Lock(&ParamsCriticalSection);
+ if(PendingParams.Num() > 0)
+ {
+ OutParams = PendingParams[0];
+ PendingParams.RemoveAt(0);
+ return true;
+ }
+ return false;
+ }
+};
+// 全局参数存储
+extern FThreadSafeDeformationParams GDeformationParams;
+
+// DeformationCS.h (续)
+// Compute Shader类
+class FDeformationCS : public FGlobalShader
+{
+ DECLARE_GLOBAL_SHADER(FDeformationCS);
+ SHADER_USE_PARAMETER_STRUCT(FDeformationCS, FGlobalShader);
+
+ BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
+ // 碰撞参数
+ SHADER_PARAMETER(FVector3f, ImpactPoint)
+ SHADER_PARAMETER(FVector3f, ImpactNormal)
+ SHADER_PARAMETER(float, ImpactForce)
+ SHADER_PARAMETER(float, DeformationRadius)
+ SHADER_PARAMETER(float, Plasticity)
+
+ // 纹理参数
+ SHADER_PARAMETER_TEXTURE(Texture2D, InputTexture)
+ SHADER_PARAMETER_UAV(RWTexture2D, OutputTexture)
+
+ // 更新区域
+ SHADER_PARAMETER(FIntVector, TextureSize)
+ SHADER_PARAMETER(FIntVector, UpdateRegionMin)
+ SHADER_PARAMETER(FIntVector, UpdateRegionSize)
+ END_SHADER_PARAMETER_STRUCT()
+
+ static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters)
+ {
+ return IsFeatureLevelSupported(Parameters.Platform, ERHIFeatureLevel::SM5);
+ }
+
+ static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)
+ {
+ FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment);
+ OutEnvironment.SetDefine(TEXT("THREADGROUP_SIZE_X"), 8);
+ OutEnvironment.SetDefine(TEXT("THREADGROUP_SIZE_Y"), 8);
+ }
+
+ // 分派函数
+ static void Dispatch(
+ FRHICommandListImmediate& RHICmdList,
+ const FDeformationCSDispatchParams& Params);
+};
\ No newline at end of file
diff --git a/Source/BladeSmith/IronBlock.cpp b/Source/BladeSmith/IronBlock.cpp
new file mode 100644
index 0000000..9f8c503
--- /dev/null
+++ b/Source/BladeSmith/IronBlock.cpp
@@ -0,0 +1,403 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+
+#include "IronBlock.h"
+
+#include "FDeformComputeShader.h"
+#include "StaticMeshResources.h"
+#include "TextureResource.h"
+#include "Engine/TextureRenderTarget2D.h"
+#include "Engine/Texture.h"
+#include "Engine/StaticMesh.h"
+#include "Engine/Texture2D.h"
+#include "Materials/MaterialInstanceDynamic.h"
+#include "PhysicsEngine/BodySetup.h"
+// Sets default values
+AIronBlock::AIronBlock(): StaticMeshComp(nullptr), PositionTexture0(nullptr), PositionTexture1(nullptr),
+ PositionRenderTarget(nullptr),
+ DynMaterial(nullptr),
+ CurrentImpactPoint(),
+ CurrentImpactNormal()
+{
+ // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
+ PrimaryActorTick.bCanEverTick = true;
+}
+
+// Called when the game starts or when spawned
+void AIronBlock::BeginPlay()
+{
+ Super::BeginPlay();
+ CalculateLocalBounds();
+ InitializePositionTexture();
+}
+
+UTexture2D* AIronBlock::CreatePositionTexture(const FString& TexName, int32 Size, const TArray& InitialData)
+{
+ // 创建纹理对象
+ UTexture2D* NewTexture = NewObject(
+ this,
+ FName(*TexName),
+ RF_Transient
+ );
+
+ // 设置基本属性
+ NewTexture->Filter = TF_Nearest;
+ NewTexture->SRGB = false;
+ NewTexture->CompressionSettings = TC_HDR;
+ NewTexture->MipGenSettings = TMGS_NoMipmaps;
+ NewTexture->NeverStream = true;
+
+ // 设置纹理尺寸和格式
+ NewTexture->SetPlatformData(new FTexturePlatformData());
+ NewTexture->GetPlatformData()->SizeX = Size;
+ NewTexture->GetPlatformData()->SizeY = Size;
+ NewTexture->GetPlatformData()->PixelFormat = PF_A32B32G32R32F;
+
+ // 添加初始Mip
+ FTexture2DMipMap* Mip = new FTexture2DMipMap();
+ NewTexture->GetPlatformData()->Mips.Add(Mip);
+ Mip->SizeX = Size;
+ Mip->SizeY = Size;
+
+ // 如果有初始数据,填充纹理
+ if (InitialData.Num() > 0)
+ {
+ const int32 DataSize = Size * Size * sizeof(FLinearColor);
+ Mip->BulkData.Lock(LOCK_READ_WRITE);
+ FMemory::Memcpy(Mip->BulkData.Realloc(DataSize), InitialData.GetData(), DataSize);
+ Mip->BulkData.Unlock();
+ }
+
+ // 标记需要更新资源
+ NewTexture->UpdateResource();
+ return NewTexture;
+}
+
+void AIronBlock::OnEndFrameInitializeTextures()
+{
+ // 确保纹理资源已创建
+ if (PositionTexture0 && PositionTexture0->GetResource() &&
+ PositionTexture1 && PositionTexture1->GetResource() &&
+ PositionRenderTarget && PositionRenderTarget->GetResource())
+ {
+ // 初始化纹理对
+ InitializeTexturePair(0);
+ InitializeTexturePair(1);
+
+ // 移除委托
+ FCoreDelegates::OnEndFrame.Remove(TextureInitHandle);
+ TextureInitHandle.Reset();
+
+ UE_LOG(LogTemp, Log, TEXT("Position textures initialized"));
+ }
+}
+
+
+void AIronBlock::EndPlay(const EEndPlayReason::Type EndPlayReason)
+{
+ // 清理资源
+ if (TextureInitHandle.IsValid())
+ {
+ FCoreDelegates::OnEndFrame.Remove(TextureInitHandle);
+ TextureInitHandle.Reset();
+ }
+
+ // 释放 RHI 资源
+ ENQUEUE_RENDER_COMMAND(ReleaseResources)(
+ [this](FRHICommandListImmediate& RHICmdList)
+ {
+ for (int i = 0; i < 2; i++)
+ {
+ TexturePairs->ReleaseRHI();
+ }
+ });
+
+ Super::EndPlay(EndPlayReason);
+}
+
+void AIronBlock::InitializeTexturePair(int32 Index)
+{
+ if (Index < 0 || Index > 1) return;
+
+ UTexture2D* Texture = (Index == 0) ? PositionTexture0 : PositionTexture1;
+ if (!Texture || !Texture->GetResource()) return;
+
+ // 获取纹理引用
+ TexturePairs[Index].RHITexture = Texture->GetResource()->TextureRHI;
+ FTextureRHIRef RHITexture = Texture->GetResource()->GetTexture2DRHI();
+ if (!RHITexture.IsValid()) return;
+
+ // 在渲染线程创建 UAV
+ ENQUEUE_RENDER_COMMAND(CreateTextureUAV)(
+ [this, Index](FRHICommandListImmediate& RHICmdList)
+ {
+ FRHIViewDesc::FTextureUAV::FInitializer ViewDesc = FRHIViewDesc::CreateTextureUAV();
+ TexturePairs[Index].UAV = RHICmdList.CreateUnorderedAccessView(TexturePairs[Index].RHITexture,ViewDesc);
+
+ UE_LOG(LogTemp, Log, TEXT("Created UAV for texture %d"), Index);
+ }
+ );
+}
+
+void AIronBlock::GetStaticMeshVertexPositions(TArray& OutPositions)
+{
+ OutPositions.Empty();
+
+ if (!StaticMeshComp || !StaticMeshComp->GetStaticMesh())
+ return;
+
+ // 获取静态网格资源
+ UStaticMesh* StaticMesh = StaticMeshComp->GetStaticMesh();
+ if (StaticMesh->GetRenderData() && StaticMesh->GetRenderData()->LODResources.Num() > 0)
+ {
+ // 获取LOD0的顶点数据
+ FStaticMeshLODResources& LOD = StaticMesh->GetRenderData()->LODResources[0];
+ const FPositionVertexBuffer& VertexBuffer = LOD.VertexBuffers.PositionVertexBuffer;
+
+ const int32 VertexCount = VertexBuffer.GetNumVertices();
+ OutPositions.SetNum(VertexCount);
+
+ for (int32 i = 0; i < VertexCount; i++)
+ {
+ OutPositions[i] = VertexBuffer.VertexPosition(i);
+ }
+ }
+}
+
+void AIronBlock::InitializePositionTexture()
+{
+ // 获取顶点数据
+ TArray VertexPositions;
+ GetStaticMeshVertexPositions(VertexPositions);
+
+ // 创建初始数据数组
+ TArray InitialData;
+ const int32 TexSize = FMath::RoundUpToPowerOfTwo(FMath::Sqrt((float)VertexPositions.Num()));
+ //int32 TexSize = 512;
+ InitialData.SetNumZeroed(TexSize * TexSize);
+ for (int32 i = 0; i < VertexPositions.Num() && i < InitialData.Num(); i++)
+ {
+ InitialData[i] = FLinearColor(VertexPositions[i]);
+ }
+
+ // 创建纹理
+ PositionTexture0 = CreatePositionTexture("PosTex0", TexSize, InitialData);
+ PositionTexture1 = CreatePositionTexture("PosTex1", TexSize, InitialData);
+ // 初始化纹理对
+ TexturePairs[0].RHITexture = PositionTexture0->GetResource()->TextureRHI;
+ TexturePairs[1].RHITexture = PositionTexture1->GetResource()->TextureRHI;
+ // 创建渲染目标
+ PositionRenderTarget = NewObject(this);
+ PositionRenderTarget->RenderTargetFormat = RTF_RGBA32f;
+ PositionRenderTarget->bCanCreateUAV = true;
+ PositionRenderTarget->InitAutoFormat(TexSize, TexSize);
+ PositionRenderTarget->UpdateResource();
+
+ // 注册纹理初始化委托
+ TextureInitHandle = FCoreDelegates::OnEndFrame.AddUObject(this, &AIronBlock::OnEndFrameInitializeTextures);
+
+ // 设置材质实例
+ SetupDeformationMaterial();
+}
+
+void AIronBlock::CalculateLocalBounds()
+{
+ if (!StaticMeshComp)
+ {
+ StaticMeshComp = GetComponentByClass();
+ }
+ if (StaticMeshComp && StaticMeshComp->GetStaticMesh())
+ {
+ // 获取本地空间包围盒
+ LocalBounds = StaticMeshComp->GetStaticMesh()->GetBoundingBox();
+ }
+ else
+ {
+ // 智能默认值
+ float Extent = 50.0f;
+ LocalBounds = FBox(
+ FVector(-Extent, -Extent, 0),
+ FVector(Extent, Extent, Extent * 0.2f)
+ );
+ }
+
+ // 确保包围盒有效
+ if (LocalBounds.GetVolume() <= 0)
+ {
+ LocalBounds = FBox(FVector(-50, -50, 0), FVector(50, 50, 10));
+ }
+}
+
+void AIronBlock::SetupDeformationMaterial()
+{
+ DynMaterial = UMaterialInstanceDynamic::Create(StaticMeshComp->GetMaterial(0), this);
+ StaticMeshComp->SetMaterial(0, DynMaterial);
+
+ DynMaterial->SetTextureParameterValue("PositionTexture", PositionTexture0);
+
+ DynMaterial->SetScalarParameterValue("EnableDeformation", 1.0f);
+}
+
+void AIronBlock::OnHammerHit(const FHitResult& HitResult)
+{
+ // 获取锤子冲击力
+ float ImpactForce = 0.0f;
+ if (HitResult.GetComponent() && HitResult.GetComponent()->GetPhysicsLinearVelocity().IsNearlyZero())
+ {
+ ImpactForce = HitResult.GetComponent()->GetPhysicsLinearVelocity().Size();
+ }
+
+ // 默认冲击力
+ if (ImpactForce < 10.0f) ImpactForce = 500.0f;
+
+ // 转换到本地空间
+ FVector ImpactPoint = HitResult.ImpactPoint;
+ FVector ImpactNormal = HitResult.ImpactNormal;
+ FVector LocalImpactPoint = GetTransform().InverseTransformPosition(ImpactPoint);
+ FVector LocalImpactNormal = GetTransform().InverseTransformVector(ImpactNormal);
+
+ UpdateComputeShaderParams(LocalImpactPoint, LocalImpactNormal, ImpactForce);
+
+ ExecuteDeformationCS();
+}
+
+// 安全的纹理资源获取
+FTextureRHIRef AIronBlock::GetTextureRHI(UTexture2D* Texture)
+{
+ return Texture && Texture->GetResource() ? Texture->GetResource()->TextureRHI : nullptr;
+}
+// 安全的渲染目标获取
+FTextureRHIRef AIronBlock::GetRenderTargetRHI(UTextureRenderTarget2D* RT)
+{
+ if (!RT || !RT->GetResource()) return nullptr;
+ return RT->GetResource()->TextureRHI;
+}
+
+void AIronBlock::UpdateComputeShaderParams(FVector LocalImpactPoint, FVector LocalImpactNormal, float ImpactForce)
+{
+ // 更新碰撞参数
+ CurrentImpactPoint = LocalImpactPoint;
+ CurrentImpactNormal = LocalImpactNormal.GetSafeNormal();
+ CurrentImpactForce = FMath::Clamp(ImpactForce, 0.0f, 5000.0f);
+
+ // 根据冲击力计算动态变形半径
+ CurrentDeformationRadius = FMath::Lerp(5.0f, 30.0f, CurrentImpactForce / 2000.0f);
+
+ // 根据材质类型调整塑性系数
+ UMaterialInterface* Material = StaticMeshComp->GetMaterial(0);
+ if(Material && Material->GetName().Contains("Steel"))
+ {
+ CurrentPlasticity = 0.4f; // 钢材塑性较低
+ }
+ else
+ {
+ CurrentPlasticity = 0.8f; // 默认高塑性
+ }
+
+ // 切换纹理缓冲
+ CurrentTextureIndex = 1 - CurrentTextureIndex;
+}
+
+void AIronBlock::ExecuteDeformationCS()
+{
+ // 确保纹理资源有效
+ if (!PositionTexture0 || !PositionTexture0->GetResource() ||
+ !PositionTexture1 || !PositionTexture1->GetResource())
+ {
+ UE_LOG(LogTemp, Error, TEXT("Position textures not initialized!"));
+ return;
+ }
+ // 获取当前纹理资源
+ UTexture2D* CurrentTex = (CurrentTextureIndex == 0) ? PositionTexture0 : PositionTexture1;
+ UTexture2D* PrevTex = (CurrentTextureIndex == 0) ? PositionTexture1 : PositionTexture0;
+ // 获取纹理RHI资源 - 使用GetResource()方法
+ FTextureRHIRef InputRHI = GetTextureRHI(PrevTex);
+ FTextureRHIRef OutputRHI = GetRenderTargetRHI(PositionRenderTarget);
+
+ if (!InputRHI || !OutputRHI)
+ {
+ UE_LOG(LogTemp, Error, TEXT("Invalid texture RHI resources!"));
+ return;
+ }
+ // 计算纹理UV坐标
+ const int32 TexSize = PositionRenderTarget->SizeX;
+ FVector2D ImpactUV(
+ (CurrentImpactPoint.X - LocalBounds.Min.X) / LocalBounds.GetSize().X,
+ (CurrentImpactPoint.Y - LocalBounds.Min.Y) / LocalBounds.GetSize().Y
+ );
+
+ // 计算更新区域 (只更新受影响部分)
+ const float RadiusRatio = CurrentDeformationRadius / LocalBounds.GetExtent().GetMax();
+ FIntRect UpdateRegion;
+ UpdateRegion.Min.X = FMath::Clamp((ImpactUV.X - RadiusRatio) * TexSize, 0, TexSize);
+ UpdateRegion.Min.Y = FMath::Clamp((ImpactUV.Y - RadiusRatio) * TexSize, 0, TexSize);
+ UpdateRegion.Max.X = FMath::Min((ImpactUV.X + RadiusRatio) * TexSize, (float)TexSize);
+ UpdateRegion.Max.Y = FMath::Min((ImpactUV.Y + RadiusRatio) * TexSize, (float)TexSize);
+
+ // 准备参数
+ FDeformationCSDispatchParams Params;
+ Params.ImpactPoint = CurrentImpactPoint;
+ Params.ImpactNormal = CurrentImpactNormal;
+ Params.ImpactForce = CurrentImpactForce;
+ Params.DeformationRadius = CurrentDeformationRadius;
+ Params.Plasticity = CurrentPlasticity;
+ Params.InputTexture = InputRHI;
+ Params.OutputTexture = OutputRHI;
+ Params.UpdateRegion = UpdateRegion;
+ Params.TextureSize = FIntVector(TexSize, TexSize, 0);
+
+ // 提交到渲染线程
+ GDeformationParams.AddParams(Params);
+
+ // 更新材质参数
+ DynMaterial->SetTextureParameterValue("PositionTexture", CurrentTex);
+
+ // 触发碰撞体更新 (异步)
+ GetWorld()->GetTimerManager().SetTimerForNextTick([this, UpdateRegion](){
+ UpdateCollisionAsync(UpdateRegion);
+ });
+}
+// 异步更新物理碰撞体
+void AIronBlock::UpdateCollisionAsync(const FIntRect& UpdateRegion)
+{
+ if (!PositionRenderTarget || !PositionRenderTarget->GetResource())
+ {
+ return;
+ }
+ // 从GPU读取关键区域数据
+ TArray SampledData;
+ FReadSurfaceDataFlags Flags;
+ Flags.SetLinearToGamma(false);
+
+ PositionRenderTarget->GameThread_GetRenderTargetResource()->ReadPixels(
+ SampledData,
+ Flags,
+ FIntRect(UpdateRegion.Min.X, UpdateRegion.Min.Y,
+ UpdateRegion.Max.X, UpdateRegion.Max.Y)
+ );
+
+ // 创建临时碰撞体
+ TArray CollisionVerts;
+ for(FColor& Pixel : SampledData)
+ {
+ FVector Pos(
+ Pixel.R * 255.0f / 10.0f, // 根据实际范围调整
+ Pixel.G * 255.0f / 10.0f,
+ Pixel.B * 255.0f / 10.0f
+ );
+ CollisionVerts.Add(Pos);
+ }
+
+ // 更新简单碰撞体
+ UBodySetup* BodySetup = StaticMeshComp->GetBodySetup();
+ BodySetup->AggGeom.ConvexElems[0].VertexData = CollisionVerts;
+ BodySetup->CreatePhysicsMeshes();
+}
+
+// Called every frame
+void AIronBlock::Tick(float DeltaTime)
+{
+ Super::Tick(DeltaTime);
+
+}
+
diff --git a/Source/BladeSmith/IronBlock.h b/Source/BladeSmith/IronBlock.h
new file mode 100644
index 0000000..2fcda2e
--- /dev/null
+++ b/Source/BladeSmith/IronBlock.h
@@ -0,0 +1,90 @@
+// Fill out your copyright notice in the Description page of Project Settings.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "GameFramework/Actor.h"
+#include "IronBlock.generated.h"
+
+UCLASS()
+class BLADESMITH_API AIronBlock : public AActor
+{
+ GENERATED_BODY()
+
+ UPROPERTY(EditAnywhere)
+ UStaticMeshComponent* StaticMeshComp;
+
+ UPROPERTY()
+ UTexture2D* PositionTexture0;
+
+ UPROPERTY()
+ UTexture2D* PositionTexture1;
+
+ UPROPERTY()
+ UTextureRenderTarget2D* PositionRenderTarget;
+
+ UPROPERTY()
+ UMaterialInstanceDynamic* DynMaterial;
+public:
+ // Sets default values for this actor's properties
+ AIronBlock();
+
+protected:
+ // Called when the game starts or when spawned
+ virtual void BeginPlay() override;
+ virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
+ void InitializeTexturePair(int32 Index);
+ void GetStaticMeshVertexPositions(TArray& OutPositions);
+ UTexture2D* CreatePositionTexture(const FString& TexName, int32 Size, const TArray& InitialData);
+ void InitializePositionTexture();
+ void OnEndFrameInitializeTextures();
+ void SetupDeformationMaterial();
+ UFUNCTION(BlueprintCallable)
+ void OnHammerHit(const FHitResult& HitResult);
+ FTextureRHIRef GetTextureRHI(UTexture2D* Texture);
+ FTextureRHIRef GetRenderTargetRHI(UTextureRenderTarget2D* RT);
+private:
+ void UpdateComputeShaderParams(FVector LocalImpactPoint, FVector LocalImpactNormal, float ImpactForce);
+ void ExecuteDeformationCS();
+ void UpdateCollisionAsync(const FIntRect& UpdateRegion);
+ void CalculateLocalBounds();
+
+ // 双缓冲纹理对结构体
+ struct FDeformationTexturePair
+ {
+ // 纹理资源引用
+ FTextureRHIRef RHITexture;
+
+ // UAV 资源引用
+ FUnorderedAccessViewRHIRef UAV;
+
+ // 安全释放资源
+ void ReleaseRHI()
+ {
+ UAV.SafeRelease();
+ RHITexture.SafeRelease();
+ }
+ };
+
+ // 双缓冲纹理对数组 [0] = 第一对, [1] = 第二对
+ FDeformationTexturePair TexturePairs[2];
+
+ // 当前使用的纹理对索引
+ int32 CurrentPairIndex = 0;
+ FBox LocalBounds;
+ // 纹理资源初始化委托
+ FDelegateHandle TextureInitHandle;
+ // 当前碰撞参数
+ FVector CurrentImpactPoint;
+ FVector CurrentImpactNormal;
+ float CurrentImpactForce = 0.0f;
+ float CurrentDeformationRadius = 10.0f;
+ float CurrentPlasticity = 0.7f;
+
+ // 双缓冲纹理索引
+ int32 CurrentTextureIndex = 0;
+public:
+ // Called every frame
+ virtual void Tick(float DeltaTime) override;
+
+};
diff --git a/Source/BladeSmithEditor.Target.cs b/Source/BladeSmithEditor.Target.cs
new file mode 100644
index 0000000..cf07111
--- /dev/null
+++ b/Source/BladeSmithEditor.Target.cs
@@ -0,0 +1,15 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+using UnrealBuildTool;
+using System.Collections.Generic;
+
+public class BladeSmithEditorTarget : TargetRules
+{
+ public BladeSmithEditorTarget(TargetInfo Target) : base(Target)
+ {
+ Type = TargetType.Editor;
+ DefaultBuildSettings = BuildSettingsVersion.V5;
+ IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_5;
+ ExtraModuleNames.Add("BladeSmith");
+ }
+}