From e53bf3534c8ee4e05f324039435dd8a9d7b9aad4 Mon Sep 17 00:00:00 2001 From: vandomej Date: Mon, 8 Sep 2025 22:59:59 -0700 Subject: [PATCH] Adding unreal engine project --- .gitattributes | 10 + ai_fighter/.gitignore | 74 + ai_fighter/AI_Fight_Sim/.gitignore | 74 + ai_fighter/AI_Fight_Sim/.vsconfig | 14 + ai_fighter/AI_Fight_Sim/AI_Fight_Sim.uproject | 33 + .../AI_Fight_Sim/Config/DefaultEditor.ini | 11 + .../DefaultEditorPerProjectUserSettings.ini | 2 + .../AI_Fight_Sim/Config/DefaultEngine.ini | 298 ++ .../AI_Fight_Sim/Config/DefaultGame.ini | 7 + .../Config/DefaultGameUserSettings.ini | 14 + .../AI_Fight_Sim/Config/DefaultInput.ini | 88 + .../AI_Fight_Sim/Config/Scalability.ini | 10 + .../Fighter/AIFighter_Albedo.uasset | 3 + .../Fighter/AIFighter_Roughness.uasset | 3 + .../Fighter/ExtractRootMotion.uasset | 3 + .../Content/Characters/Fighter/Fighter.uasset | 3 + .../Characters/Fighter/FighterAction.uasset | 3 + .../Fighter/FighterAnimation.uasset | 3 + .../Characters/Fighter/Moonlight.uasset | 3 + .../Characters/Fighter/MoonlightSword.uasset | 3 + .../Characters/Fighter/MoonlightWave.uasset | 3 + .../Characters/Fighter/SK_AIFighter.uasset | 3 + ...ighter_Anim_Skeleton_Heavy_Attack_1.uasset | 3 + .../SK_AIFighter_Anim_Skeleton_Idle.uasset | 3 + ...K_AIFighter_Anim_Skeleton_Knockback.uasset | 3 + ...ighter_Anim_Skeleton_Light_Attack_1.uasset | 3 + ...ighter_Anim_Skeleton_Light_Attack_2.uasset | 3 + .../SK_AIFighter_Anim_Skeleton_Roll.uasset | 3 + ...ighter_Anim_Skeleton_Special_Attack.uasset | 3 + .../SK_AIFighter_Anim_Skeleton_Walk.uasset | 3 + .../Fighter/SK_AIFighter_PhysicsAsset.uasset | 3 + .../Fighter/SK_AIFighter_Skeleton.uasset | 3 + .../Characters/Fighter/SpecialWave.uasset | 3 + .../Characters/Fighter/SwordAlbedo.uasset | 3 + .../Characters/Fighter/SwordFlash.uasset | 3 + .../Mannequin_UE4/Animations/Jog_Fwd.uasset | 3 + .../Materials/Layers/ML_Latex_Black.uasset | 3 + .../Layers/ML_ShinyPlastic_Beige.uasset | 3 + .../Layers/ML_ShinyPlastic_Beige_Logo.uasset | 3 + .../Materials/Layers/ML_SoftMetal.uasset | 3 + .../Materials/M_MannequinUE4_Body.uasset | 3 + .../Materials/M_MannequinUE4_ChestLogo.uasset | 3 + .../Mannequin_UE4/Meshes/SK_Mannequin.uasset | 3 + .../Meshes/SK_Mannequin_PhysicsAsset.uasset | 3 + .../Meshes/SK_Mannequin_Skeleton.uasset | 3 + .../Rigs/IK_UE4_Mannequin.uasset | 3 + .../Rigs/RTG_UE4Manny_UE5Manny.uasset | 3 + .../Rigs/RTG_UE5Manny_UE4Manny.uasset | 3 + .../Textures/T_ML_Aluminum01.uasset | 3 + .../Textures/T_ML_Aluminum01_N.uasset | 3 + .../Textures/T_ML_Rubber_Blue_01_D.uasset | 3 + .../Textures/T_ML_Rubber_Blue_01_N.uasset | 3 + .../Textures/T_UE4_Mannequin_MAT_MASKA.uasset | 3 + .../Textures/T_UE4_Mannequin__normals.uasset | 3 + .../Textures/T_UELogo_Mask.uasset | 3 + .../Textures/T_UELogo_N_TGA.uasset | 3 + .../Mannequins/Animations/ABP_Manny.uasset | 3 + .../Mannequins/Animations/ABP_Quinn.uasset | 3 + .../Animations/Manny/BS_MM_WalkRun.uasset | 3 + .../Animations/Manny/MM_Fall_Loop.uasset | 3 + .../Animations/Manny/MM_Idle.uasset | 3 + .../Animations/Manny/MM_Jump.uasset | 3 + .../Animations/Manny/MM_Land.uasset | 3 + .../Animations/Manny/MM_Run_Fwd.uasset | 3 + .../Animations/Manny/MM_T_Pose.uasset | 3 + .../Animations/Manny/MM_Walk_Fwd.uasset | 3 + .../Animations/Manny/MM_Walk_InPlace.uasset | 3 + .../Quinn/BS_MF_Unarmed_WalkRun.uasset | 3 + .../Animations/Quinn/MF_Idle.uasset | 3 + .../Animations/Quinn/MF_Run_Fwd.uasset | 3 + .../Animations/Quinn/MF_Walk_Fwd.uasset | 3 + .../Materials/Functions/CA_Mannequin.uasset | 3 + .../Materials/Functions/ChromaticCurve.uasset | 3 + .../Materials/Functions/MF_Diffraction.uasset | 3 + .../Materials/Functions/MF_logo3layers.uasset | 3 + .../Functions/ML_BaseColorFallOff.uasset | 3 + .../Instances/Manny/MI_Manny_01.uasset | 3 + .../Instances/Manny/MI_Manny_02.uasset | 3 + .../Instances/Quinn/MI_Quinn_01.uasset | 3 + .../Instances/Quinn/MI_Quinn_02.uasset | 3 + .../Mannequins/Materials/M_Mannequin.uasset | 3 + .../Meshes/Mannequin_LODSettings.uasset | 3 + .../Mannequins/Meshes/SKM_Manny.uasset | 3 + .../Mannequins/Meshes/SKM_Manny_Simple.uasset | 3 + .../Mannequins/Meshes/SKM_Quinn.uasset | 3 + .../Mannequins/Meshes/SKM_Quinn_Simple.uasset | 3 + .../Mannequins/Meshes/SK_Mannequin.uasset | 3 + .../Rigs/ABP_Manny_PostProcess.uasset | 3 + .../Rigs/ABP_Quinn_PostProcess.uasset | 3 + .../Rigs/CR_Mannequin_BasicFootIK.uasset | 3 + .../Mannequins/Rigs/CR_Mannequin_Body.uasset | 3 + .../Rigs/CR_Mannequin_Procedural.uasset | 3 + .../Mannequins/Rigs/IK_Mannequin.uasset | 3 + .../Mannequins/Rigs/PA_Mannequin.uasset | 3 + .../Rigs/Poses/Manny/Manny_calf_l_anim.uasset | 3 + .../Rigs/Poses/Manny/Manny_calf_l_pose.uasset | 3 + .../Rigs/Poses/Manny/Manny_calf_r_anim.uasset | 3 + .../Rigs/Poses/Manny/Manny_calf_r_pose.uasset | 3 + .../Poses/Manny/Manny_clavicle_l_anim.uasset | 3 + .../Poses/Manny/Manny_clavicle_l_pose.uasset | 3 + .../Poses/Manny/Manny_clavicle_r_anim.uasset | 3 + .../Poses/Manny/Manny_clavicle_r_pose.uasset | 3 + .../Rigs/Poses/Manny/Manny_foot_l_anim.uasset | 3 + .../Rigs/Poses/Manny/Manny_foot_l_pose.uasset | 3 + .../Rigs/Poses/Manny/Manny_foot_r_anim.uasset | 3 + .../Rigs/Poses/Manny/Manny_foot_r_pose.uasset | 3 + .../Rigs/Poses/Manny/Manny_hand_l_anim.uasset | 3 + .../Rigs/Poses/Manny/Manny_hand_l_pose.uasset | 3 + .../Rigs/Poses/Manny/Manny_hand_r_anim.uasset | 3 + .../Rigs/Poses/Manny/Manny_hand_r_pose.uasset | 3 + .../Poses/Manny/Manny_lowerarm_l_anim.uasset | 3 + .../Poses/Manny/Manny_lowerarm_l_pose.uasset | 3 + .../Poses/Manny/Manny_lowerarm_r_anim.uasset | 3 + .../Poses/Manny/Manny_lowerarm_r_pose.uasset | 3 + .../Poses/Manny/Manny_thigh_l_anim.uasset | 3 + .../Poses/Manny/Manny_thigh_l_pose.uasset | 3 + .../Poses/Manny/Manny_thigh_r_anim.uasset | 3 + .../Poses/Manny/Manny_thigh_r_pose.uasset | 3 + .../Poses/Manny/Manny_upperarm_l_anim.uasset | 3 + .../Poses/Manny/Manny_upperarm_l_pose.uasset | 3 + .../Poses/Manny/Manny_upperarm_r_anim.uasset | 3 + .../Poses/Manny/Manny_upperarm_r_pose.uasset | 3 + .../Rigs/Poses/Quinn/Quinn_calf_l_anim.uasset | 3 + .../Rigs/Poses/Quinn/Quinn_calf_l_pose.uasset | 3 + .../Rigs/Poses/Quinn/Quinn_calf_r_anim.uasset | 3 + .../Rigs/Poses/Quinn/Quinn_calf_r_pose.uasset | 3 + .../Poses/Quinn/Quinn_clavicle_l_anim.uasset | 3 + .../Poses/Quinn/Quinn_clavicle_l_pose.uasset | 3 + .../Poses/Quinn/Quinn_clavicle_r_anim.uasset | 3 + .../Poses/Quinn/Quinn_clavicle_r_pose.uasset | 3 + .../Rigs/Poses/Quinn/Quinn_foot_l_anim.uasset | 3 + .../Rigs/Poses/Quinn/Quinn_foot_l_pose.uasset | 3 + .../Rigs/Poses/Quinn/Quinn_foot_r_anim.uasset | 3 + .../Rigs/Poses/Quinn/Quinn_foot_r_pose.uasset | 3 + .../Rigs/Poses/Quinn/Quinn_hand_l_anim.uasset | 3 + .../Rigs/Poses/Quinn/Quinn_hand_l_pose.uasset | 3 + .../Rigs/Poses/Quinn/Quinn_hand_r_anim.uasset | 3 + .../Rigs/Poses/Quinn/Quinn_hand_r_pose.uasset | 3 + .../Poses/Quinn/Quinn_lowerarm_l_anim.uasset | 3 + .../Poses/Quinn/Quinn_lowerarm_l_pose.uasset | 3 + .../Poses/Quinn/Quinn_lowerarm_r_anim.uasset | 3 + .../Poses/Quinn/Quinn_lowerarm_r_pose.uasset | 3 + .../Poses/Quinn/Quinn_thigh_l_anim.uasset | 3 + .../Poses/Quinn/Quinn_thigh_l_pose.uasset | 3 + .../Poses/Quinn/Quinn_thigh_r_anim.uasset | 3 + .../Poses/Quinn/Quinn_thigh_r_pose.uasset | 3 + .../Poses/Quinn/Quinn_upperarm_l_anim.uasset | 3 + .../Poses/Quinn/Quinn_upperarm_l_pose.uasset | 3 + .../Poses/Quinn/Quinn_upperarm_r_anim.uasset | 3 + .../Poses/Quinn/Quinn_upperarm_r_pose.uasset | 3 + .../Mannequins/Rigs/RTG_Mannequin.uasset | 3 + .../Manny/T_Manny_01_ASAOPMASK_MSK.uasset | 3 + .../Textures/Manny/T_Manny_01_BN.uasset | 3 + .../Manny/T_Manny_01_CCRCCPlastic_MSK.uasset | 3 + .../Textures/Manny/T_Manny_01_D.uasset | 3 + .../Textures/Manny/T_Manny_01_MSR_MSK.uasset | 3 + .../Textures/Manny/T_Manny_01_N.uasset | 3 + .../Textures/Manny/T_Manny_01_Tan.uasset | 3 + .../Manny/T_Manny_02_ASAOPMASK_MSK.uasset | 3 + .../Textures/Manny/T_Manny_02_BN.uasset | 3 + .../Manny/T_Manny_02_CCRCCPlastic_MSK.uasset | 3 + .../Textures/Manny/T_Manny_02_D.uasset | 3 + .../Textures/Manny/T_Manny_02_MSR_MSK.uasset | 3 + .../Textures/Manny/T_Manny_02_N.uasset | 3 + .../Textures/Manny/T_Manny_02_Tan.uasset | 3 + .../Textures/Quinn/T_Quinn_01ID_BN.uasset | 3 + .../Textures/Quinn/T_Quinn_01ID_D.uasset | 3 + .../Quinn/T_Quinn_01ID_MSR_MSK.uasset | 3 + .../Textures/Quinn/T_Quinn_01ID_N.uasset | 3 + .../Textures/Quinn/T_Quinn_01ID_Tan.uasset | 3 + .../Quinn/T_Quinn_01_ASAOMASK_MSK.uasset | 3 + .../Quinn/T_Quinn_01_CCRCCPlastic_MSK.uasset | 3 + .../Textures/Quinn/T_Quinn_02ID_BN.uasset | 3 + .../Textures/Quinn/T_Quinn_02ID_D.uasset | 3 + .../Quinn/T_Quinn_02ID_MSR_MSK.uasset | 3 + .../Textures/Quinn/T_Quinn_02ID_N.uasset | 3 + .../Textures/Quinn/T_Quinn_02ID_Tan.uasset | 3 + .../Quinn/T_Quinn_02_ASAOMASK_MSK.uasset | 3 + .../Quinn/T_Quinn_02_CCRCCPlastic_MSK.uasset | 3 + .../Textures/Shared/T_UE_Logo_M.uasset | 3 + .../Materials/MF_ProcGrid.uasset | 3 + .../Materials/MI_PrototypeGrid_Gray.uasset | 3 + .../Materials/MI_PrototypeGrid_Gray_02.uasset | 3 + .../Materials/MI_PrototypeGrid_TopDark.uasset | 3 + .../Materials/MI_Solid_Blue.uasset | 3 + .../Materials/M_PrototypeGrid.uasset | 3 + .../LevelPrototyping/Materials/M_Solid.uasset | 3 + .../Meshes/SM_ChamferCube.uasset | 3 + .../LevelPrototyping/Meshes/SM_Cube.uasset | 3 + .../Meshes/SM_Cylinder.uasset | 3 + .../Meshes/SM_QuarterCylinder.uasset | 3 + .../LevelPrototyping/Meshes/SM_Ramp.uasset | 3 + .../Textures/T_GridChecker_A.uasset | 3 + .../Architecture/Floor_400x400.uasset | 3 + .../Architecture/Pillar_50x500.uasset | 3 + .../Architecture/SM_AssetPlatform.uasset | 3 + .../Architecture/Wall_400x200.uasset | 3 + .../Architecture/Wall_400x300.uasset | 3 + .../Architecture/Wall_400x400.uasset | 3 + .../Architecture/Wall_500x500.uasset | 3 + .../Architecture/Wall_Door_400x300.uasset | 3 + .../Architecture/Wall_Door_400x400.uasset | 3 + .../Architecture/Wall_Window_400x300.uasset | 3 + .../Architecture/Wall_Window_400x400.uasset | 3 + .../StarterContent/Audio/Collapse01.uasset | 3 + .../StarterContent/Audio/Collapse02.uasset | 3 + .../StarterContent/Audio/Collapse_Cue.uasset | 3 + .../StarterContent/Audio/Explosion01.uasset | 3 + .../StarterContent/Audio/Explosion02.uasset | 3 + .../StarterContent/Audio/Explosion_Cue.uasset | 3 + .../StarterContent/Audio/Fire01.uasset | 3 + .../StarterContent/Audio/Fire01_Cue.uasset | 3 + .../StarterContent/Audio/Fire_Sparks01.uasset | 3 + .../Audio/Fire_Sparks01_Cue.uasset | 3 + .../StarterContent/Audio/Light01.uasset | 3 + .../StarterContent/Audio/Light01_Cue.uasset | 3 + .../StarterContent/Audio/Light02.uasset | 3 + .../StarterContent/Audio/Light02_Cue.uasset | 3 + .../StarterContent/Audio/Smoke01.uasset | 3 + .../StarterContent/Audio/Smoke01_Cue.uasset | 3 + .../Audio/Starter_Background_Cue.uasset | 3 + .../Audio/Starter_Birds01.uasset | 3 + .../Audio/Starter_Music01.uasset | 3 + .../Audio/Starter_Music_Cue.uasset | 3 + .../Audio/Starter_Wind05.uasset | 3 + .../Audio/Starter_Wind06.uasset | 3 + .../StarterContent/Audio/Steam01.uasset | 3 + .../StarterContent/Audio/Steam01_Cue.uasset | 3 + .../Blueprints/Assets/FogBrightnessLUT.uasset | 3 + .../Assets/M_LightStage_Arrows.uasset | 3 + .../Assets/M_LightStage_Skybox_Black.uasset | 3 + .../Assets/M_LightStage_Skybox_HDRI.uasset | 3 + .../Assets/M_LightStage_Skybox_Master.uasset | 3 + .../Blueprints/Assets/SM_Arrows.uasset | 3 + .../Blueprints/Assets/Skybox.uasset | 3 + .../Blueprints/Assets/SunlightColorLUT.uasset | 3 + .../Blueprints/BP_LightStudio.uasset | 3 + .../Blueprints/Blueprint_CeilingLight.uasset | 3 + .../Blueprint_Effect_Explosion.uasset | 3 + .../Blueprints/Blueprint_Effect_Fire.uasset | 3 + .../Blueprints/Blueprint_Effect_Smoke.uasset | 3 + .../Blueprints/Blueprint_Effect_Sparks.uasset | 3 + .../Blueprints/Blueprint_Effect_Steam.uasset | 3 + .../Blueprints/Blueprint_WallSconce.uasset | 3 + .../HDRI/HDRI_Epic_Courtyard_Daylight.uasset | 3 + .../Maps/Advanced_Lighting.umap | Bin 0 -> 44639 bytes .../StarterContent/Maps/Minimal_Default.umap | Bin 0 -> 54552 bytes .../StarterContent/Maps/StarterMap.umap | Bin 0 -> 395548 bytes .../Materials/M_AssetPlatform.uasset | 3 + .../Materials/M_Basic_Floor.uasset | 3 + .../Materials/M_Basic_Wall.uasset | 3 + .../Materials/M_Brick_Clay_Beveled.uasset | 3 + .../Materials/M_Brick_Clay_New.uasset | 3 + .../Materials/M_Brick_Clay_Old.uasset | 3 + .../Materials/M_Brick_Cut_Stone.uasset | 3 + .../Materials/M_Brick_Hewn_Stone.uasset | 3 + .../Materials/M_Ceramic_Tile_Checker.uasset | 3 + .../Materials/M_CobbleStone_Pebble.uasset | 3 + .../Materials/M_CobbleStone_Rough.uasset | 3 + .../Materials/M_CobbleStone_Smooth.uasset | 3 + .../Materials/M_ColorGrid_LowSpec.uasset | 3 + .../Materials/M_Concrete_Grime.uasset | 3 + .../Materials/M_Concrete_Panels.uasset | 3 + .../Materials/M_Concrete_Poured.uasset | 3 + .../Materials/M_Concrete_Tiles.uasset | 3 + .../StarterContent/Materials/M_Glass.uasset | 3 + .../Materials/M_Ground_Grass.uasset | 3 + .../Materials/M_Ground_Gravel.uasset | 3 + .../Materials/M_Ground_Moss.uasset | 3 + .../Materials/M_Metal_Brushed_Nickel.uasset | 3 + .../Materials/M_Metal_Burnished_Steel.uasset | 3 + .../Materials/M_Metal_Chrome.uasset | 3 + .../Materials/M_Metal_Copper.uasset | 3 + .../Materials/M_Metal_Gold.uasset | 3 + .../Materials/M_Metal_Rust.uasset | 3 + .../Materials/M_Metal_Steel.uasset | 3 + .../Materials/M_Rock_Basalt.uasset | 3 + .../Materials/M_Rock_Marble_Polished.uasset | 3 + .../Materials/M_Rock_Sandstone.uasset | 3 + .../Materials/M_Rock_Slate.uasset | 3 + .../Materials/M_Tech_Checker_Dot.uasset | 3 + .../Materials/M_Tech_Hex_Tile.uasset | 3 + .../Materials/M_Tech_Hex_Tile_Pulse.uasset | 3 + .../Materials/M_Tech_Panel.uasset | 3 + .../Materials/M_Water_Lake.uasset | 3 + .../Materials/M_Water_Ocean.uasset | 3 + .../M_Wood_Floor_Walnut_Polished.uasset | 3 + .../Materials/M_Wood_Floor_Walnut_Worn.uasset | 3 + .../Materials/M_Wood_Oak.uasset | 3 + .../Materials/M_Wood_Pine.uasset | 3 + .../Materials/M_Wood_Walnut.uasset | 3 + .../Particles/Materials/M_Burst.uasset | 3 + .../Materials/M_Dust_Particle.uasset | 3 + .../Particles/Materials/M_Fire_SubUV.uasset | 3 + .../Materials/M_Heat_Distortion.uasset | 3 + .../Materials/M_Radial_Gradient.uasset | 3 + .../Particles/Materials/M_Spark.uasset | 3 + .../Materials/M_explosion_subUV.uasset | 3 + .../Particles/Materials/M_radial_ramp.uasset | 3 + .../Particles/Materials/M_smoke_subUV.uasset | 3 + .../Particles/Materials/m_flare_01.uasset | 3 + .../Particles/P_Ambient_Dust.uasset | 3 + .../Particles/P_Explosion.uasset | 3 + .../StarterContent/Particles/P_Fire.uasset | 3 + .../StarterContent/Particles/P_Smoke.uasset | 3 + .../StarterContent/Particles/P_Sparks.uasset | 3 + .../Particles/P_Steam_Lit.uasset | 3 + .../Props/MaterialSphere.uasset | 3 + .../Props/Materials/M_Bush.uasset | 3 + .../Props/Materials/M_Chair.uasset | 3 + .../Props/Materials/M_Door.uasset | 3 + .../Props/Materials/M_Frame.uasset | 3 + .../Props/Materials/M_Lamp.uasset | 3 + .../Props/Materials/M_Rock.uasset | 3 + .../Props/Materials/M_Shelf.uasset | 3 + .../Props/Materials/M_Statue.uasset | 3 + .../Props/Materials/M_StatueGlass.uasset | 3 + .../Props/Materials/M_TableRound.uasset | 3 + .../StarterContent/Props/SM_Bush.uasset | 3 + .../StarterContent/Props/SM_Chair.uasset | 3 + .../Props/SM_CornerFrame.uasset | 3 + .../StarterContent/Props/SM_Couch.uasset | 3 + .../StarterContent/Props/SM_Door.uasset | 3 + .../StarterContent/Props/SM_DoorFrame.uasset | 3 + .../Props/SM_GlassWindow.uasset | 3 + .../Props/SM_Lamp_Ceiling.uasset | 3 + .../StarterContent/Props/SM_Lamp_Wall.uasset | 3 + .../Props/SM_PillarFrame.uasset | 3 + .../Props/SM_PillarFrame300.uasset | 3 + .../StarterContent/Props/SM_Rock.uasset | 3 + .../StarterContent/Props/SM_Shelf.uasset | 3 + .../StarterContent/Props/SM_Stairs.uasset | 3 + .../StarterContent/Props/SM_Statue.uasset | 3 + .../StarterContent/Props/SM_TableRound.uasset | 3 + .../Props/SM_WindowFrame.uasset | 3 + .../StarterContent/Shapes/Shape_Cone.uasset | 3 + .../StarterContent/Shapes/Shape_Cube.uasset | 3 + .../Shapes/Shape_Cylinder.uasset | 3 + .../Shapes/Shape_NarrowCapsule.uasset | 3 + .../StarterContent/Shapes/Shape_Pipe.uasset | 3 + .../Shapes/Shape_Pipe_180.uasset | 3 + .../Shapes/Shape_Pipe_90.uasset | 3 + .../StarterContent/Shapes/Shape_Plane.uasset | 3 + .../Shapes/Shape_QuadPyramid.uasset | 3 + .../StarterContent/Shapes/Shape_Sphere.uasset | 3 + .../StarterContent/Shapes/Shape_Torus.uasset | 3 + .../Shapes/Shape_TriPyramid.uasset | 3 + .../StarterContent/Shapes/Shape_Trim.uasset | 3 + .../Shapes/Shape_Trim_90_In.uasset | 3 + .../Shapes/Shape_Trim_90_Out.uasset | 3 + .../StarterContent/Shapes/Shape_Tube.uasset | 3 + .../Shapes/Shape_Wedge_A.uasset | 3 + .../Shapes/Shape_Wedge_B.uasset | 3 + .../Shapes/Shape_WideCapsule.uasset | 3 + .../Textures/T_Brick_Clay_Beveled_D.uasset | 3 + .../Textures/T_Brick_Clay_Beveled_M.uasset | 3 + .../Textures/T_Brick_Clay_Beveled_N.uasset | 3 + .../Textures/T_Brick_Clay_New_D.uasset | 3 + .../Textures/T_Brick_Clay_New_M.uasset | 3 + .../Textures/T_Brick_Clay_New_N.uasset | 3 + .../Textures/T_Brick_Clay_Old_D.uasset | 3 + .../Textures/T_Brick_Clay_Old_N.uasset | 3 + .../Textures/T_Brick_Cut_Stone_D.uasset | 3 + .../Textures/T_Brick_Cut_Stone_N.uasset | 3 + .../Textures/T_Brick_Hewn_Stone_D.uasset | 3 + .../Textures/T_Brick_Hewn_Stone_M.uasset | 3 + .../Textures/T_Brick_Hewn_Stone_N.uasset | 3 + .../StarterContent/Textures/T_Burst_M.uasset | 3 + .../StarterContent/Textures/T_Bush_D.uasset | 3 + .../StarterContent/Textures/T_Bush_N.uasset | 3 + .../Textures/T_Ceramic_Tile_M.uasset | 3 + .../Textures/T_Ceramic_Tile_N.uasset | 3 + .../StarterContent/Textures/T_Chair_M.uasset | 3 + .../StarterContent/Textures/T_Chair_N.uasset | 3 + .../Textures/T_Checker_Noise_M.uasset | 3 + .../Textures/T_CobbleStone_Pebble_D.uasset | 3 + .../Textures/T_CobbleStone_Pebble_M.uasset | 3 + .../Textures/T_CobbleStone_Pebble_N.uasset | 3 + .../Textures/T_CobbleStone_Rough_D.uasset | 3 + .../Textures/T_CobbleStone_Rough_N.uasset | 3 + .../Textures/T_CobbleStone_Smooth_D.uasset | 3 + .../Textures/T_CobbleStone_Smooth_M.uasset | 3 + .../Textures/T_CobbleStone_Smooth_N.uasset | 3 + .../Textures/T_Concrete_Grime_D.uasset | 3 + .../Textures/T_Concrete_Panels_D.uasset | 3 + .../Textures/T_Concrete_Panels_N.uasset | 3 + .../Textures/T_Concrete_Poured_D.uasset | 3 + .../Textures/T_Concrete_Poured_N.uasset | 3 + .../Textures/T_Concrete_Tiles_D.uasset | 3 + .../Textures/T_Concrete_Tiles_M.uasset | 3 + .../Textures/T_Concrete_Tiles_N.uasset | 3 + .../T_Concrete_Tiles_Variation_M.uasset | 3 + .../Textures/T_Detail_Rocky_N.uasset | 3 + .../StarterContent/Textures/T_Door_M.uasset | 3 + .../StarterContent/Textures/T_Door_N.uasset | 3 + .../Textures/T_Dust_Particle_D.uasset | 3 + .../Textures/T_Explosion_SubUV.uasset | 3 + .../Textures/T_Fire_SubUV.uasset | 3 + .../Textures/T_Fire_Tiled_D.uasset | 3 + .../StarterContent/Textures/T_Frame_M.uasset | 3 + .../StarterContent/Textures/T_Frame_N.uasset | 3 + .../Textures/T_Gradinet_01.uasset | 3 + .../Textures/T_Ground_Grass_D.uasset | 3 + .../Textures/T_Ground_Grass_N.uasset | 3 + .../Textures/T_Ground_Gravel_D.uasset | 3 + .../Textures/T_Ground_Gravel_N.uasset | 3 + .../Textures/T_Ground_Moss_N.uasset | 3 + .../StarterContent/Textures/T_Lamp_M.uasset | 3 + .../StarterContent/Textures/T_Lamp_N.uasset | 3 + .../Textures/T_MacroVariation.uasset | 3 + .../Textures/T_Metal_Aluminum_D.uasset | 3 + .../Textures/T_Metal_Copper_D.uasset | 3 + .../Textures/T_Metal_Gold_D.uasset | 3 + .../Textures/T_Metal_Gold_N.uasset | 3 + .../Textures/T_Metal_Rust_D.uasset | 3 + .../Textures/T_Metal_Rust_N.uasset | 3 + .../Textures/T_Metal_Steel_D.uasset | 3 + .../Textures/T_Metal_Steel_N.uasset | 3 + .../Textures/T_Perlin_Noise_M.uasset | 3 + .../Textures/T_RockMesh_M.uasset | 3 + .../Textures/T_RockMesh_N.uasset | 3 + .../Textures/T_Rock_Basalt_D.uasset | 3 + .../Textures/T_Rock_Basalt_N.uasset | 3 + .../Textures/T_Rock_Marble_Polished_D.uasset | 3 + .../Textures/T_Rock_Sandstone_D.uasset | 3 + .../Textures/T_Rock_Sandstone_N.uasset | 3 + .../Textures/T_Rock_Slate_D.uasset | 3 + .../Textures/T_Rock_Slate_N.uasset | 3 + .../Textures/T_Rock_Smooth_Granite_D.uasset | 3 + .../StarterContent/Textures/T_Shelf_M.uasset | 3 + .../StarterContent/Textures/T_Shelf_N.uasset | 3 + .../Textures/T_Single_Tile_N.uasset | 3 + .../Textures/T_Smoke_SubUV.uasset | 3 + .../Textures/T_Smoke_Tiled_D.uasset | 3 + .../Textures/T_Spark_Core.uasset | 3 + .../StarterContent/Textures/T_Statue_M.uasset | 3 + .../StarterContent/Textures/T_Statue_N.uasset | 3 + .../Textures/T_TableRound_M.uasset | 3 + .../Textures/T_TableRound_N.uasset | 3 + .../Textures/T_Tech_Dot_M.uasset | 3 + .../Textures/T_Tech_Dot_N.uasset | 3 + .../Textures/T_Tech_Hex_Tile_M.uasset | 3 + .../Textures/T_Tech_Hex_Tile_N.uasset | 3 + .../Textures/T_Tech_Panel_M.uasset | 3 + .../Textures/T_Tech_Panel_N.uasset | 3 + .../StarterContent/Textures/T_Water_M.uasset | 3 + .../StarterContent/Textures/T_Water_N.uasset | 3 + .../Textures/T_Wood_Floor_Walnut_D.uasset | 3 + .../Textures/T_Wood_Floor_Walnut_M.uasset | 3 + .../Textures/T_Wood_Floor_Walnut_N.uasset | 3 + .../Textures/T_Wood_Oak_D.uasset | 3 + .../Textures/T_Wood_Oak_N.uasset | 3 + .../Textures/T_Wood_Pine_D.uasset | 3 + .../Textures/T_Wood_Pine_N.uasset | 3 + .../Textures/T_Wood_Walnut_D.uasset | 3 + .../Textures/T_Wood_Walnut_N.uasset | 3 + .../Textures/T_ground_Moss_D.uasset | 3 + .../ThirdPerson/AISimulationGameMode.uasset | 3 + .../Blueprints/BP_ThirdPersonCharacter.uasset | 3 + .../Blueprints/BP_ThirdPersonGameMode.uasset | 3 + .../ThirdPerson/Blueprints/SpectateAI.uasset | 3 + .../Blueprints/ThirdPersonController.uasset | 3 + .../ThirdPerson/Input/Actions/IA_Dodge.uasset | 3 + .../Input/Actions/IA_HeavyAttack.uasset | 3 + .../Input/Actions/IA_LightAttack.uasset | 3 + .../ThirdPerson/Input/Actions/IA_Look.uasset | 3 + .../ThirdPerson/Input/Actions/IA_Move.uasset | 3 + .../Input/Actions/IA_SpecialAttack.uasset | 3 + .../ThirdPerson/Input/IMC_Default.uasset | 3 + .../Content/ThirdPerson/Maps/EVE.umap | Bin 0 -> 48892 bytes .../Content/ThirdPerson/Maps/Main.umap | Bin 0 -> 37406 bytes .../Content/ThirdPerson/Maps/PVE.umap | Bin 0 -> 41412 bytes .../ThirdPerson/Maps/ThirdPersonMap.umap | Bin 0 -> 19242 bytes .../Content/ThirdPerson/WarningSphere.uasset | 3 + .../0/43/HYQWORMY4JDQ5X3OKZXFLC.uasset | 3 + .../1/AZ/A7GPT109Y6ZTTJD4A7TXER.uasset | 3 + .../1/Y9/Y4DCA3ZRI4ZCX9ZD1RDKXZ.uasset | 3 + .../3/EY/87SHEJN5UBEAN2K5OV1G6R.uasset | 3 + .../4/LN/30UBDLYFFA5ZR7U4W4L4GG.uasset | 3 + .../5/R1/TS5OQ5CRUWFZYL1ZQ7I416.uasset | 3 + .../6/J7/N10XDC9G27EMLS5AGZ6AVV.uasset | 3 + .../6/YO/NG2R9BPZVA7ZDN0Z4VSTG6.uasset | 3 + .../7/P2/KI1QUDQD4R9U3CQWSUIT9C.uasset | 3 + .../7/P7/2DG5NCMKLDUQREJ11HCKIC.uasset | 3 + .../8/S1/DXUWD12MD3HRWVVXX076BY.uasset | 3 + .../8/ZB/279PSBZ71DZQ28VJB8U9LQ.uasset | 3 + .../D/DE/SWSI13675DVYIZ0N4NF7Y3.uasset | 3 + .../D/SY/Z4CTQ4LG3YV10EKPD0UE8Q.uasset | 3 + .../E/55/2A05V9ECJEXL9S32YHMZ2W.uasset | 3 + .../E/FR/LBG6LPN5JCL3FMVSI2CK6R.uasset | 3 + .../4/VW/TY7TSUER9KKGHX2BMKSL0L.uasset | 3 + .../HoloLens/Config/HoloLensEngine.ini | 32 + .../NeuralNetworkAIController.uplugin | 24 + .../Resources/Icon128.png | 3 + .../NeuralNetworkAIController.Build.cs | 59 + .../Private/FannAIController.cpp | 91 + .../Private/NeuralNetworkAIController.cpp | 18 + .../Public/FannAIController.h | 142 + .../Public/NeuralNetworkAIController.h | 10 + .../ThirdParty/FANN/include/doublefann.h | 33 + .../ThirdParty/FANN/include/fann.h | 661 ++++ .../ThirdParty/FANN/include/fann_activation.h | 183 + .../ThirdParty/FANN/include/fann_cascade.h | 550 +++ .../ThirdParty/FANN/include/fann_cpp.h | 2968 +++++++++++++++++ .../ThirdParty/FANN/include/fann_data.h | 800 +++++ .../ThirdParty/FANN/include/fann_data_cpp.h | 295 ++ .../ThirdParty/FANN/include/fann_error.h | 162 + .../ThirdParty/FANN/include/fann_internal.h | 158 + .../ThirdParty/FANN/include/fann_io.h | 100 + .../ThirdParty/FANN/include/fann_train.h | 1391 ++++++++ .../FANN/include/fann_training_data_cpp.h | 543 +++ .../ThirdParty/FANN/include/fixedfann.h | 33 + .../ThirdParty/FANN/include/floatfann.h | 33 + .../ThirdParty/FANN/include/parallel_fann.h | 53 + .../ThirdParty/FANN/include/parallel_fann.hpp | 55 + .../ThirdParty/FANN/lib/pkgconfig/fann.pc | 11 + .../ThirdParty/FANN/share/fann/copyright | 504 +++ .../FANN/share/fann/fann-config.cmake | 53 + .../ThirdParty/FANN/share/fann/fann-use.cmake | 9 + .../FANN/share/fann/vcpkg.spdx.json | 198 ++ .../FANN/share/fann/vcpkg_abi_info.txt | 20 + .../Source/AI_Fight_Sim.Target.cs | 15 + .../Source/AI_Fight_Sim/AI_Fight_Sim.Build.cs | 23 + .../Source/AI_Fight_Sim/AI_Fight_Sim.cpp | 6 + .../Source/AI_Fight_Sim/AI_Fight_Sim.h | 6 + .../NeuralNetworkCommandLineParsing.cpp | 36 + .../Public/NeuralNetworkCommandLineParsing.h | 27 + .../Source/AI_Fight_SimEditor.Target.cs | 15 + 528 files changed, 11371 insertions(+) create mode 100644 .gitattributes create mode 100644 ai_fighter/.gitignore create mode 100644 ai_fighter/AI_Fight_Sim/.gitignore create mode 100644 ai_fighter/AI_Fight_Sim/.vsconfig create mode 100644 ai_fighter/AI_Fight_Sim/AI_Fight_Sim.uproject create mode 100644 ai_fighter/AI_Fight_Sim/Config/DefaultEditor.ini create mode 100644 ai_fighter/AI_Fight_Sim/Config/DefaultEditorPerProjectUserSettings.ini create mode 100644 ai_fighter/AI_Fight_Sim/Config/DefaultEngine.ini create mode 100644 ai_fighter/AI_Fight_Sim/Config/DefaultGame.ini create mode 100644 ai_fighter/AI_Fight_Sim/Config/DefaultGameUserSettings.ini create mode 100644 ai_fighter/AI_Fight_Sim/Config/DefaultInput.ini create mode 100644 ai_fighter/AI_Fight_Sim/Config/Scalability.ini create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/AIFighter_Albedo.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/AIFighter_Roughness.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/ExtractRootMotion.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/Fighter.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/FighterAction.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/FighterAnimation.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/Moonlight.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/MoonlightSword.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/MoonlightWave.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Heavy_Attack_1.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Idle.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Knockback.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Light_Attack_1.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Light_Attack_2.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Roll.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Special_Attack.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Walk.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_PhysicsAsset.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Skeleton.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SpecialWave.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SwordAlbedo.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SwordFlash.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Animations/Jog_Fwd.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/Layers/ML_Latex_Black.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/Layers/ML_ShinyPlastic_Beige.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/Layers/ML_ShinyPlastic_Beige_Logo.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/Layers/ML_SoftMetal.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/M_MannequinUE4_Body.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/M_MannequinUE4_ChestLogo.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin_PhysicsAsset.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin_Skeleton.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Rigs/IK_UE4_Mannequin.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Rigs/RTG_UE4Manny_UE5Manny.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Rigs/RTG_UE5Manny_UE4Manny.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_ML_Aluminum01.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_ML_Aluminum01_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_ML_Rubber_Blue_01_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_ML_Rubber_Blue_01_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_UE4_Mannequin_MAT_MASKA.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_UE4_Mannequin__normals.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_UELogo_Mask.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_UELogo_N_TGA.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/ABP_Manny.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/ABP_Quinn.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/BS_MM_WalkRun.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Fall_Loop.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Idle.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Jump.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Land.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Run_Fwd.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_T_Pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Walk_Fwd.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Walk_InPlace.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Quinn/BS_MF_Unarmed_WalkRun.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Quinn/MF_Idle.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Quinn/MF_Run_Fwd.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Quinn/MF_Walk_Fwd.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/CA_Mannequin.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/ChromaticCurve.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/MF_Diffraction.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/MF_logo3layers.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/ML_BaseColorFallOff.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_01.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_02.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_01.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_02.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/M_Mannequin.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/Mannequin_LODSettings.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SKM_Manny.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SKM_Manny_Simple.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SKM_Quinn.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SKM_Quinn_Simple.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SK_Mannequin.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/ABP_Manny_PostProcess.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/ABP_Quinn_PostProcess.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/CR_Mannequin_BasicFootIK.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/CR_Mannequin_Body.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/CR_Mannequin_Procedural.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/IK_Mannequin.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/PA_Mannequin.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_anim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_pose.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/RTG_Mannequin.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_ASAOPMASK_MSK.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_BN.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_CCRCCPlastic_MSK.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_MSR_MSK.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_Tan.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_ASAOPMASK_MSK.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_BN.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_CCRCCPlastic_MSK.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_MSR_MSK.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_Tan.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_BN.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_MSR_MSK.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_Tan.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_ASAOMASK_MSK.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_CCRCCPlastic_MSK.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_BN.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_MSR_MSK.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_Tan.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_ASAOMASK_MSK.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_CCRCCPlastic_MSK.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Shared/T_UE_Logo_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MF_ProcGrid.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_02.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MI_PrototypeGrid_TopDark.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MI_Solid_Blue.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/M_PrototypeGrid.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/M_Solid.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_ChamferCube.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_Cube.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_Cylinder.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_QuarterCylinder.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_Ramp.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Textures/T_GridChecker_A.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Floor_400x400.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Pillar_50x500.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/SM_AssetPlatform.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_400x200.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_400x300.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_400x400.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_500x500.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_Door_400x300.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_Door_400x400.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_Window_400x300.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_Window_400x400.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Collapse01.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Collapse02.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Collapse_Cue.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Explosion01.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Explosion02.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Explosion_Cue.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Fire01.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Fire01_Cue.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Fire_Sparks01.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Fire_Sparks01_Cue.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Light01.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Light01_Cue.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Light02.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Light02_Cue.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Smoke01.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Smoke01_Cue.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Background_Cue.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Birds01.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Music01.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Music_Cue.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Wind05.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Wind06.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Steam01.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Steam01_Cue.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/FogBrightnessLUT.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/M_LightStage_Arrows.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Black.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_HDRI.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Master.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/SM_Arrows.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/Skybox.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/SunlightColorLUT.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/BP_LightStudio.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_CeilingLight.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Explosion.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Fire.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Smoke.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Sparks.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Steam.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_WallSconce.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Maps/Advanced_Lighting.umap create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Maps/Minimal_Default.umap create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Maps/StarterMap.umap create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_AssetPlatform.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Basic_Floor.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Basic_Wall.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Clay_Beveled.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Clay_New.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Clay_Old.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Cut_Stone.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Hewn_Stone.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Ceramic_Tile_Checker.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_CobbleStone_Pebble.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_CobbleStone_Rough.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_CobbleStone_Smooth.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_ColorGrid_LowSpec.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Concrete_Grime.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Concrete_Panels.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Concrete_Poured.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Concrete_Tiles.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Glass.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Ground_Grass.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Ground_Gravel.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Ground_Moss.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Brushed_Nickel.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Burnished_Steel.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Chrome.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Copper.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Gold.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Rust.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Steel.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Rock_Basalt.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Rock_Marble_Polished.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Rock_Sandstone.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Rock_Slate.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Tech_Checker_Dot.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Tech_Hex_Tile.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Tech_Hex_Tile_Pulse.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Tech_Panel.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Water_Lake.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Water_Ocean.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Polished.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Worn.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Oak.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Pine.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Walnut.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Burst.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Dust_Particle.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Fire_SubUV.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Heat_Distortion.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Radial_Gradient.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Spark.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_explosion_subUV.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_radial_ramp.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_smoke_subUV.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/m_flare_01.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Ambient_Dust.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Explosion.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Fire.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Smoke.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Sparks.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Steam_Lit.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/MaterialSphere.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Bush.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Chair.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Door.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Frame.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Lamp.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Rock.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Shelf.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Statue.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_StatueGlass.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_TableRound.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Bush.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Chair.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_CornerFrame.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Couch.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Door.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_DoorFrame.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_GlassWindow.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Lamp_Ceiling.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Lamp_Wall.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_PillarFrame.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_PillarFrame300.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Rock.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Shelf.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Stairs.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Statue.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_TableRound.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_WindowFrame.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Cone.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Cube.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Cylinder.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_NarrowCapsule.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Pipe.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Pipe_180.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Pipe_90.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Plane.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_QuadPyramid.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Sphere.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Torus.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_TriPyramid.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Trim.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Trim_90_In.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Trim_90_Out.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Tube.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Wedge_A.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Wedge_B.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_WideCapsule.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Beveled_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Beveled_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Beveled_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_New_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_New_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_New_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Old_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Old_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Cut_Stone_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Cut_Stone_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Hewn_Stone_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Hewn_Stone_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Hewn_Stone_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Burst_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Bush_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Bush_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ceramic_Tile_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ceramic_Tile_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Chair_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Chair_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Checker_Noise_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Pebble_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Pebble_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Pebble_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Rough_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Rough_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Smooth_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Smooth_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Smooth_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Grime_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Panels_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Panels_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Poured_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Poured_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Tiles_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Tiles_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Tiles_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Tiles_Variation_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Detail_Rocky_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Door_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Door_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Dust_Particle_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Explosion_SubUV.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Fire_SubUV.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Fire_Tiled_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Frame_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Frame_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Gradinet_01.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Grass_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Grass_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Gravel_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Gravel_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Moss_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Lamp_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Lamp_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_MacroVariation.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Aluminum_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Copper_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Gold_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Gold_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Rust_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Rust_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Steel_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Steel_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Perlin_Noise_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_RockMesh_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_RockMesh_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Basalt_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Basalt_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Marble_Polished_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Sandstone_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Sandstone_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Slate_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Slate_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Smooth_Granite_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Shelf_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Shelf_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Single_Tile_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Smoke_SubUV.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Smoke_Tiled_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Spark_Core.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Statue_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Statue_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_TableRound_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_TableRound_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Dot_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Dot_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Hex_Tile_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Hex_Tile_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Panel_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Panel_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Water_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Water_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Floor_Walnut_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Floor_Walnut_M.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Floor_Walnut_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Oak_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Oak_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Pine_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Pine_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Walnut_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Walnut_N.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_ground_Moss_D.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/AISimulationGameMode.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Blueprints/BP_ThirdPersonGameMode.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Blueprints/SpectateAI.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Blueprints/ThirdPersonController.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_Dodge.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_HeavyAttack.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_LightAttack.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_Look.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_Move.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_SpecialAttack.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/IMC_Default.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Maps/EVE.umap create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Maps/Main.umap create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Maps/PVE.umap create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Maps/ThirdPersonMap.umap create mode 100644 ai_fighter/AI_Fight_Sim/Content/ThirdPerson/WarningSphere.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/43/HYQWORMY4JDQ5X3OKZXFLC.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/AZ/A7GPT109Y6ZTTJD4A7TXER.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/Y9/Y4DCA3ZRI4ZCX9ZD1RDKXZ.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/EY/87SHEJN5UBEAN2K5OV1G6R.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/4/LN/30UBDLYFFA5ZR7U4W4L4GG.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/5/R1/TS5OQ5CRUWFZYL1ZQ7I416.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/J7/N10XDC9G27EMLS5AGZ6AVV.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/YO/NG2R9BPZVA7ZDN0Z4VSTG6.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/7/P2/KI1QUDQD4R9U3CQWSUIT9C.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/7/P7/2DG5NCMKLDUQREJ11HCKIC.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/S1/DXUWD12MD3HRWVVXX076BY.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/ZB/279PSBZ71DZQ28VJB8U9LQ.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/DE/SWSI13675DVYIZ0N4NF7Y3.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/SY/Z4CTQ4LG3YV10EKPD0UE8Q.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/55/2A05V9ECJEXL9S32YHMZ2W.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/FR/LBG6LPN5JCL3FMVSI2CK6R.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/4/VW/TY7TSUER9KKGHX2BMKSL0L.uasset create mode 100644 ai_fighter/AI_Fight_Sim/Platforms/HoloLens/Config/HoloLensEngine.ini create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/NeuralNetworkAIController.uplugin create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Resources/Icon128.png create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/NeuralNetworkAIController.Build.cs create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/Private/FannAIController.cpp create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/Private/NeuralNetworkAIController.cpp create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/Public/FannAIController.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/Public/NeuralNetworkAIController.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/doublefann.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_activation.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_cascade.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_cpp.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_data.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_data_cpp.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_error.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_internal.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_io.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_train.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_training_data_cpp.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fixedfann.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/floatfann.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/parallel_fann.h create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/parallel_fann.hpp create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/lib/pkgconfig/fann.pc create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/copyright create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/fann-config.cmake create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/fann-use.cmake create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/vcpkg.spdx.json create mode 100644 ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/vcpkg_abi_info.txt create mode 100644 ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim.Target.cs create mode 100644 ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/AI_Fight_Sim.Build.cs create mode 100644 ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/AI_Fight_Sim.cpp create mode 100644 ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/AI_Fight_Sim.h create mode 100644 ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/Private/NeuralNetworkCommandLineParsing.cpp create mode 100644 ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/Public/NeuralNetworkCommandLineParsing.h create mode 100644 ai_fighter/AI_Fight_Sim/Source/AI_Fight_SimEditor.Target.cs diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..69d52a8 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,10 @@ +*.blend filter=lfs diff=lfs merge=lfs -text +*.fbx filter=lfs diff=lfs merge=lfs -text +*.glb filter=lfs diff=lfs merge=lfs -text +*.flp filter=lfs diff=lfs merge=lfs -text +*.wav filter=lfs diff=lfs merge=lfs -text +*.kra filter=lfs diff=lfs merge=lfs -text +*.uasset filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.vcxproj filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text \ No newline at end of file diff --git a/ai_fighter/.gitignore b/ai_fighter/.gitignore new file mode 100644 index 0000000..6582eaf --- /dev/null +++ b/ai_fighter/.gitignore @@ -0,0 +1,74 @@ +# Visual Studio 2015 user specific files +.vs/ + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app +*.ipa + +# These project files can be generated by the engine +*.xcodeproj +*.xcworkspace +*.sln +*.suo +*.opensdf +*.sdf +*.VC.db +*.VC.opendb + +# Precompiled Assets +SourceArt/**/*.png +SourceArt/**/*.tga + +# Binary Files +Binaries/* +Plugins/*/Binaries/* + +# Builds +Build/* + +# Whitelist PakBlacklist-.txt files +!Build/*/ +Build/*/** +!Build/*/PakBlacklist*.txt + +# Don't ignore icon files in Build +!Build/**/*.ico + +# Built data for maps +*_BuiltData.uasset + +# Configuration files generated by the Editor +Saved/* + +# Compiled source files for the engine to use +Intermediate/* +Plugins/*/Intermediate/* + +# Cache files for the editor to use +DerivedDataCache/* diff --git a/ai_fighter/AI_Fight_Sim/.gitignore b/ai_fighter/AI_Fight_Sim/.gitignore new file mode 100644 index 0000000..6582eaf --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/.gitignore @@ -0,0 +1,74 @@ +# Visual Studio 2015 user specific files +.vs/ + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app +*.ipa + +# These project files can be generated by the engine +*.xcodeproj +*.xcworkspace +*.sln +*.suo +*.opensdf +*.sdf +*.VC.db +*.VC.opendb + +# Precompiled Assets +SourceArt/**/*.png +SourceArt/**/*.tga + +# Binary Files +Binaries/* +Plugins/*/Binaries/* + +# Builds +Build/* + +# Whitelist PakBlacklist-.txt files +!Build/*/ +Build/*/** +!Build/*/PakBlacklist*.txt + +# Don't ignore icon files in Build +!Build/**/*.ico + +# Built data for maps +*_BuiltData.uasset + +# Configuration files generated by the Editor +Saved/* + +# Compiled source files for the engine to use +Intermediate/* +Plugins/*/Intermediate/* + +# Cache files for the editor to use +DerivedDataCache/* diff --git a/ai_fighter/AI_Fight_Sim/.vsconfig b/ai_fighter/AI_Fight_Sim/.vsconfig new file mode 100644 index 0000000..0b1fc2f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/.vsconfig @@ -0,0 +1,14 @@ +{ + "version": "1.0", + "components": [ + "Microsoft.Net.Component.4.6.2.TargetingPack", + "Microsoft.VisualStudio.Component.VC.14.34.17.4.x86.x64", + "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", + "Microsoft.VisualStudio.Component.Windows10SDK", + "Microsoft.VisualStudio.Workload.CoreEditor", + "Microsoft.VisualStudio.Workload.ManagedDesktop", + "Microsoft.VisualStudio.Workload.NativeCrossPlat", + "Microsoft.VisualStudio.Workload.NativeDesktop", + "Microsoft.VisualStudio.Workload.NativeGame" + ] +} diff --git a/ai_fighter/AI_Fight_Sim/AI_Fight_Sim.uproject b/ai_fighter/AI_Fight_Sim/AI_Fight_Sim.uproject new file mode 100644 index 0000000..c9a63be --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/AI_Fight_Sim.uproject @@ -0,0 +1,33 @@ +{ + "FileVersion": 3, + "EngineAssociation": "5.2", + "Category": "", + "Description": "", + "Modules": [ + { + "Name": "AI_Fight_Sim", + "Type": "Runtime", + "LoadingPhase": "Default", + "AdditionalDependencies": [ + "Engine" + ] + } + ], + "Plugins": [ + { + "Name": "ModelingToolsEditorMode", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + }, + { + "Name": "VisualStudioTools", + "Enabled": true, + "MarketplaceURL": "com.epicgames.launcher://ue/marketplace/product/362651520df94e4fa65492dbcba44ae2", + "SupportedTargetPlatforms": [ + "Win64" + ] + } + ] +} \ No newline at end of file diff --git a/ai_fighter/AI_Fight_Sim/Config/DefaultEditor.ini b/ai_fighter/AI_Fight_Sim/Config/DefaultEditor.ini new file mode 100644 index 0000000..42106a6 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Config/DefaultEditor.ini @@ -0,0 +1,11 @@ +[UnrealEd.SimpleMap] +SimpleMapName=/Game/TP_ThirdPerson/Maps/ThirdPersonExampleMap + +[EditoronlyBP] +bAllowClassAndBlueprintPinMatching=true +bReplaceBlueprintWithClass= true +bDontLoadBlueprintOutsideEditor= true +bBlueprintIsNotBlueprintType= true + +[/Script/AdvancedPreviewScene.SharedProfiles] + diff --git a/ai_fighter/AI_Fight_Sim/Config/DefaultEditorPerProjectUserSettings.ini b/ai_fighter/AI_Fight_Sim/Config/DefaultEditorPerProjectUserSettings.ini new file mode 100644 index 0000000..d3d6cc0 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Config/DefaultEditorPerProjectUserSettings.ini @@ -0,0 +1,2 @@ +[ContentBrowser] +ContentBrowserTab1.SelectedPaths=/Game/ThirdPersonBP \ No newline at end of file diff --git a/ai_fighter/AI_Fight_Sim/Config/DefaultEngine.ini b/ai_fighter/AI_Fight_Sim/Config/DefaultEngine.ini new file mode 100644 index 0000000..440c4c2 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Config/DefaultEngine.ini @@ -0,0 +1,298 @@ +[URL] +GameName=AI_Fight_Sim + +[/Script/EngineSettings.GameMapsSettings] +EditorStartupMap=/Game/ThirdPerson/Maps/Main.Main +GameDefaultMap=/Game/ThirdPerson/Maps/Main.Main +TransitionMap= +bUseSplitscreen=True +TwoPlayerSplitscreenLayout=Horizontal +ThreePlayerSplitscreenLayout=FavorTop +GlobalDefaultGameMode=/Game/ThirdPerson/Blueprints/BP_ThirdPersonGameMode.BP_ThirdPersonGameMode_C +GlobalDefaultServerGameMode=None +GameInstanceClass=/Script/AI_Fight_Sim.NeuralNetworkCommandLineParsing + +[/Script/Engine.RendererSettings] +r.Mobile.ShadingPath=0 +r.Mobile.SupportGPUScene=False +r.Mobile.AntiAliasing=1 +r.Mobile.FloatPrecisionMode=0 +r.Mobile.AllowDitheredLODTransition=False +r.Mobile.VirtualTextures=False +r.DiscardUnusedQuality=False +r.Shaders.CompressionFormat=2 +r.AllowOcclusionQueries=True +r.MinScreenRadiusForLights=0.030000 +r.MinScreenRadiusForDepthPrepass=0.030000 +r.MinScreenRadiusForCSMDepth=0.010000 +r.PrecomputedVisibilityWarning=False +r.TextureStreaming=True +Compat.UseDXT5NormalMaps=False +r.VirtualTextures=False +r.VT.EnableAutoImport=True +r.VirtualTexturedLightmaps=False +r.VT.AnisotropicFiltering=False +bEnableVirtualTextureOpacityMask=False +r.VT.TileSize=128 +r.VT.TileBorderSize=4 +r.vt.FeedbackFactor=16 +WorkingColorSpaceChoice=sRGB +RedChromaticityCoordinate=(X=0.640000,Y=0.330000) +GreenChromaticityCoordinate=(X=0.300000,Y=0.600000) +BlueChromaticityCoordinate=(X=0.150000,Y=0.060000) +WhiteChromaticityCoordinate=(X=0.312700,Y=0.329000) +r.ClearCoatNormal=False +r.DynamicGlobalIlluminationMethod=1 +r.ReflectionMethod=1 +r.ReflectionCaptureResolution=128 +r.ReflectionEnvironmentLightmapMixBasedOnRoughness=True +r.Lumen.HardwareRayTracing=False +r.Lumen.HardwareRayTracing.LightingMode=0 +r.Lumen.TranslucencyReflections.FrontLayer.EnableForProject=False +r.Lumen.TraceMeshSDFs=0 +r.Shadow.Virtual.Enable=0 +r.RayTracing=False +r.RayTracing.Shadows=False +r.RayTracing.Skylight=False +r.RayTracing.UseTextureLod=False +r.PathTracing=True +r.GenerateMeshDistanceFields=True +r.DistanceFields.DefaultVoxelDensity=0.200000 +r.Nanite.ProjectEnabled=True +r.AllowStaticLighting=True +r.NormalMapsForStaticLighting=False +r.ForwardShading=False +r.VertexFoggingForOpaque=True +r.SeparateTranslucency=True +r.TranslucentSortPolicy=0 +TranslucentSortAxis=(X=0.000000,Y=-1.000000,Z=0.000000) +vr.VRS.HMDFixedFoveationLevel=0 +vr.VRS.HMDFixedFoveationDynamic=False +r.CustomDepth=1 +r.CustomDepthTemporalAAJitter=True +r.PostProcessing.PropagateAlpha=0 +r.DefaultFeature.Bloom=True +r.DefaultFeature.AmbientOcclusion=True +r.DefaultFeature.AmbientOcclusionStaticFraction=True +r.DefaultFeature.AutoExposure=False +r.DefaultFeature.AutoExposure.Method=0 +r.DefaultFeature.AutoExposure.Bias=1.000000 +r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=True +r.DefaultFeature.MotionBlur=False +r.DefaultFeature.LensFlare=False +r.TemporalAA.Upsampling=True +r.AntiAliasingMethod=0 +r.MSAACount=4 +r.DefaultFeature.LightUnits=1 +r.DefaultBackBufferPixelFormat=4 +r.Shadow.UnbuiltPreviewInGame=True +r.StencilForLODDither=False +r.EarlyZPass=3 +r.EarlyZPassOnlyMaterialMasking=False +r.Shadow.CSMCaching=False +r.DBuffer=True +r.ClearSceneMethod=1 +r.VelocityOutputPass=1 +r.Velocity.EnableVertexDeformation=2 +r.SelectiveBasePassOutputs=False +bDefaultParticleCutouts=False +fx.GPUSimulationTextureSizeX=1024 +fx.GPUSimulationTextureSizeY=1024 +r.AllowGlobalClipPlane=False +r.GBufferFormat=1 +r.MorphTarget.Mode=True +r.GPUCrashDebugging=False +vr.InstancedStereo=False +r.MobileHDR=True +vr.MobileMultiView=False +r.Mobile.UseHWsRGBEncoding=False +vr.RoundRobinOcclusion=False +r.MeshStreaming=False +r.HeterogeneousVolumes=True +r.WireframeCullThreshold=5.000000 +r.SupportStationarySkylight=True +r.SupportLowQualityLightmaps=True +r.SupportPointLightWholeSceneShadows=True +r.SupportSkyAtmosphere=True +r.SupportSkyAtmosphereAffectsHeightFog=True +r.SupportCloudShadowOnForwardLitTranslucent=False +r.Shadow.TranslucentPerObject.ProjectEnabled=False +r.Water.SingleLayerWater.SupportCloudShadow=False +r.Substrate=False +r.Substrate.OpaqueMaterialRoughRefraction=False +r.Substrate.Debug.AdvancedVisualizationShaders=False +r.Material.RoughDiffuse=False +r.Material.EnergyConservation=False +r.OIT.SortedPixels=False +r.SkinCache.CompileShaders=False +r.SkinCache.SkipCompilingGPUSkinVF=False +r.SkinCache.DefaultBehavior=1 +r.SkinCache.SceneMemoryLimitInMB=128.000000 +r.Mobile.EnableStaticAndCSMShadowReceivers=True +r.Mobile.EnableMovableLightCSMShaderCulling=True +r.Mobile.Forward.EnableLocalLights=True +r.Mobile.Forward.EnableClusteredReflections=False +r.Mobile.EnableNoPrecomputedLightingCSMShader=True +r.Mobile.AllowDistanceFieldShadows=True +r.Mobile.AllowMovableDirectionalLights=True +r.Mobile.EnableMovableSpotlightsShadow=False +r.GPUSkin.Support16BitBoneIndex=False +r.GPUSkin.Limit2BoneInfluences=False +r.SupportDepthOnlyIndexBuffers=True +r.SupportReversedIndexBuffers=True +r.Mobile.AmbientOcclusion=False +r.GPUSkin.UnlimitedBoneInfluences=False +r.GPUSkin.UnlimitedBoneInfluencesThreshold=8 +DefaultBoneInfluenceLimit=(Default=0,PerPlatform=()) +MaxSkinBones=(Default=65536,PerPlatform=(("Mobile", 256))) +r.Mobile.PlanarReflectionMode=0 +r.Mobile.SupportsGen4TAA=True +bStreamSkeletalMeshLODs=(Default=False,PerPlatform=()) +bDiscardSkeletalMeshOptionalLODs=(Default=False,PerPlatform=()) +VisualizeCalibrationColorMaterialPath=/Engine/EngineMaterials/PPM_DefaultCalibrationColor.PPM_DefaultCalibrationColor +VisualizeCalibrationCustomMaterialPath=None +VisualizeCalibrationGrayscaleMaterialPath=/Engine/EngineMaterials/PPM_DefaultCalibrationGrayscale.PPM_DefaultCalibrationGrayscale + +[/Script/WindowsTargetPlatform.WindowsTargetSettings] +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/HardwareTargeting.HardwareTargetingSettings] +TargetedHardwareClass=Desktop +AppliedTargetedHardwareClass=Desktop +DefaultGraphicsPerformance=Scalable +AppliedDefaultGraphicsPerformance=Scalable + +[/Script/Engine.Engine] ++ActiveGameNameRedirects=(OldGameName="TP_ThirdPersonBP",NewGameName="/Script/AI_Fight_Sim") ++ActiveGameNameRedirects=(OldGameName="/Script/TP_ThirdPersonBP",NewGameName="/Script/AI_Fight_Sim") +bUseFixedFrameRate=True + +[/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings] +bEnablePlugin=True +bAllowNetworkConnection=True +SecurityToken=E929BDA04CF25111B6C69A96B207217C +bIncludeInShipping=False +bAllowExternalStartInShipping=False +bCompileAFSProject=False +bUseCompression=False +bLogFiles=False +bReportStats=False +ConnectionType=USBOnly +bUseManualIPAddress=False +ManualIPAddress= + +[/Script/Engine.CollisionProfile] +-Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision",bCanModify=False) +-Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ",bCanModify=False) +-Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ",bCanModify=False) +-Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic",Response=ECR_Block),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.",bCanModify=False) +-Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors",bCanModify=False) +-Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors",bCanModify=False) +-Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.",bCanModify=False) +-Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.",bCanModify=False) +-Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="UI",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Block),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) ++Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision") ++Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.") ++Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ") ++Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ") ++Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic"),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.") ++Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.") ++Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors") ++Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors") ++Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.") ++Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.") ++Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.") ++Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.") ++Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.") ++Profiles=(Name="UI",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility"),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="DamageDealer",CollisionEnabled=QueryOnly,bCanModify=True,ObjectTypeName="DamageDealer",CustomResponses=((Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="DamageDealer",Response=ECR_Ignore)),HelpMessage="Needs description") ++Profiles=(Name="DamageReceiver",CollisionEnabled=QueryOnly,bCanModify=True,ObjectTypeName="DamageReceiver",CustomResponses=((Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="DamageReceiver",Response=ECR_Ignore)),HelpMessage="Needs description") ++DefaultChannelResponses=(Channel=ECC_GameTraceChannel1,DefaultResponse=ECR_Overlap,bTraceType=False,bStaticObject=False,Name="DamageDealer") ++DefaultChannelResponses=(Channel=ECC_GameTraceChannel2,DefaultResponse=ECR_Overlap,bTraceType=False,bStaticObject=False,Name="DamageReceiver") ++EditProfiles=(Name="NoCollision",CustomResponses=((Channel="DamageDealer",Response=ECR_Ignore),(Channel="DamageReceiver",Response=ECR_Ignore))) ++EditProfiles=(Name="CharacterMesh",CustomResponses=((Channel="DamageDealer",Response=ECR_Ignore),(Channel="DamageReceiver",Response=ECR_Ignore),(Channel="Pawn"),(Channel="Camera",Response=ECR_Overlap))) +-ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall") +-ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn") +-ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic") +-ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor") +-ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic") ++ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall") ++ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn") ++ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic") ++ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor") ++ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic") +-CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic") +-CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic") +-CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle") +-CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn") ++CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic") ++CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic") ++CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle") ++CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn") + +[Core.Log] +LogTemp=Warning +LogBlueprint=Warning +LogActor=Warning +LogAI=Warning +LogBlueprintUserMessages=Warning +LogRHI=Error +LogPluginManager=Error +LogCsvProfiler=Error +LogPackageName=Error +LogWindows=Error +LogInit=Error +LogOnline=Error +LogDevObjectVersion=Error +LogConfig=Error +LogDeviceProfileManager=Error +LogAudio=Error +LogAudioMixer=Error +LogSlate=Error +LogPakFile=Error +LogD3D12RHI=Error +LogShaderLibrary=Error +LogUObjectArray=Error +LogWorld=Error +LogUObjectHash=Error +LogLoad=Error +LogMemory=Error \ No newline at end of file diff --git a/ai_fighter/AI_Fight_Sim/Config/DefaultGame.ini b/ai_fighter/AI_Fight_Sim/Config/DefaultGame.ini new file mode 100644 index 0000000..bae13af --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Config/DefaultGame.ini @@ -0,0 +1,7 @@ +[/Script/EngineSettings.GeneralProjectSettings] +ProjectID=63B401E74DB269637F1E79A85E18A4FA +ProjectName=Third Person BP Game Template + +[StartupActions] +bAddPacks=True +InsertPack=(PackSource="StarterContent.upack",PackName="StarterContent") diff --git a/ai_fighter/AI_Fight_Sim/Config/DefaultGameUserSettings.ini b/ai_fighter/AI_Fight_Sim/Config/DefaultGameUserSettings.ini new file mode 100644 index 0000000..823e253 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Config/DefaultGameUserSettings.ini @@ -0,0 +1,14 @@ +[/Script/Engine.GameUserSettings] +bUseVSync=False +ResolutionSizeX=480 +ResolutionSizeY=480 +LastUserConfirmedResolutionSizeX=480 +LastUserConfirmedResolutionSizeY=480 +WindowPosX=-1 +WindowPosY=-1 +bUseDesktopResolutionForFullscreen=False +FullscreenMode=1 +LastConfirmedFullscreenMode=1 +PreferredFullscreenMode=1 +Version=5 + diff --git a/ai_fighter/AI_Fight_Sim/Config/DefaultInput.ini b/ai_fighter/AI_Fight_Sim/Config/DefaultInput.ini new file mode 100644 index 0000000..f57b41d --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Config/DefaultInput.ini @@ -0,0 +1,88 @@ + + +[/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="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="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="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)) +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 +DefaultViewportMouseLockMode=LockOnCapture +FOVScale=0.011110 +DoubleClickTime=0.200000 +DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput +DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent +DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks +-ConsoleKeys=Tilde ++ConsoleKeys=Tilde ++ConsoleKeys=Caret + diff --git a/ai_fighter/AI_Fight_Sim/Config/Scalability.ini b/ai_fighter/AI_Fight_Sim/Config/Scalability.ini new file mode 100644 index 0000000..470b4f8 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Config/Scalability.ini @@ -0,0 +1,10 @@ +[ScalabilitySettings] +; Set all quality settings to the lowest +sg.ResolutionQuality=10 ; Adjust as necessary, 100 is full quality +sg.ViewDistanceQuality=0 +sg.AntiAliasingQuality=0 +sg.ShadowQuality=0 +sg.PostProcessQuality=0 +sg.TextureQuality=0 +sg.EffectsQuality=0 +sg.FoliageQuality=0 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/AIFighter_Albedo.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/AIFighter_Albedo.uasset new file mode 100644 index 0000000..80557e3 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/AIFighter_Albedo.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6c1d204e6c285c471eb0e64e7269ff8263006ebe7ae4b64e847471fb589de68 +size 18727 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/AIFighter_Roughness.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/AIFighter_Roughness.uasset new file mode 100644 index 0000000..060c872 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/AIFighter_Roughness.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:998be1dc88940b2971ff7a0956ec3e9066cf08bfd9aa389c76e1cbcddcb781aa +size 22586 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/ExtractRootMotion.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/ExtractRootMotion.uasset new file mode 100644 index 0000000..dc27e4e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/ExtractRootMotion.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56f4385fa662beb882f241d3c5d6cca129a35b48bf12e479cdd6e7d9de55f7c7 +size 137743 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/Fighter.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/Fighter.uasset new file mode 100644 index 0000000..66cb18e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/Fighter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f0ab3c328755e07cdd817fb312df419e3ed13ea99d71155d701b1703d2fee01 +size 10008 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/FighterAction.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/FighterAction.uasset new file mode 100644 index 0000000..6608d97 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/FighterAction.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab10f3ca08c9927e546a1533504b577e30c2c9e122d9505f198960fb324b6029 +size 3436 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/FighterAnimation.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/FighterAnimation.uasset new file mode 100644 index 0000000..7d79731 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/FighterAnimation.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce41d533f66ad240a6cbc0a09976f81224131404e0c9a6e5c25d19f7a3fd15d7 +size 999696 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/Moonlight.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/Moonlight.uasset new file mode 100644 index 0000000..d34dda4 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/Moonlight.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b427bf0ec008ee556f25afd33cde03ee53ba08103c83be8313c18a6954f10e2 +size 110878 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/MoonlightSword.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/MoonlightSword.uasset new file mode 100644 index 0000000..21571ab --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/MoonlightSword.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b09955b67c35bdfead6ff823f93baa02d8c9909a339b126a14bb4a53f219fc2a +size 11864 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/MoonlightWave.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/MoonlightWave.uasset new file mode 100644 index 0000000..9efd98a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/MoonlightWave.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9ed4e42e4567aa046d9db2989c2767d75ea4ee7a7c101967d4a0ae7a151851e +size 70020 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter.uasset new file mode 100644 index 0000000..8bc2efa --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6e4def76b7d38261ff358720f4147648cea1552d8b8f162c6cac9add43829a7 +size 2002491 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Heavy_Attack_1.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Heavy_Attack_1.uasset new file mode 100644 index 0000000..f8a5992 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Heavy_Attack_1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70930ab7365abfe42cdfa26f71acf44dbb1e1d340193bfaf9e39869e2852b3ea +size 238709 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Idle.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Idle.uasset new file mode 100644 index 0000000..6930fe3 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Idle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7aea60f2d6f3baeb0c7be5c975dd69e5223bacbf2d6081cbb38a3dd18c0dc3c7 +size 259207 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Knockback.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Knockback.uasset new file mode 100644 index 0000000..9a5bd6c --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Knockback.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15b21364f274cd1f4faa1b86ff5460e1cac213ad0ef240dbac22dd380f564b92 +size 134499 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Light_Attack_1.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Light_Attack_1.uasset new file mode 100644 index 0000000..204242b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Light_Attack_1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c3008ec91882f62a1af6df20f1b1121526c747fc885d1eb663f961c057c7784 +size 134274 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Light_Attack_2.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Light_Attack_2.uasset new file mode 100644 index 0000000..e465d1a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Light_Attack_2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ccbb8739f3925504aaff834180d8bddbeea026b25ae7811ec5c51ad39a5b962d +size 142432 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Roll.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Roll.uasset new file mode 100644 index 0000000..4a78ebe --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Roll.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f05d6650d7812346efce86e9d71198da37d72cb5df7eee6a02ec9457e5ea1ca6 +size 120603 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Special_Attack.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Special_Attack.uasset new file mode 100644 index 0000000..93d8713 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Special_Attack.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b66d0cc4c7f9046af0ee1ebe7c46de5ded8c9afc55db663ada920d0637741c0 +size 274317 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Walk.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Walk.uasset new file mode 100644 index 0000000..213784e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Anim_Skeleton_Walk.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6463df3dde2f0a2d57023ae3837a95a991cb4a37e7ddd237512646d5d02213cb +size 106645 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_PhysicsAsset.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_PhysicsAsset.uasset new file mode 100644 index 0000000..d388d35 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_PhysicsAsset.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8d503943302068668c2888117ad02f2a633ff1e2d43a6521cc73ce95e14bb9d +size 15055 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Skeleton.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Skeleton.uasset new file mode 100644 index 0000000..c21ebb4 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SK_AIFighter_Skeleton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6431199ce9cfc2ec9574d1b2df38d3bc07d26ea5681791f07f1f5c00c28db5a5 +size 30406 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SpecialWave.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SpecialWave.uasset new file mode 100644 index 0000000..2611e22 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SpecialWave.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc7cd0805d5e14b571076343231dd74f640b7803bf1c79826a13677e0a7ccdb8 +size 493285 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SwordAlbedo.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SwordAlbedo.uasset new file mode 100644 index 0000000..f6624b5 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SwordAlbedo.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0cff510da699fe5935034239e314c68f27cd63a2863e4615fa59a8e506c7dab +size 4207300 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SwordFlash.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SwordFlash.uasset new file mode 100644 index 0000000..6600d7b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Fighter/SwordFlash.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:222243ff18c6bcf43a4183ba3f88fff827e6911ab0e872990f2aa178e4ec0aa8 +size 865633 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Animations/Jog_Fwd.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Animations/Jog_Fwd.uasset new file mode 100644 index 0000000..b915e8e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Animations/Jog_Fwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81b4dd2a00331ba3086ce06a8673667359183399c5fb1ab924060e2c84720691 +size 203111 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/Layers/ML_Latex_Black.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/Layers/ML_Latex_Black.uasset new file mode 100644 index 0000000..4d2cc64 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/Layers/ML_Latex_Black.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa87ecdbb722402bdb4decef1a53487d6b74789076cb7aa51a4521553f478a89 +size 13710 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/Layers/ML_ShinyPlastic_Beige.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/Layers/ML_ShinyPlastic_Beige.uasset new file mode 100644 index 0000000..26c98f4 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/Layers/ML_ShinyPlastic_Beige.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b544f3c62bdc242ceb673eb94a30a1bb881ea3b126d849e8e969ea6b30c25772 +size 10382 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/Layers/ML_ShinyPlastic_Beige_Logo.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/Layers/ML_ShinyPlastic_Beige_Logo.uasset new file mode 100644 index 0000000..71812b7 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/Layers/ML_ShinyPlastic_Beige_Logo.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff2747888cb753414087d94c0aaa824e88aae93ca25584419a1ace2de31bb048 +size 11197 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/Layers/ML_SoftMetal.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/Layers/ML_SoftMetal.uasset new file mode 100644 index 0000000..3fbbe60 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/Layers/ML_SoftMetal.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28ffa6db34aa484d7f36d872c88b5628a5a9aff7279c1e0d819fb20fe29459ed +size 14647 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/M_MannequinUE4_Body.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/M_MannequinUE4_Body.uasset new file mode 100644 index 0000000..ab712a1 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/M_MannequinUE4_Body.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4042ac871e2df59386ec9b28ce4c8436753e92ba1e0c69b8ba1b75220a386e96 +size 28440 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/M_MannequinUE4_ChestLogo.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/M_MannequinUE4_ChestLogo.uasset new file mode 100644 index 0000000..86a96e3 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Materials/M_MannequinUE4_ChestLogo.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03e96660ce9ddd947d06b73332cc5e3ce76339f937d2cd7ef5396e20a1bdd968 +size 11162 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin.uasset new file mode 100644 index 0000000..f595931 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:add4a29562eefee1f38203b6377e56cdb62ad5f109776e845d05e4050552926c +size 5583495 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin_PhysicsAsset.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin_PhysicsAsset.uasset new file mode 100644 index 0000000..063f935 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin_PhysicsAsset.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8e0bf4f4a7a8702be683d64e382e0994d56a24f6ef94a0e13d0d3504df9e490 +size 46446 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin_Skeleton.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin_Skeleton.uasset new file mode 100644 index 0000000..5ee88a5 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Meshes/SK_Mannequin_Skeleton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44ad784e4e3635f78abc34c3f266522218994b20714ddda144bbcbaa5972c4ed +size 22962 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Rigs/IK_UE4_Mannequin.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Rigs/IK_UE4_Mannequin.uasset new file mode 100644 index 0000000..80b681c --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Rigs/IK_UE4_Mannequin.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce8694572ad9b6bf3f7b4bfb00f12aba5d5253d65389475ebcc8f9d8d43c37b2 +size 68924 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Rigs/RTG_UE4Manny_UE5Manny.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Rigs/RTG_UE4Manny_UE5Manny.uasset new file mode 100644 index 0000000..4c60e88 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Rigs/RTG_UE4Manny_UE5Manny.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:592717cabe08dd57e5ee625c860879be13a18932f8654fe73ee0bbaee063caf6 +size 23985 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Rigs/RTG_UE5Manny_UE4Manny.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Rigs/RTG_UE5Manny_UE4Manny.uasset new file mode 100644 index 0000000..11f762e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Rigs/RTG_UE5Manny_UE4Manny.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b34deb079185dedefe04151a3c824a6981b25e12c65f89e7bcd120c68d0f7cac +size 19357 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_ML_Aluminum01.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_ML_Aluminum01.uasset new file mode 100644 index 0000000..0909fde --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_ML_Aluminum01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf805e02f583024a7f5a40f4b2a249809ce711a46de5c84bcd74609b73fed351 +size 395400 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_ML_Aluminum01_N.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_ML_Aluminum01_N.uasset new file mode 100644 index 0000000..7eceba1 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_ML_Aluminum01_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:582564da5dbbe8e30e6d65babae05ff22edce4a0bc8833f95180b505f0837447 +size 404289 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_ML_Rubber_Blue_01_D.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_ML_Rubber_Blue_01_D.uasset new file mode 100644 index 0000000..e18a52a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_ML_Rubber_Blue_01_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64a3293fbe4df89c9040bc8d5e9cc6cebc945715ca1c8dc62a7682acc526a524 +size 429026 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_ML_Rubber_Blue_01_N.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_ML_Rubber_Blue_01_N.uasset new file mode 100644 index 0000000..e984535 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_ML_Rubber_Blue_01_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c84157238dd3d148b4f51e44a46f82d5dfd714beaa67c4c9c2998bdc7ec3365 +size 358524 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_UE4_Mannequin_MAT_MASKA.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_UE4_Mannequin_MAT_MASKA.uasset new file mode 100644 index 0000000..5e4c2a3 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_UE4_Mannequin_MAT_MASKA.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec1d27963fc08f75eeee585f78d96ffbd8727bfe86c7c1fe0e7e2a2dd57d5a26 +size 211489 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_UE4_Mannequin__normals.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_UE4_Mannequin__normals.uasset new file mode 100644 index 0000000..8fd335b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_UE4_Mannequin__normals.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:354c99110df3d84a5cf4bb01de49d994a5c674c9788bd4b5fc779bf3030c54cf +size 5427488 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_UELogo_Mask.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_UELogo_Mask.uasset new file mode 100644 index 0000000..6c32cbe --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_UELogo_Mask.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6f7d178353537343355bd9e8021951aac860c189c1393f57777df90c720466a +size 41868 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_UELogo_N_TGA.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_UELogo_N_TGA.uasset new file mode 100644 index 0000000..3236d1f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequin_UE4/Textures/T_UELogo_N_TGA.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a30f20159eb0e91b89c5f36aa9e6699b4c1a2af7328296c3fd77c392e10b2c7 +size 56343 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/ABP_Manny.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/ABP_Manny.uasset new file mode 100644 index 0000000..9e5b15d --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/ABP_Manny.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:698ad59b091eadff740a7ed78bb18cfad875fa3143d2ae614e0317d5e9680a79 +size 368180 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/ABP_Quinn.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/ABP_Quinn.uasset new file mode 100644 index 0000000..ae1cbad --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/ABP_Quinn.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd84317778ba8ee13b7addf2bd11988a07c38cffbebb129562a25785e5215abb +size 39313 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/BS_MM_WalkRun.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/BS_MM_WalkRun.uasset new file mode 100644 index 0000000..c1625d5 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/BS_MM_WalkRun.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17534cfadb0ecbfec9556f6b116d3cc4276b2d8ea5b451062ba3919c5ce24a6c +size 8993 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Fall_Loop.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Fall_Loop.uasset new file mode 100644 index 0000000..391c245 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Fall_Loop.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:732b4cb73137a34d510f774b0ab63934bf2ee5532b0333d401fa450f88e44010 +size 698209 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Idle.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Idle.uasset new file mode 100644 index 0000000..00049a8 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Idle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d03e57ab6829b8f60cf19ba1ee5e0ac82e37e5429427edaad472fb473f71d1c +size 897634 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Jump.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Jump.uasset new file mode 100644 index 0000000..360bd01 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Jump.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:771ad470861e3bec955b22c889d2b9acb844a6ae91565b0e647c7adace39878b +size 290962 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Land.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Land.uasset new file mode 100644 index 0000000..f5e0d2c --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Land.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24f34cf736992c09b7502185c3d71ef1c79278fb558dacc91fa494ecfe452fe5 +size 300335 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Run_Fwd.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Run_Fwd.uasset new file mode 100644 index 0000000..84ca078 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Run_Fwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aff51ddb72b98d9cd2f4c1351f132dfcfde83d905f4f37d1f35b793b26c95b96 +size 293237 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_T_Pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_T_Pose.uasset new file mode 100644 index 0000000..16d2289 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_T_Pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b7e4d1ff30352e296f446e77eed841ad7d5344430c5f7141fd09aad7e0af2c3 +size 30458 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Walk_Fwd.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Walk_Fwd.uasset new file mode 100644 index 0000000..5e734eb --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Walk_Fwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:226e6affa1682ddf630a2e7759bc8b08dae033490a0449400af18a97941440c4 +size 382783 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Walk_InPlace.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Walk_InPlace.uasset new file mode 100644 index 0000000..18e0680 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Manny/MM_Walk_InPlace.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55a005cf4d673d8fcef1b93e2be270b8c47a8a82b7cbf895a915d27710d4a40b +size 609238 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Quinn/BS_MF_Unarmed_WalkRun.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Quinn/BS_MF_Unarmed_WalkRun.uasset new file mode 100644 index 0000000..41ae1f8 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Quinn/BS_MF_Unarmed_WalkRun.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f327022361559eaa6f0e301cb008d03bc1c022c9c4b432c1d94c942e4c2c296 +size 9270 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Quinn/MF_Idle.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Quinn/MF_Idle.uasset new file mode 100644 index 0000000..56a8a86 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Quinn/MF_Idle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98c6ee27d23ad13b69cd51e466058ff8f75e55ec69ab78911d43eb2d54151022 +size 919278 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Quinn/MF_Run_Fwd.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Quinn/MF_Run_Fwd.uasset new file mode 100644 index 0000000..a022266 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Quinn/MF_Run_Fwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:069b7d70641be0a4f2c0d9f0cb4662c796da0f2969c6f1297ae3e22dd3479026 +size 431040 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Quinn/MF_Walk_Fwd.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Quinn/MF_Walk_Fwd.uasset new file mode 100644 index 0000000..a334b55 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Animations/Quinn/MF_Walk_Fwd.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a277d4a34033b8e5b336eace9857a4abf1f255a2a4687fa1709b5a5a464ea137 +size 449906 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/CA_Mannequin.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/CA_Mannequin.uasset new file mode 100644 index 0000000..33b7e4d --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/CA_Mannequin.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5564d59ac367f94d06d6eafc8eafbc1144eec525ebcaf0bd20c3effd400bcf8b +size 4812 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/ChromaticCurve.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/ChromaticCurve.uasset new file mode 100644 index 0000000..b66dfad --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/ChromaticCurve.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32f26545999f01c55f8900c2d491d4cb39f3c545b061225deee2c8b70e760b70 +size 6306 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/MF_Diffraction.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/MF_Diffraction.uasset new file mode 100644 index 0000000..fbe47aa --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/MF_Diffraction.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1248c9176bcd4693cab74b63249bd9f0434758dda1c4f4b5c53da5e2a2b91ec2 +size 32183 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/MF_logo3layers.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/MF_logo3layers.uasset new file mode 100644 index 0000000..96a2e85 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/MF_logo3layers.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1f542fd354f8ff82fb685318e3665da4e9a9207add267de9ce6cf8779b5e147 +size 56603 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/ML_BaseColorFallOff.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/ML_BaseColorFallOff.uasset new file mode 100644 index 0000000..2c79117 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Functions/ML_BaseColorFallOff.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:242a332a47b300d429e94147a7ffd38ed09b5c2467dede5e90525494af7c5e18 +size 13437 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_01.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_01.uasset new file mode 100644 index 0000000..4c76d43 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2492fbdc6d6af64af264159aeab1b4ed6fc859e2adbd1be4aef59dd8221c7d49 +size 21590 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_02.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_02.uasset new file mode 100644 index 0000000..8027144 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e6b0c28b5f10768f406776c4fc9d853eb915efdcff8e79465e96aff8c11872b +size 24853 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_01.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_01.uasset new file mode 100644 index 0000000..b486efd --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc66db2c2b3f8f37191aad8bc59bbdecda0a19a03a995c602df3b2d8cb3f19e9 +size 19667 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_02.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_02.uasset new file mode 100644 index 0000000..7f69c8a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/Instances/Quinn/MI_Quinn_02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46e73fecdb44bdf4bbbd661ee36798f7956f76360594023cb51b96f92ca4c01c +size 25230 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/M_Mannequin.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/M_Mannequin.uasset new file mode 100644 index 0000000..8c4ba13 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Materials/M_Mannequin.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c19c44d3a63f9975bb2e777d37d44341cf24907674c36cca79c558383406f0d5 +size 83079 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/Mannequin_LODSettings.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/Mannequin_LODSettings.uasset new file mode 100644 index 0000000..b342d7b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/Mannequin_LODSettings.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae6203ccee7839e886951796d05315fe1dd9b9aa44c8a60a9525d5ccd905d5b6 +size 18996 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SKM_Manny.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SKM_Manny.uasset new file mode 100644 index 0000000..9f1f7d2 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SKM_Manny.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1df1a6b3db170cd80f14c40653fbc9a692af00f7abd575872d9cd8a707e05c6 +size 34534883 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SKM_Manny_Simple.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SKM_Manny_Simple.uasset new file mode 100644 index 0000000..efc750c --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SKM_Manny_Simple.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc39b456f2700d3f7aa0dfa99432424c78464b723a143bdf337dcc96867aaab9 +size 18527372 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SKM_Quinn.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SKM_Quinn.uasset new file mode 100644 index 0000000..113ac4e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SKM_Quinn.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0fdd468262ff66fd30eb55f7bac167063959e5d9dbfa36abf853a5d77616a59 +size 36495654 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SKM_Quinn_Simple.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SKM_Quinn_Simple.uasset new file mode 100644 index 0000000..0a0d0d1 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SKM_Quinn_Simple.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01031c54550174f0a09f13787b128229316afa699302577044e13b6c71d830ed +size 19371553 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SK_Mannequin.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SK_Mannequin.uasset new file mode 100644 index 0000000..e864a47 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Meshes/SK_Mannequin.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:777b2aa0a679b5d326814440204787ff0ba56b4ad9477a407b24d689155b050c +size 160872 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/ABP_Manny_PostProcess.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/ABP_Manny_PostProcess.uasset new file mode 100644 index 0000000..dd58011 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/ABP_Manny_PostProcess.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f58d1ac6047ec45bf31bec1071a5afc0e9dde9d50849bd8e74ca1c4271495c8 +size 463451 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/ABP_Quinn_PostProcess.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/ABP_Quinn_PostProcess.uasset new file mode 100644 index 0000000..2bb81b5 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/ABP_Quinn_PostProcess.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f57ba4350e61b3a5fac6cff45c3d21b81d0ab289765dac797b150b8bac98f34 +size 463249 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/CR_Mannequin_BasicFootIK.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/CR_Mannequin_BasicFootIK.uasset new file mode 100644 index 0000000..f9c827a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/CR_Mannequin_BasicFootIK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:968ba2fa8bf2bca36556b5623b895b9ac9db162f9c2936acda0b0504239543b4 +size 580522 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/CR_Mannequin_Body.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/CR_Mannequin_Body.uasset new file mode 100644 index 0000000..f58f765 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/CR_Mannequin_Body.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d6092d8eb4a158e99568dffe0f036a5310b03d5a917e3b58529c7d5fd4088ce +size 16036573 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/CR_Mannequin_Procedural.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/CR_Mannequin_Procedural.uasset new file mode 100644 index 0000000..98e0204 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/CR_Mannequin_Procedural.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d1abd304377e26c3c7e5a3b7488c522b118cc62ba0f574e9a63ec2e6ca22ac6 +size 2267523 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/IK_Mannequin.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/IK_Mannequin.uasset new file mode 100644 index 0000000..c35c1ab --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/IK_Mannequin.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edd623de3bde5afa06348d226eb98ba4f7d66c962ad7c93b4d25feef5de4b124 +size 143479 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/PA_Mannequin.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/PA_Mannequin.uasset new file mode 100644 index 0000000..72b3611 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/PA_Mannequin.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0b163ae42f4717b12d4a9ab0c6b9da218e2d0d64e891b508e81586ac2a3adee +size 289285 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_anim.uasset new file mode 100644 index 0000000..3c14e35 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec42316c0d0e642867721ab1ac8b58452ee537c9dde5e4d4389d745ccc44e9a6 +size 141452 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_pose.uasset new file mode 100644 index 0000000..44ba84b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_l_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26f5c00f4b1a7000505a233e217aa55c5e32b0473128b7cb96f34051dc330da5 +size 207430 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_anim.uasset new file mode 100644 index 0000000..bd39dac --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afe97fa82d46c150d56573b1d1c3d59fbac288f498c3de5fecedd8ac64c2263a +size 141462 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_pose.uasset new file mode 100644 index 0000000..13f2622 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_calf_r_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fb5783ac00efbfb039007568246d1ac33d36da09eec69e3cf0d01e1f96d13fe +size 207430 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_anim.uasset new file mode 100644 index 0000000..31710ac --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b4292d4d3cc8c3a23c0d2ea80461f9c05379a22e97c94094a1c4e342e6f0fa9 +size 141484 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_pose.uasset new file mode 100644 index 0000000..18cd550 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_l_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56c0e188c3d854c92956755b9c89b8cb6cdb75f1bc4aac655f0d5f6524fb8160 +size 205732 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_anim.uasset new file mode 100644 index 0000000..d7cc735 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9263821d96862a7121442b54bcaff72775c4758fb2218747bd3540207aa0fecd +size 141486 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_pose.uasset new file mode 100644 index 0000000..8fe32e5 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_clavicle_r_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20d21639ca1cd7876ba408a4e6603f66d3d4c9a65d2bbf7c76b59f28e4d020e3 +size 206334 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_anim.uasset new file mode 100644 index 0000000..46f2b70 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5d2ef5f757409ad457660e4388272646155d5bcdfecc4705b85b41d338835c6 +size 129460 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_pose.uasset new file mode 100644 index 0000000..e022eed --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_l_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b0c29406e6b6a8074edb2b2d1107d62972059ccae5c0bfe3dc6d99d932f00ed +size 132176 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_anim.uasset new file mode 100644 index 0000000..b347990 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f872db9323bc78b01d91dea5e406cfa348ef10aeed5b9e66a97ddc87b58704e +size 129462 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_pose.uasset new file mode 100644 index 0000000..f35a314 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_foot_r_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0313dfda857c8a37ae26a104bee21803eb49acc138a18fd7a6864320d025ef40 +size 132176 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_anim.uasset new file mode 100644 index 0000000..b2d1b80 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ad7d36e92954cf783be7be2c7ce8e2e6b3b4376645985a6a772b5890977c381 +size 135460 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_pose.uasset new file mode 100644 index 0000000..05550aa --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_l_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1d40437f02274fec5ff3cad47fa3e1cb2997db9397507823c299f0749e1c5f0 +size 169206 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_anim.uasset new file mode 100644 index 0000000..64537c2 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e52609e89b719e493df4ed2a196996db3c4dfff4b20a83f68a747099f31827c9 +size 135462 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_pose.uasset new file mode 100644 index 0000000..0cd5c37 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_hand_r_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9b7b4ce565d7c55919dfeea6b785e2704cba7cc2ca8ad786145739a7eac36bc +size 169206 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_anim.uasset new file mode 100644 index 0000000..3653416 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1761fa57b6504be33ac4c346839446698f20fcc8942a36574ae579e99d6311b +size 203916 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_pose.uasset new file mode 100644 index 0000000..9009fa1 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_l_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a75265541e206479aabe98ede22dad0ae72aedd9b43fa8c33741422f4c5ec38 +size 361644 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_anim.uasset new file mode 100644 index 0000000..68f69cb --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bad38ef33364282ad783d13ff05ac64235fbd94f735f7970aa690f302927139 +size 165486 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_pose.uasset new file mode 100644 index 0000000..ad01a2d --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_lowerarm_r_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02a9cb1c077531f9bc0acd2f5868d25d42e7f1edaf21d29b0a89a67f277bb2d2 +size 361644 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_anim.uasset new file mode 100644 index 0000000..6abd3af --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46328ac897d55c35ed2c5f7d28443c963b6e4ed348adaf74980b1b7e64514975 +size 195468 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_pose.uasset new file mode 100644 index 0000000..30332d0 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_l_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac1fba41bdc8d3832f26bee507b7f83d2e51051cae58ecbea0a1e73f3d1e8198 +size 557972 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_anim.uasset new file mode 100644 index 0000000..a18ad76 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b17348bde6d9bd17838698331f08c1babf8a120aab05553ddcbf658cef3d6caf +size 195470 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_pose.uasset new file mode 100644 index 0000000..c673e13 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_thigh_r_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bd106c4cf63362f741611edf562149e7d928c4e12a5debac2a27265bc315775 +size 557972 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_anim.uasset new file mode 100644 index 0000000..e4c5ebe --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59995bd0fd055a0c29809abcec8ab593a4cfb517a8c52d09b56870ad46a6a431 +size 207486 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_pose.uasset new file mode 100644 index 0000000..91540fe --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_l_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b56619a8bff783926b5bc17770f90ca5b6dae18cfce0cfde29c69db26df8c968 +size 641633 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_anim.uasset new file mode 100644 index 0000000..cef74d7 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55a49a9b5f1d55df4733f651d7110c677fff421e8ccf317a7b5604d46380df9c +size 207488 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_pose.uasset new file mode 100644 index 0000000..00174b7 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Manny/Manny_upperarm_r_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed2b9dab16c319539175975f14ed906f2e442ebb3705a0f1bfb932b8b2752eec +size 630195 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_anim.uasset new file mode 100644 index 0000000..41247fa --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:315c606d481e66842161f6d640843049c1bb8fad801817cdc01b5347459fe663 +size 190030 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_pose.uasset new file mode 100644 index 0000000..7c0c664 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_l_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ee7e7490da8bc5da27bee03d313475c546418b9aa15186cc1e342ac314d1599 +size 245188 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_anim.uasset new file mode 100644 index 0000000..54c61de --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46a6c2f1c8b50afe1849072f062ead508a2f570682f1b21b2e85334776c5f315 +size 228099 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_pose.uasset new file mode 100644 index 0000000..c7c2930 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_calf_r_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eaf41bdfdbbcde2f668b07dd932baac1b5517312d04d75b77dce1e82272b31b4 +size 245269 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_anim.uasset new file mode 100644 index 0000000..89f006a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:def1eceb6484991a242bd5bd4bf2c9c1b857861ff5b981ee916a23d4db023b4b +size 222063 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_pose.uasset new file mode 100644 index 0000000..da6c387 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_l_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2225dbb5778c1529862086865e86272e574cc993ac0a48cb1c0cc28fafb27c1 +size 205936 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_anim.uasset new file mode 100644 index 0000000..3fc197f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97a0673daaa10512b94608a6ff11d82914e0812760b75ea7e86c3b43c0b4c97b +size 183734 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_pose.uasset new file mode 100644 index 0000000..7c90b80 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_clavicle_r_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aba097887d167f4b9277338de16c7feb689882acb393b32a0ac176d27f62e2b8 +size 205980 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_anim.uasset new file mode 100644 index 0000000..500df25 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6995c1603c3553af502c2ef04f6fb685d9183f0668266c6562f16238e08f80fb +size 171708 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_pose.uasset new file mode 100644 index 0000000..16a952a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_l_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98e401355f6f5bdba83fc2e84ecd9d7e5128f1d6f0c585f368b9d971da58273c +size 132123 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_anim.uasset new file mode 100644 index 0000000..b79204b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91500b65453319b136c33e0b3edb161adf1030a5c3c30c8602390f1725af65b3 +size 171710 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_pose.uasset new file mode 100644 index 0000000..a1b9497 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_foot_r_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4af5fd34572deb49a2335651c0a311e4db80ed2394c6c1ad633735fa1cf5e44 +size 132123 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_anim.uasset new file mode 100644 index 0000000..30a8ffb --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b0b0e92c4297c40bf94f63ccebd938acc49fc4b1ce45f1680fa533c5ea923cc +size 177708 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_pose.uasset new file mode 100644 index 0000000..01c8105 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_l_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7c66da3c6a7b2801d9ada447fff4a2593a4b6054a178141f1eae26e21e4b3a7 +size 169153 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_anim.uasset new file mode 100644 index 0000000..635dce7 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6128ed9b666f06dde9df5e3d647aff8994b07ad1b4b36fedf693726d63ce138 +size 158608 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_pose.uasset new file mode 100644 index 0000000..622cc1b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_hand_r_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:973ad5984394de84cfbe2dd3021f7f64f8c4c2e85b6573866382df76c0d9d2f3 +size 169153 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_anim.uasset new file mode 100644 index 0000000..5a95d70 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ecd03a972b3109a14840c924efe7d5f6b486ad3e7764773d33eacfb8032bea64 +size 194631 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_pose.uasset new file mode 100644 index 0000000..f2c2239 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_l_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:106aa8dc6d3493474f24e4d3240212c3c24428249d5f09f078c65d0372cc3d4d +size 399529 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_anim.uasset new file mode 100644 index 0000000..d830514 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93be05fdf4241bdc152877416175f804bd2e1976d7588919192316bd7b21e936 +size 194633 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_pose.uasset new file mode 100644 index 0000000..a979165 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_lowerarm_r_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:610877f087e4e77eba703036159d4abc95b52a1f196b7a317da97963e7477455 +size 399529 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_anim.uasset new file mode 100644 index 0000000..d39f203 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae59b67795d102845bd680e15d74a9b70688315a0ca489232f56cc9005de5597 +size 218614 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_pose.uasset new file mode 100644 index 0000000..591b42b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_l_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04d95febf97f6a4d406c53efc6551eb20b378c8a91fef18c151b92a8b3df1abb +size 557618 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_anim.uasset new file mode 100644 index 0000000..0062c43 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b808aa71712168bf1905b91a238f152347579523c2eeec52401b67bf6de6ad27 +size 218616 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_pose.uasset new file mode 100644 index 0000000..49e65e6 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_thigh_r_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76f65a5466dd4cd84abd48bef6245bb84930f7b8efff23807a88d4b23df3c1b3 +size 557618 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_anim.uasset new file mode 100644 index 0000000..81727ce --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1de49cf76ee2b6e93936cad3a1ace2bb849e3cd84a24bb84e566abde3a035758 +size 206632 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_pose.uasset new file mode 100644 index 0000000..782027a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_l_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d72952cdf9066cd84e1e5ea11cc2f6a754b0e79f8f037e1f2c8fc8c86ddb408f +size 485440 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_anim.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_anim.uasset new file mode 100644 index 0000000..a756ff3 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_anim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d1fd8bad84e7c6c45884137870261dc78789def4c72683b3775790722d1894d +size 206634 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_pose.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_pose.uasset new file mode 100644 index 0000000..ed588fc --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/Poses/Quinn/Quinn_upperarm_r_pose.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee8b8e737a19894faf44176bcd5aca3405b3a1879eeea792ebdb0c534691cf1c +size 488450 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/RTG_Mannequin.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/RTG_Mannequin.uasset new file mode 100644 index 0000000..88c8cd2 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Rigs/RTG_Mannequin.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:710754e06ca383f6333958aea11321463736f5ffe6b1f82dfcf79896e2a5228b +size 23721 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_ASAOPMASK_MSK.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_ASAOPMASK_MSK.uasset new file mode 100644 index 0000000..110ab26 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_ASAOPMASK_MSK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac817a2d33aa0cd0a8695b9fba9a925a1c71cfbe6de32986a51e6acb1ca598c0 +size 3612605 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_BN.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_BN.uasset new file mode 100644 index 0000000..0875d1d --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_BN.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8036d465bf677ee48f2c45bb50911cbd085a3d5208959e0b70377bb8d9bc26a6 +size 18514168 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_CCRCCPlastic_MSK.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_CCRCCPlastic_MSK.uasset new file mode 100644 index 0000000..83b1a1f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_CCRCCPlastic_MSK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3502ef8e4e68f4968b52510cf1fbf2fc0ccc1eb8d7c1e1afeb350d650c2e8ab +size 10271972 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_D.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_D.uasset new file mode 100644 index 0000000..eb17abe --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc929bd4eb67ba8610069c601709062d142cca925eedc40c89a940037650b524 +size 5740376 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_MSR_MSK.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_MSR_MSK.uasset new file mode 100644 index 0000000..f341498 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_MSR_MSK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b54209191bfa9dc3c8e195661e0d7807a24f039a3010d54f04e984f63669881c +size 11038184 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_N.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_N.uasset new file mode 100644 index 0000000..6168d14 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b90b6df5b96b505495be378ecb268a17640ba88b40cfe5b0fc764aac26a07c40 +size 7198251 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_Tan.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_Tan.uasset new file mode 100644 index 0000000..ed6ba96 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_01_Tan.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:251a25a1ac777fddadd2845c84edca5b4ce15b749e9f46d8169c001b9be9c4ea +size 1357770 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_ASAOPMASK_MSK.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_ASAOPMASK_MSK.uasset new file mode 100644 index 0000000..66c12c4 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_ASAOPMASK_MSK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51d2a2a0683e0c5654d4c5c724e8360c83e4ffe5181ae740872ca3fc0533e85a +size 8341381 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_BN.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_BN.uasset new file mode 100644 index 0000000..779cd91 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_BN.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0361a08e270d688814e73adf503937c3012771b0a939f839a06f7c6c8d5269c3 +size 21139527 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_CCRCCPlastic_MSK.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_CCRCCPlastic_MSK.uasset new file mode 100644 index 0000000..acd53f1 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_CCRCCPlastic_MSK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:651eac4091121b27a09f3b13110ec307e9bd815f9a6e573618d051c24387de46 +size 13144043 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_D.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_D.uasset new file mode 100644 index 0000000..4c97af8 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42864bd62f0f0d9510453038ff284cc1c1fc09630af8da0cb496e0563a2ffacb +size 9033544 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_MSR_MSK.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_MSR_MSK.uasset new file mode 100644 index 0000000..264d373 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_MSR_MSK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb66b07e8c8621bf361a9d18f97c668677e51164b5892c2577c94703531482e8 +size 13677610 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_N.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_N.uasset new file mode 100644 index 0000000..709611b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:790e9d4e061af061c727d118634801c4834b46e119dd1917ffe5d18f6601d53f +size 7269335 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_Tan.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_Tan.uasset new file mode 100644 index 0000000..fd9ae9f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Manny/T_Manny_02_Tan.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:187e5fb0047bcc653c7a6e014c49e3d6582e955a3c034579cfb756c80b68dc53 +size 2153790 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_BN.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_BN.uasset new file mode 100644 index 0000000..cd4420a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_BN.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:267382e5ca6dcb468e63545e09778b0e16dbd7652cb6d735b487cff1990e809f +size 16108599 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_D.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_D.uasset new file mode 100644 index 0000000..a9ba547 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:792f234ebadad1dc45153c9b1987326d3a4da485d88cf8b1234e3395f5165070 +size 4711156 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_MSR_MSK.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_MSR_MSK.uasset new file mode 100644 index 0000000..d692b9f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_MSR_MSK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e765500d0458a2b4612541ae714281afc376b1d4758403017eb1ca6bc6892de9 +size 11656141 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_N.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_N.uasset new file mode 100644 index 0000000..2c453f3 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8266e8da977f915cbd75329eb02feee571f92067ee749b45099c290519bf20b +size 5217676 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_Tan.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_Tan.uasset new file mode 100644 index 0000000..552a695 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01ID_Tan.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57d9b50418e742ee22fc67783d9db3afb5027c3ef943753e4137742a692b4e01 +size 1104627 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_ASAOMASK_MSK.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_ASAOMASK_MSK.uasset new file mode 100644 index 0000000..044d1f5 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_ASAOMASK_MSK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5583b02c8b943d60f91f5d9bb59466c9fb1ab3aa811d599c54a20f2a19661b2 +size 5834834 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_CCRCCPlastic_MSK.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_CCRCCPlastic_MSK.uasset new file mode 100644 index 0000000..de237dd --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_01_CCRCCPlastic_MSK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2134af63f2d5037e8fcab8e4f50593d62c731f4a8af43bdbd7c2613debea0cbb +size 12399926 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_BN.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_BN.uasset new file mode 100644 index 0000000..d47e6fd --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_BN.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa063b2ea5c44fbc95b17b6a6c093c39a6bbbee1082137c42cbf23b311c75cef +size 19706883 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_D.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_D.uasset new file mode 100644 index 0000000..779799d --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40f579c2a83087c90b7f36744a15798194e9ecbe7c6560d0da2903653ed17723 +size 6732524 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_MSR_MSK.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_MSR_MSK.uasset new file mode 100644 index 0000000..282d0b6 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_MSR_MSK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98195f96efbfcf97ddf05c69f2f04388a5e5aefa22d2c9d771f37b22aba8fc2a +size 13169771 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_N.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_N.uasset new file mode 100644 index 0000000..be61334 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:637241dcbbff574ea1032881f60ddb007ce4a33a61864c6b0d3b3b7aa392d0d9 +size 5217676 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_Tan.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_Tan.uasset new file mode 100644 index 0000000..9b9edc4 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02ID_Tan.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcb445b1af4f07ce1b59ab3c8c25af3da7eb1f9c019559b0fd9172c31f38fa5f +size 1758494 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_ASAOMASK_MSK.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_ASAOMASK_MSK.uasset new file mode 100644 index 0000000..977a24f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_ASAOMASK_MSK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53b15563df73f76b904d67eec1f7f7ad3c27166bdb1aa21d99c7f9eec0116d60 +size 6901973 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_CCRCCPlastic_MSK.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_CCRCCPlastic_MSK.uasset new file mode 100644 index 0000000..717049b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Quinn/T_Quinn_02_CCRCCPlastic_MSK.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe4e287b727a2b1d18f26557d1569111eda715219f8c73bd96cb74ff87c2cb8c +size 13427858 diff --git a/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Shared/T_UE_Logo_M.uasset b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Shared/T_UE_Logo_M.uasset new file mode 100644 index 0000000..51bc908 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/Characters/Mannequins/Textures/Shared/T_UE_Logo_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0571397248a1f4acc7607d1e53676cbb154e3c9c8a19d570915d76b70caaf99c +size 69960 diff --git a/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MF_ProcGrid.uasset b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MF_ProcGrid.uasset new file mode 100644 index 0000000..767cf20 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MF_ProcGrid.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa5d22837af536b9690ed2f790e288a59ca659c63e669fca99685afc2364ce82 +size 48741 diff --git a/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray.uasset b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray.uasset new file mode 100644 index 0000000..3fd81bc --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65022a590b73953153898dfd370aa8c2609a84670cdb06dd205d813712d1c1a4 +size 12785 diff --git a/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_02.uasset b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_02.uasset new file mode 100644 index 0000000..d727d35 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MI_PrototypeGrid_Gray_02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa0f2a06a7d937127d7d737c13bacb3f8fe88c8e0479f5e6b7cda81fd225d077 +size 11922 diff --git a/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MI_PrototypeGrid_TopDark.uasset b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MI_PrototypeGrid_TopDark.uasset new file mode 100644 index 0000000..1eae7f9 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MI_PrototypeGrid_TopDark.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:838034e5afc7ab3a70bfff6de2e1237aa02337fb423e95c1b536b3e30c61c982 +size 11957 diff --git a/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MI_Solid_Blue.uasset b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MI_Solid_Blue.uasset new file mode 100644 index 0000000..a6e284e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/MI_Solid_Blue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:417952e4c6986a99f1bc3fb25ebceb1308806028bd2b602501b66b874aa87cc6 +size 8669 diff --git a/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/M_PrototypeGrid.uasset b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/M_PrototypeGrid.uasset new file mode 100644 index 0000000..32a19d9 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/M_PrototypeGrid.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1a5b000cfbe3030ff6f0bb67a2e4cc4bb803769d74ebd88d54f98918616d2d1 +size 40328 diff --git a/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/M_Solid.uasset b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/M_Solid.uasset new file mode 100644 index 0000000..abe7dda --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Materials/M_Solid.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d754d45a7f34228c043d5389af994f3f6c9d6e4bd579bba6c65f11813db11662 +size 9609 diff --git a/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_ChamferCube.uasset b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_ChamferCube.uasset new file mode 100644 index 0000000..7a5b944 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_ChamferCube.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6301fc4690ae3dbdc0b77203c6e5f662561351252c7df36c334fb72f6ffe2205 +size 22332 diff --git a/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_Cube.uasset b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_Cube.uasset new file mode 100644 index 0000000..c4909ff --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_Cube.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79cf9bb71346c1f0386362238aef3e01400be06211e6813dc1ce9bbae969fb07 +size 17034 diff --git a/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_Cylinder.uasset b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_Cylinder.uasset new file mode 100644 index 0000000..0ab270f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_Cylinder.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a59270c4e29b708c93c0872970bd7f8cc2a9db0e898ba6792605364b25fee585 +size 20348 diff --git a/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_QuarterCylinder.uasset b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_QuarterCylinder.uasset new file mode 100644 index 0000000..5edf332 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_QuarterCylinder.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8da43997ae75f32c7fba7047ca3f34ca88d68613845d556072b74c93de74e6a5 +size 17827 diff --git a/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_Ramp.uasset b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_Ramp.uasset new file mode 100644 index 0000000..d099706 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Meshes/SM_Ramp.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81a46d90c20408e4246e37c4c00bf764b5a05d3752eadd1c3b10e8946a79ffbe +size 17169 diff --git a/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Textures/T_GridChecker_A.uasset b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Textures/T_GridChecker_A.uasset new file mode 100644 index 0000000..37cf466 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/LevelPrototyping/Textures/T_GridChecker_A.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb8334767064b107ec4f4407ef1365e8b9e2dfeff5984e66d4a6232254ddd02a +size 9600 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Floor_400x400.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Floor_400x400.uasset new file mode 100644 index 0000000..c2a34af --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Floor_400x400.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c0ecf0ac0702cc2bd355ec050232a61c49e10f102448efbeb735a51824adef6 +size 14948 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Pillar_50x500.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Pillar_50x500.uasset new file mode 100644 index 0000000..a74124f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Pillar_50x500.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ef6566b8a58d89c7c7de52e4c1723c9ad3e9636fc801766e89757eb98ec3cbb +size 15861 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/SM_AssetPlatform.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/SM_AssetPlatform.uasset new file mode 100644 index 0000000..b6ef400 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/SM_AssetPlatform.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c0f8fbbe377ca3d96f2671c0eb941bb8b3755d2d60b69e71719f8727149bbe1 +size 160364 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_400x200.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_400x200.uasset new file mode 100644 index 0000000..8df10ff --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_400x200.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05ad5630567f96399a57fec69383564321660e8e32dc2bfe4b206159475b6959 +size 14683 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_400x300.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_400x300.uasset new file mode 100644 index 0000000..e195f24 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_400x300.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f3b60af00eae705effeb499f368c376bb5bdb8620ec9790eceab8f1b6129bb0 +size 13933 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_400x400.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_400x400.uasset new file mode 100644 index 0000000..1c97beb --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_400x400.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71738b34263d8579795bc65719c0ccfe1cf9bd7c8fe64ca02af09bce8b93fb53 +size 14660 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_500x500.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_500x500.uasset new file mode 100644 index 0000000..75e7f96 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_500x500.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59404b543ab051363ca22f47d8696264c20fb87012e5ffc3d0b370a3a7acbf41 +size 17336 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_Door_400x300.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_Door_400x300.uasset new file mode 100644 index 0000000..59c6efc --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_Door_400x300.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30948daf1661aa95461de492c66d0a8b5a03a607893da56ad03bc7a114b8b62a +size 16508 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_Door_400x400.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_Door_400x400.uasset new file mode 100644 index 0000000..05fda56 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_Door_400x400.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31cbec41a1f814fb1aed3263b1b50f70f8d465f57934d5acda6004df67ae6a0b +size 16392 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_Window_400x300.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_Window_400x300.uasset new file mode 100644 index 0000000..15c0eaf --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_Window_400x300.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1988d1310934ef357e8a7638ba7cb109d8a151d2a3ea8c0fe8744dfe96fd7d25 +size 17385 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_Window_400x400.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_Window_400x400.uasset new file mode 100644 index 0000000..5596705 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Architecture/Wall_Window_400x400.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f34a11fa24048a7600f7b87d88d6c12f723fd955fd6c590f38745287e4f5957 +size 17251 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Collapse01.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Collapse01.uasset new file mode 100644 index 0000000..5e3ff30 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Collapse01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85c827023ee4b466228ec65e92b4b4a0415a106de041ac1c2cab481a2a5dfa8d +size 348532 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Collapse02.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Collapse02.uasset new file mode 100644 index 0000000..f45a091 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Collapse02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5690c3cdc857ea7d3ae21ed1c6a22e82bb15e8bb24b995228af244c2bb4f0d3 +size 346701 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Collapse_Cue.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Collapse_Cue.uasset new file mode 100644 index 0000000..81e69e1 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Collapse_Cue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bbd215bbb20c2a86f7b9ba4d90aa1870edd1999e00b5ff64a52a657a50a690b +size 6517 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Explosion01.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Explosion01.uasset new file mode 100644 index 0000000..5a0119b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Explosion01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16c3e6decfc990f2bc468b309a9652d7eb98d4481fbd26563ff88139052ace5c +size 282440 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Explosion02.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Explosion02.uasset new file mode 100644 index 0000000..dfdedf4 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Explosion02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d44ed6a6a3a6dec3a4ec729cc4b5ecd3ac4477ca4c9f32107b357ea02dafcddc +size 289195 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Explosion_Cue.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Explosion_Cue.uasset new file mode 100644 index 0000000..a67301e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Explosion_Cue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91b66cedcfeedcaa25d7b2afe79c3dfb636e625f626fb56ce9b410fc6495ef3b +size 8088 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Fire01.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Fire01.uasset new file mode 100644 index 0000000..67eb428 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Fire01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2a6926e93f33107f58a79edd09d5a4ed06196b797f5fc284efc35fbe2df073d +size 549696 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Fire01_Cue.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Fire01_Cue.uasset new file mode 100644 index 0000000..b723ef5 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Fire01_Cue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3c93dca255ffe4fcd045103b0cf1341adda3640b47a5656c82ef6236639a51c +size 4280 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Fire_Sparks01.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Fire_Sparks01.uasset new file mode 100644 index 0000000..8159b34 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Fire_Sparks01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad12649c70f5ef2acd9c19835c59855aaecd4c946260bf6aee182d3fe317d0f2 +size 796274 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Fire_Sparks01_Cue.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Fire_Sparks01_Cue.uasset new file mode 100644 index 0000000..693d437 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Fire_Sparks01_Cue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c13448535c552552c0216aa5a9d5af5957d4606153a004cdcec934ea5e9a22b +size 4299 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Light01.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Light01.uasset new file mode 100644 index 0000000..dcb7c70 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Light01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:267cbc3d508a60edd5aaa8efe0d62e0097c9741782a57fab3d63ffda96314586 +size 364532 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Light01_Cue.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Light01_Cue.uasset new file mode 100644 index 0000000..24a1775 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Light01_Cue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc123926fc005aceaa148edfc4cf3778e694a8c17e1e359448377462d4a63d95 +size 4237 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Light02.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Light02.uasset new file mode 100644 index 0000000..55b3882 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Light02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4ac34417b5db1bf38044e258066d93415e7439dbfec09465c70eb3b96e9a201 +size 308156 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Light02_Cue.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Light02_Cue.uasset new file mode 100644 index 0000000..da4e413 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Light02_Cue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c65561c4b6d3767df9e90d24684abfb9fd7b8f980c1a812e329d319b15ab1c87 +size 4237 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Smoke01.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Smoke01.uasset new file mode 100644 index 0000000..97d92a1 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Smoke01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9d9cdaab035abab672f71362fe0710533dac23e0c4b4f7fc0f48fa1dd613758 +size 476002 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Smoke01_Cue.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Smoke01_Cue.uasset new file mode 100644 index 0000000..d0d0bbf --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Smoke01_Cue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97a08e7214107b0f39835ba844b7dcbc69b6613b3573de87e3e9c0e9cfe1a057 +size 4257 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Background_Cue.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Background_Cue.uasset new file mode 100644 index 0000000..8eed863 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Background_Cue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36bc3a7bbeaad1ecf33a97465da041171bdd205f780a171d8ec712b16174e8b8 +size 10330 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Birds01.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Birds01.uasset new file mode 100644 index 0000000..48fe853 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Birds01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e17fb5652999970bbd06344540cdfd616331a382da43a82de082374883bdc84e +size 2689459 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Music01.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Music01.uasset new file mode 100644 index 0000000..9034d40 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Music01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7eb074ff2fea1ac87017ca6638cb140b26ec60733878503ea2c618d726a780c +size 8445372 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Music_Cue.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Music_Cue.uasset new file mode 100644 index 0000000..9b4e0b5 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Music_Cue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6fdbda2320b26aa806d967ca88390fbd6dd6078432952800fd029cf313bb2ce +size 3753 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Wind05.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Wind05.uasset new file mode 100644 index 0000000..5b51a8b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Wind05.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57ff816d0d35668e42096d85b2beabd89d6a87751f4f2c4ab030f4ee32b64ce7 +size 2312702 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Wind06.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Wind06.uasset new file mode 100644 index 0000000..13d7d30 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Starter_Wind06.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:517dad0128fbc9bf1acc611065a47892ff48f23e68fdde1d37d84cecb8dc0c7f +size 2195539 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Steam01.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Steam01.uasset new file mode 100644 index 0000000..96b5845 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Steam01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eaf02809b4d2541d2f851691f852afe55587710645207cea7bf01e0b8418473f +size 819028 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Steam01_Cue.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Steam01_Cue.uasset new file mode 100644 index 0000000..2050940 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Audio/Steam01_Cue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c43fb733ebfc395af98ce820de46fed7d2b3f2a42ad03f55c8cf8e12d1bd417f +size 4285 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/FogBrightnessLUT.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/FogBrightnessLUT.uasset new file mode 100644 index 0000000..4b7f0d2 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/FogBrightnessLUT.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c04c6cdec2455c8b6fa4c0dafd4a572d4003eacba85b923de671eece901238f6 +size 1858 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/M_LightStage_Arrows.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/M_LightStage_Arrows.uasset new file mode 100644 index 0000000..49b49d4 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/M_LightStage_Arrows.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21b7d8fa958eaa3e8324f3a762cd445877c7bbdc3b5a8eb2b2d6d858cb276c52 +size 10372 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Black.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Black.uasset new file mode 100644 index 0000000..bae5b52 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Black.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da01afa9d1cc164ac85b7a3d8329ee509485b29886e37a1288f84777e24ae85b +size 5250 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_HDRI.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_HDRI.uasset new file mode 100644 index 0000000..d5828c0 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_HDRI.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b2b575f499de972bf4f97524adba121cc8c8c903abdb844e0a677477489d22b +size 13553 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Master.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Master.uasset new file mode 100644 index 0000000..c213dea --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Master.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fdf80a5102d6178944912fb4b2a242a96e3368baa3f8a0c1be38a94ae2d6e30 +size 15870 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/SM_Arrows.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/SM_Arrows.uasset new file mode 100644 index 0000000..6218325 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/SM_Arrows.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6cc69849eb29034f71b88b8c3765ae353efb3c1f3e51a3f6117631529b24d52 +size 190020 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/Skybox.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/Skybox.uasset new file mode 100644 index 0000000..2e67e29 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/Skybox.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c4555ecd203a7c2993d604fce22f6526b56ce59b39b6c069a1e3cdd5a456cdc +size 209212 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/SunlightColorLUT.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/SunlightColorLUT.uasset new file mode 100644 index 0000000..dc478e6 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Assets/SunlightColorLUT.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83865c6b24e80dc62f792fdfbdb63abca1be425b02b3164cbf1f2eecb8afb786 +size 5128 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/BP_LightStudio.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/BP_LightStudio.uasset new file mode 100644 index 0000000..2ea4332 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/BP_LightStudio.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33349930c4785a2bcd4f90e8c4e13df4ea6e29e33a1a8e5c8f576e0bf6a6663f +size 646714 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_CeilingLight.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_CeilingLight.uasset new file mode 100644 index 0000000..c5c3b84 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_CeilingLight.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a60a29ad596546d481e43dfb8698842a78cc07f4a4b1000fa397cfba4e72331 +size 158206 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Explosion.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Explosion.uasset new file mode 100644 index 0000000..4269e35 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Explosion.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcd9abdc6a00b26e0721b48a0bb06e3100c4c1ac407fcc3e4141225572d56cc2 +size 16095 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Fire.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Fire.uasset new file mode 100644 index 0000000..97e76f4 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Fire.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dad0a791b92c961cde738111acefeab728b3b4e61589d133144b5a1c84b3a6fc +size 16096 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Smoke.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Smoke.uasset new file mode 100644 index 0000000..ca8a053 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Smoke.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad60f189780f8ae94abd489b48cbd5de03a539e118a842c78585a174a09280eb +size 16117 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Sparks.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Sparks.uasset new file mode 100644 index 0000000..d1cd7fc --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Sparks.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b80b6d88fabd6b817e73b3b1da4b33def861812ea41b1971154f34c8f8420658 +size 14539 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Steam.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Steam.uasset new file mode 100644 index 0000000..a2ee9aa --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_Effect_Steam.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ae4ddbe5ac59963ae5a3177f417bb812d01be33076308bb1bd352a934149c38 +size 16133 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_WallSconce.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_WallSconce.uasset new file mode 100644 index 0000000..d4c7b4e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Blueprints/Blueprint_WallSconce.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c6ae820b88cfa7250fa16726c0dedcb150760c0e0b7c824993b01e152751607 +size 158241 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset new file mode 100644 index 0000000..0f99058 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc35eb2d43a47427d30aba0196f9eac90d089dd3abca319528c5d25c83510d0d +size 72364642 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Maps/Advanced_Lighting.umap b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Maps/Advanced_Lighting.umap new file mode 100644 index 0000000000000000000000000000000000000000..ebf696685b1469938be90c24f95ed71cecc9371a GIT binary patch literal 44639 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 R7LI*ehM9x*xmlf-{2%Zq=WqZ3 literal 0 HcmV?d00001 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Maps/Minimal_Default.umap b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Maps/Minimal_Default.umap new file mode 100644 index 0000000000000000000000000000000000000000..378270c2aa89b6d05bbf0986eaf075b070586241 GIT binary patch literal 54552 zcmeHw349bq({~5)Ksf{y1QogDk|Xy4Dx1v#;Yb1r2>L+SWGBf&k`22XAc_(NPgF$l z1~~;(R2~lwQHglriMJqvs0bc_h&QNw_3!DLojoSmAn)_}z2DRM&2~>!b#--hb#-;m z?&O7;y&m}O=+UDSP7vbMMnW8*9H}K;3uph<>W?8+H#FTgeR!{&H73}|ai5GGoE6(@+SqC9W`DD;@)UxtJ!#lwzYQts zTDkGEnjP=_{MM-iyY8%WC(O!muG;y2n}F?)m_PsdoNg;KPwq7Dook+Q^d{Ix&mLVcCMqZEnpT~@xMAh(7lPmJ*sZIZ<=lAQ z+N-v#S~BF%M8M8D`^z=^S}uI=+J#qL`$grwZuD)S?~g4t>8sN|J7ex0-j3(CJ)dCq z@%L}d9R6I_m8)9Ks&4E2tSiCxm#*IZjeXuvr+pH$By~e(-yQ@jEjnfIm|H<=O5Ejj~2!I<-o^xDM>^kL=madM)?UTLO9j^2_wKth_rkm^5}BY^}ynpcOU4veejd--!$OkW?Orl zJz@Rem$H@(s~J?`)JU-2n=C1H*6~2DM9hKgG!(A1w zaz|M~x>oF{D)aRXx)*mxAJ~l%?Uz^NaaH>IWjm(0N*q3yyCSdJ>(k2n1_MUNh3 zj{R){Q09s&x=lPqitN!GX=M(tS9s1|HK7&g8Im(a^LSiNP1O9jGpf17cpTNa)QINs zRg0|EU%F%$Js$VeGpx2l8R0S!bctN zmFf<_l{+d&jrNL#A5A_Yd&tP)E;3t>=Jbm@{JcE}14yzR6=YMoBu=UA(uA_|^C0se zkGrZe%Sm?ZDsq$or+G8o9vUK7MTyvUp|%w>y>PJ0Ni^cBH?vNay348{t8!{tG%?7P zc)a4t!l7%W60*E3m{S~jW#mz5Qd!=-O7c98va;%7ZU5-PV?q+mC{=8&KWnk=e-!ceSs{1p$@vt1C6pwB_xeNgI?SoH4n|HN`>g zkd5hc#4EZ!GrG&^P>7`P!(VUF{936P3C}I9_PUC^ux|0|9W9=giW#o?sQ<1aSjWeM zX1oTEQ<&}ckP8Rsrq~DmEp05@?V|xmE0eC&lc#yed5JSSt$s@C!tJcil3uk)6Smze z-|7f1ITdBqto1bVy%-VVF`8yYx#kr=J-GKo*;%)HQn|x3Db+*XPn6`hpDi^>(BTC2 zin#9MwLpWS!@R_zQe5=wwx6WovcqMg zrWq=FIuCsymCML{kE6m{ta;Lv7ZXe0eXU5E3sa1CPt(fe>M-w_w-OK$*xl2__$23t zQrEezDQ;h`n}$5qcd6!ai^petdp#J~bMwdMW)uw5rciac_=%b=k6bI~_DIc9mhURp z(j1jod&HMFTz!+Ah$A(c0J`VVN5w0K6h+m_F&U{w!ays}Xq1aXdiZvs?bIMQ8JQd*&Tz0lKpj}P2|6~peSBG1?N=Qd6`5V$Kybvi}g z2QS_Nmn!jg8uC2NS5+x``3m$20YZC~tISE3F+()D&Y<J+R~zZ5CYvkLoQ#$0W?reo>7GjV`Da$YE{alj7AmmH zDWp}ls7y1$3Gu@(7bQzWrB+oaVs}+kK%m9@?|Gu5;^JT943EklL)`P_hvuS+g-Yt!0Xt6(GD7!L{!I`4W#MlnP; zs?tdw%PE{cc6${@Pqyx@LcGCoOq-gV$uRmfhu241@ky=diV)tRJ=@Dly!@$kLo^nL z{*7K63yoA}W|^ZzXhS+_FlZSsh*fj764;)!O9w4yzjJaJs6zV)2Wy8(|*`mFbdZldE}($U+?@nn;g&ptr2+DlV=vMpOEn zg24|zjc%k9(;}(j85y3waA5|-Q6}eszoV~?>Nx{GA&iAFNWA??Q8~OydUb`P+*PEj zokpUF7Dlglbm3inVXy&Mt~=a41@l%mDwaLcy)_n*47;%we*D9%qi_ZUQj4LS`tD|3 zU)Cw%IV9*V`_RRhRT;_z^ogNN;DUmWUq*Bg4%xpy2?HUVV({XopTZGm7#6{%GGorX z0hmi6nEw4oRB4{-)C#9sBSrh0uigVw^ppC{s{hJ+4q|W!r!054yU_>+qF|w^J9^ zz&L@R71X7XXSi?dc^wg}WCXh(^7%!20KdMr;~N9&B+1O==#rE%S#Mcy9iGLBF=?faiVE6QT=~t~yRZaimbo21qhCi> z?EDimCX-em%_A*i`pjEaVs2qSo?GUqmK!;*IPlfPRuZh@c&EMxz3!AT`Cu@}?dC0= zLwjGk#X%lNWvL8Omt6D46u32cla_n9RMx2SQT!%7(7gx7y$oXGQxK8?K|Q^X|ycp_}uj8wq@ z(Mhl8?YrZAC^d_m?KBzFu9$c6E_mRq3O)Q1S5;-53PAzjUG;s07q**;dcKq{s;_r7_DIXB5i#`KkSd*=1W=@9 z+Re8AdX!f(hvk>k7L~@#M|HeneW%}E#<0msz+B??lsVzr43Zy9Z#`4?2bJ^ORkY;E zc_a?KG5ldDd>GAYhlj#Bmq!#man3<0m0Jz^C5Qkv+JWC8OzpolDK9oWlXmtq%J+nR;Qv^@Q zG}7A`Dwuhw?eDr+`u@#8bQ$u+LM(7xEzd_g{&LdnNR3V&XbVpcm}bu6wpts^wc(Cw zq&h^xqqQ9(d$h zJ3JG7IB_A1)3gdqdlj9CF+U8N0uz@6RFlLrIxv3ivo9GqS4BX`J9|^yI;nGF9H@^i zT^y67KGar}W*iQXd?NbS+&6S~`X1HqSvB$7+|BPwIb9XmRpo`6C#P6RxMlunw=#Nk#xLST{kZ{_gpDvRXI6K89MS*M_^h+X4Ue! zDuFK`Z0vqtkHLaDe`UX@7k>)hbK~dl-`wqTJKWf#-@vI#WUIxjr zo5b$JD-NH#s}~Fo5U+UGo3;}+X10AXa(b)FF}fqF96oX59S?gk54a^rC6~Gza?k8- zMi`r`4bSfAiLv1tdDIOpE?vBmk+2GjHaTryPI0kU^N9g_a#z3wjC8vx7UCV(8EYN) zVUide?YB*P72%!)(24U+uJv1?1LL5;7~>WvJ8ppH4UBmh2VOa6AOy>EOwpWJf0Pu{ zH}6X~;Mhl|mXr1QL_wQdUPH6ofvoRS$76NOD=O8>9pdPQ*;COUzc&)s7w&ovCYCp; zI@MS1_Ewf^9?jpe#4U^7MtAev#XdPcGFZC*QP-a^aX?Mc^^C>a7h|AkIiih!pYIR0 z#^CZ%H3HI(d%h^Z2=LK^p#@L#2^wYrBg{%@etxs*va|B++%Ma{ij!m%ryp6skBU}f zZTXUoJjDRWPhRmuMrU|BKY2PGjgwvxAq>^3h4#TDxj*+4&}@F)4KI)gxSHo%P1XNWkOV=vsu%Vi~FS$Glqsp$k zEen!JWTpephs27T?%WKURc*-_NJfdmt(`JgQ5#Qq-rnD9qKTT8I$F_W*go;lnw;)_ zK7NdT79h`qOpl5-ZMbz4)(h^UfARLpFh^J2+UBEsz%cVmY1OK5xXR>MJTWZpNjMMM zWYXayoxY0GuXenM(UA~&ykau`&e}EK%6@p+uwXg)Sd@eaQuV~+8 zNt^^z5F8h449m{m$wRP`jH;jmEq57N6QW+t=b`6Yc+xax@|x|KfTL*#O1I0;Y3zib z&~IbY#i;1ACYX`_!z8h>jsV*(edTlb!O^ru)pyMl z<*uKZa3f4XKO3g!A4O?p?kakCz>aG4E&u))3i6-5x;AWi6wS#H(}+MC-+0%ny$IS* z-yW*WaQyuw^&ooc#vpO-=9u<4*$AvbZl&Mw0{y^;%ITyVamFhTyAYm*Qsxoqr0P8B zgG8g#^A|>gEZif~RP1zoq*OZO?MItCx2GUJI(iyi;(=!0)W%xY!*e@+-dbR%6{&s7K7Z{>jghBB@RDo1P-ut334lu2gdtacEVn6_|ubSOnA#Wtetjw`N;i@Xy2Xq7fdKD4demUbAY7GVcdZ;u9_cJ0(myC=7| zJHK99ox7O%d(O{2>m|;|kru76v@BgVw6F#X9zQoXHhXg8F2315Jsm3uqvM;SFg`+IPDS9`)`xMM!^=MsRH-Fpy ztq-dxJ;!lR6}~_IT8hO_-Wl^aTC6-}W{HFcJcy1K3;K0CfSAxuXQ72|I&U}Xh&w(# zauR%%zsG@x8a?l?>;vE6ehX zpjz$_^nlJcb=q9?-Z(}~)6c8Ly`%bfg!fIOV_&(Pl38ynnYa<_r8=B1C-!zBPosW7WG2p;-0C2fSuKEUHBQc^Ckum1g#RH=dJB8 z!$^gw@6OT@3*_OYQ=cS_-A|1JVTOLMN0$XdW5v1`?rDbQEMp2C73#F(9*i0XeT3Ec z>XCiM$#cXo!(o`0SbSjMI9QkT^WvSdY42je3iSG0+H~%Kd25WOQ9W90{c!gR)R)64 zCib2?4>l~dW}@o4z2n6&M+w(YRK(fcJMF<>SUBO{FYkREdSTC%+h{=^X4vq8@LqTH z?fa&n>EIRdvPK_tN0$h0@|i>2O&@~h%x5tpwGujr@KlT0t3SU3QuOd#B}GVL0=;0SCi)VSyGk6(y^Cl`n3Wd;23OdKvK ztwfxoJf${te-sp>_JzVb=!P>Pi@Jw)q>KxCFViF(5ANx~c7;zLqbnPAeiLJ1o;#P! z-mn8wg-)5>aW}<6eStG&L+*|VPzXWw39^33pKHK?0mj&i<}+q@fzu4ZM2oNH9PA>w z@EB{SU$6>3J0MoM$bIx2xK04&2#Td^2F;Z+4KFY)J}p1llPS4jDMH9G^NAR#H}$=s zTQ3q{$^Dz$>coofD+acO{Ymekd4dC$tts0kLw#tIzIs609et)xKVjVKupB?!=xen2 zCtU-6KR78v)%zM8~|twF?y> z5!uoBI`}0h+^a-4IRZM!7b%@50)FU6B>YxHNVlLKx}myS1jcP(9rEQUx}S(HB?7vK z>!HJ!JCUHj3&Zg1qhJG6zMANUML_pB(T$6ct}p^R=!I?DY*)eZfi9f=g`;CztdAet zVtsUp5%wb~Lb~J#>DYGalaFnuK03CE`sjv4D4$n1F;O4Cp%L=Sj*u=VLb|*N=^lx& zAFCpydm}=+cO#@Lj<6qJM#!%uLVl$Y()|=+yRHcNO^lGv7a`rB5z03$LVjmQNLL*p z-MJCaJxc!15dqyQqPr+Ux+}uaaU8)u0Djk22OawW#2fi_(DB>`ztlSDcy1#;7+D7$ z&sp%Z*Fkrg!mT5^f;#B_rEt#?-Q^L`Jxg?BBcNMLbfY7nTSIhXBA|Pk=q`zX?kS?X zGz=ZDmqiMPsezwZAcgbeX1entr0W3T#+*E2%8 zUJ=q=5FuUf2a!R2CH2wui?H43Fm&7ouaWQv>2=WY+6TIfI_P-q16^hvbiDRq zU%_Q_e_1|W`@nBd9sGFh!~SDZ9dwlnx1Q*{b(UnC& z_XN>ZL_qg%qLaUw3-Uv(KVIvhzrl6zIX0RB@T6s4sm{yN03 zm-^)Y*2EuYfP8jfmcQKu=Gt)mnE6Bh;rM4BNB(?9VwT@~ocLpW!^ywsIPvct#Q!3? zM|x|5%;X2glP>@oGQJlQeK`3~b%2wem^bs~9N2L7{|y0mm~3c*s(>@iT%Dyza;Snu z#%+Y-|FwxXjuCMN0ebkKosD&d*Vn|Gg&u1BnJ_7hLB7oxRYCRUu5qv_M75 zzmej@{7)ze!&rfig+Kf=67ygDH~8-{=?DHFXEu-@`p1u>kp`CPIX(e0%WN)()6Z8X z{&o(w}Bz04K6*$C-Y~%oC8-M|DHr+=Kl>UQ5rf?&&{9Amvi94@!xHdAO4Nc zA|d}TiedaDRWN1Dmvf-P@qfd_ANs-Gm&do~i8{kxWqKa&vmyMUAMnSt!uaBO3sT-> zJrDO;AO9~+^22^csS4nKx+)j^4gO!4_#=McJv#Ky`&as!O-N$7IR`;F{eN!akMA`O zH_1Osaox;^1nS-@3&($#i9hs{P5e2&I-(d2^I35WoNM9ue`ey3^_|Zgq<$3JK~Z{OH-9&2rxhaSDW}VUAR1){AT{p&jjL+ zCNRHdC??<4!Qb4MaQwHM^aK9z|487!T$Y5Gc%>?Y$r{T44dTK6=XJ&J^sB-!R-lIP zhkpZqUcY`hO=t4S-{Aj=Nk51m-ldCW%F@}3cWzRJFd5SV6;A)#O#GpLJ_msQ`JAHN zY}5{)>f^sPi2s+w25JHSXf=N`Zw}8J&|~4xKMLZHa~bB}QdPF!b?p2-O7{_mUk_ohmGW(4^^R802W!`%Ei^W_|v zaPq%r;t%=zs|v86EvQ84g?sfp+~=|Ihuxd`-*#U(&N{52{By&|UvU5N<=-Mm{=V~% zAAg*KvHg6c*#3DO`A;$F=N-lW{RPKQ{;4MZY(GnRBNnC^MJ_Sn?DJidefA|PKJ$b9 z??j+T$+J+;&7aJdbKvUZ-;Zd*@y}gq=B$^QFXw>P$3L2A%>2tS(3JYF&~x)A^W_}4 z`uHQJ3djHchs>PyGV|pe(E9kt5{;SvQYHT>t8|{`Pv*-xaP{$zBN{XRgKGVK6uyuUyU)cRzd@4v$E*D-pm!EJ=o&s!$`&<~!4vwmFo zMjj>iMm-Pr$-IFJ$NzN`f9$`mpbDsi^@aBaTR)&1i&P(f;Bm|VQ^7Ovzv#jjT5*r> zUj0ee8R{O-i2k7K0(DQtqetj^kS@^UnfGD3@O@{l|2y4teelEU7Wp3hex-}~;hE7d zbm80{_3_N&XS#4s3Y}tqejZ)H3ACN)YDE`Rj(dC$?MJ!*$27zD%?{Dkg~~X?2S3R3 z16@><2{2sfKXT|}v%=#Z{lZrwQAS^1p$qMGrVFxlr0XSu4Wzs!T{y46nGyU}JYDeb z@WJqt@CDF4Vjk?<5xc?u;e)V`K^yq$HjgpxQGS{DqaMo0yQ#dp%6m|bgg!$L&^62) z_5%7BsXk>g0S|q&rmGEIxW`zaZWFrDCdOzbT_|H*PE~M>)pEMPGl4GTi7HQ0d9un= zRNi0Z*cYRXg;f6mx|Yzjk*@k+ONr)%Ai8j{Wkj=yF4*-#%F)JRx}K-2mM-*jA?1KC zq6>Y4jln0N47;1J;5NF)yoPLD>1s|F;v>X(NL|ozO8g91zYG5f-mopJpJTv&L%)H2 zNxp7%`WJE0ZV-(qB8ui+aYRr3!7Lf(do zNyzWWQ}1YT5-3Qk#s~$Hc8^$F!R;2LbwA#QkLh~cO}GB(3mY`lL+{g)@72TaVUZw{ zflQ<6Pw$@5PhkVAxxAJ1V<%~Zs0I&eHDQ3ulJ8K&>kVblk?)}&L||pgblK&vL(csR z-Z@JCJxXo{rBl?s4vnIfiA!gx(jYNWxP>N$&}W*UH>`t_YB;0l@ioT zHJYkgBj~P@=m4!E+G63W7pqJ3_hmRq$uL?JDXBsstcSnbU*?=cI;f!5q9}&ZHRy*l zRuF$%%@t%AX@-8qM)j&hKD~0;MWqVj6h#q_&Sfy^uaNZU5*dT~8UxljqPVDxjAm z)62xrZftaHY~SeQzA-UkO-?$|CvhbF_;j|Y!&R^wQ^$^D3!U~PV=TTT|WrDEZ zs&ZH)Y9lpPQ6O`&JW!lFzsYHRnry8+@Q`kh&Y_4EM>;Fjb(;n_PoAg z#085Q4ZnHg)j!SJzIp+aVObgbBCZTVB=h|a8U`I2_}Tc>S>gcUW-IWyCbYT!c?4&B zWcwVV0Lx5u0*aH=-DxWCq$)52@}%@6K_MBqPtCOl6+9$stE`5({v5Yo!+<)hS!H@`rw@Fan5+Yx5}B0bEY%y7YRMFR@nP2QE<5{hNHw7@VtXx z|kWx#QdGGMsBjxHn~C7i$@rRkZ~ zXUM43>XgQ)+4w%Hh3X!+@STnk3|F`Qj0w0xM}_*zPtuUm!GZkrkQqki{KB;HgMu}X z(ZPXwJ%7&g`WwaY4rZ)!nO&f6;8+6Fo9Z@XU1PrIDT3gtQ55CqsX*ntBu-cNG9*En zS#jP?5d^aoqC{bWSsLFZC{qN?3b!kqSN^!)e%9dITR+!ximeI<2I6UaP>NW+Cp)$k zo@LLr-P~`>I~#B6X0zY2djIS;g|=V|;sM{M^AGn~Gw};&k6IyC@4My`jdIcP##Q2Z zv&0RSj+oSL9Dk>c@?CE(y{(q=j$e12axBtOgm_O+FsNO#f1+e`JfvIXT`=9G69i-jVH?Z7EMUh(uv4(WTh}6O)ElVTOrRR zL{EhbZcsln0x}e18NZ^nhZMupRNhtPJO!o0Emy#aDz8xaQz~ai&IVp@5S+L6a>ud* zdj~&q_r4YP<~`O5-X4jAV3tO@bos)U7-QnYB2h1Ku~MHQ-zJqp9J@*Jvr`JQlx zP1ei3SI_CjJcocAiVsR5@^m5KaES_oY(@y2jw7*1=j*oyT;2M!jj9;pUg;lMWw2bw z)=_^Wda0(kmKici`ZT%;>FApj?VYNq!Xp2rkjHCO7CCK-BeGq$i2~bR1z=tB@YdlX z{Ve{PQEXFpHNm}ZrNITtDl;d|R0o6di1 zV0}Ma$MZec^YdrCUf<83;d&lQ&v4t9LQkxfm(@&W1;|*8i5PgBA{wnKhh%33=^8sD zq$PT$M}a7V4$Re;2gWS^LLowG1J1S(kz9}kG9em0iLQT& zT#yAaAyS5J{wZ=n7RaQ={2wD1#tN+C6Yw2Wwg1ZyPrHuVN0znnS9p7nLR!RuP2cbVTR zGZ_Pq#KA~Q{Z{Xde63VR^{O!535V$AaaF~v3xK95c*w#nZ1Xd#6f(pGK_H)H%?aOT zK52#gX!L~xFH^|lwdg8#{>*i3i|(P%2GxSeqITnv+cq?{* zXVh%4J$D{(!)LyMorXT|=zF_&@J{}hriMMYQ=-Uk%7lGIUxV#>k7CJs#5_c*JMPhG z{GT;bY-W7|@rJ^NjB95?tg=F$ONeG_J>kfNMPU);fhQ9&aF^m}d3yiQ7tw2O)7skS zcI@=V`MsuI`C`@dl9O)jFm(OQ#`BvTO1pH2uiM~zJ5RSg_0h*yy&AhCI;Q2IT}eaV z9HNYj4o?2JM*Rq341@Nz31kKx9xuI zX8X8dx8K?R*4|x~pSEmUa+^&Di?Y{zz3swRf6xEw?jx`NYrywAQ&-Q(oBiFkHESlv zjJ>;A;~qJ;Ougxb$6IHwzoWhF%;_KR&sw-OVgF+#D{7XV)$F+e-oG+u&l}y*aphAl zq}*D&?8H$o4O=kk-5=U-+~4^~%@N7?Pz*myR#>thxUo`)zZdo4suA<(qP^8<-|GH_E#2lLxzKEuY!4;T89!RVQ{H zd}sSTg(vp-*zsn|c2lob!T;cr^xxukmnvdZQbdk%irGGZu|v( zhRn}i`$*H1cQo)4F4!bMbt~q>J=7xfGkIi}XkJmPgyLW!+ofl=y(XvlGuladX z4$qyjbJ&(khCl!MnTyAF{-M{ydjBF{Z`vdbNc#85TJ}@VKVP;YyNR||F$l47e3J~{ zCPWHB4kVy?wzQ&qz_423(GfP0F?7Y#)t9b*bVbt@M;CbZrYqdn&N>nt;ZBu&VJ#K( zuX^x{o8|XOGU(rIR!bB<936Cyn371CeH~HwPp8jSgCV-YBZ^ps3|?BMv6LCA0Hq;? zEW>cbt<-R^SK)mGHz`#M2fG3+C@~=i6Fe;>Armq1ZM}}TTIC_xH44HNlGOb#A(TOY z3+TR{@6+@(y}hPOD%A{Rv%O0} zSa}8!{74^#3|+Kg#Yn-zS$dfF-=3d*iM_|FM?agk;?*~AKabl76LT2@jHc1a1#}^G zq04xSamSJLFG}eJ*%c)njknF~Z;%J+F;qj9&rp|AC%WqW57@!6X&YIUK3dTg^aZLu zfoEpu9a7|K>$0F-tGq?&^Rh3W8~Iv*9w`%CPEgy?0g45cS<$kV^@snw!lo0A zwQZkJHRo`*yKER9B+hN}PXFMb17_5XE;c95p=?|{XTLAmJM-D;iK+7k?Op!KjXho? zR70c$xkX~>IJcST%u;qII7`PlBs8ZtTF1?ZdUS5uvT6C}evpy#QXswtE}v7XUI5HL z$rxEzKGvpV{rOi%W}SH3a!u+R5h`)qsMGLgK+6g*VKqzwohmAwn*@f+07T zLCY|6&T!6wLwS>p+6k2#JVFyRN(+RMFeZGXQ*&Q8+c8R@=g|Vb5nW7=Jg`331?6Tt z`VM-wK|nFDtm}h3s}ffcYRPnj?H#Ba?rCw2L=Zm5!9#g-)uia(Ie*+ zSQk*g{`4_mNHSw`ApFp?{#b+QNKb-B*57A3(Uy;JC_`sI@a{9Spycz-#uGP3$>Dfv@XtxJl$oZfSvYTzuiYJlDgt|zmhYNm9w@tHeC!jG; z&2!y64?zQ4HR{;`si$78B=OgyI_%?_cSw6Ss>AiDEZal9O$4V@XFZ)nJ|{8PlXYqo z(#&I^AI2r49<^C-y;`oN_X~Z)RcAdL)d^RR`d4o~e{-@O*&fwHVm+F9$g++$K3PWO zNOjh$l_c_m+p4#ojmT?d75QP*t4~gwzYa>~dMqPT@V#aKs4diII?H;sj3Ii|iKL#5 z>V&IDb?a;o^-PJ|l5)ZhYfMPo5-e>0%yQOOuh!4g(5GGTt?}bfGTO7zO)Xt2$$C_$ zUO8=CL(dI;LNDRu+*n8d&|W0w4o_gmQXXhWtSowO3 zk4NUdwF|!0p901$Rfp^PeMb@TCXeGpKC1KcP$e^C^A?R4gpj>CRv)LT9D+nxc()Z2 z>kzi7NFg<`a9AFLgKZ;Jqr^Sq2-b4f|L4ZuH-GtT^03ue+BHk2zds&=Bk@TLcC9j@ ztNK43=_tQ%E#@i2TPin#^*a^7tSErY_a{l3%U==#mmGDnL~{xlJwnuMY%I~{I!4*9 z^SL}-pCJ;CGFgdmyy#Q3%)4-PsnTH%QDKmhQ!0AlA&LdEK*+7hrE2l~Mm+X_>MjDhkWOdpWb_{n?Z<}&fulez6< z_a8aurKjVh zUv5M3Wf^5&LoMM_$HQ&T+k%5T$RblK z`V9T=ah4Gte{rX`svg=8v%P`nCq)^eNIY`0jH0mu9kHs}gbH z=CCK88+7p)+pONf>VlSJYEGYl|5C4BRRt>~U$KgKEc*|7;=lzdZESbl_S$EYKiwX? zCx`)`b@Dej6uO?QX0k0Ta-2N70Xj^%U$iE?01Ig(@7Mp_y=H!@uZ- zed_n~b}cWwEWp@&(f@ODrY;bp8KD9RXj8+qeE`4hMmHq8)?){H; z2VY#U><*9(?#_L=TT^qoEEux9T=c!7;9dTXxv||37#;n;${xSbNv^9qKsLBLA3Iw7 zdC^s`<=mh4>l+ERW3R4rbdGm-QtIjskPYt6+cz~yd~WU)sdwDGe1zLE#1`D0fWw%8 zf3s>iNLFsnath()QSwU7U4F=Gr$mW!_cVr$cbBP9vr=;phwhn3Z03 zV%eVtyMzJ6)UrQ7Hn=}KTFsx*WApOi_g$a2~ZO`KkF?X~Q$} z1{cJ|M<>T5B_}2%#@ORy6H-$WV&l?M;uGSdGg1>$Qql|J5>gz|u_^S@D~+zW=t4(A zOkz@EiZi-6CM7;LDbGdkd8#gPR}>`BUu;Z5VnIxDadLEWQCv}RQf$1I;7Cb{FHT5u zY6(TjaYaS(g#`&I$#Iz}(JArC=_zq3iAkBMX>sux_QZ^sID1BVN=h`R7**h$;glyw z$7SM{a}!DyG4Hn2@6kNw|>=7S0ffjjFSL zYyHzbeB}};*uwoA?_-OxY!hoGU)!ZNnG4&oeJh_T*MPwvGX~Tmr&PlhtKaGmdbu2w z|1X%`o&INMcb)A2JG*%n^Q`8a;hZ1q>`tZ8{eN$E?^3f{jIY%v+_BGY)UP@6S&mI- zbbMy_QgVgC3(h*#fOv`uAq!4Y@PZRB7o6k>7Mz0EjI^|vnB@3)duDQCdNM5_vGMjK zdq!$fa!Oo6W-QxCG_M+*8;D3&jmTCDd^IQ{d%|l=+gk+<2rd3GO9_vgaMkKXo9$}_ z<7MtFbzjesjQ_MpuX}W8;t4ugD+%P}Z^^9(s8+P6TNMQgwLEHNvm|8XGiI zXJ}HVv7z=q$JnZCArJjqiCURa-10wcY&Z1Z-}?TI$ywJuv)_H{Sufl#o3%7Hyh%9N zv+Y&WSbRwZlV_uFIW0CeH9ajkBQ2T&=$ORRXbNj%65{Of(e{Mog4o#PxVTt*Y6iWY zEy!mElA7B&dVQ}nw6cAUXYTI5gnZomynPe zofwyt8l9S$8J&<2m!27y5uHf!x8W4oOLEQ#zUQ3boCm?_rG0@Z2oGeYirtye>ONrg zPtd93GZHfsGZJx^rbFTs8>Z%5fhmg*kRdd7V9J7FdC|kO^Db8@x*+e8VV8=C{5xJZ zeTqTlNb7Rwl|0TfloV5d-jc1dbfBgfikf3|Y`c`E{5em3T~a z_=R>aJW(OBmi}%L`8%6p5PXdC&pIe{iYu($Bzj=!35vTG)$hmZWRC?PBKEI*=Ojt`mfkVyUVJ|H6Mk|X=Uyz zr}gs{tLH_>cHYV&aBg#l>}{K?7%W6%HmWpJRpfx}IYdpASV{7iG)%<68x+x_I&J8u zLxH$Lz58^lH%%5=FxnT|X5Ekp3LUZ(3fnoEMG6`0#r=oj|LxHKx)J(%{Fba*d$#Ss zpfw9)XLqwrzcFXqZEXr|$6#{dUvB!JHaTU)A=xo>D1?UuOioX%u6+9$6x_z@TnI2GBUbi*kua6la^T0-$eMv$ z>q4qA3dgo);CfXvcz~`~aIrxZ`dJW8Wx~Fy&_?CKW*;T+wL+v&%qSfZg3VYoVi z{?(M8g1PDcv@v|0Jj*(rEio5cV$|VE7^ykz50!1Q;?`h0|KM0Fo_MS?YxA+Tc;Hwo z@}zIDat=4RMXIokuA3TMQMsK@j3KPaC zHXBc#HYp;W1=0A)4W*a#EcEjvWuIXUX1k)lS>^0U<}#n#RUsT97)M0dC{n@`A|=Em zi>PTV;SmwSNkl}5KqQ3lIRYZ_sQfp))72qA)yMy`@a`Gat^bC1=0TR_|Au!#DuKJA z>;Hl9?k{q0l`j?je-+-{r$#Geg~Yn`n-vo9H3}KLeBPko;zm{Is`B7~1pkRvPr(== z(k(FwmY8@8OqA$kff3?tOU!r+Ocec}R6T`CZ5?36S=6a3kn3exho7W{N?;vey{)*_ z8DP1si4Lb%S|bPBUsK4icEo#$3l)+1v`|K9%?S|>2_qCOERYD8EM z#@mX-sS1E*z>ObeDsVt1n6o(|5p2??NcvjR1!pf+vqNqh6=*3}pO z5=UX56n@pBS>N>sr@UQ#<#!*qYFvZDW(_#jInZbH7r$4my?#cM>PuQs*k#XN)%BnL zhsqt9Z9I1EADq)+zW<-hT(t+#zvjlzasd0Re_ zYeixEpFFX0bllLC8_sR`#Z8-UzYKXC>hQtVDnoC+c*nK-wyYcQZx@8sz39vBKh#+L z_MFw%&iSHXc@TKLBggk$m$WtUv-20-5pGbg)+H2{aMfKO^d0YCiCbNBY0;*;Y$CMLB@?%uI)*DmqxJ9g@v5TDekFOgVJ5hYkW z#W1Q7i?OXz}W_TYi>=BJBRE`FCCHG`O?8Yf4+MJk%^~WN~M3`*ho2kQ=yy{ zD1S-)PN2MZ68H}?t{ug-?dQug+onZ)p@kiQ_(c8G6^KgSpG2lLa4!VxpCjT$hry|H-rUxzNDH1S!HAmx!)K=RIyr2Dfb z^)1ZLLR#a3ol6d(+676!LVvc=?}0{xApj9F$d_pbj7_yd8PL=CoSc4UFwgk@-;Wzy z2!CFtp8$tuWd#bughs^(M|}AamEjB60GQ19Kp;3Z$qbmHE>HYY z_51TD2C|JZJCo|yj>e@Gm|6Y_{;cF_vgV9=E7Sj~6^&1y8cZXRWDoX{ za{7G%W805goio{{W*)%Xw4zGao0L6A?nQd z!bp$`?Vmy!8P~39b{qv2p`*a{*XJBa6oN_cO){-qlY9|hdT_8A&NW_b{?6@nK%eLf zWEBPoA~6^WnOTuRLz4yvvq^D#jLl9G`6T-C6U-!Eo-fDDHg>+z_yDvs6E#p6F|!Bx zb8;iZ*Kji&3=|4k=GC}mH<}L9IFKwk^87Jq5|QLbLjFubBF3O&BmPd>g>fP?k(3Nv zaaH!ZchU(_9xGz786tk7LQXt<+e|1>W^$fC9QIE!A*z(r2Rn$0v(!Ru<;L05dd$Z7 zlbJll7bv9MMg>EG?9^b`k8%v1Fd=M4Qu2rUiqb>AEPsBEk@di;pM{q6GxN<5CE%is z7-@{(-(b0@%VKePzJd`W!^Z0Ulm8JS;mE;$Y5*ZKJ668I7au-SjAV!}pA^<&JzG>- zZs$PW#o)JJC|FpKl1+`opXCc6&J6brhNz~&<%gGP~jzR88AF>S&JTSPMqnEBaI zFXQh&%dD#ovOq9v5;eu7qI_STKg;;Y_vdZMAt6v`QiIKpShY=Zl3hjEXp?kJ1t?~e zM0CCT%GVizMi>pXx^_~0(Ggr9sd#CzMCnBZrct@Z?VpKOAhaoYav?P)Vv+ROYP(^h z$>Sp%gU?Js5et8{TGcs1rXoBww$8P;g2737zR)D# zQiG&n@sY7+C}=!1^Sc`XkdT@_CN()@kU52ti}`|a-M;(hh(2k!=?kR$^UOqF0mfqE z%bTvBC;EfoCbdJWAGK;SYz)YX+b!yGxLFuB(MCmq@~jTw(?c8Th<;SWriRQZ{$OEP zWXjcJ)J^!hv*>|`2Mcp@^GRnQ!M7jk{Ru|Jgis;%<86MgnJuaaz6??=qs@k1`!H;X z_ykguG&53IV6=>6SnU#o35EVZHfhsLqvG5sZM2CQJICaVh=PiS@$3+#V(SVs1 z5xQGzTdjKqdujf>f`ETQk?5oD8Fcr%LRJ(i#ueE%j1B*tHB7V%44@PfLSY&YUcW~O zNzB$p`6IcQVaYzvc&cUDxtJ?uQY`g!LVnc2f%{0m5h+PVuVs_Y7i^{b@^eJHEilI4 z^TsZO$ugz}14YJxdYjr+1ki~5Ow5&xPhUT4mQc14VKd2`;42J7VmGznSTwiu@D(U>cDQz1|N~<%IoDR*T*-2Kwj84OhU;enf zn^1nrRZig&{Q3D{Xzh>79%&#^VzYqgV8K0_vFyuX=|V&!Y378k>Cvm7X(O6?QN)Zk z^}|D2?}ozAtRax;%bJw#qrN|4{8{_c6`)P@s;J+&DEP2Gqp#z8R!eqLG{NVE_lrX~uo;-X9jQg_)+YqwbIlC{JP$H3D=jo4;?i z6im|mn#Peo-}?3^MANjA<_$Dk{qvs{3sJlzGwi2HPy*WIa9_5+Fl?-SzQZ$UKr*VY zU$m=KGn7TeqbaD76t}9CNb8?4p)jiMqNC5~f8S#$d=i0LOSGBEp*9#dq9MM3=tW}U zd1*w8nUDxI!2;q{NPqgBhZE2_J2XoUGTu0lm4|@@jaw?3EWzM*O-z(FsgP!fQ1EvS z9&d|IPR?;Gy&?_E@@3P|_Q2{TZO|bUi{)$v2dAK~6+9dF+~4dxC}(m)bQ<;kFSAde z?kGskmqd3RtkPtUMTy>C1T9GzxEAV`EY)5p6s!HE8Sn4G#L_9UM-O5KOk^AV*H-=* zgL-meVutM2F~AsG3VUvWjw4)5p?Nkpf7H1jK}g9_Jx%AtVo+{}GR0%KUCdm# zxF@>3SQ;7AqsOp9GgK6xpUp!`om;LyjFucDjWv@Vo0lDd9#Nd^FvLtUrr#BhMk;nJ zfuKhZOXbCCIaDb0NzMnVt;s$H6^vmI4rclTH1#n?-IDz+ROjTV9zA4b8pl^Ho*|NF z)BHX=DVRl5uzXr*Ob8lJWK{o0NK!-%&74Sjoa&3@8gIm}z7A@dOc69~^P4n4tQd1~ z1GN3*2@{AcY+Sngu!Y+{81hfYI1nH3=ZJ1$<;vp^i{$;&<1-Q|H)^A~DU1HbR6AK6 z#Ar5>Wi6j~?QZZ|&k{*`^l(p}F*ts-ar^913k8$Z*I)uRrEGUGPfO;JM@*oFiuzhz zxDV|lSxlCOCRuY0sxc9}dFDqKVWZ43wnvZXI+hl&#-0li`JnO8=yMulG)vAe%!~Hp!`@%nN7PLI6n`j~52;!`aFuao zcGU+pkxnbJW`EGRLTh-Fy=k{QlUB7ZjjBfvG1VAlVogo$ZB^^F_lTxI>#(W$VuK^v zkowci12YbZU-RJJ_uB!#R8q<$Fx6LtwcXTwWA}Ssv=zD-6A^(5foHAz?Qis^$s((ZJeYTDtVaofxtv1cJVZaemRty_nqgg)gcE|7`m7Uy+RF zfo4cF%o(#5Y(^do9V_*QvBxifFtAyfN<)jNzp(MsR};?_!Ey^B+uB>3TVZrMp!)@b zyjA5h-^oD*^uzo@EOOV~@Y)neM0gTY|IQUD3M15<#Q?bcrz`iMnfJ4TXz67dv!;f| zqlO)3vYX#{uPIoeeF9q2M9duOH)uqvIq;j^7%KYvX^$h6m5UmqR%NXt+IRc)Z1fuT zNVxzYIx*gb+kA2fTA%2KXn)5SKtCj!jIrt2U&K~<3QZHHiS_cP#k~$h#xPPB zIgGaYro#*jqbd2;GR?TQFr^X-hXCGT-0)790fLBjamCR6U%wCMphyF0zcnN#8)Db> z_sg$thO`5zH^(u9p&4gcB$g%F7lBW3^?&7vf~=H7aN z5Csy4jVnL9zCe^1UfR2+sh#NejH9m&z7MrDh&pCph$htjkdgIB-6LrC6gCOdzh7T? z{|mu%P-@%c8C#zdXzGBm>!)5NfG{WHT8Adr)XvD_KsrbDkziph}cH)C+#iX!w~CsT-)RFp%L z#@Po(XQ9tz8Zo*=B|7V9tz&k!q7jV;e6bocIZl=qp;>(%Rn%~riPK)ONnfjaEmPEn+fi96hngu%tPSww4Ob;r$W@8?T(W z^;PKFU^9=_L81ZPa`Cq9f=&de2MP9poS8uG;tniUO+ApVxW_mD@ zmX|~Gjpq*k<3}efrU*PGHtxOFzskx1`;L|x8msP~lYpTKQwJ&(wIkEaN1rHH4#wzT z`b|Mw76i0rBauXfcGZq2Ux>!}^NX$5=RenRr>JKFE?x)w8v7=RI*|K(Vxou>oOXYv zzGlH$8-TH))inNE^zvJRPk;W9LI`c>1Z!MK4+;k}Q4QVeb^8!Pf+yNr-f*@~G95VuSe;{5i(bRu|@=ghOZ_SPW!u zZ7F*{2hdKzXk*W~o66V%#u%Z#KZ-Rkl2DKH-(3MwP^@TwJ8MrB?D5Nqm)wPmP4jzJ zsVz<#tay7>+_JJ>JyFiWJQ|I}l978tEJ(8`ry5Un`wtygP)x)PbKp|3+LH5f9)#jQ z+V&mBX)Bnt+xQ~qihgJpR*0BQ-8#SSI`nO}En1`Xobwi=S;#%or~dmGf>NEVvhQJRDZ+y&~ft z)UNCV=?K9#AQaa2f`6EWN+gHx3hcMb`qON}s_4on*bTP+(T8G8-=G;ip zO~?^MW;QnntTZx0f$s&RI8C%vv-T$&#z9-CU!sX^EWtx*>ZY9dwM|I00ISshx4r%K1METx=+tq4Xg3g~YtAZ-`hm($`(KLhyokA7Z9GeX*%(y#K*B%|+R;PT_uY_>6O>qZGsF_{+HYj{C%(4hjP*>bSFL9o~o7i-2{=lq!7Ip?3y|`2{8do;G}^o}+Z(<+Uz=ljbIm-TapH;jQ&GIwU}fBx zdGIMzN7xKZFf!IH7=X%7n^Y7Z$qR-Ha%nvkD|DBAYu*q{49*zj%PXK|J#9hIEN=U? z=3LZsnhYOB{k+km?4YAiHqqMTiszCx-5!7}(}EKsqIrm6FR3!aVgaI)Y#x5d_qvdqxDXJN z=MVYi{1iVw_gTu>#j-0V7jZ3C3b*2d)@)ATqZpQZCYU9^vJ08SwVuR zcyX+O8HsW3m_F&E6w#mpt0+b zi}wE_ii7^NLHr2Zp~(I4=Zct`MrVamSYqlSHlR9e|LPMo2bDrB)t=k6t{VmhH4>wE z*l2$9{qwC1L(v&W&u2qTpc3H-cF>H)4VR1-x+T0(s&>ZR$1!NhQyhB@uIPK>X_VbM zXt0e#eA!^cAD?f&mC`xs|Zd7 zbzdKD_!yh!-T5+F9x^wc?cT=^fx^Q>nBm{~?m7;Pvi?Gk$PQE`D2LPGHf2|#&-B;O z*TjNE$4FJudCgs75rr5!u@GxFu@E+bW`#wPqv$1{H-2n6k#UHcCbQJK#av?I(d|Q< z$sCHsSR3`?xXQ{x>h#I4U^+9$J()*hC3SbSO4x1;LF<`6(6m#z$4|M1(_p=(Ib zrAcbO&mR!V@yMW#+t9tG2ZMABT3|f(UHPY>*|h6Qhp}{mZB)PB_dL``gos-dw$81Q zdBb<2kRZp{K+BxVhYmR#8ljAr_5F8tL)l}&eCewDi7&q51mfT&m8J$^qfX;>9if^d z64U6UobD{hiGn5GOAn1(EfUe*LB|f!%KNlcw*eT*MkUNAr{3Y!HcZ3J5D=FyY4 ze*}??z**z;&zG7|<&iYzk-luKTQ(a?WqCU!86(;SDnb)thit|(Ij=klDOy38WMWeJ z`@$At$A~w>;sd-n(&>)P;+WEkA<_@WzW6y*PMpb!4Q5)a?wZy4W;6-w?4EAVWF-cI zg|QnF#>fQ^zmIB(oq+qF*!KVmB8GyM8sm;%;`E|JT|@}RM*tN+R`pyFqF}$UAt*yj8#>>-QCtxI>=ij>p;o+jXXN6llNpv zoMlH!`$e6tUv%-Fc9cJ#j*vypNWHc0hI!3hQ{z5eTMWf~x@ok2ZNNtzN~Y%lF@dJt zIdmH-KO3W>(e&#|kGJ-gGCGtRABFy&+tn>mbjvH;HtOW5ju;M%*W$|6c9l&ujXk+_ zU}7yqep|n#>#1cfQ(Nnn&uVOVvfC-~&dIGwQqQn2_w=&Iux>1Qdwpu>Q_3DHnU)pA zwtUjzX=#_ZC8iBB`*m95NafpyxGKFuoPqg7#M<4R{@U%XO3zI@Of5Kp`msqFGz~4v zNWj$_I{vtI*0b-qwojL|L(HkheYbAA>{QdyvfP;Z%iKHKyUWAc0JQO17@@@~_8@j- zF88~(my;RoZ%)mZDQ|hE&jMH7wWmy^t$4a0myu341TqqHOqyjqarf%0@A0J4B6S+>wu%02&1Zc-^CS~1omgW% z)~#HYr#>;=%*y2+Eh8xyF#`MY?()2lDuYv6s}aNE=j`NmB~5}NGXr{?W)%?b-d8s|}M zw35V#PZu2MEV9-oS6}NYgyMfox&P1aH!TuMmF=ibb`g@B~WtxtYM4GSAW#4fFGp{SX5LSsTK@FJt>PBp^ zI940o-zzX_ZVZbSJ#_uCN&kGms|pq)r)~D^)FMpfvW+S)+_cTL9K}*eWy<+r^RQar z%DN>GTMvnY2IJe0W+a_&izZDmN63Z!Un#A7RkOv(%TIIr%t@(k3+_uJ1rFKY8g={z zY%y?7>Pen)-_9m&u^Y<-*g^3HlCzCgWtWN<^{kVV*83WdsX}D3=~;Wne|_{_1h<+z zY!bAn_;w9!I*Yf(jL7l-)`Q#P?~b)IHdmOHBf^Wl8P?8N*|zCV*yuKz~dQw{};E)R<>DKip{_Zr`_0$W2d0^6dI;s-omZdGvrUf1C`iwFuD4rzp~){_8e z=bPT7Ac{*KSbEGELY#ml8gG7CE*JG3gNQBOD1F`W!=@Euk>Br-H;P)^RnWQ;l1JYG zsQBcMBx~l`17Kw9d z>tHQ1b(%OhE4Gi&VCJL4pe50Le!{~YZe#g~9t|oZf?AK*d#1_ShdC3U0WW-qn8VN8 ze)S_YDO_Hj$l!k5Ql`l(7mS2rM`J}%j1_<6KM3hZgVhVbMzsp4okwAdDN4mJ<7CS=Bpble1Ha+8BT6>VAI>u) z*0JLte+GbXKcnk4XYVam zOLBvVb_PgQgCoC4hpNXih@Mnf1)SOE;)%rwux)7Vr&|Qo>wfrDF#=`x(`a#PopGW* z`R=#8>22JZJ8UJIL2MZ8aetGmpnW*Gw$6mw88Z_WU0gh@z43C!Z`07Bg3juKqfNy4 z=Y>Okuoa%1ZFRn7gO6T`?4>^~3nzRT13MTypIuf(5K8rmfA`;PY!fHrilmkH$_;T> zqIQ#=6m9G9)>n$_r4ErXcGmvX`${xTG5Isz3`~0q&A0fr<-VGY>ZA4ZO+_Pgbl1%& zvwgsiJ5i+@${f}7Xddm158gYp33cqO>T6Tqcm^p4cEBx-3|!%f=Je;%d-meOlSAB4 zdfx!|V2p*o{(TT*g`^SkF~W1kUWDc?1L;-(?Sll2yZW{sDe`h?O*^tv7NaHx(e#a8 z?h*&o;`HLGO5c`&j6~})Cbn86?p_Ezw-vI#baOVn!5*AGDhd7hbCW@VbivVChuZVQcg^M(D8EGC+|l(%{f8+Q4_3U~q8RYq=lzNWTYC@-Kd<&2)SA)6Cd0&igfD?%*QZ|vy* z!IEC_W0Y}a-fd>7+(~QnqR_iXtR%%&)5f>mI>w=k7)J37=3eqf39S~w%WY5`pVZu8?ap}9Zpwc=zzP(n7{S&JJ7@O%F+07 z>(TZ?C*)F6PUNe8)%X=bNBe7Hm;BImkKO@&r+IcfO{6pU4L{@WjNAg$Gj$raF*kbe zC1t_>{W3Z>U`9JLqvw;8_TtD=E&|MfKgNL@WhvZZ=L_efe~{O#jBvl3E4AVZ(eFESE||>56A!4LEzz4>@YfIs|UWOOe4XawH7q~{Q0r3 zpa+)MTIL!@)~_3mim}gkM$LcX6LeAHWsTz9v~l<5%Tv&$&^1D33UsLBybj>L*u|lC z#{5Z{Hy~Kt(1}T|f9>oHFk`K>=)@ei7Y1H1`z8$Cwv}J~CtrOE`B_2s)m`$CKVKFI zVwor_eo?{bW4UfkH)bj9ml%-7ZjNK#Z@dGv_x(lVs9pOgrPNg-03- z6z=EE>X&X2MMIYy+cX%uk^)dZc{;I%rF%wss-k%D%Wo^4sE;i}PHyeLLfh5evln)&-%1QO7)M50u)4pri4? zvIDYS_ZK6che$%+?cjaQ0o?b_L1#iOQ0zi1-@9dG7d!*moJQlSB|SGFz{8B zVplOPN-DD!>LBQf-x2z;O@~RJ(f6A09FlfZ`i|2-(p^*9h-W%T0?$UG``QEDI*)X9 ziSDomyz_~Ud2r$nMaAAoVm zUp>&(DTS_3;z9rZa=`mkhW#P!=0ta{gPuCk)$>SK-y_|{9_bo*ple3uxX>fraF28& zJlQ<4U9BwpSXR_~50|pE~h()T3Out(2B8 zx0TZ9xDAv>SJ`9zE|6`iG`#8_@oIRaJI^EC1s>^YdZcUUk*={vx`Q6&_qj*9OFZUV z$)o<&@JQFjBVC3^{>FQx>*6tApGUkbk94^n>4tdZ&+id$qDQ)^9_g<4NOyxrx_KVy zGCj&=p+~&iJkl-lNVm`%u)HWFQv67YD;z z2fDFD*U|&s7^1t>1Knt%YvqA%6w$TuKsS=;+IpZHL3Hgr(4`Yydk=JJMAyLs-EgAo z=z(q+(RK1bmr8V4|IcxuA2wCK}6Tx1KmKP>*0ZJ0MYgIK$k*v zmwBM;Pjr`ipzB9;y*$wMCA!`o=#q)9j|aLWqKo%Hmq>I89_SK?F3AI3Jkce4pzA|) zeLc|iCc1te=z0-de-Ct*6J3f2y32@efCsvsL^sd_T@RugnOBi(Y3bSpg4-Q|()ZjW>;J<_f6NVnP} z-5QT{YdzAf^GLVeBi%h7={9(z+vJgMvq!pnJ<{Fhk?wwvbXz>qJ>Ze9%{M+u@OJr$@S79_b$UNcV(Cx+gu-J>`+^X^(Wz zc%<9yk?vWKbkBLDd)_163m)nAc%*yLBi&0L>0b6o_liflS3T0b=8xNO!;^-A5kjKK4lWiAOq~ zE0;EZ<~^R$=y*@7G`i0{^7n-U9rH3)t^>N#dSR5qdV%TqECcsE;C8#`!F0Ii0XMR? zmqW$FJr6H*xaR>nuviiv?r)4Mp&WeHf_=TSN}%JjmhXuUZntvyBnI%xmVn1+D8Pdo zS6ZFQ!E}cu9Ux1hTS;`84*9Z9X3IG6*T^GX2Nc#NUq0gj-q{X#T)#sk2JWk{+o>FU z#sj=^CE)QH5AL;0DuHf_jLRXqKT9YF(@h|{IUev#qMKU+9iJ_s9OX-(yI#g&|31A0 zx*KHNVWNZERsUoe14I`p0naDtCJ|k24|EfW?sgA!exkd>16?lBE%89tndpXjpzB0* z0S|N?i7w9rT?eAe_dwU4=z<>T+7VrW2fDUIH`xPS8=?z)pleNZ5f5~&h_28B-K9il zdZ24bbQ3(#wII5j66pA>6z!;D33Pl`ivARCTxxdeUziT<2yR^AEQ#(fx|cS;gnSpu zIPh1g1iIT~9PY!7D1na8UV(Q`33Pn+ihFbHwwL1rN{>Dp&m1!7`!Gi1zVUuCc<}c^ z-5z@kK}E5cUd2bB$@m8)Q5G-EIg!miRebcds4MXQk;F;l1-%WIou%QwZ!1$KCE~lZ z6^yb5{CMhbkD-?8zHa%rx1|2HS{o(tkVu)O3sCPeCGjUekn+ ze#eRbc-|-zxmiEVH`@qx;{QFHeoiNvSttZOcKv_Lh7UY8pgR?O^bbz>|7pTU|KNmw zDQ^%;eovQw;LmoD&uC5f=zpB}pQ8!?ZWsJVG~urze7;i;{pm-3JfCUAcal$2-q@wQ zxNcc5*#;k_>Hlh?apFHsBfb;=D>UJ+apC_ZjrdOdSLF?J%KuE{zt)BSo*MC;_`g9D z{yG=_AJT~L#Qz_f@YlQW-(!v8tX#Cowa zXFT@=jeo=qX{4PBc1RUYr@C9 zN+DQUGU)=w6l23n4__#OagkPu$ANNw7@YiX=$9+~O z{C%46aSzrB|F|Z6+@E#AZ}FU-{sH%Ho$yC$!pD7GC;VBO@Nv)A34g05eB2Lq!v91Q zKJFDe;aB1d7-!f&;6AbwepgNSxX0{-pREZW_n)2c7iq%By=f=>r#0c@zO@tn_nPo= zPumHJQG{o$wRR03YYz z#Flt){)=y>P&VTHbfBCz2W|KkW$ZULvv%Ge#=S4520p&E!uU;O;>Y>oDHGc4((rL# zjLCtIZ?rJ}B{K1+d|{OdZFXt+xM#-Xz{j^;7{94Zd=_6|WkQ=>8b0o)F*)#mvf;Oo ziCgf+S0=RCrQzfL0+R#(XG(xHI3G`uiHGxrSthjErQyFz_)Mwt5h4p`iWNyy> z7?*Ixe8t^P@_*BYe+8xeRVKEdf5q{|V2N$d!=6`Z_)8T0Z^@6RzYX6CiSb<;{yrQ3 zIN$us#{VA@tUX^?W^l3@mu*Bj@qe!kAN(Jq1WBSB#-KF8bZo|){G)-jV zg8qz=iI4K3zYU*p*+!HT|9frtXirsb_`gZKffzKEheOy#v={tpHvIP`W^W9d%EKXS zBf2#F)kNdOe@zUU%EKXSBiakT6aSSkXetkfu#M=_@YfKH6aSxU#CPKVJq*gq!y#-V zx-|aR5{(o8TQDdq4~MXgXfOCq{IB5;ZrSo+T(-U7uOlKS{-9Uh$py@4}ZN&JZ8xvrhb1`Q6T?l?jKi?S+5f zJMka)haKhg@i$OXC;mUsi0{PzUR-Kb9u8p}(WU7R&S#zYU(bWSEf2 zRz`F`ZbxD2lWiydU$x<5eu8(I@PS^;PtKLFf0ux7&)Et86$SqS!bck5|3d~(<^Sv` zRv7=nRvVdz93S5 z-0)Y+Jb-_h#DvvLrhiGS`hEl<1)c7=oj{$Lb@p051jmE|q=Tbh2pV8e(0-zf31KhsvaXXE0Ce1K=iZ5u9j$mdk?pR?hEf9yZtfqXC?;Q=iiCpS8&c`&Tt60jEikU`KH<@A5D$ zqMhWk+lG(#FPhsD%#)ZsaWL=l*vL!8$NLw&=LtB*-=hg1?_Z3xG1N`EhvMMh<*|{M z%0J$}XlYBp{NIR!f0xHbUMfEB|MNS_7~czJ;u`$nGg}^v%Qm8%>h~F2{i1#Gd(P0$ z)-v&2{$LtFl&3WOr)~JdC~Zeuf?CqO4F~@&kB!`s|EFyD;J*tc;QpE4MS7J#(B_cG z>EJ^)FsbD&zyq4_p)cScJORI*9N$~w;MV0SjsGVV`QW{C#(zvE9*cuXm!~xRCv5nr z-vPD+?@7#RI5>29Y~+shYsW|5?}UFy6aKY?pD9^I`(pjsg@Z}uVZPZ$G>PJ*`NQM3 zFz9D4K_Lz57kxFJR~+!Im{?y9zZ3p08$RBD;dkc2|9ukV01iHthxuk3(N6d~ZTR5d zZ{z=Gi8&hwpDs^n_&aR)c)wj^s;%-Av z#ur5NbE^17HhkXS4yEeDpYDKv|1f>{S3BSz8mL2X*I3IDsU&V_ufY5Wg_-iPw6aJPfi`Vbz;;(hVfBY&v z`0HHoU*<_8#p5|${;@yrB%l4`_3)4VZ72Lgm=xKb)8&7I3;t1_RLDF|7a!|gC;p9W zJ^W+;)(O8Vf5_uB_!^18@jNM&`Pr@0;lGN4 z-yxuvfBYFxJO5?#^y1?WirVq_YsSaA%Z|S}UoZdIR<+|#59-C|^CQ;JLHt1{%2$0( zM}P45xa|DbpRAXE{3%O2{t?aiyg&1n6vlJ>0WwuM@X8bw|{sUNaxICvLpNkaynY?M>kjLrZ z*H!R`@uq<$eEdCkyZjsTrhz8>`U?KcvC_X{}(I#FXK%KP52EI{E56N zp$WgCf`1urN@&7wq~KTOO$kl-jTQWZn(><`_>b_WhbI0nQSfJ9uebkcs^E{rhdf=L z)9HVjDfrF#r4olcP6xlag8#Q>{IexK_YZq#>y=Lnh5wcKXraqq@^@wa19@A90Ee1L7ozj2;keB9lz zT|045Bc!^0OR*uq?do*A7K2N{K09JdGenQ|1~Hb^po*_(Tvag z10P6!_wt9ZrQdFy4*$GA!2I8{Sg-tfe}M64-l-R#_XiG0L5y9Z7oYbBnEy^o_2TpX z0OMC%rWc?02N?f5&G@`O!1#NX>*b&K2N-|N3cdKeKfw4`-=!D-BGOBH|1k1yz4*L8 z!2GvgsTZI32N=KdD!ur;Kfw53YsTmO0q!53TdkLW-XCE8?_Q%9zk#AZQ`hRnZ>Zo8 zU#Azpk%HfPygrj z=k+_c-=UlJ;`92E@mt)h7r&#T|7YE&7oXRs%>SpF@iBJ6F#gW__43c_Q^vo2i(Y(Q zpE7>n0e$#<6$kQplMJ4|59-CAN0@f}nh)v4pReE_){K9Pg1>#MUjFfS3+(cl`>}^{$b7d@e2O- zr}Xllpy1DaS}%U0fBaA_;7@p7 zFMf)G-{l3p_yZLDa(ndR4^;5?YsMd>;BS0UFaLuT{3$Q##UG;J_kCF}{!j(K<|}&f zQx*Kfn(>Dz_}gFA%l~i%f9`8~@zWIik$d&x<2_^h`ladXdhtgn_bU-iuG6lcRM|$y>EBHq=F_l?s0U&-CK2 zQt;~^)Qi7b!T(J&{u%}U)z9_vzgEFt^MyWqyo!jv8HUf-rhKUnAFm?v{kJ2O2cBVv z^y2gVv0p8CBmOJB_{>)L?exLbCFFxO& zVfj4#vtIlLihS-lq8Fd<&oKW>f6xrw<>m zitzm?zMr%7gg*QQ5(@n9BZDVLd{NMHtG_5KKTh8dQNQnThmC)p|96SQjd$ngRPk}u zpY@0FYn0K4f2U18jQ_(K;6Gyf{t3<%hS~}oC*3cdb^83<@kbJVsssMZW%b}cM)>?H z7QRpQf`onL?33}C4YpDHPWof#f4d9*f{J?ZcPRMPBMZ0;J>2a=gGOsm1%nLUsdqA zeqSA-2mdt%pZOm+Mi2g81)tm3&T)G1Usv#%|796^@ZV7Ing6ph_26T^Z=XLf{#T|R ze5_ZT@b~!j;J>Bdvwm*K(}VxEg3tYb)5&`9-%;>c{$`;b{C5?6mQQk#9{l$d{6-S? z#Tk0=v7UC)pKoUB!GB-DXZgH5OAkKw8=Ux0xls@PhYCLP-(tQV`~wO;>*sy9>cPi) z+DSh1@CS30hu4j4Bf7NpcD)|_&lUWCCG4S%dhowc@cCNZ=lAKs|5Cx{WzoYA=)phag8#)7;7@#25B`rX_;|KE4?;Nw1yQ~kDi zUl0B-F8CP-^x)$>%8CEmKGB1Z^FSy3XL+Eccz(EDv5oN3+ShMHcRiZ1%LYyJ^065@W1|55B}dS__hDkga3~Ue#+l^@Q=IT zPv?mu#q-1Mifx3K*1rBF8mIPkKb?iC596|p_|owIBN`|CkI&MBf5HX7N_jo_I2d>0 zzgHza_&6_h!Vgx_gI~r4e@%5g_-DD`zjdA-{IV|iWoqfcKidVrV;w#C*>KS z?}C4413mZ^T<~9PtOviMg1=UFn}0UdgO9)6YHweBKEAA_9{h6@{LzyCO|A9dS9ZZa z!GCBHov?g}R6K0MQ(FIAMZstJjOwI^fBd~KyZl)`6T0fbujYdPbPqlF)m`vw_R@oo zzbEM=pZs_|_~$D4yli|iNe}*c3O={r+xqLlKi>tv{UAN~7r5ZRJyZ{VO$DFzKb)oq zAAgV6Nq=4&sRzHd3x4CVdhjoF!N2-SJ@|DLeAdr*#_PeqNWtg&jb!V=udCoQ|9f-v z;Ma4(&zqzNzrG88)u0~yi(T*^3hBXb;DVnzMGt;M7yMs}^x!vg!N2_)J@}0keAfSt z*XzM=qTsXs&!4Ra{}LDcRyXOvZ|Z{o`g}e3&0O&F7wW-p?t)+K4n6oST=2Ip(SzU8 z1%KEIJ@}Wp;2&M72fvjI{vB)e;J0?c@3cV=ej6A3_crUnZ|j0TWs4sCb}sm}w(7xe zui$h4xpSKy{0=Vo)pzK@@92V``?wx_{Owt%`R(qf^x$`P!LR+S9{er}K964oFX+MV zs^GK!)OcABem4c5`S-u32OocL++M$oUumBn{2mJaA-O+u|J!=-dn))W|AqVY;9ur~ z|MiD@@Gp14@BN7${9Z2jOAqS7@9l#B^Ot(?`?%ou`&tivyn@gAx%xXj_z4O=>*uVW z^x!8d_{{%Dzv#hFa>0M*cRl#YF8J$@>A~;of`8+`dhq)x_*}n};_$|C@rOvo!!|sn z?GN`?@VS1UFRKSX#RY#;1wHr!6ny?{$o$HB@CPdROXc_ys-_2jkPCjr^Yq{kcEMj$ zQxEQ*>J@nv@cEPXLOAr1S7yL)#_27?n!5^5c z2Y;Lk{ullA;9uc_Uo=P${*^BH)l>E0U*&?oDNPT4h6{eLQF`#lyWqb!Ru8_<1wU|= z9{fxf{IfFk;AgquuQ2uCXS?9H_v^toUGQHH=)s?$;Pd=Eqd*USj)KpB)@?^v4}PwK z|BamAj-8?h->=~F{gZ_0dhjPI_!0(Q7?WKiI4k0c*fkM7oWeM z$^7TutQViZpUL>s=IO<+PBMY~ao-EiP4o5Q^Y=NK|2uEdi+?WhY}cO+3-scjr{F(! zt6u!`75qI5_2Q#jhJ0B6-@8pOK7U`7>-W$iz4$d1`TTafUi?}Le%Zx(@oOvi=ijLp zpTA$q@^7+4FMb_`|4vKw;$NiTCoR*9Usu6TU#=Iwo`RpfLN9)O1wV3^UVQ8}+xv&v zck9K!SmFPUm3r|TDERAF>BVoT;BQ;47r&8$|NI)g_>C3(ch>5~Z=&FTxlS+sB?|tp z>-FOE_hY&LJZpnqeExnc;`8@!dHyr} zKE3$-{ZhvF-LDrPvWMaMdBGOF`277_=Kq=p^y2gPOBw%`2Tvb=t8IPSjMkj3blS^5rxO; z{_TS{eEjW~g)#xwzhfj&`5#WkXI!>H>V*G*4IeaoW{or8^RUrD&v*xXE5<4-=i!9E z#fA_0+(E=t3?Uys4wC2z|9Ue2R!nRi55E)sCL8`#0$y&DKhBx)d|UxLLe3BKj#wvr z!~+L5&Xr-~{1<0z8!5qmWU{1x9l8G{bDQ+nCHHYM8Pb0~x&I+^m-K%}?!U?0BK_Zz z`xu!8(*F&){~~j%^nXq6KgleVesZ4pgG_ZY;D`Oy6n|CeUrY9HWUiL!!SC;6?EL;p ze&!eaAGP_x|1V^i|8vQGgv?5bSB2a^li6(Z|D^a4f3Fg6_apv3CEo5w{QXM2-H-S! zO1#~V_y?4DyC3lnD)Dwd;vZ7t?S8~>RpRY_#6PUWv;Q|zrXMMO2M=Sm@ihr!)AE)@QQ2bXae*BGXJ3kqUf4t)NDgI2w zpQZS-6~C$Y@i$)W`R6G9T*dEK{1X-bB*h<4{P@nYJ->X#A5{DWihr`=4=Mhz;*UuG zQPQ^`NZ+QAA7_H!lRJ+(xZBCSRO%@DD2!$HJ_`HC_C5;xz4kr|V+Z;uU>>IQ`Golh zxtGbX8Dw8WW-gg+WYh<;xQWb_WPD`c|B7%9kwG|c>yZ0PGV{ninhX`eK!5cG8FGpT zVW7<-12_8X4P=0azUm$__P%Pp;zzu_Z$iA?k9d3Egm}9j@%Fw6@peDr?R^vC?S91D z`zFNO{fM{sO^CPq5pVCC5O4P*-rhGM-tI>{_f3!&;^D_=dIOo+WUePOi_ABbneh77`?2cyW4dI&e{K^@GTj9F9_cx!gr7GZ6&AHe_0p zX+`EzGA+rpAcOBLG$YfL48BRxgbcpj(U437G8dDe2mJtolI47>p*2JgS%jxydO!Mh%K9|P|+;JpL98-V-uxWkWo@VKjv`{Ws92qs$J&yo9eG7~9$ z5}5#*56J%s8GL{KJ2Ib<`H{>)GJlczoJ<*_+e!9WWMiKidr??#V$HUT!q28~tgrAl z#LAHyYl$bwU7p-nw>(Mi3gpHa&r{_7l1wvlKTY-_GB{g$hU~A%U>|=s*@wyC%;s6L zzb1q8mFLO+h79(aUm*KiGB~%`Lv~rh#~H(m;>;78{Y)RzU>=iH2rDGBl}uAImyki&R5A~fX-=jY8H8c1s!S%E+*}S0n?PY)4i3wu zFfIp&O{6d`2ZseHjLX4c`4qhs-i^ zqgPVNPDWZr%Ag=+S8?dwX|nQ`xD!wC|Vp7HK~q?FXg(khHf-`(bH6BJFL`epK3zNqf7rcSw7uw0BAS zacMsx?I)%El(e6g_A}DnE$wHe{hYL)m-Y+N-XrZ7rTvn$UzYYO(tcIiuSt8av|pF@ z8`9n+z-J=Dz=uWxc@AOo9l~yO2y^23CI`Bk9m1}2 z2)o`P>;{LhISyg79l~Zggw1sbyOzT2b%r{!*DL%p9m1}02%F&$Hr*lYYKO3C4q-(O zVN)H#rZ|L!9m1A4giUq`3ps>E9Ks4IOqHGLS7mvp1I}WHusam&IEChH@~e7|FjdbH zrs_GuR6R$Ss^~mjQ}r5YRlP=-s@Dip^%`Mn-6BlYb%d$9jxbf%5vJ-o!c<*Hn5x$ZQ}r5Qs$L@u zdacR|`lyDfeL2#qeH+5mz7k<-|Bf)Ve@7VlcYB*M6h98X?D7An{VG5I>n~m(|0|FG zS$UkLw1@w{`Txdz)HdflMt*gSIg_w|JmQ@R-I=6yDw|h4r?mek!p?+0r?e%7*~f5I5%%4 z-8eIEE!{XTZzJ6}D{m{^I45r>-8ds}FWopF?;zbc8}BIHI2Z3E-8d8PEZsN{?;_ne z3-2o3I0x@0-8cj9F5MaA?jhad$=y@BedNAOx^d=xxpZfdyO(rlle@Qco8;~z-8kcp zm+l;LCrCHWwiBfr=h{iqjWg|J>Bf0>U+KnKc0cLHId*^P#u;{sbmRPbfOO;RdZ2XU z+(g#vI1NS0Qr5@t0#4ltJ zUPM20$i~<=pUfCCW66vog9m%Mc(4ap+5d-Da;#g76klRU@A2fEHFb6zZn+z?Zn-p|ueGhlHOpA`v)nu+oZ4rUhy%ptx!Q!O42v#i+RX22Km zPcc({5uDywXK6!ZkXCL4<9!3ZoUl=m@@e0pTc@sFI;6lx)?oWyo62kdW+kPagwz8fRgZUAv zjkc5`%wb4fl?XlY3n51dkw>_|mt|6*b(olvR}ds^%#Ox{Mc>@Kg*Y~(*npWw`J34( z^b?vuNpX~CU7C!-ifY3#UQ9WAq?)0yKMdZ5^xDLt#N`pCU7)=wVvM2}CvE0MJht32 z5}WDPY8>=xSI*MgCR8mdlq54On!P`WBTK8nL?aWaZRZ3-MIxqnGJm)r;42ckhS+n+ zxHSpHrG%4w5#P}KK#}OB`uYN4Q(X4#>rX(8(Ti?`o<&Cl_?JK(6zpE&*9yaL#i+lw zboDbP($TR=(}*BVPx6c@#soSx4vWx2nk-~ec&3p{pXCz%ev$#4rgyobNZFIhRaJ%zBFRKVxdn8T2vgm5b1cC0XduY)t z#RNfDKpN1KE&(Cc1gZ~cW+ItfatG;>kfpnE)RkGeIK{D?*pB6KYCRF>ktA}Bkbbgs zV);A8Rg%2bkakRxb{9+4UWfL!7|Y{K%fbAxru3&epGdkFXSm03FI;jN8p#s2r=>6c zb)~xMLT$M-{dOhYN+efba`z)WZBOAH1w{`E1!XcVygP}|SUW${vNGTHzA#p6CC74& zlw9U>Wtsbu1Y`ZBJ-_j^Fz!fH)gTt7t1e>=KOj}#ab2PI7y5rkY}t{c8)z?@=$U~+DfVx)HC*?T4_tIDfX{5>7i3- zqGM=+Lny{K?zhjhjyXMKkS}H?m|4W;g=#pDODqB07PbDdrZVE`_TxN97$(LLj5#NV z@F>JwIBOKgrcw`DNG%b+4XFp4AT&6a=2eB{j-v~SdNhlBB;=4o=u;@4Lb^7XNj7HD zakMhDa&o7rqlp)usaaA?l4Z>my~cFPqqO*oBp)n8X9@F&gqaa~g_un1YAOe7(*PRJ z6R3q^b`1XA!g(Ie@u#bWEFa{H`ArU)Fd59gP?M#_*Y_kp*6az?Z(|M>M;BZz4Jldf z+!vyM%p|^`$6;eUta2&NBFWm7wBZ1ml z63r))Xp~B(u?h1C%qiN7k*YJ&>2)4UezQS@u+6p9%%W>bwlVe=T6K3Gx1rc- zqq(QDa8FTOp|{B$_t}D{*~M_aBH{kG@uorOfh}H>b>nrW#m>9N5^(v z@+v;hX-|k91n*s_6kX_u5Az&^cA>I#BGZFRYbuM=?8j}M(@Ju3rtO1geOO&!^^BEj zY^A}yxjnX_ExxrUd7P|?Z9Jvpo?(RO%dxYD85m2q=D))d!8I`z0&q_fs6?c|w@TRhfs zrSs3Lv>a*|1tO0)(orudxer9IgjR*!x(G=jHsW^ngu^`pT1OK7>qH}70=16L)Os*R z_9eg7PxK=<`i}O3GJ#y3iLwjPCQ}=ZBbUW@?3epcuYE4h_UyezI?b~pq>1SBFb~KQ zvw$##_LOsIYbM5$wC2@TSXWOHU@pD&z;R+mPTsx6$Fz>*wMF+Aw3%NmReMSES z`9kubN+gL}J0KlMn&`bS`{?ee6i(&u;VETo#|mpN?DV4LPY|<{o}Li66(>_$!5oeE z1>@+lf~5^7w|w6HYb(kbM^_mv%97hVOErn40(mBpyez3&V-!X#j9!o?Ml5J`5Ar9I zrgkFPccl~vi=$VR8&SX1h+@alYv--V)n57#(?Pf!QOZUlu9Nh4mi{inKTe=9ZC4rB zP11Ik{`N8-Ut~@E1j-ten zB})VIb(XGGv#3AFxpawRw$F4d@s2`1R$9&jeIHAO^RSoKs#R6u%vZ@0?-;Fhw0x@; z&I zU9A$MG;_e(Ywu%Odr!aJcaG|PtVix_>qR&R{q3V;H0N0RIJrme5^aMew-4QQ|GzzQ ztZ)2(Z;x!vW@B^PYiNFZ4PDg1bu)3%Dj`^ypB)|)r2Boi8+0~>k8Iwqh4?y!jUag% zu4d8n0nwu`Z{MY3w@&TawQ1L`Rf93bd}D3C7PKWzcZlhB5nbE!Pw<=BBHs?}I&^5$ zu3MY-?OV6++@=Gev^T2Jt;NsJqR+|wO}Beb^rowp#U6Y&joyZ|t~KInBd)38xkz5J z#4S1TRHokq8R!^^tHgLFNuuhOS9}^pI*VKDUjJfRx!{t-)o=IdTL0fCI&xNi34mLB z;z3~(gMk2Dy)!cs3r+FW7Q|GMlobRS{oqCzo|-bk@|933K)aR-k*8d$)%7o$(Xq?L z@k<(v`>W;Af@x~0@bwGv)S_Q`880Kjmo+IT1dY*LK5;!!3ge_&L*yx!@8Gw2=j8W( zZos{lzR>A|r-v?4%ZIO=hzE7S)l>qNc~|29x!&i0uB%#k zDh1q3#Cc@!l&)H?asrHJq25cx8uA2;=REOEFAaGD#&e$c>&X)^p7Y$ICr`k5&hr61 zc>>0Bo)7BD6EL3hd`M58fbpE?Ry}zF#&ezz>&X)^p7X>zt)7YT(yM1;ycO%27_ZHG zCdPZUo{90|t!HAqnd_MtukLy##=E_qiShEUXJWh^?3oy^4|^uY`^BD#@dC1EV!Wa3 znHaAydnU#^&Yp?!60~RH@ux!UI~C&0Qz6be6=J-p?YV$>mD@8h-u3oOjF-VZ6XR`h z&%}70+%qxWH}_187t%cw2eb2;r)mkMU>b7Rgqlk`fk+;)`I>0RwU)OWpMdMHJ5smk~!QWnMI(4bhX~_1n z&o;mEpQ&|u*N688i|wLC-?z+2H2nd8e$F6&PHx0~m+)J#LJvL=fd~6wc&b}gbnjDa zj)8p?9@0@o`J9q~xfE|^Hg}U2_H$gNg~(IhldD_f!7;O!n<@7s@2Nc|Zhjo|!P3I3 zr{cjPDmA08KV)V^h2}1&jWU%gr^+&%ch|%_>tGz)OR9{9xrqU#P*k~ zkPvywLi+LA*7e)oe60V@UynV1&5ez3QiW8DK*fV&0uoYzFElBvU6sH(3a(1YbQ1*L zkZ$P~iG4X&DIxNdrS$UheNR^U>AgXl_Fw$)s|$YWrb-DP@D>krilh`VeR&y!{1NSf z0{1ApDyUR9S>#hhC$~s!61#Ts%P7)SiikXADMlX4xb7qKih+v?CRYm$Xn9hD#HYi> zQ|!h0j8VP-ecK|KPv1`1BMDAA20En<9?YZYkc}$H8{A|ygA&+@_s~uwjkV$k5OI(O z@4H?vLE?-C6l#6PR}3``EWZuu0)pXQH6xl#q@vq&RtIbO@Ec{|16#7`GG3-GEg7SM z`Q6fk0$e83<4m(`rP;;-$^t8SJaa8e{6={o-!?Kh=fuN>A0QjY2UhUOzc04WmBgO~Knn-wp&@j4rdAI#PFz) ztE^z_&lkbXP;h@ZaqtuW7kk$M*F^9B>)yU@#fd12n+Pe?9LlFRo=zFC*v&6>>NZQ$(t zx^0=HFND2@f5_mL@;~dTVg2w46My@2y4}6Mte$%<&PWTZ+10Cz=E%1ooRNUkoAfq? z|GRJh-AaN!Idd>$%NXRcbZ2j79h5CG#;;e>L^`Oz>2{fl&RR`$Ov#p?Km}5wbFSSwveC3?8)eg(Fbl5JFUh&;<#)kV5$zN{mKyFg_vAGpLJWIt2z)R0+I7KDo z;rRyzcp4RA8Hi~$Jeg6o7(oEGbk}rfP-dgm7@7kbA$Z zt}~|>*@IzSD$}#&=kYsa49-w2k2;pj7`N{tr*t?HzPp6X`hN_hl#>NAeZHJ59pyES zkK@U^SdLvRm%qm0*rk-4%W35($zZGiVhV*L;lMaDk}HeCM9bw0ry9ZJPZV*JgLse` zOx9or2n>#d0Cp#I^OXk9m60gkZ^m#E~`Ug*~RrbR@ zD~Uzwf-*@uBPDa=W_I6Sox`a@wg4Y8Yuo}>_(2i0B8h8p}7`g z+k_|0GQXASlh-($yex2(+Bw2aO`)XgQAYBZ|D&)dtFmUTmj8vS-0vopRTc${vMT>0W963rW>ppi z>%U%=Y5&ctEDF|ty(+i-Sd4&CcVKD+HJO6|0%A#OVR^@+WtlakBtjeNb z*^#?F3fm+P(7tVbQV1KTV46yu{M{d7hjkVT3`2G%vZ2U^AS*_;0kU8eH_J{*1^F93 zcn|b68Lr@TdfvWl>isO6waG!lC6@xX$kMDc6@WOD%?K(X+!Ehb0XjSjqudvTY#Hy1 z8qfD>Kk&&R?uNr77S4BC^hPUZK~MnAPq5aJX=Jql zL1Hpo0T-MKrPK)AnG!UlWDNSmgL|Qek9-#Gd0?%(Z293BdC)p!Inf*M(Fc5k{d|28 zW-k|SYj^nRnaJ0J`o{@Wo5JeZh80ib$m>-88j22W3vVz3wZM?=jc@^P0uc)T@^gTP zAwQ6{zl{Dl5;1XV_|d?~p`I%d^%^!u71^^(1LW03p~I}vzh;X}r#5IQK|U}I4I4O& z96C}*rwrT_|72kh^275P2*a%ke%e4pk`2Iq6pz)!h%7g{DJtnunSAjtDAbZ~MQCK@ ztMw}*hWkiOzFyGfDpb(?aOA0jEP^Nky)=tK{~8QMsacgP+R*@;ZA%ewxF8Hn7BcZm#kx? z2R~8~k=MU*1bO!t8KA)C<49RQNuk1-mPk^7wOf}g2X3zz8B2nE^{9mKB&`l9#0AE^ zCS_;ctnTYx`Ui#FjNdU&2ld_Ni;Dmysz??K#t4g!24?S@?c^SOSgrq})$h+16_!QD z2Zv}G2s7cb4w4et++`xm@U2iN{RNRVuCbXY?wye<>$tdPI4<}w^RiRDy~F`nkmEQ- zWfy`1Ep~=Q^A{y^lJ7LlsT+87OHpA{WiuiCEm2AnuCWQv#MH>tkY^#V5Q;?R#+Gbz zOTM|Gk+FrbkWW0!_V#D#Kz8x#c)hXI%dBc4V#wLUFcbL?q+*r`@tMTITE z2~d3E29y}!hhl|FhQSpIL>DqS5>LGi3q>fD2Sk;Pj$`65DDk1Mo0sft)88h#bCtN( z4R*N|6*eCyL@sfId=%Zttg>Zd6!KD`z>y$5bWEL%%?Q`9voRJ)Z-uWQA}%)$lXaoo zPa8X5dLPuqahv76%n=h=^@|F-Et9A)ma$~^xX3UL%S2YLd+CW%7}$IHj6yaT*2+3r`M5>ev>&Gy~0x3)O$Fh*-$&;w1qu-MX67qjn5e0 z`~nmz3Y9V-97n{Rx9Xz}%poX88$6f5+EU*jca`q8c-De%OF78BLo<5HLGB$=6!Ssu zn9+$36>T^R1~2+O*xU3bE&@~$9$Ur8FW+Gn6_$nKVMA0{KBG#$Qx8EmmLII3EL4pO zms5;9)%TRwJxQ0Z9{DPyXU0G(B3A?uZvMS`LI#=Mo3nu@>s?0>QRowG6mk!45sh}NWm1+7ab}b@&9>0 zCq^qC_4aeg=lXE6PQSK~>);eI&Zd^9Y@5aX+)PwcI`tAGn{Bgj*!L#<-=j8(PDO=f z5p^p4SGYNqd_M=9RDH$;&z+pZ~jEHu*4(?f=41VRtTn8~xzn5Z+wl=Fd!qNQfDo zGQf}gYrjR@@djsUYLy%O3kO00xO~{()Bo*9r3X{|{_h6egsVGf78%?N*h()Iws_IU zr^%QK`we2Wr9jz5skGlPV%(%kPj>nW_qM6=;bPqbB3w8q8@d@`fc_0Gt{-*Brh`** zi16sk3x|3a71oL@HY6(4MU{yn@+p8$UP>KM8rDrA!T-1*Zh_;#tz~YHgY#V|uY4C) zRM?;Fie{oR$`1tq;D2FjN&;^}x_D?I5>mD$L%M0bq^t_l`b`#R1`D2!;>FZ@a{k^h z+tspdi7Z-?v#z3MV)=WNSOKh-$Y&`uu@D#ZR3K!V8*(lA z#36NZ{~sNV_Hi>V*yEAk>QMiTQjAI{KmEnU$N1q|)=<_Rnv78Q197N&DEon0C@JG5 z+0}DLx44yQBbqz4YsEpjhr1S4cSVgDMTNl*dcGlmL){6vhHN7d*VxpAYr;3PFcliI z&Cs_-EG>B^#+HTxwnE*Rm1f<|L?x6Tx&Z?epMU@ta;7RNP~hEc6!8HWSwR?q1XIYA z_|f2J#6>W81Y!+G7dR3Ql#r1q_m0ckg>a9@KH)7r#xA$NvqRdny$Knu-X@CT%IK6dd3$5_;@`*ZN?eG3h}|A`jO8D;kLvSdk2a-$jtx&{0eMJEi@b(y~N z&;+9)i))lOaEhHYCu(b5$G!25IrXPqdu_Aoy4mYAk5qAR-(}@KomynSwBhN9mM>mU zO%z#GGkWC7i*MibLQS0?6HnH5ZjyI?xiB+lr@?{m<+~-{uxxPnovUNUvm4!y=k|ZH zqpfGwVB^)+bLZA?=`?TLVZ%>rYi;Px;%-k~=<_n(caB%xT=rE1bH`0zqYr+JIXgG| za@vpcte#fkuVx4qeogUfYH_Ppc4`p!V92}<{fy#1y$LtuyS9%MZh!yb$+YK#53H%* z=-ZcwZ^Ff|o-Y`BIXUu9#)P_CVyg4VrGV!Xxt@eA5>5SD++-je)W2fY5uU1nGnoVr| z`^CTZi60_@<8p45uW0mr{P+91qP_MxgR;(dy>d9HPWyO+ar|V?#vLtcbh+Nj@5|dc zemuuyU8A*54ITD9Z`wWf^S?sJec20=2H&o`<$V3httb7QY_s{KhuiiXiw4=>W^`WG zZ;*Y&zrUg*dsk^6cH5$l+3R@QZSzKkc-fxaV8yDi=-9J!HXBLeeOcx~-DM5osJm+s%KGQ+mc>|ZuBsE&h4AJLi} zqP>ALf3`C}Z(;nyJMHC>55l=?PsQtAksOZ5Hc5Xq_?hF{y*JWsE-16zwvuaZ^uyVr zIsF3%S0B>i?ETE?k2Vf@&fC#wTRE=^T_W_W`rlsjyQx*u+o?AaI}SK-e(U06eVng2 z?T%~q^z8eAcjG^`9Ajbf(K>T|!wliI%$q;N4=2qXX>2_=?Rf0CS2<4Xxsv1x1CH3Q z7;xcz0%A=dE@2d*6pyRvO&(`k7plX`KgOvQ661*s9rbXTJe0YQGGL8OPoDW!0lr z(fakvzuNgFetu8Kq%GTwNVH+R;Vv@Hi;?wgg-I`VtM%ND}0?oXUQ+}JExJJQoX zBXI*SZvKJjj=eavpXi>Ap#P9P%?%JOpHq<7^)_wL^v6&>cTwg^RikZ7!T?RB5N%CvilTtvRck`*+~X zdGwEA%w1uR(SkBhY?Id7?#W?Y?VtWJ!zNX8IHD)&dVLsYORe6H--l(rD0h0A-Z}qX{K$zF13DNC>U3_JiC>?2r}?vv zp4)Y-NxGlGAW8ox2kY1*4*0=dr587>c9#>k`-UEMN_P={zVLE;%&s04Q+Auq;?1j+ zl$-iZFEL?&hgG=_3mxYh{dk{lcH?{ek7YKOdZk(ISY2-B*KOB+`}xFdTk|1@yV5qm z%WulWh&Q9-^x9op=D1tGVxLi;MsV&~_U@)v|AGB3uMeyllRKJ5>Bj^l_MOFzv(q=_ z-JWrB^}vzu%m3myrk}h2ag(*{?FwaGT`%-Yu#Olv`cC?cMPp}$ZJ7DhUthG%^5y>a z|9Woq_#HRh%_p535yakOnw`Dw{<}UNeOvCdi%JlTcy#ff4&$q_)|;0NwK@2!o$D0A zn_BZ$Wail(x$H2f=hX8j9$2^E@lc%Ga&DBN2|W8;0^rwh(uitm= zS5;??$Ll^iL%7SvB{Z9AzV~_kdBFoaJwL)wft4yfKOBDgy3WWBootso?%q_r(&Oqn z6Efom=GsgRwqGY&=w$r8vQ5N}`4KF;-Tc)pL)W)-xW0Yw$Lwh?gU2~!WuAYyxq@HR z?)y1Sj@;>Px7{Esk+th&xfz?L%&eSS+a^Ba*1k*cCU;G{6XNx(wXxNj{E3!6LD z^69?h__3U2N6Q$V3o)9)&oGeO8Me|ox~1jysIw0nFL(y+;+A$vvQyEm+MR`zx-|I%w-tAovd)L7^sTpD^OsoDptyET%I zL`(E??UyzhV!XD&`DQEE`>*X%F4Z=s#pXt>-;O)+hMN^ReWQ;}?39)}vc;1wPi#GF zkpHCXRbz|9!khbdJ34MZQ~UVx%YrLC--m86YUIIL%@c9%NJft}I+<~| z?!7krxUJcO;H707--G@e8QcN?&+{G`KHocxyP3^P`0}zI8niv$O4BQj0n5-XNj%kp zBN(j*Wmjy!Q7#Y$%LsVnJOkNOWOpMw24zwU+1kj$3I=vd zEc_JK99ejwBK*?a6j>8wjgf_Ch=#~^K^Be@c0#rzvK^3Zk8C?+4Ulb%Y#U_tk!_8v z9*2v!#SsP^G1&AVKg~$q!w>H+vTn%2d!YLwYmY2!@H!%Ehtf1dF1-2}-f-Us+0n@ML$*J%1CWKcY{QSs zhafu)*`de|M;6W%jzkvDi=k|YvscK=I*jaDWXGZlXj0zDUPssPBl)|?zCae5+-qd- zBl`{62gsI1@%A9M9CD3NhTW01Le>V^y(qi_3b#f6eaK%C`5llSc0ns4zdiD2B7bG% zZ-@K`kpB^~ZIK@yH9SVv0Qs|!`vlo8$S*IFl59eRu=!_}y!&3M? zvS!GC2D$K5!W{X}A@?J)T;xBGTzIf&iTpXpg}1h`k^cg6zaZNc`7a{(E3zWwzl7Xe zWP2b#95VclY)|CBf?POx*bDh#WA-Pq9OS=-TsUTCjr=!|3*6%&|4rn=79}6~Zy}e3 z@CuOsHh7U=i2SRNKMC2j$R;D3g6ukES0dX7*}lm3L$*J%Fuxm!>}X_{BRd7zWyl7h zd^}Koi;y2Cij^SD$KTz>8+oM17`q64JiL6|yEvflmm+_lKeThHacM5y-+(O(FcHW? zE~Rdu>j0xL`Gpr-ca_Q%UZ1*<3}^KwJ#5m23IbDJ>PT4?O5OtRy5K!Vd`qYyRxq+e zbs-l=genCC6eJ9|I1&zoHVOvnvPc6J3X@i1$yZZ-t1;AMr;?upI z$?uw?8tp8ch(fLWUHm+WJ`?i5x4^^CY+Uf7Zjd)_1_ya-N(({AAOfYx4*xOPrw*o|MAj~B12S29s(X@IwRYq zeS2L(r@E6o-F>ij&?@`3eZIfbpt)U0(4zm1AYBF>$dO0noFdUz9xkSv3jHU z!~g~Y#4Z-!+a(~tJ)nz~%XoK@Kl(Sx*MD3W;=pTXPu6r&<84t)E#` zi+Xck&ZWU`ShWjqSUrNb_%)BF@qThH}=StHhF=0dhzny1Bv z!g6u1{D^2&mHHv9pi_{MQ+kJRq@n`%$&auKaqHX(eODxeV%a)EA%*S?*GNu;iHYdM zKgBel5oz~+;xL*@$Xgy62Cl3h;^8n^7l&gPWZ*x{LHAKCH{_vcK%;0Z%QsLb_(B>R zV?DuxS}I%v(jg4T2e)u~oECCA!2|4N!7F3RAwP9`h=}!gf(QD8__7AdM4ujFLpe_H zpzY(92BBaoAge@rRKF*9^~m^;4x7ShA+$h$(mKE~r7q|XbO7n3As8QA5p`6ko&YbT z0k?2E6p-Hz71IGONCS8arz>11NL=WCFj2!gDx3}pWa>gb9mK`=#BB;v6c}k8pzA{S z139F{Wi8MPNWg%83h+S>f_o9!xE!C!?!QB%x`J@3c3SZZ+zs`E@3Q}aZ>zw4A%3my z?c5+e7;teoD~Tm!aTW?#y1Il5sUbdbJ!+|-oH>#q13H6nFmR0xZeREs;pqkb!r=vV zg7YbeFZDrNlIC3y7cHasP+x`bDU}z5gZ>I^;d~&j)Z#i@wp6E=tcAN5&L2YL+mtj6 z{^NYW4~uzh3hs+Tq;6rnNrY~2jH2$FUoSWk=@#fyiXV%y9%=>mdUOkJM!MjIi8{D7 zkOc$9m2Ha!c@koUe~=aoqyvkm?l&u2{jAbM&vAv2uhWk`1ojMMOri2|r2=Ukzy=5y zJQu|yC@kuWG_v8cgEyayZ6%kgOsRjP{%yGuwaDTF+~(BHx$IkY?nIu?Qs=(%}OFYvTX%!wI4AJ7aqsOuIALB zFR2xU6`md{K6Nowt6mJB)mkF;_EoWZi^zzhQafSYCu_dIg`H3^xWVa3FNsc!^cHqT zk(csqr(o_c+cY3DUN0yp9Xj+NGCKvKGZNsf2L)kmB&<)BvJMi!1}hkal#p#XLR5em z7m#wn?vv3xd|U%t`}O9HUX&a6>l*I0VOtgq6o)V{48S_s-Cvj3$e{kM@^LbSys}_7 z70eN-LkupYcNFIl>BE(U%Q1rtS8#Sd%F8dDf+`lH=%v|Bz_@r2@eD(hFKsrGVTAHB zc{RyiS4EKrH93#yJ4JwO_NVe@y*?ldd4P+qvkK=Y&H~NJrjhXz`3#iiC+p9~dCVuP zXbCDWHb}<9a_M|1|B5U1Nyq1ca!(PE_dxlAOxDQG=OJ8LUcgt7Cf`q#aY&Q%D4!{^ zesnE0>MAdJk8D|;f^N|@=vPeM4!neZp}aVajGx~J>9#Cu$`L59j9;zgmCg5*MRTJ)Sf?U~ds zRx{BaWYfs_iS|%N+SkbX)mmPtPx2nwCoNW@&1bAraW8beqp0%ArjhaUW&1W6e@T^> zUr;u2ua7eQFX$Sskz5Sx9N99;>Q}aHKpf0HSx(CKC*Vi%(0!*A!ivigNP3FXUl*k} z;32}3-~U0oBJmOP=E7<6%LsV#`$ZW{*)mwOWpsds#e9Acad5j(C%%Gl3Ge&K?k(cJ z6WYz;RjdNe;B8hy*Grxn2H<}7n?%&qZm)~??L8^(-5v0=OlIU z_#~Sq-w$Oh%98mO%yS_xm1orm#b#)I280hOAG+v2MAQ+SB6#>guG(^JtGq~u=?NYJwKV3_- zJQiyrr!-fM(8JPgE~y4e;voTzpi@c`!bx)1C{Xe>2j{TBD6HWVQ6O%C3c^ZA2q&<> zCdz9XK%kuRD2jUJPc z6)Io_5>VDoJtU;89Z1Qzb`mrFE5}B7TStbMo!!dy>Tdbk!A~%VcP^mXA-=;xy?^zD zge4CjPIrNk?~Te32arG_KQO>H6k(Q-u6n9w)O6K9b`nRHM4`^ykzgW~a6J-GRw(rH zlc-X{RwiX_L$-`-+rOM+K$y3*ClNaT}44QgKkVl!}AWQz{O!WvsXdIa%9g z^#1C!iydbb<$3v}DvC2vqvFOP5R{7BgoKoeYl?)Fife*|l!}9F87nThMyG0Qr=R?U z3%~s4b~4dbMRBHTR2&@SqEy^wB&1Xv^eU8!1L9CB4zgvexHn-t+GN%<;~bcGq}-yR zaVJNTozfAM85pcc zhbt#8PcycTx0>5^W4HPuRTO8gM#W7)ASe}=hJ=)g(?dc^#kE92O2t98j1~8I=KE7m zl2U~$Q_8G5e)Z%wRTO8TM#Tjn5R{7BiiDJkYmJ1Iife_0l!}9F87pqSWz)&sZ(p;E z9+{G{KS#_165I+ z5p%^|Mr8$aMCud_Q1B5&_y=#2!C3rT*M(shTzn=5tWV&~H3R zmkCp7wc&>{rPKyYjj6Sv%9x^`Qlb4!9lpc%z=%GpA3V`5o;GwRb5IG7mo#TdVeh`Qp9<2Q7oAB?rt$Nk z$|M|kxkHf#Z)C%p3cx7L!pot+DTJs9Atb^I#2ZYt$;iZSLkfP@+{viWk0c>mFu0(# zq?g1S07!3PCp<&1?Hk7+{=8l9t3?hNlPiB)oB{C@&w|?;7P>2BIhqP79FnJ8Zh??- zna{@ecQw~pWqH}{u^R0Bh*f;=K`gvpuiY1aoby3%bf zfDRD|86&EpGrzyd>D~@&%-nZ+mi-v33?iBx3dV>6=@5aCF`@(i8gph4iMl?nAAa`l@JMPAwU%UN$AN*1oL^Myl7$cfUhX{m>5xpN| zKI_TL7ETG3?50}=N7YgW5zV70#)u}-Ap#*|L`Ll|O*1v=$xr`j82a!EU#Xsf<}nas zM8R~3K*$);8r?@VyS!ZK5O=Ru7`xhn$I8?Z&GQ+?h$hn^0wH5WMk~v-t<|oQ1&2i!48tpG#%I;lG8ALQsG#DeAN{0x9 zj1f(&a_H=^^gH}r@ke*?Zf*IX3?iCG4U7>@qeBEj#)!gBB}@x%w3L%EuivRoM;yZC z5#gUw6KDISa|W8>i19RaIvpSoG6odxyXElDOPBe(N7}5)UElq>JfI>bLB=#kei&EL z3_3(0WQ?d**q3ijhcvZb<-G12`%MR1We}-z5)?v*2!xCgN$ORa-1PegZs^g-_s2I} z9;FN-npVfSj>L3`K*$(T*ER>dqTNr~MQ2uvX#aSg!s4i?R;SKM5Ul(uJ8uv&M)Yb( zlxYhN@juM8q}PJ-Zt zb(D1kLdJ-${^D-vHSsHV&!FT_y}v$~tPCP`PJ&?XixLqC86(=xJs#?Gw1Hhr(oK(H zWjhX229Y`^LE&_WK*$);*W^|QzVzs1y>ET{AZr0TUKvE{oCHPCAp#*|MEvS{4x?tb zw%xYyTDev~G9#5iq|QlDBpo6UGDftj=IXWYT#oW~^j>BhJbQSAJfb2dLF(+h;e9ET zGy)-GKo@%tX`WX#%qsnPd)*3W9;}iFRK##(qRvUsY&t|BWQ=IhhS=-teM|&9N2II> zv26E98AR%w1kIsC1VYA$hELDCwMM6o?UL)ezPD?<+Cmvb>YM~c(;)&OV?w>WYxiT_7EfjBNS%|QSUN-? zWQ^$FGUGlz-agHK{W;rBwWl|@s|+G_PJ-srAp#*|M7J8X9iKINhT|gZ6r)2s@BXU{ zB6UuJ=FuSnA!9^MQy<26@oeE3bG*%uUQ1ifQwEVbCqZ#^h(O2~(It^@``lY$jth2I zu=jP%FjNMSIwwK!G8oDc7KDruZM`NeZ`dl(X4RLiP2QTt?@|VlIwwI3=n#RBF`@-I z6_WYG585YKe*E`$yGkqN5fw2BQfF5ePX`Eui~&uw*NN>Pm28{D+d3$>=^=P&C1LQR z>LP|CQ*};)66g?tkTIgk=2M*(y%@@mZ=9z4b?K~;${RLdJ+} z*$GR39SpPGd*tlDL!veGEvWTTb|O;K*UI5;dgG`NA?fKpF4iE?#1A5iqeaQE*o}8HvYIU4Z@kLD~0I74fu$&GM2pI$Fp_qkG5;fZpg16fw^&4fW-K5o8~)Odhq1sy05G6rRI+wFWDH^Fv$ZM{*k zb&NL2*HQy=20^^E#K9#HeT2frTl#Bg^`4|zNe2ytjG-l2T}@b?^ii<=#k#8}lFlmZ zpU^^6=Nw`c9W)R!hIX&};jsoCCh)?VtnSGjb?PvqT2tp_B8d(f2pL1$=b(SJiO9)j zb81Xh>&-95FoLGeS;cBPXdq+^O(%&nm|s3au)6-d0~rT4cV+}loePgObkIP^7+T_T z+Zu~^-?olhz3Az?QB$8Xf~L-?(^@)cAY=?}$F%+t>9s!zGkhHr`ts=UwX@3JWb(o0WCCjPO>)A zK?5OUXx)B!-FX$-SFodROP9AT!ig_}KyQdQ(`ccovq5g6g9bvz(6$cAH1BfvjorT1 z1Iwg^-DT848mn`XwV4hY2pL0*&bjmM;qZ*=^^g8u2qgG`zf~L+%RvH~N5Hf}~@WqKQi<4e(7f0TS3)r}Q10!haoMdgK zg9bvz(3YiaN}TX>Ue49ZcVPrgom|^Z2MvUbq3v^GZ{u5i6D_>H zW$T8N7=>f2v|Ll?JZldfG!Qa|c5-xNNY^U;>5&QHuKA6WB9nibpYWlI33QyJOkg0PGnoWlcgp85xH@kbj zO1sl`%kEmW{kG0LQNA@+BOW`Uf0dB!?d9$5;!pj=$qkhNOas!DUeUbx<_H}g5HiLS zQt6ue*!n)4%p0#qzmLASqjd2crNaY4#(2I@>%l$qeiLtveUp)IPPG@6E}mm_ctFS) zPs3NAk6oN|+bVWO1ZRHb&&x{}&v80DAY_auxNWnhZ)%mZ+Tt|J+9k2N!X8e^^5+B{ z9uP9dGyQ7l^@`Qm4)OYtb5Gy(>QTD&bCM1Z2pQuUezCQvPR}@-rL6YJC&qu|lrElA zba+6>7|+$|k8={-1bezhO*r-L*2U7r zbA}EN2pQwy9~~Fy!5b~wnEQ2~UzBy_(#3O@4i5+!`SG#wiyU@^o;lWN**?G0 z#dD4h4+t6K+5Y9?u)!fCg~?`pm(FN9^k(VeIZuZNgpBd*6n#5#x4w?u#)NNcdtN!K z@OY$T$DbTJJRoF@XIz|4mrd*L@Yc_q7vym2gTmR9lErg@4i5+!>XCm}OeJ?d>8R9uP9db6{GdH4{${5FQ*n^X$5E(-rnDOSXP4(cu9hV>}<-JhH6s zi3M|OWaQR#GOAO$^>djH4+t6KsUSYq(=FlKa-mMnj+(cu9hV?0gA z#u`;Unqspu^!pUfz9tHTUr=LQ`f z5HiNIwa*5Z!00%;#KS-I%f9QQ@IJ|s#dDJm4+t6Kxn}1+YhPd%cj2-oHYp>wDjWhY zSv7|-n8??+VptZyB6_x6(ZHJU#wT|9T`@PLppo?GvCE?NKixZRHGy=U0G z%~JS@aLMxL9vvPKGRCv@%Gfg=8%A;WcDGxTe8AqJbnE9n9Uc%e#v@pfdHhEs8_@#Y zUgzHquD!i<@jRfz1471lw%0g&A$dVEKQpmw;J}dYrQBaXq{9P3#&|kjNvRaXdT*V! z@65ikX_=i$w|*Yc;Q=9IJa!-JXG)xOgxi|?U9NlM`0LWe^Oz0~2pQvF|J%F&_V_EexV2y|4@G?3=Zz|E1*8t)FLfctFS)Pv@Hz z2cB7N>9}Zq-L}s>-`y)+JkROyfRHgBgE5vbP6teJT)M@<)h+e@uhPZyf({P|8RLnX zy!`x+DIfS@mCJeWY_3z2uK*$)+ z!#bVx*SDKsw|r;aLs_2#ca|=m*K~M5$QaM>&pLOGjrh!4XP?>aN^sPn(#7+J4i5+! z;$pWQ=D=`$IZ$-fNu}q*pc>7&u1Z z&4VS2=MxE%#6{)mJ)H zAY_cn+03n;m!FyAoTn3-?R4M%;7_3XMu!T7j8Wama&W%bk;RQ0H!r5gOACeP#HG;! zbLmilkTI$`wM^H<95ocIzjE)u_mK7q?|3Q=RNv`Pfsiq(di(YrKNpf=oseKsd#-M? z6Mv!w{-8qzLdK{pb2fbyT2vBcx;!3u=vB7MpFs7K4iyL)qk0<}a%V87f^bKpPP#VB zF8`4}@E08_5Hd!UJ#+ey_iuOD?U}P=AZx)?g{NSp!K>eNs6faVRg*^VJSR-_x7syr z_RlYmz4rWx7MMqe3WSVNJ#szLp={X^qFrw;@L4hDOa25ZR#}>NgoBVVs=P9_HzqG# z#a-baTrd0XUC%#(stg?}5Hd!U_^DY=)1X*>@&wmCUw#i&SWT4%ugcP)0wH5m2HBO$ z=6pEslyY|H@;)C|DEtPeG*FeJLj^*{sH`8I9kF1hz*hWyL#Kyb%VzzF7FeDR6$lxl z`V|s7q+`lSUUZ}7^_#7_5Gs$V&`&P=dAj(yJNF54aqB(V-(|d)n;L&QRRNX0CHVs@ zEBr$%(k(;%!2w9d7<9@ko1d(0CcZ-vsAYJJd z%}>QDs)iSmF~&QecW2T1UK9BH^IALnJ~ro_Jl=Y^wD6{3S-j3hH1CRF47rkOkRcgk z$T@8?haYLb(;=dYbK5=(1}p5l(Lkp8^*3Y4l~scb$rwZSjvHtku+++CTce)Y7r0mX z3~HI?7siYsS5XZzBx4M@!}T3aY&`q&LVwk@{qSt1!pqueYMJJz$BZFYRShyEV+?uE z#n+GRBb4zo_)F zL3(%lsFZo_zW;c5KzYb?FOFmkxu$B6AsJ)H`({fTq>OU04PDc(T4Vjy3h(Wv<}%$2 zB^g8hM>WWhj4|ZYD-+i>tapzSx4w?m`W~GW&I8gwR_7p9OEt)lj4@ChfD| z*mmUkDS0*uwOr_B*o9_a>YRMlRt+&EV~jX$@cNX8iQf-@&p=UKECEP7&@AoM)-l>ua$m*_EuTvs*7kc=_p?vw6(=T)+FT>7Sd z75Al`;}}4udAS~A$n{i%49OTnPG3{kA&%c%xHLU;!q1zR6c&!uy_bnPxm;g0$dHUN zpoRD%r37(*6cnQ8UO z+=;U_?aQ@aMtZv$)UrC)jykGAhGdK(uZ{X0zxZ~p^`i84$v^gw{>T8bI@gYkRf7!4 z7(>o(nf$Oz+5%pf*YdoN+p7JRhfF>BQfKegL^Z^aj4|SriEp1AP1`JpUa_$8uNH0C z$|F{1=haj-#E^_J;*({wes(zg+iw2-RSSl``>pUPPwLLgSe^Qp4KXBRjQDoIs}3z!4{+Qcef@RAq2u2xk64{uR}0k; zLo&vQd;a6%)2#du`&FU!e)?Osj#nNr%`5sC&q8!j(Rt)UjV7dvOTq#nV_dt(-}n|= z@sQ)esLo$c#dVp5bMqo|FWefvC_)dM+^L_xxRHsKe*V&u4i^X+LNLEHM(IU(5h`Fzzi zUqTf+*FpzM`vtlL2C1`_TG8PFA!9tPB@HDd+ex=F>8>JORubvKg}~w9YK#Jwpu+qK1-Ot(SE!Nl zd3kvrq_8HbvX7*T8wH%$V&O*~oH?rJ<#(iR%~(V^eoC7dG2;jG2X-yP2z{iL0yWXlFCFrHP1b z$TqbUuua(J79uX+#8k*L7aE!HgaS6(5E~=XgIyesTuVa}5nN(dMnrf`OihgqO^82I z#QH|+0JjrNL0rQu&{-K&yKPD3$w$PkkBI1pTHahTqCzuZqnvObgj<{*d3zjAUKTjb zNw0k8QE)7$CwV`dWg{|06d7KSS0P_(iS)8RN9uAoy(lsg&}YOFqYT7(_j*gD8L`B; zIg{6fW>~BzSLW-*&s@QcwI17Ii9_g4LaIp|=A!<-1UXEby_Un6tC+jk#o^dhmBTz# zyT#{lSJY}TS25xKJcox!q*PO#!;oI`;~s}2&4`M_4|;R#*!Na(x1Ms~95!>4&TJ?- zT=q|l!!#TQY?R~hlboZj}HJ*2JMJFQ*lEkpjc4TdATHas95t10PFr3gA~lN)ncFjthHmQEuhsWL64 zX|FI*plq+x#!oCJ9dt@Id-$FQW$7KKh6`|&(M+mol+&0lds*d_9+{1We7=#9rKu@T zWN9w2M3ZD=Q=SD+$hEL!o0y48oy%cAH$Hd`Ca86K5vw{D!@($T(#7m3^cHQfj7l2Q`zv*ih1@d#L*E_=tR z74kP`RO5FIy6lTzdRQeYr5tVdLA#)yPuG16KuXq_?jt>lgNlP@(f$&`E&1+ag^gkL zAt}dg622w4jjFL%y2Hh&`{*mzzY)8>^0SX-B{TbIg0!R*Lsa8;Q@ZSJmpND!uXk#u zZ1!4y)ABoxj^6{3k~N0kEOJp`IA4N_g$$>prw0Q^zPPYrZ8fWCmr+}J-T|$MyE5YU zpIlwQVyFc9-GVOr4MQswbM~Q2mwoZ42Q8J&UfX@pb|3TTx{pCf$r{&v_$`*8Vj)xF z-G}4b%ic8sjOdJ2Dm|Lf9N;Z3?w^p?Lrsa1m9lwX5I@B0`$AwE! zaagRBMdte>?6NN-ZTv<2?t%(ig8Vit+3dCaRu8`;>G(YY)uG1l`#!n6m&}r& zVj;sR>1UH%=e&xnz&*UEn-4SAthbv+-1V=S{%eme(VTn)@+j5$X{Z14{Y;_hKkd;a z8>D27=|1q$hJ3fgyN@%$$3Go>^4o4!%El_!FJ6`YJf2ba@h7MMM#?fowa0J9C7Zo= zdLU0*)u#VZbkl>8n#6BBJt#eX_cYKKuWf3|TbVHYplQ9MT%?V^X!>u03QIEr7I$~h zlrH0$M7|5Y<+&@TLb)L*O3ZMH`6s8KB}_ngO^KF(&?1UQz;HSOx}xkg zhJbhtSb79(X4$_(w|{jx+Z^U~Vb3@T=Ux8?0kzXD+UZspU1M|8#Ku;7)2-GkKA!xr z{HP$Kg~QVXqid=EyRqTlDPfiWhkN^ONE_PT9-2h)dizj10=lE@HLkZWy$uJu-YbHC zjSJ-`JRY?6MZGRnK-=`^eYL$k?s{;mEVR27LD$&EXi{Utr^ZUJw_g`kFHC$p&Sp>W z{TkcMTD<<>jZMC{|C5i0OL%S%t%|a@*FHXiH`kT$TkMqj@yHB1etT#Vzwu+?(&P8E zz7ros)dhAN8Fn9ka(~Sl6;>&RsCE((e&<<&*=v7lAWvJ>_Sb^x z_&pxgp~mnV^Sbn=2SeUoasPd>953QUn#J8b;Uc6BhWysf&si+(04vYbLi6* zas-q;uApTIEkh>JF~k=sS!0H%{GrKO)6Wv|^LmZz<1Q_zWY{Psh2s4@J`ANfj+-_I+IG|2gBZl5+a z*8HjCvG>gR{U@iO_H+c4-Got%fDX!LuN`3JnObNH8bC+D37SMe7D+ta7X`XeQ43<2>WM%GdeDi$)Fl3u~qYgkLz#wFfic5+R9gL@AGh`atZ18i?p+!7>U zpOVd9yMmRct!gV+e>#3ci`F21b5L>6A;#5Gx8(Vq(Lv{IVWd=#jQIU0&rtn8;kRnbd+qcR1ycSX78dlH*Vsz!+Z|(v8CQLD z)0Q7wKDRS>)7Z}1##YSt#?Ur4SQ~3xW5Z7nN`7Lr@XUbSi`>~(VcDW7k5`w0&*uC^ zJB#&DVJVjmOOM(Y^E;9C>9Tj68m|4)qH-T+c}UXqbI zc(P5xjWNCSx2LIaeDhBp&;EywA;sU?uT`?yYnKl4lQh+q4heMphQ+JK@f*K0tK|88 zSJyu^Mv^N^evy2x`mG0pkv13(uz!-@4Nzez2iW5CyJ5*@ujRLT_#IEjZ`d7{=Qq68 z0t^n9UdjA_Px_CLZh09Qt2ucAzm6+x@NWfs!U1Vy@Y(1_(o0qp8BSixIr!kKZj3}K z;gs}a!+Slw9FIws*zc1Ki+*0?{k$i8`1&}Tp+93IGjnGn%Q2RQmaZnQV=RnK-OXIsY|}Aj7H;ll zu9haQuBM}%O}WOFhUR8MQxi7dh-+cOvk)3tnDTh2FkCL%LJ046BMg4Q8+LIxaxD!_ zL~w~+84=+%F*P+dG$H;-5$hYNga6r>DR&g$EiSk%;x?m4=8D6~%L1pQnqiWgM0yi1 zsVnAjdQr4z0d0Gh=8}{bGLR$nvcw#UjOdAR?h`>+j>i`%ajSjpg_%ZX%#!ANKK_*D z@p!N)}Wd)mI47=Xkw0-BQi4M`W3k5h%OveJ^hEa>+;v{d!*BC}D{aYKDZkZGOMrUu8mxiHyVp zr5UnV;wlt+TTMhn|JIP6q6yP*k%ytzgc&yLKi*g|v7hchA~NO1v6e7QhX$nx6Qd;z zZmm)`i6l(#1c@|2a|k0?^1;S^fv44Mujio`5)WJ>%BLj^8Zb(6gqfoyjFcDne@?W7 z@M_=)GfKZNE3?LD(E{7>8@|Fccws2b5<@$}l*kAZttAZ6?(+X(!f4H>>wq~GRih*yRgReZV z6XnzrrgRAdU$fUP`lS>h{^t`0hiMLBOq*L&{hmBRusLtBLz70kowbC)YZvSi`(M(3 zcy|oDG9toT#D1_+i+=b#yp}MS9LUXIyO7(?EX^UzP)ld8hPt{|@t&t6kBv8crX>s} z3U*~!fr)}$8Bwta1HZr35=MqFoDdFil|RyG4q*mw_}OC0>oS~`w;a8CJT#o6B@8AC zc4b(BiGp1jQLzXEpI_G!rVwEy#FcIgM;fX*gxNoL&A2M*|JX*J-)~r^driYB4Oa% zw3aYZY7qbNlq`QOqdA1pciR})cWf2w)azzf7hJt=pd}0@3U+1YU3e;nT^SMKRdvxH zt|g2NTaXtMMFU5etn`=Lc}pCHseRA=d>Y`nT}v2D6zs~d0uu$hGNNJ;CQM71q6wpc zYnYVz?&g<9+K6T~IGUGJxwiK3W&TvG6bTcmB}~zT!BaC0+EzB}RJKc$Z+-sk6QeWx zKiV!mf~;M`paG*42@|0uOku*{BQY8{!o(dv)LU$r#oJ~5@#$iASdMl|hKYh*nRyqU zieXnqRIDl43@u>_69!*tAYn$#+7=UaQ;(l;#IbV3{_qZ3!eF9cSB4dsDA<(|6^k$- zTEbw86m~Um(O=$vNnOFUn^v=R%wtnu5BMM7%F&)yE|Js9@HKPowz4c&CUb}@4J1r! z6T8{J<_fG9ShYPor;cM9QBLg|1`QacIKsf^!L@`bf-o95CHo#MT=t;Sciy}Yho9bh z;vAS8W#(OYDu!JdQL(0E@HuZSVPpt{iGp1X+9k7_UMKzb-j@7SZ+5wiEe9jD zguz6?t_&+MQLrl`Di&ej1J+u?6hRmboRWz$h73+>qvs%wofEm_%$2fQ!eF9cSB4ds zDA<(|6^k(N$}ufrWC(+wzu@g<4H{w64%?o*=RM6SGQ9CX2iw~=$^ zGkxhH-|&wU_+dXkr;Tm8%3DhqOcd=zxBOOQ4RRJd^Vgm z=~GksMrQ5N7&Ks%B4Oa8vs%K)5{C5Wf4f?92&3aX&HK9N8Hf2Z7yWqZ?=y@jsg^LM zOBndfs+KTC5T7NJBM;F!9%uJ#s!vY?9oXY>zE(kV=$KJHnLi2(v&-7%4CCe@vMCk9ukj zVa9AcJgVZuDz=$H1G)~3S-D0_7(B9Iml$rO|M2b@c4b6_SJk)1h_!^lRFS&)y=3@I znFc+$v=FYU_=@8!N|$_j?{)fGQ!QaIQLrn+3QQF2%7}_ZnE6`56ei5Oxg2T05Q)^) zoDpW%qXn%4e1dpUF~3IFKKbGhQ9kXI47LAKBut!^Fj8K~|Htnq)1VP%hkkPS2Mfyet>r@w61F7J?IW}}?uoet}0pY-RCETuTY z%+(U6Xu`xTlSl=cGbQ7fzxgA%*B-ki{Z`$+JEGz*qI{Gi3=7q)2l*9R`~~cfBv$>+2RvX}pU^d1asC-NwKDcwT;OX;S>m(nej_)@wv+t}PtU~D2V6y!-z}-HGIPdqr1!vUqKPVfl{u;A z@${b3j4Jm+uH@kK9=%li%sJ~mWPnV8i`%L+oJD@-ypPDc%H2gPtmXzrx_`IXF@%s( z5;X7kUqsMOFHV&tL1nYo5>%n@giaI_5qHynjG!zpj(Y#vvw0?9{)GNE_=neYMxfN#3Jn@& zBvJtQyMr8+=7Erh82 zwBr@+c-0-LP=k2Ik=AGduZkXK(i6@$n%O1RYM*{)w;Km5v58b#I!KkL9cEM?X1XC2 zYBC*EoxX_?t|T;llOPui#V}*gBHCu-f||CwszwZd5w_b65R#xY8}e09Jk2BM5RSC?e-A+`c4=c^+<&=sdU!xbdzajeMESJ@l~yAR7nD2u z+M$+qXCI!iX&gZ%qdBNp$oxG7)va(&=edoC&2r1vo1-qfye5jTB`Bc=`ZcDOptJ<7 zgjA?;1ZCkp(Z7eFudClL^E9?9XOY;k>*SxidTR-)>{%`?L1_tUp-BWSINB&78hBEW z%4bd>y@Y%i$oYZJo)rC%otwNWYWT|I_Tuj8txuoUk#5Cm2R=gk+JR4DZ%6sFT;@oH z8Z+?aZ>o|8SeBu?1l5k9Y8gTG zHHV;_0q@(wTe6b!dX41}4P3?3XVSCLrb@%+M{`FqHdR2A*h^1S;vsNy8n;Dun>T;)L1_X6r2ngB) zf*uVJrVBx-I{$6eso5s`?L^y$ho9+P#nvxZRc`9P;h{78{LpFsUZ+67t0->4&@uI) zV;6uhO?ahZULBT#@95TVZ_FP3bKatU+y6f7xL|5>KSLkg%i#V?zsJIRc0YRHEbUYg% zOcR1q`=SJ;_D3ZtyxHMH&_7(+i+*MGS=xOczx!8yr#(L)XrSWyqT-&FMg*lIj`0t`_Wp|U<~Sj0DpopXzF9oGXTFdAtgAqNn;c2SE#7TF|cc`OfBw|5QG({+2gJI=>^B2X$Zw2-<{s&|d?DX+qEl zI4DHmbq>oh=;c4ozW3{+zskO&?*mo0b$V{6(=r2sIxqwTZ30101qjoGpvXZ%h1WSO z3Hrekk4&Atoyy+$@+ab@H$QQ!(=r2sIxqwTZ30100SMEDpx`VYiPk9In_`IpHm>_|Xfy z2YR2R4ycjnD(d(OujB`KqeC z)iqtWPVBSsb?5N`ucEaO@G5m)p^|CCE3)-5S!j`>_Ziuv9DZ6mv?FA5Y=KlZr3d#_-^=S$ZK1cx5>W$ zls&VL?Q|O2@*r>;b3lMUfo7VzW_ldpmwp5#HGB9F^s#CGTz28$3HtNzykBs^o*xwF z7r08$*0r^@<59DPK@F?t*wMU5kwaG_Y#11FG!Zrj9CsM^}8 zIB^HQSTB*HCga2{@rmm${G&k*HBasK=+2G0eKCHAQXKzG-X86@mtUY2~i-lBkr>;~0f!rTo%K zlgnm|uP84R;2+BfVj&}slWDn_D;_7Yd`Ku#6n>l_m4t+1nJX^l$3h01=QUm84O=n< zfzdTdwq zo;C!n8-1!y&GMAI6PhIw`Q;P>ahSvfKH@q7Bd)}_b%$DPLpymDahR&MKy=6Kl| z@QPvp!ZhJk7&~0U8~N+jQqu|qV8gr`e3E_1u^R{GtlV){pN?PjL{2^)gT_E7rDFPU zz$*%d3wL0(DPg!kLpw?nUcs9XMbe+?cVaE|kXLgSm7g`|(&zf!H8v4eNm)&b_T?N9Umf&1yi@sSsx& z#}*Y2Qj@j$qaD~F9L(lFoo?Tu!y_l;Ek4(px#NP-?>mJ8jyo`<&hfxDN%a5-(}tjR zvNPh;tWRS-6>O7g!#e4^-Tq6R*Zp>F$(2_;{K4zXw>gguc;I4)q@v`ian z#>-CX@R=_^zeD-4<(EBW-_mc_%rSr4W&|8>>~{EG^A7>X{ouHjjvTL<5OFw?x_-O{ z>BnL06Vn{}@uj^_-*MeL&*ZM0JZS0Qjc3hv-anAz4h(@Dk9o}ye>W1x67YvZ;`fFO zooOS-;CLX%)5W(HDV1r*@xxG#|GQ1` z&VuV}v%~*hyDGAIYScOw$nhr1@xabSU7St?t+R8fPR%ya&ee!HqCsCh`y4azB7JTS z)o$?QX-_+k4S40i5a`D-HJIqdB#tEbTLNz?tSvB>ZW=UA zntgm+Po5DGN8)-(&c~*hg1Td5<6WB0z}Fp(1672pYdfl~w2_H$ddwKr#d{xvg?>vO8$Jla)V{SlgZbhFgN zW}fCPnPvq})+LKKSc_*Eh2|`p5i|jo=vtDf^M|M!dD4pxWHz?B}~dnC5b2+m1b zE&f^;orRlBIle^v{O%=Lmf;WAce9&eVL4pm1E^Q}#JZSZCbcrD`4| zk9-J!AXt#=C=O@|@`4DOdQyZ4782J>auYBCE$cTdv{L1e(Xw|0J?g*bU#LP9*}HsE zKuZKjdh30Gw4^dzS`JX54Q9Rm<)8?};X&DV1hfPo0$S1y495a#=`@YlpF=1uM@P_8 zu(S++#oThl(DLVCY>BkhK#Bcw&Z&BOjV)VIIV!L+vSLlH6L+~gH6=D{@v2YIqA|x$ z4`K+x*z(Zr-xesb8Lh;If0?C4fI{K&JIAOHNA`ADnv%3U9BCOy%Vf7z%uppZ{iJ2> zEDh0d%*2z2Mj%!%owM+Wp=B^Z63`ObJe8IcB+iS~Eb8f;GaMfMmtbt^AQD(&j~tUv z`bo=uu!|2g!^lfH{Zth1eQn7RBP|0ZHjtLk<|!)eXc^vLSR8>DQwJ=tREQ&^o(@bt zfCGfI_E!r`J{fKDq4w2s5!49Rw-2FMy_8DL%O^1TH0wzk0WJNcW!gzgu)z*SbX-oK zuA(?>P`9O|#6sEl5KNE+6D09Yq=8Q?bsFZ0=SesFYx5(JujVFsmYiC@Fc1;}ff{TzBNqGMFF>H;I-tn3j=Y0WA;VnZ^Mv zGn$sfCzhI5)+++^jO=Z5PfD~Lv-j1SK#2{MSZG6spUEfflvt`A)lCH`YZgp$PDY9B z-H@6R8_+Va#6mkdJT0+lM@yo_s$b3R8v$4YB^E%4hQP~*=UJL_{^9*Zs0>{}l6JHt zCZC#|J)80kLhDiz}J=$e~T8e2ly z_z-yc1YSOYmk*WV&UemUK9Py%sw(gb_VSq<(9-E(0wp$3Vo^hAkqs$pqt18KvT0{V z;2qSJF9xpas4{{TBuCH|Tj{984pyNJhUbzAlBX9OG14*^TLxoG)B&g8dP|rZarW>D zKmH>Vffo$FNFO;XNCH|0v_z~-M_N)nBk*G3w{|(+K4IhQBZrp1z=o9L@qX>(e2MQ+ zH9;V!F;GXr7m|rweA&rDQR8r7{IxFXffH`Racom^duWSqDqKC%55 zTMe>jd}_BxcW%_}<44tp?#w$DP4?=bE;F<(&hjbMOEW^hzP% z&$(uRX;ZL+VhU632i*MdwJ^8B-IzN~<>~km8^|XRx z;k1kRHnbbJYwA<@kYAt`LpGY#1?XaNrC5H)BH79((QVuvosg)A#` z9II;<&9b~{vI=jp@LiTnnN#5Gn!(jYC6%Scd7&v2hJ;G0i>pd2$_t0G-PjOQ2orn; zLz_xBwnSGL4kGx@L&S-K1(9isrY%VV&)Hg`F>pYB!4NHHfMpgcf<@C7CkPrXa*{@C zqD>0|XWDS4h$x!}ZcLMbtyCy6*mmRsz$AQ zq^KEcw1w8i@humnyEf7N&ENGGQ}?-d{l~z|y7tYpK5KvQuHWJ?QVUgZva1BS95N9}LE3uDOA!21!Xr|aAkjO7MU~tt6+){V z_bEC`=YTk#(9w=!`F)>svHv@F;JnrkT)ngFsL!0oy7GKq^Yh$O#Y0WSmFMHS6(5}E zp0{t^*xSeR{Lra*qG%edtns`^>!vBPyrmheA#1D%)Klu6_Cv@@;(E+HI9YvA@npa* zZ3#-LYQuDx`sXWVUUd9IbKxV`thnoPcD6Sijsby71~Wt%9ug;jDb$EaCel-p6UTfW z@tok*UI%V{RVP0>wGq#WhxYbJ5V(^0*4b?=^7ip;ODm}=ioC6Gw!kyIZZVRsh>WJ& zvMDRJqO}Lk)Y;rq}d)%4d#t8gCUA4MY^gEU5!P&mQHLcp*a4EfJMO z3J?lJ`9W#~3U5TC#J{^2j*skqXhZhw_vl{7{cG!qqw(DnjJR)Z+jcp5$x@u@Byzvw z;X^@adR1=G*icy^LsMIEO2X-_)wn3pFUTES@fhfZ$3;-w6%SN0X*{N$aEq~fWFPZ^ zW!?MTS^l?=eZhnA5syJ$cwFp-2P&B~9>3F>^9Icwp1q=A(a1aXPi{yG57PQ5q;A%= z55-3~27AHL!wU{nGHE#8sMz)S#n*f`;KhndIxTtqy3I+!;YJtEM?8jj;cMLvle13lB&m0lh~uWVE4$wpJa`}R$oImdrxzZmWYTzi|K*?h{C-kj;&7@AHgW_0^?FIFi^>)!8rH1%^P=oaaq5$=7hQV_nzTTUn=^D#}!_9 z&|Y|;l1bxH^7V~Ny4^2P&B~9+4l4wuiQT z+i(7NH!Zc#*gW4CJXjy`80Lis>xBm@nKT~Kyz-yE98YWa+EZ8ke*0xzeZj*|VLRLl z56%k@R5EEihDy@w)S^Dwj}3h5Z$A&|pPdvQF1m-G&0~ZY9K07CsASS`{O_y04r5Q+ zrEXR`_F8b;ekpfjmPoJu37o~#dqgz_~G=4*Uy~n4_yQw zyN@fq@DRQ5KqZsLWBOO&{7rdV1}+$&Z<%xI8=w2qKK$g%RbF^VUU;CAN#oJ>+q}UO zpY5+cJoC!pQ(M!|`+|p`y80+DJe)Zlx1l~NnKT}&-md)BU&dXNyY|DGS6@)_hnc?M z;is-X+6xcGt9_u7N#k+*^jFU=Dy+?YZp<^K&;0g`^?u;N$UgQTgDjxgcldz^>!-Rt#tV;LUU;CAN#k+e>E~Sh!-m@2C*OX*)#Lvd z{*5nq_^GZJdExOJFFa7mr19we!J4;DzI>$m*zlo){`Bh2fA<9sKlw7&3lGPM#jQU@ zC6mTu&viM&3vRup-?FYRFYg}O(b*R~{4^C7d*RXBt9_u7N#n8Ut(~W@q~;r&KIpve z7<>0QN#Wt5uKOu&OT6GfE46j9JU4IM-202qHP6XO3Jw=_o%2&& z4|(CCdf|aeCXGk0+0P8$I%J}8&v11?$9117zTn{}UB-Fgp?TqfN+ylRO+TD=$1#sh z@3*q^#~&&m4xH@^9)7CpA!nn^ycUD9_==7((0eyKE@Y3{Oms_ zc;R7q;ekpfjmMUAazDSMH<$aYw(*Qp?p}SnA9%2S4sT1n@G!mbKqZsLW7v&XKXT>z zT>Ht#rw`2<{-!V1Q_fF3uJ*#i^1=g^Od1d6E#u}N- z|7r8U7eAS~YxeUmFZKlwKh^a~UU>BN!UL5|8jmk0uRr?k2ixX7+5X3?yF5GNEI;sI z{j{!^d*PAeg$F8`G#(Ew=P%szo52I_2)}*&f2>WvB!!2Iy6&ensKN`5eqL~(l1any zm;E~y^w|AJb?M_BPkm|1yW5k3!%bcH6OYMWcsPEdZlhaNGHE;pu=^Hnh9H?Z{aC~~)+`;dS8a!bBjIu@7kDB~mQg9q{KZhw^U<~l;I#9`^!C3O+_Bm}w z47XQ)c;Dpeqi*e#6c{d4@l()NdBHKz3l3B=X*jkVd;2llbMG=f9*$Cu`f%PJQBiJL78tjScI9^ZH%j zyTZcS4O+H&Mlozd7CDhIbvSOsv}s)tY?eY&wyq`y6_tm|resi63|btCqSB02ap3y? zSXH1!-5e}@<2Aun7{wA4P2+gYka?R?6x*gwajIhM*s{=+s)};pMgF9UimC}2P#e?; z)v1LA_e7jH4Txb#y2bG(+Fn9}rSPUGaGGT(rl^aiYzYa(sHmxqkCdgu&KeVYWEs^}8Nh@E^HrxRYHq?+ z(u`Gs953oZj0r4n@Uj9@K>)c8o8HJ8r@^iU5@R#6W$6Ni_Jzox3zCC>epM(`mI3XbbVcecHChkNh`-CYLAPw) zlA#0Qpzl!_$+l=ivJ_E}SX&bnEpFUUPztJ22Gj(R$t^K%aFxjn4B&tPvT2$!?8wCH zqM+!aLJJZtYMdjJvn$FnK_wzY7__+giGZfC>OxEqFrqA2ut^iBM3$`CHp{|@fzfS6 z;ssHb73x<|=m44AH#Dt01E@fRGQBVog{9>?CEManiG@x{VkJ`qISkuD86xrBfz^O0qIWJYezM60AUem~|n>3P~3@gVhb5(*$0oEs=p8&xCW}r57!{Kzhbl9m zFQPC5T0%k6W3`Sx#25hPR70>79x*`IIgN$QF>Og_L{>9wnb)ZkAh%vw?es(gV6c`E zOo-eWK`2mJ^He8pPVrj7*tUfl?i!8 zm0;D&1WI5-UQ5)3i>3;54YB|>RG#KpPM0j$iBMw|jpb!cGr-pBXsSc1r(}Z3f@rEO z0YCEft_!gqNfQ_mtVJeIODsn#n$63sVWRyQHCr$Q*;#j;UsPV=*t9c%0z?|LgkI!g zHiC`w1VKd58mLQlsOd~jR{$)io z$SlIZj4&RZI9qk3VoS`YxrzhWpar=BAdU(CEujvf<#u%; zrjl}s!1Ig@20KN9(E%fwFqk?p&9!j7xR$K=)A~F25-}{tTDU=b2f^i zSsVi{M>ZRs$Q)E!o(Zy;42>fXH9!3LiP37WGg!ls9AFORSkQ%Z8hneuDknn+B*>B= zA;${pcqkEV|2?vXRa9oe9427_{b2J~gNu(B_yB{KolT=-7rmK1cwXTHY`UmGA4vz z?xylmvmz7ZGEq-kLN2>lD{S7dSVOaTP64xpVoMsFRiMj^0u#wFY-SUz6$3)kGJp@n zTG0}oMrbp#x)2*ESUgYLoN4g_hy$H91XHF3uwQVN1t-1PI@JaW4J?|N0q7I?tUjPd zfoMkc$YoIi$HLUH4lXV*cLp=dx@N*KLDRtL(b8#AXQGP|>RIjd5O`N)geN@Vf;ubG z?6raGKl}+M%=3V(0K0~4ORQijV9gL1IMb4&PKH88MZHy2Ln^ArXVN07 zmY8X9ksdr~tTYc3&yoo~NU(edE-0L4TW~h20Lu*%m$VHEp_<76YLJmdb7)fYoz_oL z2`gi#9_4Ya$sizt>+UD0WNS<>vdERJnszYmcbh&w`>|`0W`+Ve zx&$p?bOO55(2BC^NuerOF=UigRF}AK;rTCID1L=&YHM)u&0>*Sk#L^Y^=@#^08k#q zB|GByCA8!Q0s)CaE00Mga&ZpMwA0Djz@KaIHB#U-{M~Ckab)voXKt%z+rtYYkU#6Q ztf^|H%Z*I@n{e{MqschS795khgs;~cQ}D$DX^$?FN(z1ufRR}>^sjc^J1^N^sjfM; z`-+_9n%_TuiCSWpE9V?i=BCQ$5fwz@HO4{FB^-{RLkmayx{^0T9T|DD-5KiCm;{ zrnjA}4g8sf-#0-@9=&RL@AKUfDWLxZe78hIiR@2I8Rc5WbWJI6O;Packsmu7X)X|s z#@D0Y>ix~d2?>>hPTO686BCet?NZde_%7s8^Nx;Q*i-NB2Yj54?^cel;#Z?KkX$ox zhG{q^cP1IPlZ**5YBlh`-2Hu*t4FyfQhnOECPKBoiJ#X13}N*c*OE}m@<{B14yQt) zf!k8lNUxITxF?4DWO*fGowcE7hWmUMeIF{mg4W>c)c^1YbOZ?s@fjCKFH;ncKb(%^ z_-5aVQe9KVx}?B4r>-f)rW5}hiaOJ^OrdK^ch{7@t|@3+K@<|-;EZTO11YFCMIq^S zej2Xgqzjg%TCi=Z1?^M|B7ZFulKzcXCjCTs$_McODfBo9Nk8%2q@RfUt1hV)Y#V*k zaB?WMBP04pj zX+`yPNuj9oTvIx`rd;fra*1oo3GU78HJ!A@R&mXZZXdm0YkVEwy)K%B6B=wV-EiVs zoS!HUFOc#Z@rQ;oqOy(32u7pEWkmM2M%@vStWg<}n$@U`NY*zhBkD~OG6w1$pmJoX zci+P=Mj=q|qBzw18>n~nz(60d26Gswcl)7xo4lp?h*Iyi;o3@&kVtNga221B_$4kG zFFv2Z*QqD*hl_9=uM)L#CdyG_d#_kozD~iKiyzrQrk~7P-4pxj z?cACQYDYwWv+*73&r~|)MnFPCiKs9&(k0QEpu7?iEtCsF$7n?Lz%hA@v%nTzLytjs zLxtQz($k*rowE5)f1WO7zkL6m%|HJ*_DR&=p+KfRu@RASHs1gr=CYFfP*qiF`S>YJ u447z%I-t<^Kg_=9_e=LY8t&O^%i9PCVxJ&+r~X|Y+~)Po7m{Xz^8Y`E(3DUB literal 0 HcmV?d00001 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_AssetPlatform.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_AssetPlatform.uasset new file mode 100644 index 0000000..9cffede --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_AssetPlatform.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cbe10edc23286ddb3d2dd176d410aa8cb134b9cd7ba08e0c565c7ef764d335a +size 8824 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Basic_Floor.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Basic_Floor.uasset new file mode 100644 index 0000000..07401c9 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Basic_Floor.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38e9963796183aa39c6cd4219fe60403740c902dadd223b96e37158f5b8e07f8 +size 9515 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Basic_Wall.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Basic_Wall.uasset new file mode 100644 index 0000000..8180e21 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Basic_Wall.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d98628a1928336e234cf6b0c1b65a394bc7b6ba7b8ced62bc2fb9e029b45c0b +size 8910 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Clay_Beveled.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Clay_Beveled.uasset new file mode 100644 index 0000000..14c4569 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Clay_Beveled.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71a2e69e0398d164f1102135139e33310e0818cd3adbc8ae1b22f180c4206c55 +size 22893 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Clay_New.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Clay_New.uasset new file mode 100644 index 0000000..0dc4a46 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Clay_New.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94593f357a232f51687df14189072afeee85164e3ce42dfe65b402f80d63561c +size 26366 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Clay_Old.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Clay_Old.uasset new file mode 100644 index 0000000..0d955cf --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Clay_Old.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7ff7197aa1809106da243f9d8bd22fb0e1305ca2f67d934ac3fcea7629861c1 +size 34264 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Cut_Stone.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Cut_Stone.uasset new file mode 100644 index 0000000..07408d2 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Cut_Stone.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5931125b271156e0f931ee93de70fd48b4408467b9deb868f9fcb903972943c3 +size 33809 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Hewn_Stone.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Hewn_Stone.uasset new file mode 100644 index 0000000..3150c05 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Brick_Hewn_Stone.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60200347bddea342b9e489b8642f8fafef462b6a36a87fe8e5cb4091e3647162 +size 26468 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Ceramic_Tile_Checker.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Ceramic_Tile_Checker.uasset new file mode 100644 index 0000000..219b01e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Ceramic_Tile_Checker.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:508d56703e09a7dc8bdd308eb1ac523a391a4be5373f3ee98ee7a4ecda979234 +size 26818 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_CobbleStone_Pebble.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_CobbleStone_Pebble.uasset new file mode 100644 index 0000000..7485ad0 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_CobbleStone_Pebble.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b581105dc4109a3688351d8c4a71a5df9b4d3f142d54c8f405e4395fa9e25d51 +size 25680 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_CobbleStone_Rough.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_CobbleStone_Rough.uasset new file mode 100644 index 0000000..2fabccc --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_CobbleStone_Rough.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35a3c495a0160ba64b0a312c64c744452ebd7c5d4a5a2320792ffc1636137462 +size 108929 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_CobbleStone_Smooth.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_CobbleStone_Smooth.uasset new file mode 100644 index 0000000..5cb2bf4 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_CobbleStone_Smooth.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47689b5ede44d19cd095d31e9dfbb9eb444ffc04bb0fc5e4ad2c73c51628b6f7 +size 117888 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_ColorGrid_LowSpec.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_ColorGrid_LowSpec.uasset new file mode 100644 index 0000000..0ebcc43 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_ColorGrid_LowSpec.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d57780881466f2243edf382d5be4378852e02b68847565c45462ffdf7765588 +size 9385 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Concrete_Grime.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Concrete_Grime.uasset new file mode 100644 index 0000000..4d6c696 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Concrete_Grime.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95e4252dc15dbc22432a756fd77a66a1ba8e4acf4fe112469530ff75b6b855bb +size 36137 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Concrete_Panels.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Concrete_Panels.uasset new file mode 100644 index 0000000..5645f01 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Concrete_Panels.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edbb25f1df295f3d81ca5daff4d1fa14abc599e2f56252fcdeacd96a27114651 +size 32155 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Concrete_Poured.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Concrete_Poured.uasset new file mode 100644 index 0000000..604f867 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Concrete_Poured.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69d453cc3372ddb78381716e4eafa298a39c10564cd6bf4ce6f269f8d5c5001e +size 30606 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Concrete_Tiles.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Concrete_Tiles.uasset new file mode 100644 index 0000000..f616c4f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Concrete_Tiles.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:409815ab89d05e92ee115c677f210e72f09c9eb3b7ff3a42bcda77059def5afd +size 32196 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Glass.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Glass.uasset new file mode 100644 index 0000000..e52df69 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Glass.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2b9f8dbc501536bcf1725e58187b15f24dd0ca7c47eecbd963d77ecb5226c8e +size 13502 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Ground_Grass.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Ground_Grass.uasset new file mode 100644 index 0000000..d6b21bc --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Ground_Grass.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d44f22d05be5c7aa2286979bddd4c98ef7f22a5950ce101f673a03d85eb4e8cd +size 38110 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Ground_Gravel.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Ground_Gravel.uasset new file mode 100644 index 0000000..3384221 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Ground_Gravel.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07b4f6e7eb26e5e474181b534461bd2e06bb4837d3ce943d6d180a6bef018d24 +size 31861 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Ground_Moss.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Ground_Moss.uasset new file mode 100644 index 0000000..8039767 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Ground_Moss.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08be31e96cd9ab8983dd2330353bff3a48835d41f331e912515b5071e93d4caa +size 37696 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Brushed_Nickel.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Brushed_Nickel.uasset new file mode 100644 index 0000000..919edd6 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Brushed_Nickel.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ef7f067abc9a0d9e9d5093b8bd777bf549453c1ef50b2e89935a21d89ba08e3 +size 17036 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Burnished_Steel.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Burnished_Steel.uasset new file mode 100644 index 0000000..c51d39d --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Burnished_Steel.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffe4c1b8afb6b84a011fa000d874b78bc4e78ec66d3bf00b20a279c6ca37967e +size 22803 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Chrome.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Chrome.uasset new file mode 100644 index 0000000..beb7abe --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Chrome.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f6e1363960ae18a6406f76bf39787d453d5a705f012726c5d0a20ef38c84bd0 +size 17008 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Copper.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Copper.uasset new file mode 100644 index 0000000..661bef6 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Copper.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d0bc6b599b4a0744bd6f3f388983cef577239546b956d1e0e0e1395061ae0ad +size 21999 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Gold.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Gold.uasset new file mode 100644 index 0000000..5c96059 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Gold.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a616be2be9912db10fc0a1263fc0468ab2b4d520e69a3f4e10d82de84f390825 +size 22232 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Rust.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Rust.uasset new file mode 100644 index 0000000..74afde3 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Rust.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da8fcb44b3ba9b64dff8fb7da2b48201ffcebf4fd4b3fd84d16d45c0fb705a87 +size 24149 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Steel.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Steel.uasset new file mode 100644 index 0000000..7b19500 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Metal_Steel.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1c84656ac5d9301a55b7c48fe1c6607bdaf57db1f3f3a2f90a13965e3e8e88e +size 23634 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Rock_Basalt.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Rock_Basalt.uasset new file mode 100644 index 0000000..48e574d --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Rock_Basalt.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2356c40885bc0674e975505f07ab8a01f43e98ec099667bbd67d58c1cabfc6a9 +size 40498 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Rock_Marble_Polished.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Rock_Marble_Polished.uasset new file mode 100644 index 0000000..63bbea1 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Rock_Marble_Polished.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f09428e5aacb9b2ba948c0845b765315e776cee4c6d00872fd99725896efd46 +size 34113 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Rock_Sandstone.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Rock_Sandstone.uasset new file mode 100644 index 0000000..f19b524 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Rock_Sandstone.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3206845341fd89bf1e51a23599d504eea53ea289f6e066df32def3a603095bb3 +size 36603 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Rock_Slate.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Rock_Slate.uasset new file mode 100644 index 0000000..28b5225 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Rock_Slate.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4e74dd3dc691ecf669006b8084181297040396881a33090f12f6ee81db44035 +size 38163 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Tech_Checker_Dot.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Tech_Checker_Dot.uasset new file mode 100644 index 0000000..03651bf --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Tech_Checker_Dot.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff1183cab4442a5fa1c47d55c734edf08a77ca34fd786f1f96aebf9b51a3f941 +size 26338 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Tech_Hex_Tile.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Tech_Hex_Tile.uasset new file mode 100644 index 0000000..a5204a6 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Tech_Hex_Tile.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:620426859edd8dbbbfac831c7f1dcd6a5038ebf6df527aec80883a4758c273d0 +size 27325 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Tech_Hex_Tile_Pulse.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Tech_Hex_Tile_Pulse.uasset new file mode 100644 index 0000000..8757f2d --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Tech_Hex_Tile_Pulse.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27a5b0fab4f9af5c6a0aa9950f44068194d41176e15142833e2cc994d2b48ebb +size 25902 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Tech_Panel.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Tech_Panel.uasset new file mode 100644 index 0000000..e3d57d6 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Tech_Panel.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:479286a2b64dc7d6fecd43f82f2819657ced6d938061f77503946582a01d3300 +size 25957 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Water_Lake.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Water_Lake.uasset new file mode 100644 index 0000000..662a11e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Water_Lake.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69e6c50e3714db9a3e64abfdee4294ded227aea1629dc3167b08c171996bef45 +size 32687 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Water_Ocean.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Water_Ocean.uasset new file mode 100644 index 0000000..1d82bcf --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Water_Ocean.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a95baf816b67cfb63343cb7c80c89308619f03a7c2dd48a0f5b20b7cc9212166 +size 35894 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Polished.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Polished.uasset new file mode 100644 index 0000000..9850ec3 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Polished.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0dcb981b3f68f6d9594003af8cbd2b5449ceaf116399230e46781ea45dd02a2b +size 22926 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Worn.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Worn.uasset new file mode 100644 index 0000000..93e56c5 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Floor_Walnut_Worn.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c8cf6b2fa1a56a04df5d66950e31f154d7bf615c0c4e4c6f6a867bdff52c750 +size 23528 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Oak.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Oak.uasset new file mode 100644 index 0000000..de1747e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Oak.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dad76cd1109c8b4a3594e23dd83351170764980c3ccfe57859a3a2f60fef5cdd +size 23499 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Pine.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Pine.uasset new file mode 100644 index 0000000..eafee70 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Pine.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b12c6d7285dd95b1c5669e07fc665f8859a17ee78c51f139170726848c06ee67 +size 31142 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Walnut.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Walnut.uasset new file mode 100644 index 0000000..2e92619 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Materials/M_Wood_Walnut.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8491e0b8978a41999e0f4fc6520cab088fcbe6ddf8b51655f34753aa45234c66 +size 20495 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Burst.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Burst.uasset new file mode 100644 index 0000000..8b6ae42 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Burst.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19bf8a8995e63597472be08617fc5c11494c214561d92ba58cc866bbd3fc9258 +size 15675 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Dust_Particle.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Dust_Particle.uasset new file mode 100644 index 0000000..6a1195e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Dust_Particle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e054c7225139c4ed10e8695158b930b64c97deabca1f3c8160b382d40b082e94 +size 8718 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Fire_SubUV.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Fire_SubUV.uasset new file mode 100644 index 0000000..20bce43 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Fire_SubUV.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c354f936265a8af7e8be784f38742943669fd17f128d163339565680962b31f +size 19541 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Heat_Distortion.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Heat_Distortion.uasset new file mode 100644 index 0000000..ffb5899 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Heat_Distortion.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90e749c0af988f6f35a783853dd5f29a2556a1c6844187c6faa7175f8beac337 +size 13877 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Radial_Gradient.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Radial_Gradient.uasset new file mode 100644 index 0000000..96f3272 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Radial_Gradient.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:969f0add70f571adb7e14da5ca542a15955166103efd54168a5e248826564781 +size 10357 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Spark.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Spark.uasset new file mode 100644 index 0000000..1754977 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_Spark.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4d87a9647f2c232d84745d5c6379f3ad1d6dd2f11310af74f48c20c981d2cd5 +size 9786 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_explosion_subUV.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_explosion_subUV.uasset new file mode 100644 index 0000000..a09186a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_explosion_subUV.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:137d164ab8e2ae79e3345d7ee75e4052857726c824617cf08276a9edeebf0e95 +size 12568 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_radial_ramp.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_radial_ramp.uasset new file mode 100644 index 0000000..bc957b9 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_radial_ramp.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:880794e3875c4394f93e280b35524a677e72a5a1edb06b03c8a0ae9efc2b51a6 +size 10366 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_smoke_subUV.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_smoke_subUV.uasset new file mode 100644 index 0000000..29506ef --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/M_smoke_subUV.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2dbf2d29f4c50de40b74aef19e9a39a86891b9b617f971ea0136f90a6e4420ec +size 16561 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/m_flare_01.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/m_flare_01.uasset new file mode 100644 index 0000000..4b49de3 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/Materials/m_flare_01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57377e5d237609372f0837407d7c9f35a5ba00bf81aa049102d699105af8a025 +size 14010 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Ambient_Dust.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Ambient_Dust.uasset new file mode 100644 index 0000000..844cb4c --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Ambient_Dust.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:680ace57ca1316b03bcf2fba554552d79333e2058c5da70b6044036d3cd17442 +size 53272 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Explosion.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Explosion.uasset new file mode 100644 index 0000000..d3796ba --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Explosion.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f21bbb2c9d69226415dd25268ce3c3f74af71981018c537d0080ec7df5d32309 +size 280221 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Fire.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Fire.uasset new file mode 100644 index 0000000..38533cc --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Fire.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2d1cb2ba9933d298c62788996e50a3015632eff8908f08ec28d85fe116cc073 +size 259431 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Smoke.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Smoke.uasset new file mode 100644 index 0000000..b1b00f9 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Smoke.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e66c5b6ed61896f44a837c0c88ac7cdd6ed16e7bdc9e0ded78e0742e83c4d60e +size 65670 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Sparks.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Sparks.uasset new file mode 100644 index 0000000..061ebce --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Sparks.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ae32a7cc9882bcb982df7db98dac68bbe0db2bf08c40f49fcd85c8e1407d415 +size 171805 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Steam_Lit.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Steam_Lit.uasset new file mode 100644 index 0000000..7f3b1e0 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Particles/P_Steam_Lit.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:018c1d52865cea019dd1607b284acc89e0363c2e832d16e0d3f9e1164d337494 +size 117332 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/MaterialSphere.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/MaterialSphere.uasset new file mode 100644 index 0000000..56bddfc --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/MaterialSphere.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a8777c01491888bba9f40eda9d2bed76a611f0e80f75917501ce69c1a321342 +size 47333 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Bush.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Bush.uasset new file mode 100644 index 0000000..152e540 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Bush.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85a4a6e7aa928fa57dd41b42f64a267793a41a01d17a5789eafe2ccf0d27ba20 +size 16429 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Chair.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Chair.uasset new file mode 100644 index 0000000..800b7f8 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Chair.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a7f31c580095e67771be87cdadc420847f26d71118fb75d31e5946a8366253d +size 17834 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Door.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Door.uasset new file mode 100644 index 0000000..270fab8 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Door.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5f9b85b032dd4c49bbfec94ad295ed70c530f2d193c0b7c02fdcc597536f772 +size 21015 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Frame.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Frame.uasset new file mode 100644 index 0000000..2a6f32f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Frame.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2790b944cee372200c299d4fad42fe31bf16a54233aa26700ef5be8a109f4e8 +size 13268 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Lamp.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Lamp.uasset new file mode 100644 index 0000000..f1eeabe --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Lamp.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d37cb1a4137fa7ee0b3782d5d0f4c4968d2982d3d37a79d4d124bfc9d5a644c6 +size 21945 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Rock.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Rock.uasset new file mode 100644 index 0000000..f76ba83 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Rock.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a2a237cfc23c8d44bb96b71cca8fe3f2da4bcf37bf03c4890cb1788e2ea3dd3 +size 22583 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Shelf.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Shelf.uasset new file mode 100644 index 0000000..11fbc3b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Shelf.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3a633e42f4a149f8846cda390b26211dc51bc1dbff29f17269679ef6fb15708 +size 14571 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Statue.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Statue.uasset new file mode 100644 index 0000000..b93e6f5 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_Statue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19507688a5451c6958f24e9ef4aaf9617dd2523306925e6b4240540e906c5cbf +size 16585 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_StatueGlass.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_StatueGlass.uasset new file mode 100644 index 0000000..a4a342e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_StatueGlass.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e8269b7fc68d891c81f7600452dc8336cc193c2013d5441a9772c85d0b4eece +size 19243 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_TableRound.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_TableRound.uasset new file mode 100644 index 0000000..572996b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/Materials/M_TableRound.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80511b0e6fb4265c716167e0032c7a4578881f93084caa6647f5c299ba199e36 +size 16288 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Bush.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Bush.uasset new file mode 100644 index 0000000..883ca53 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Bush.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d590cc11d0237d03c8eaef929c412e9bf79b92532b8b84de91d0aa95cd82f34 +size 66229 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Chair.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Chair.uasset new file mode 100644 index 0000000..4e6aa98 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Chair.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6330daf603205c63a66ae7ccba450a28edf5c7001cc572c407e6bc471cc1582 +size 99160 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_CornerFrame.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_CornerFrame.uasset new file mode 100644 index 0000000..8cb6f39 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_CornerFrame.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0f3c6f7d31d9adcb610643bce0424dc087e3319e725367af568779d4deab5a1 +size 38228 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Couch.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Couch.uasset new file mode 100644 index 0000000..f2ac558 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Couch.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c5d0dc6306a79e974b23102451801c80cd3108d9a6fca175e5084d6488c74c9 +size 108540 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Door.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Door.uasset new file mode 100644 index 0000000..9495967 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Door.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b72cc7534989fca4045a1d2ef743d929d8c001ac4450d2027c30d18b38628348 +size 63947 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_DoorFrame.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_DoorFrame.uasset new file mode 100644 index 0000000..33b635c --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_DoorFrame.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44589f94b37599863cbac38e4dec7c4717fed858a7af56958bc7f20bbd59b035 +size 23125 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_GlassWindow.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_GlassWindow.uasset new file mode 100644 index 0000000..5d56628 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_GlassWindow.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:006ac3da047529479d0af8768be4d9bc85f81f0f88d48a8a952eebde69b4b10f +size 36547 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Lamp_Ceiling.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Lamp_Ceiling.uasset new file mode 100644 index 0000000..e4d57ce --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Lamp_Ceiling.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c2bddbd1708467c5e926d34497d42a8c777b679310ceadbaba8040b88e02382 +size 113036 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Lamp_Wall.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Lamp_Wall.uasset new file mode 100644 index 0000000..e200d4b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Lamp_Wall.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b9716ccfb79da747e76090223e4767c7df90a95f8c9e742335477d577a8342d +size 60277 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_PillarFrame.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_PillarFrame.uasset new file mode 100644 index 0000000..d627cac --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_PillarFrame.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c321f6bc2d7980ffc49a68d59d06e890154323aafc9b51828a08c02d18c03b7b +size 43484 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_PillarFrame300.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_PillarFrame300.uasset new file mode 100644 index 0000000..1e6e260 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_PillarFrame300.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbd6ff279f4666fca756ce3247fab616c6476871639bfd6f54039e24e90c2f4a +size 44444 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Rock.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Rock.uasset new file mode 100644 index 0000000..5d81020 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Rock.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b469ad02dfe591fc1024c356598344afeb9c2c10c0dfce44f86057b76b39cce5 +size 71152 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Shelf.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Shelf.uasset new file mode 100644 index 0000000..06533ac --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Shelf.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31f0effa39ebff7ff69958023b6462cf5541d619b924f932701163b2fb306a6e +size 46806 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Stairs.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Stairs.uasset new file mode 100644 index 0000000..271ce20 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Stairs.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edbf2ae1f1df84510fdd2cb6fd6fdd0e3572bc7cedef8c316618a147e9ebcfc3 +size 27358 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Statue.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Statue.uasset new file mode 100644 index 0000000..f16fd8b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_Statue.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91f1f18aa4bf9483b857271161824a212acf76615e825b80d42ff623ae39b2fc +size 191942 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_TableRound.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_TableRound.uasset new file mode 100644 index 0000000..f90ae6e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_TableRound.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff5d2b89bc0361b3b401d747fe0a365642db5a361f7940620791c73a9d2d1515 +size 242868 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_WindowFrame.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_WindowFrame.uasset new file mode 100644 index 0000000..ca23fab --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Props/SM_WindowFrame.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0339ea48549fc000cd25679a2aa17bb34333b161c3d05ffa58ca33179f21d7a3 +size 25448 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Cone.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Cone.uasset new file mode 100644 index 0000000..6cd3c0a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Cone.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4358682c6f6bff5ae3dd11bf13f31155b5aa74774647ffa4029f979e3bfc659 +size 27018 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Cube.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Cube.uasset new file mode 100644 index 0000000..29e694f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Cube.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18e5e66d74e5bfeff80dd0cd93dee475ab35d0cc384262ab640109a3dd188dac +size 16145 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Cylinder.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Cylinder.uasset new file mode 100644 index 0000000..c814b02 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Cylinder.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8846205c866a82d9abfeb84b35d1f82e4e71e72df65337ea2e738455c4902f19 +size 31341 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_NarrowCapsule.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_NarrowCapsule.uasset new file mode 100644 index 0000000..fda653e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_NarrowCapsule.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59bbaddb435bd43505fb8b6051b119e844e6d575185f177411837700609deead +size 47855 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Pipe.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Pipe.uasset new file mode 100644 index 0000000..883aa14 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Pipe.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4a531ca154269866bb4a23b25e455de9215eea38d8afe5bfb2cc801f88a54be +size 26253 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Pipe_180.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Pipe_180.uasset new file mode 100644 index 0000000..ea19046 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Pipe_180.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ed0652b8fed0405700dd6635ebb6d52902d4c3444bec19c3404ef3124a71d6c +size 85759 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Pipe_90.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Pipe_90.uasset new file mode 100644 index 0000000..511b037 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Pipe_90.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36a4e17228e6f85fe4600a88ea6bb2939737671a8cba62e45c0a285e8b60a185 +size 59989 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Plane.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Plane.uasset new file mode 100644 index 0000000..c37e7c4 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Plane.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc27b5ffb949957289c59122b26b55464ac2cab8013dfa8d9b01cc6ef1781935 +size 16473 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_QuadPyramid.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_QuadPyramid.uasset new file mode 100644 index 0000000..10464e5 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_QuadPyramid.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2b5549375a2425fba0127c8f2efc85d400a781009c7124a99ca2b9b214ebfd0 +size 16296 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Sphere.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Sphere.uasset new file mode 100644 index 0000000..1801574 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Sphere.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9441fb1037a41686be1ccc4f8e45a25f4f7126a16e831ff4b587820d48059543 +size 37887 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Torus.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Torus.uasset new file mode 100644 index 0000000..651f88a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Torus.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9842e266d0bbeca032e107bdb4b809cbb0f043b12527fdad3dc690b43de5d95f +size 70998 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_TriPyramid.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_TriPyramid.uasset new file mode 100644 index 0000000..9b4b0b8 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_TriPyramid.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29481245fedbf1fbf6d37a7b49f064119fa9b61b8cde0f8a71634f3695fde42a +size 16154 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Trim.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Trim.uasset new file mode 100644 index 0000000..21b93aa --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Trim.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d9ae1dad00a411a316ada5f41d16fe0491a299a4981e010fbc0a33d4fdc2bd8 +size 20918 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Trim_90_In.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Trim_90_In.uasset new file mode 100644 index 0000000..8bc7d55 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Trim_90_In.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98f0162abad4d75bb1794e7a1f11cac718637459a7d0d0600a63abe652ddcb16 +size 30650 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Trim_90_Out.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Trim_90_Out.uasset new file mode 100644 index 0000000..3742d00 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Trim_90_Out.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd2e1073a23e135dce25c377ee94ef017f0626cadb665bcd762757dc59fa47fc +size 31102 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Tube.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Tube.uasset new file mode 100644 index 0000000..e124cb8 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Tube.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fec9fc112a4fb0eea12c8d6d6a08e869ecf0401fa1c903b35cb956615060c839 +size 41303 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Wedge_A.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Wedge_A.uasset new file mode 100644 index 0000000..e729d86 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Wedge_A.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78daa6706b75d7cdb8d0b20bfced79f634ad87f017496b8edb077ff9b71ceb81 +size 16633 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Wedge_B.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Wedge_B.uasset new file mode 100644 index 0000000..63b5e93 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_Wedge_B.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec1df8e160b090074b21098ea608b8191482368c23683ae4f599331105285188 +size 16760 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_WideCapsule.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_WideCapsule.uasset new file mode 100644 index 0000000..ba744a9 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Shapes/Shape_WideCapsule.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11308fae1e1d7835780372aada5fb86c8eae88bc8b757af7f7e4a082e0c5b5b6 +size 42421 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Beveled_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Beveled_D.uasset new file mode 100644 index 0000000..51d2802 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Beveled_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7fd6c18ebbb8d8b97f5fcfa6fa33a7409ae841f1bbb3350c09631718ac9a886 +size 7591336 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Beveled_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Beveled_M.uasset new file mode 100644 index 0000000..71ff220 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Beveled_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:337b0f23251965e1b3ae95e1e5defa1be387ed9fa12f7e8b27929897ccd6f8d7 +size 8291521 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Beveled_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Beveled_N.uasset new file mode 100644 index 0000000..452fd92 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Beveled_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0da0eb1e0c83fcb8b65fa8310e7bfc4dd31be7087d42545091129d7fa8baa7c +size 7530431 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_New_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_New_D.uasset new file mode 100644 index 0000000..27ecdf9 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_New_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d49f52bd21c9400139010b6918a2b8bff1c12aba2b2040be66394aeaa3db8cd4 +size 5993577 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_New_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_New_M.uasset new file mode 100644 index 0000000..465c25d --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_New_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6ee66163a117e18a55e3014fb188c5295618d17b68a2db98b6fcfefed2f0704 +size 9129111 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_New_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_New_N.uasset new file mode 100644 index 0000000..29fcc08 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_New_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75dfb02a6aa4aba8ab593d5c428dd91b2c4ce6b130737ca027df872a9c7644cb +size 7801784 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Old_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Old_D.uasset new file mode 100644 index 0000000..0309878 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Old_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5833d1ff5e20eae43c8fe2e6f043dd494fcae47d295bb7d480f1c9dff6e44acc +size 11372796 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Old_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Old_N.uasset new file mode 100644 index 0000000..fbac302 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Clay_Old_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e35cc57e8471e856d725d2df968a4ca4dbe8404979136dfe30ba8502f329d851 +size 7761834 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Cut_Stone_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Cut_Stone_D.uasset new file mode 100644 index 0000000..3f92d6c --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Cut_Stone_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:680c9eb5f07808e05325b17354618628d1d156b5e00a9d041729a9a157d5e1fc +size 13302492 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Cut_Stone_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Cut_Stone_N.uasset new file mode 100644 index 0000000..08d46f1 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Cut_Stone_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:053fd7df91ed5f90629c24833503f42d688d7e1d7072f6c9cfcaaa505e314307 +size 6646267 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Hewn_Stone_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Hewn_Stone_D.uasset new file mode 100644 index 0000000..1d9e119 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Hewn_Stone_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b41c37360bbd4100366f9f70337f0045b29bfc3a35eb7325e90d03fd8c184e1 +size 7376796 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Hewn_Stone_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Hewn_Stone_M.uasset new file mode 100644 index 0000000..f75a9bf --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Hewn_Stone_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69428e6a424a1a0524052e50b7266b73b89eb0b35a307d111b1e0b594f23d32b +size 6771724 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Hewn_Stone_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Hewn_Stone_N.uasset new file mode 100644 index 0000000..4595078 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Brick_Hewn_Stone_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:724271213b0fced0a2fa2ae812f070fedd592add2a63ead98804471a9dbeaa95 +size 8948214 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Burst_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Burst_M.uasset new file mode 100644 index 0000000..3acb768 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Burst_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90ac59f9d0d57613887da39523e07557689038fb455dd4e934ea98bf5199f382 +size 123288 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Bush_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Bush_D.uasset new file mode 100644 index 0000000..8437d31 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Bush_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b938fcd6fa2f33f011994454e945c2029114e977a44b834df5e07e603586257 +size 481332 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Bush_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Bush_N.uasset new file mode 100644 index 0000000..cd99430 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Bush_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44359d480f07e2ff25fc1dea4d65250737afa4d73395c882c4ec0d642ab0b8c3 +size 351932 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ceramic_Tile_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ceramic_Tile_M.uasset new file mode 100644 index 0000000..f9bf48c --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ceramic_Tile_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fa96b66150d87ec4a54bcccb5946a1421278a04f720272de945980e499d19b9 +size 275476 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ceramic_Tile_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ceramic_Tile_N.uasset new file mode 100644 index 0000000..55f8e53 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ceramic_Tile_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9e9cb0ac4766d1b050edcbb7f6ec15a7354a10b8df13c1547121a2e45fd19fb +size 233782 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Chair_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Chair_M.uasset new file mode 100644 index 0000000..ef6bedb --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Chair_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6486c196f80542ef1dd9b058f0ca1de9a05be34f1cc13ef2d4e379726488c13e +size 539588 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Chair_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Chair_N.uasset new file mode 100644 index 0000000..d6e200b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Chair_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62ca4539f06c12c4ffcfb2d3e3d059c8d9379ce6a7b9c388d8c3084b47516c90 +size 1922495 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Checker_Noise_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Checker_Noise_M.uasset new file mode 100644 index 0000000..1694883 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Checker_Noise_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89ad0bbce973bfb000760bc7e5d5af5c968970a2f4ff838b4997251d7322197e +size 134687 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Pebble_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Pebble_D.uasset new file mode 100644 index 0000000..7ac1beb --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Pebble_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f6258c8fc41deaf078df6780ba05ca0d82eee09912233202ac160810703e52a +size 11730856 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Pebble_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Pebble_M.uasset new file mode 100644 index 0000000..7439177 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Pebble_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83f100e71981f39cda279f585ff6eaa4fe880d309d87f09fcef3bc55c37ff63c +size 1274336 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Pebble_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Pebble_N.uasset new file mode 100644 index 0000000..c6866a7 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Pebble_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aff439802109893e1c0af4cd492033b54d6ff20441d049c3f99bb0244ef5d0ea +size 11790577 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Rough_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Rough_D.uasset new file mode 100644 index 0000000..d7725e3 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Rough_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46a663f5677bff0dafcad922400335269de036b93cf483724247926a57ee5074 +size 2888502 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Rough_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Rough_N.uasset new file mode 100644 index 0000000..07b0a3a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Rough_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e64b707962b97c42ac2cd37fe14013d87a07e48afe67b1495c24c59270c5914 +size 2617708 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Smooth_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Smooth_D.uasset new file mode 100644 index 0000000..4108c83 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Smooth_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69a12473b1cd94e0c0d3702f1abd58f0423393304e72a0265c77ff3ad0993ee5 +size 6532491 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Smooth_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Smooth_M.uasset new file mode 100644 index 0000000..1bb9638 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Smooth_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adbd4fcd12e92334148416cebbee9938c5f89cde1e2e139f8f6e476172191206 +size 5705923 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Smooth_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Smooth_N.uasset new file mode 100644 index 0000000..c64132a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_CobbleStone_Smooth_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5af71f25f0d2b429a300808fc1836652cb1fce9795cca2f64a3ca2fde85fc2d +size 8796793 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Grime_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Grime_D.uasset new file mode 100644 index 0000000..a7d3fab --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Grime_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6798aac85a9a686c6a6c5fc956b6f76346eba6fc2200b4f4227e0ea9b0e98375 +size 10650746 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Panels_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Panels_D.uasset new file mode 100644 index 0000000..83f39ed --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Panels_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6cc1e1e3803791f92ed99c9807f6165063e2b0bf2075c3f4821437dd5246a38 +size 8441488 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Panels_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Panels_N.uasset new file mode 100644 index 0000000..57687e0 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Panels_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a2d2573425bd7177b4dee1e91d1ff1ae03983db9b87685711582b73eb7ef9f1 +size 6547780 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Poured_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Poured_D.uasset new file mode 100644 index 0000000..30faa70 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Poured_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38af0336aa522c5835aae766d54ce2596793164421b90a67d56098798e7c4219 +size 11585076 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Poured_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Poured_N.uasset new file mode 100644 index 0000000..0360614 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Poured_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2855eccdb5ec7106250e1e38eb0f68789a140cd6c1a80325104e937e37d48681 +size 7435085 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Tiles_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Tiles_D.uasset new file mode 100644 index 0000000..4c74361 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Tiles_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:356e28b941e40f27de4745ceb135a97c95313884695140f340853c7911ccf9fd +size 4929050 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Tiles_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Tiles_M.uasset new file mode 100644 index 0000000..29ddf1e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Tiles_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d0a4ab623474c06c2787b76d25c66b32d8aa587cc9d99c7d2306b0f65b6a702 +size 5740835 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Tiles_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Tiles_N.uasset new file mode 100644 index 0000000..6f9f7dd --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Tiles_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d127d14c8bb438abc79b00417f3fa032baa55949f34c410d3fedd84d6919eec +size 6602390 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Tiles_Variation_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Tiles_Variation_M.uasset new file mode 100644 index 0000000..fac4da1 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Concrete_Tiles_Variation_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f126bec6a6c1e52c3c26d9f57250487f641a89f1558d112b0dacb64c1eda97e +size 6521 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Detail_Rocky_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Detail_Rocky_N.uasset new file mode 100644 index 0000000..5932182 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Detail_Rocky_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c677deccbe0ad92b089a28e63da2c50f5354861ff189fb465cbfb45b1fafcda6 +size 2798883 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Door_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Door_M.uasset new file mode 100644 index 0000000..ccca748 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Door_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1816807e795ab36ad16b0fc6d2ceb8c94badae605ebf77000bab1bc1006ac08e +size 555613 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Door_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Door_N.uasset new file mode 100644 index 0000000..4d63741 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Door_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c47b017bffcd8cd11f09d4a19b378c365e053d17ead804c39e3e0eb35dcc73a2 +size 1074435 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Dust_Particle_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Dust_Particle_D.uasset new file mode 100644 index 0000000..7bf767b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Dust_Particle_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:172fa478144c2b0b4d20df5a10bea4a97641c686b9f49da05aea7b4669698806 +size 20548 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Explosion_SubUV.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Explosion_SubUV.uasset new file mode 100644 index 0000000..3c022dc --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Explosion_SubUV.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54bd4308cd9195c1c4c177d9a57875bd73c73b5f27843421ce25f6d82c7be76b +size 2957540 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Fire_SubUV.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Fire_SubUV.uasset new file mode 100644 index 0000000..98ea6ae --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Fire_SubUV.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1fc6355dce68750de251fdd42dfeaaca4514945bad3d6141da2937ae24e94f1 +size 495113 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Fire_Tiled_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Fire_Tiled_D.uasset new file mode 100644 index 0000000..468da16 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Fire_Tiled_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:785975fbfa81ef0e0c94e97e2f941d5df7b74682e8cd0cb38f1764dd3db8be90 +size 500022 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Frame_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Frame_M.uasset new file mode 100644 index 0000000..a42e91f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Frame_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d046c8b25245f637ea4e087f01b4d40a58a210678de303f67c07ee55abd476d5 +size 534405 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Frame_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Frame_N.uasset new file mode 100644 index 0000000..a1e9af0 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Frame_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34f0830b05503a3ba496d56546a0140425f8e8ecaab371e8213492d4defd5c68 +size 1246201 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Gradinet_01.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Gradinet_01.uasset new file mode 100644 index 0000000..c1b5485 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Gradinet_01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9347fa6dd73d59f53fb39c454d19821a7a22e6879bb56018a3859777a497f870 +size 7415 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Grass_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Grass_D.uasset new file mode 100644 index 0000000..b27e9cd --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Grass_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47ba5414c8da7999dafb37e9c76bd0eceab97f394bea6f5c5adca5832adcd342 +size 11963236 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Grass_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Grass_N.uasset new file mode 100644 index 0000000..40b4f8d --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Grass_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19c42ca6b12658235c152998fceeb207b9a1119611ff1ef7f85cc4cc431d37f2 +size 11592596 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Gravel_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Gravel_D.uasset new file mode 100644 index 0000000..7a5aa75 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Gravel_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adf23999b628f5ae55a1635ce63e09924f23df5822955e86b3e1f0bfc49704ba +size 10606442 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Gravel_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Gravel_N.uasset new file mode 100644 index 0000000..31f6229 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Gravel_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94c35e1a2d16fa2fced8f966f061c08aa7a62c3ca41a5264e5e079eacc74e4c8 +size 7370852 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Moss_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Moss_N.uasset new file mode 100644 index 0000000..14686fe --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Ground_Moss_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18deaa6e9634beafecc3e2f7ccf16477bde02e2a3b488ecdccfe4ff3fc50dce1 +size 8341278 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Lamp_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Lamp_M.uasset new file mode 100644 index 0000000..786ceb2 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Lamp_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4a3a2b018a4fd96b7e934dc3c73d055f6f182bf3c15798b5a1b188b631c4082 +size 753129 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Lamp_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Lamp_N.uasset new file mode 100644 index 0000000..da95204 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Lamp_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61c55d75f215dae417ca438690e79f77badc612e2a5912a1abd7cb3368eb6fd2 +size 2059569 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_MacroVariation.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_MacroVariation.uasset new file mode 100644 index 0000000..ec7086e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_MacroVariation.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eeb1fb942acf8721eb4678223e160fd35668c507355fce4132f334c6284a7342 +size 10744761 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Aluminum_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Aluminum_D.uasset new file mode 100644 index 0000000..3c11d7f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Aluminum_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a6f5743eecc990c80391163b7fd93629d338a3a3a7c4a646988bd4612edca9d +size 9683327 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Copper_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Copper_D.uasset new file mode 100644 index 0000000..22358dd --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Copper_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f75f9fb29212ef71bc5ca3c710cf5d2cb5672697ed45f0c004d33a078ea9177 +size 8806136 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Gold_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Gold_D.uasset new file mode 100644 index 0000000..881ff7a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Gold_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bde39c57011fb1d814710d58cd475f2c6249ebeb68bbb2d2e13f2bd349ed9692 +size 8787638 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Gold_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Gold_N.uasset new file mode 100644 index 0000000..6c7a61d --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Gold_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd6500c67b3f17aa699bb6cb4b3f2da4038845f45fe38ecc9abe49b26f1be3e6 +size 2811609 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Rust_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Rust_D.uasset new file mode 100644 index 0000000..6e8b074 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Rust_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97244d9d61bb141a499125f6a21c719caa4e0917e513912aa6b139440d0ac01d +size 9290171 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Rust_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Rust_N.uasset new file mode 100644 index 0000000..c15a7f6 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Rust_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c63fd1a729903d1c48486998561550a9cf461e3bf154477504c16fd6c19b9511 +size 7473783 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Steel_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Steel_D.uasset new file mode 100644 index 0000000..985216b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Steel_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:553beb8d69dc61963c6566d2f18db4787ebdc76c43796dacf627118ee1b47569 +size 3572066 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Steel_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Steel_N.uasset new file mode 100644 index 0000000..675c5d3 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Metal_Steel_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf83e43c2a3c66c7222af7db215596de955cf09a7d9cd3d5bf645eba0078b9fd +size 4912078 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Perlin_Noise_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Perlin_Noise_M.uasset new file mode 100644 index 0000000..fc9a1de --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Perlin_Noise_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51d78b11e74d7da8b446d4552363ef0227a5b8a3812329740139e9f30002eac5 +size 7834324 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_RockMesh_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_RockMesh_M.uasset new file mode 100644 index 0000000..1ef71b4 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_RockMesh_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e349fe2778d117f94fbb047ea0ac19be770c895801a3fe7a814eaf9046881899 +size 2679820 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_RockMesh_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_RockMesh_N.uasset new file mode 100644 index 0000000..0670981 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_RockMesh_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01e5d9182e9a4010b5d3ad91968ca3db192d521d03b6cbffecb65897d39d7035 +size 5337671 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Basalt_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Basalt_D.uasset new file mode 100644 index 0000000..1639282 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Basalt_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7092b9f5b20d16e9058242ca91a4f7fb061f637f631f10cdddc7cd5674448efa +size 9299763 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Basalt_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Basalt_N.uasset new file mode 100644 index 0000000..07c670c --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Basalt_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1802155501e6982e68fa04c43bea492740b28b30ec52266516a0d1aae4c44578 +size 7804770 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Marble_Polished_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Marble_Polished_D.uasset new file mode 100644 index 0000000..550cd6f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Marble_Polished_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38e952a9d0f3696eb56521bf7e9ce525236da3bfb8d49d1d67b292a892568af1 +size 5288078 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Sandstone_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Sandstone_D.uasset new file mode 100644 index 0000000..20b40e6 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Sandstone_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82cf5b1f377f0bf932854bbb5df7b4d1b0cee804180ea1dcdaba0184736bc3ea +size 9170780 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Sandstone_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Sandstone_N.uasset new file mode 100644 index 0000000..fa37985 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Sandstone_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf856d55f538aa455cc834890d9f61cf90354d01e984cb78ea5e598509758322 +size 8366788 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Slate_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Slate_D.uasset new file mode 100644 index 0000000..569360e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Slate_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46947bc63546540839a3f3df00d9596142464dc35dc1e4abc5fb146cb8f19af1 +size 12264193 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Slate_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Slate_N.uasset new file mode 100644 index 0000000..1708abb --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Slate_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31dee677b3e69a3be40bfaadae0398ed14ff1154060ce13ff09618b8ea7ae359 +size 9608113 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Smooth_Granite_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Smooth_Granite_D.uasset new file mode 100644 index 0000000..6cc463f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Rock_Smooth_Granite_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e77e684ee82a9a1dc5c97ad0308cfff19987d5090cf4cd152830d37f25f14763 +size 8782207 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Shelf_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Shelf_M.uasset new file mode 100644 index 0000000..f5ad59f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Shelf_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c18efac4dcf4b88c5ecaac68e2d456b170d97ab7624e2a1fd7aadde8931c372a +size 645532 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Shelf_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Shelf_N.uasset new file mode 100644 index 0000000..53322a3 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Shelf_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec277e89e0ccdae7a554698699c311a5e0ee9428f240b87def1a8779bfe60ea7 +size 1634736 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Single_Tile_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Single_Tile_N.uasset new file mode 100644 index 0000000..a37ddbf --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Single_Tile_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:570549d4aaa657171fbfd8031af38dfca19b313dcdc5d8b1318a65d04e6cbbb8 +size 9172 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Smoke_SubUV.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Smoke_SubUV.uasset new file mode 100644 index 0000000..12c905f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Smoke_SubUV.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f8c2a528a4d367921b6108d95f79766e6d8bad57868a4546b70dbacec6065de +size 2588122 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Smoke_Tiled_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Smoke_Tiled_D.uasset new file mode 100644 index 0000000..9d6f986 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Smoke_Tiled_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dda54aea84888edb638319ae3fa00fbc334759bce3683680ff62daa61fa90d10 +size 56487 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Spark_Core.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Spark_Core.uasset new file mode 100644 index 0000000..614a8b6 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Spark_Core.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e994095844eafd889151bd94672120f0989644a45956d4f613aa3f4810d293b +size 136231 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Statue_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Statue_M.uasset new file mode 100644 index 0000000..f6cd4bd --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Statue_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:416b08a867057d7a19496f8dcad72b10db6b23d70aa36fd693c60cbc6d6349ed +size 542689 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Statue_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Statue_N.uasset new file mode 100644 index 0000000..e55a7c3 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Statue_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8810fd046b77a99192742daaa0f15dbf023327ffdcec86e66dce2b83dbf21a56 +size 504347 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_TableRound_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_TableRound_M.uasset new file mode 100644 index 0000000..734aadc --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_TableRound_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1d336121b0c08daa46e37300cafce3fa195a298b0dba7fedcc5bd4bd31aa90b +size 853624 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_TableRound_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_TableRound_N.uasset new file mode 100644 index 0000000..cb4c719 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_TableRound_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65470b69a6797b1520b26492f43f6a5cb75dc4e424bd2850454f00a8350dc983 +size 1539628 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Dot_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Dot_M.uasset new file mode 100644 index 0000000..7c72269 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Dot_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7b1ba3deb1cceb2f6ff0808262c5abdd74c8b9022dda4e51da8542559537034 +size 87410 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Dot_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Dot_N.uasset new file mode 100644 index 0000000..5195758 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Dot_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc3ad34c61120aea1112a6846856b3596655df3371168c831ec69475ce424a13 +size 179482 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Hex_Tile_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Hex_Tile_M.uasset new file mode 100644 index 0000000..a59e13a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Hex_Tile_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:454e8b9be045075a1aad36d9177e6a7d1da3e74966661cc8511a66e43c0ff0c4 +size 762987 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Hex_Tile_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Hex_Tile_N.uasset new file mode 100644 index 0000000..4fb62e1 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Hex_Tile_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:544320ffc2d7f4ea90f0226c1be6cb1f4baf455bc335a3a0ad1ff4b2354747d0 +size 463065 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Panel_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Panel_M.uasset new file mode 100644 index 0000000..2a4b188 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Panel_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21648f92e4001e53537be3b6cd310afc382d41c8b033a6aeb5bf83d5d9a7690e +size 949083 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Panel_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Panel_N.uasset new file mode 100644 index 0000000..0336dff --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Tech_Panel_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d021b18adec23ed357d0a8f29c958c1245ec7b21226c856195cca6f9f2143a39 +size 1857006 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Water_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Water_M.uasset new file mode 100644 index 0000000..a97725c --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Water_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:990a6e33285d33e53cb6956f1a7a30360c66477f9737ece4721aad36e07584cc +size 1651409 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Water_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Water_N.uasset new file mode 100644 index 0000000..65370c5 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Water_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d683c8f67d1a1639bcc2939f1fb23ee61289a0c3bbc44cb0db689a23348ba1bc +size 2064469 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Floor_Walnut_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Floor_Walnut_D.uasset new file mode 100644 index 0000000..3c72685 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Floor_Walnut_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c1683ee19b2be98916e3b0869ddb3cb6911a715fb2caff560f70ebdc25f1246 +size 4548392 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Floor_Walnut_M.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Floor_Walnut_M.uasset new file mode 100644 index 0000000..9690785 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Floor_Walnut_M.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12901c3b39ac9338e27c9ab0729188145690e9d361a0729371c7598f394eb835 +size 3923225 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Floor_Walnut_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Floor_Walnut_N.uasset new file mode 100644 index 0000000..5200275 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Floor_Walnut_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d77f652374989bbf21c449d9de8979c8c9856509caca2f823337abd466c005c +size 2859583 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Oak_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Oak_D.uasset new file mode 100644 index 0000000..0ab273e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Oak_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f55386ba1743f0a9e6c2a0580d08be6fdad756ac6d08ff496ffa2cde371e9f2 +size 6678190 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Oak_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Oak_N.uasset new file mode 100644 index 0000000..7af102d --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Oak_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90646b164c5018e2268e14831af332128202d18a9dad38d438754b27ddc1d723 +size 6244254 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Pine_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Pine_D.uasset new file mode 100644 index 0000000..31ddb19 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Pine_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b0f9afde310f6e49b2dd2dcb755926bd317c851111a2709397e15a7d571ee38 +size 9827131 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Pine_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Pine_N.uasset new file mode 100644 index 0000000..b53b21f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Pine_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5dafc4eed7a793910c95c4a9d1b1cf95f248589776ea7caa2f0667b7cd23a57e +size 3460305 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Walnut_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Walnut_D.uasset new file mode 100644 index 0000000..75fc93b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Walnut_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5756b81ce5abd2c786ec568be95ab9d255da0230e389c3c98d6ecf5faef8d990 +size 6485570 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Walnut_N.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Walnut_N.uasset new file mode 100644 index 0000000..7a28b52 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_Wood_Walnut_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68f5d2cf1d93100036006e7af9ab6306b0afabd8156b167606a7c48952f42949 +size 3834899 diff --git a/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_ground_Moss_D.uasset b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_ground_Moss_D.uasset new file mode 100644 index 0000000..62cfc6e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/StarterContent/Textures/T_ground_Moss_D.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1aef65bf6ef89648cb6ffd875e3ddb3747349bfecd2854583c874b2d7d180f29 +size 12978098 diff --git a/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/AISimulationGameMode.uasset b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/AISimulationGameMode.uasset new file mode 100644 index 0000000..36e7eb7 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/AISimulationGameMode.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ce2393d55d0f06c30faa5acacfe3d30765408a7c6766f00bab4f73a7bfc9d65 +size 304131 diff --git a/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset new file mode 100644 index 0000000..1bd7540 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c1c7c2061cbc4a30375a8c358116fc819d81e286aeb4d521bb724c87229ddf2 +size 1666698 diff --git a/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Blueprints/BP_ThirdPersonGameMode.uasset b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Blueprints/BP_ThirdPersonGameMode.uasset new file mode 100644 index 0000000..21e899d --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Blueprints/BP_ThirdPersonGameMode.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6bebcb902d3a1a4f5b7058fcdd04e1d9fe26dc93705d9eaa58f509ca901c8ee +size 14092 diff --git a/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Blueprints/SpectateAI.uasset b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Blueprints/SpectateAI.uasset new file mode 100644 index 0000000..74def3a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Blueprints/SpectateAI.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c45bb83de2a839dcf888eb23cf3ac7b1d7a01287dc7dee87d8d02c18ea4a507e +size 71273 diff --git a/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Blueprints/ThirdPersonController.uasset b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Blueprints/ThirdPersonController.uasset new file mode 100644 index 0000000..9fa9611 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Blueprints/ThirdPersonController.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bda4b459555682ac873ffb0e34de47fb7fb821094af179ae9b35efa136b3dfeb +size 790920 diff --git a/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_Dodge.uasset b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_Dodge.uasset new file mode 100644 index 0000000..8903ce4 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_Dodge.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75470d8c2f8f86d1ad31ef1650aec92c7a9745b6216569cffa6f68b7f30f4deb +size 1359 diff --git a/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_HeavyAttack.uasset b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_HeavyAttack.uasset new file mode 100644 index 0000000..e97c5c2 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_HeavyAttack.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f798c5ec7d7161c5ac98ce85ebd68c70d0af2036c9e78345c36c5fd155e306f1 +size 1389 diff --git a/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_LightAttack.uasset b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_LightAttack.uasset new file mode 100644 index 0000000..f80f7c1 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_LightAttack.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:151fa534106bc67cce4f43495089e27f90f69f84557fd4974e699a754c0931f2 +size 1389 diff --git a/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_Look.uasset b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_Look.uasset new file mode 100644 index 0000000..66b846e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_Look.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f31e273949de9b9798743f238b895cd422d9b14e77f73e11d993ff3527bbb735 +size 1454 diff --git a/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_Move.uasset b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_Move.uasset new file mode 100644 index 0000000..7b57d9b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_Move.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8ece438a653b29d1c64011ef11d4bd05245413994ecf4ad80ef4da1694b666f +size 1454 diff --git a/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_SpecialAttack.uasset b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_SpecialAttack.uasset new file mode 100644 index 0000000..cb2b4cd --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/Actions/IA_SpecialAttack.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38ace4aede5f68cd806d3bf2d9b8415d4277db50aa3bfd9eda9da668de194fdd +size 1399 diff --git a/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/IMC_Default.uasset b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/IMC_Default.uasset new file mode 100644 index 0000000..7c6abcd --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Input/IMC_Default.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77f93df00a3cc214993a7cb2ae9908481edfb5f4ec6909b558f3ce10077cbb7f +size 16004 diff --git a/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Maps/EVE.umap b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Maps/EVE.umap new file mode 100644 index 0000000000000000000000000000000000000000..35270c0f1e5c47ddbc749198895f2bc1b7e8f1d4 GIT binary patch literal 48892 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 literal 0 HcmV?d00001 diff --git a/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Maps/PVE.umap b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/Maps/PVE.umap new file mode 100644 index 0000000000000000000000000000000000000000..f589e37cfdd952e8a8f38af9966fb77bd3d272f5 GIT binary patch literal 41412 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 jykx!q=mio6Fd!hvjxvhd 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 literal 0 HcmV?d00001 diff --git a/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/WarningSphere.uasset b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/WarningSphere.uasset new file mode 100644 index 0000000..6a0b9b6 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/ThirdPerson/WarningSphere.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71cea32e7b2e4daf8f51edc326b4892892beefb81dd7b3b734bbc10298805c40 +size 28936 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/43/HYQWORMY4JDQ5X3OKZXFLC.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/43/HYQWORMY4JDQ5X3OKZXFLC.uasset new file mode 100644 index 0000000..b8c3e94 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/0/43/HYQWORMY4JDQ5X3OKZXFLC.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ee19a411c93433575bbc5f242543689e32d55dbbe6570e88b7a3bf2111052b3 +size 2448 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/AZ/A7GPT109Y6ZTTJD4A7TXER.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/AZ/A7GPT109Y6ZTTJD4A7TXER.uasset new file mode 100644 index 0000000..9dbe100 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/AZ/A7GPT109Y6ZTTJD4A7TXER.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7eea6251337f80ee118b398dd3f4510b44b51192c0f0df72fd066441a28edd6a +size 10766 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/Y9/Y4DCA3ZRI4ZCX9ZD1RDKXZ.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/Y9/Y4DCA3ZRI4ZCX9ZD1RDKXZ.uasset new file mode 100644 index 0000000..1715239 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/1/Y9/Y4DCA3ZRI4ZCX9ZD1RDKXZ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e896fe70c5ef3c30d716a2a1b7afe359b084f7b65b39192caed392e09ea0ef24 +size 13633 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/EY/87SHEJN5UBEAN2K5OV1G6R.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/EY/87SHEJN5UBEAN2K5OV1G6R.uasset new file mode 100644 index 0000000..617a82d --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/3/EY/87SHEJN5UBEAN2K5OV1G6R.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:487aff000c0bb4665369aa1400b560f129c464ff01f8653bd03369f0b68e65a5 +size 3718 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/4/LN/30UBDLYFFA5ZR7U4W4L4GG.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/4/LN/30UBDLYFFA5ZR7U4W4L4GG.uasset new file mode 100644 index 0000000..df8e14c --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/4/LN/30UBDLYFFA5ZR7U4W4L4GG.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93e5bd0f6ecc605aba378d69c2de9395f0edaeb1bee19ea5b7aec94bae0fd361 +size 4436 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/5/R1/TS5OQ5CRUWFZYL1ZQ7I416.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/5/R1/TS5OQ5CRUWFZYL1ZQ7I416.uasset new file mode 100644 index 0000000..ecc6528 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/5/R1/TS5OQ5CRUWFZYL1ZQ7I416.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:008afa33cf7ddb6e017318fd75d1c3e7613b82a5dd4a44aeab43b429c6340bfe +size 5061 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/J7/N10XDC9G27EMLS5AGZ6AVV.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/J7/N10XDC9G27EMLS5AGZ6AVV.uasset new file mode 100644 index 0000000..ec0972e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/J7/N10XDC9G27EMLS5AGZ6AVV.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23ea0eabd4f255df9b01f2f834dc7589891feee794f84a645840fd999fe75a3d +size 3378 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/YO/NG2R9BPZVA7ZDN0Z4VSTG6.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/YO/NG2R9BPZVA7ZDN0Z4VSTG6.uasset new file mode 100644 index 0000000..69ef4f2 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/6/YO/NG2R9BPZVA7ZDN0Z4VSTG6.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f89d00bf07450104247d5b291089d8bd0e1f1ad98f57b874e13c1ea33446abee +size 4283 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/7/P2/KI1QUDQD4R9U3CQWSUIT9C.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/7/P2/KI1QUDQD4R9U3CQWSUIT9C.uasset new file mode 100644 index 0000000..9133eb6 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/7/P2/KI1QUDQD4R9U3CQWSUIT9C.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ac422b5dd65afde237837139f19e63cc4aa2911f6c3ffdcaf2a6e9936d230d7 +size 13806 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/7/P7/2DG5NCMKLDUQREJ11HCKIC.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/7/P7/2DG5NCMKLDUQREJ11HCKIC.uasset new file mode 100644 index 0000000..9542bd2 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/7/P7/2DG5NCMKLDUQREJ11HCKIC.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15e47aa50eb94e234734eb951d46a5c7e3f61a1f650bb6e22054cc82d190c7b8 +size 13806 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/S1/DXUWD12MD3HRWVVXX076BY.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/S1/DXUWD12MD3HRWVVXX076BY.uasset new file mode 100644 index 0000000..f2d61be --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/S1/DXUWD12MD3HRWVVXX076BY.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:191a1915f3861231652ee3f812e823d9d8ed277fb731b08fbe06dca24f3c7696 +size 3364 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/ZB/279PSBZ71DZQ28VJB8U9LQ.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/ZB/279PSBZ71DZQ28VJB8U9LQ.uasset new file mode 100644 index 0000000..b82d38a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/8/ZB/279PSBZ71DZQ28VJB8U9LQ.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:282344e312dbd22387f84701248b2db2d7b707b87cbf207312591ec14dca9cbe +size 13806 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/DE/SWSI13675DVYIZ0N4NF7Y3.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/DE/SWSI13675DVYIZ0N4NF7Y3.uasset new file mode 100644 index 0000000..2579e4b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/DE/SWSI13675DVYIZ0N4NF7Y3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bb3ad71c6bde272c9bee6d6efea96c59d8d67843548504a9053834f8008d283 +size 3866 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/SY/Z4CTQ4LG3YV10EKPD0UE8Q.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/SY/Z4CTQ4LG3YV10EKPD0UE8Q.uasset new file mode 100644 index 0000000..f11a8a5 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/D/SY/Z4CTQ4LG3YV10EKPD0UE8Q.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:995cdd512dce13ac9558af165778c54f71b12b16898400599f86fa6ca30444ed +size 849 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/55/2A05V9ECJEXL9S32YHMZ2W.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/55/2A05V9ECJEXL9S32YHMZ2W.uasset new file mode 100644 index 0000000..920dbb4 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/55/2A05V9ECJEXL9S32YHMZ2W.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9fc9defc573c8849991664101d9b1e5173b76d62615ff59e719d8bfad0b5dab +size 13806 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/FR/LBG6LPN5JCL3FMVSI2CK6R.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/FR/LBG6LPN5JCL3FMVSI2CK6R.uasset new file mode 100644 index 0000000..b59459f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalActors__/ThirdPerson/Maps/ThirdPersonMap/E/FR/LBG6LPN5JCL3FMVSI2CK6R.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdd4d1f61d282938625bce254ecd9b6dbb344fb5f06c2f92c62b660319ead582 +size 2580 diff --git a/ai_fighter/AI_Fight_Sim/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/4/VW/TY7TSUER9KKGHX2BMKSL0L.uasset b/ai_fighter/AI_Fight_Sim/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/4/VW/TY7TSUER9KKGHX2BMKSL0L.uasset new file mode 100644 index 0000000..226bcbb --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Content/__ExternalObjects__/ThirdPerson/Maps/ThirdPersonMap/4/VW/TY7TSUER9KKGHX2BMKSL0L.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6076afd5293482c4f21d2acdf64fd0ee7f7ae8aa2707d774c567da6d93955b5f +size 2011 diff --git a/ai_fighter/AI_Fight_Sim/Platforms/HoloLens/Config/HoloLensEngine.ini b/ai_fighter/AI_Fight_Sim/Platforms/HoloLens/Config/HoloLensEngine.ini new file mode 100644 index 0000000..7a24085 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Platforms/HoloLens/Config/HoloLensEngine.ini @@ -0,0 +1,32 @@ + + +[/Script/HoloLensPlatformEditor.HoloLensTargetSettings] +bBuildForEmulation=False +bBuildForDevice=True +bUseNameForLogo=True +bBuildForRetailWindowsStore=False +bAutoIncrementVersion=False +bShouldCreateAppInstaller=False +AppInstallerInstallationURL= +HoursBetweenUpdateChecks=0 +bEnablePIXProfiling=False +TileBackgroundColor=(B=64,G=0,R=0,A=255) +SplashScreenBackgroundColor=(B=64,G=0,R=0,A=255) ++PerCultureResources=(CultureId="",Strings=(PackageDisplayName="",PublisherDisplayName="",PackageDescription="",ApplicationDisplayName="",ApplicationDescription=""),Images=()) +TargetDeviceFamily=Windows.Holographic +MinimumPlatformVersion=10.0.18362.0 +MaximumPlatformVersionTested=10.0.19041.0 +MaxTrianglesPerCubicMeter=500.000000 +SpatialMeshingVolumeSize=20.000000 +CompilerVersion=Default +Windows10SDKVersion=10.0.18362.0 ++CapabilityList=internetClientServer ++CapabilityList=privateNetworkClientServer ++Uap2CapabilityList=spatialPerception +bSetDefaultCapabilities=False +SpatializationPlugin= +SourceDataOverridePlugin= +ReverbPlugin= +OcclusionPlugin= +SoundCueCookQualityIndex=-1 + diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/NeuralNetworkAIController.uplugin b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/NeuralNetworkAIController.uplugin new file mode 100644 index 0000000..27cdcf5 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/NeuralNetworkAIController.uplugin @@ -0,0 +1,24 @@ +{ + "FileVersion": 3, + "Version": 1, + "VersionName": "1.0", + "FriendlyName": "NeuralNetworkAIController", + "Description": "", + "Category": "Other", + "CreatedBy": "Jacob VanDomelen", + "CreatedByURL": "", + "DocsURL": "", + "MarketplaceURL": "", + "SupportURL": "", + "CanContainContent": true, + "IsBetaVersion": false, + "IsExperimentalVersion": false, + "Installed": false, + "Modules": [ + { + "Name": "NeuralNetworkAIController", + "Type": "Runtime", + "LoadingPhase": "PostEngineInit" + } + ] +} \ No newline at end of file diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Resources/Icon128.png b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Resources/Icon128.png new file mode 100644 index 0000000..26245f6 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Resources/Icon128.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7239efaeefbd82de33ebe18518e50de075ea4188a468a9e4991396433d2275f +size 12699 diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/NeuralNetworkAIController.Build.cs b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/NeuralNetworkAIController.Build.cs new file mode 100644 index 0000000..9a5dd92 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/NeuralNetworkAIController.Build.cs @@ -0,0 +1,59 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +using System.IO; +using UnrealBuildTool; + +public class NeuralNetworkAIController : ModuleRules +{ + public NeuralNetworkAIController(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PublicIncludePaths.AddRange( + new string[] { + // ... add public include paths required here ... + Path.Combine(ModuleDirectory, "ThirdParty", "FANN", "include") + } + ); + PublicSystemLibraryPaths.Add(Path.Combine(ModuleDirectory, "ThirdParty", "FANN", "include")); + + + PrivateIncludePaths.AddRange( + new string[] { + // ... add other private include paths required here ... + } + ); + + + PublicDependencyModuleNames.AddRange( + new string[] + { + "Core", + // ... add other public dependencies that you statically link with here ... + } + ); + + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "CoreUObject", + "Engine", + "Slate", + "SlateCore", + // ... add private dependencies that you statically link with here ... + } + ); + + + DynamicallyLoadedModuleNames.AddRange( + new string[] + { + // ... add any modules that your module loads dynamically here ... + //Path.Combine(ModuleDirectory, "ThirdParty", "FANN", "bin", "fann.dll") + } + ); + + PublicAdditionalLibraries.Add(Path.Combine(ModuleDirectory, "ThirdParty", "FANN", "lib", "fann.lib")); + } +} diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/Private/FannAIController.cpp b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/Private/FannAIController.cpp new file mode 100644 index 0000000..a678121 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/Private/FannAIController.cpp @@ -0,0 +1,91 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "FannAIController.h" +#include "string" +#include "fann.h" + +UFannAIController::UFannAIController() : NeuralNetwork(nullptr) +{ +} + +UFannAIController::~UFannAIController() +{ + if (NeuralNetwork != nullptr) + { + // Clean up the neural network when the handler is destroyed + fann_destroy(NeuralNetwork); + } +} + +void UFannAIController::LoadNeuralNetworkFromFile(const FString& FilePath) +{ + std::string FilePathSTD = TCHAR_TO_UTF8(*FilePath); + + // Attempt to load the neural network + NeuralNetwork = fann_create_from_file(FilePathSTD.c_str()); + + if (NeuralNetwork) { + // Neural network loaded successfully, print a message + UE_LOG(LogTemp, Display, TEXT("Neural network loaded successfully.")) + } + else { + // Failed to load neural network, print an error message + UE_LOG(LogTemp, Error, TEXT("Failed to load neural network.")) + } +} + +FNeuralNetworkOutput UFannAIController::RunNeuralNetwork(const FNeuralNetworkInput& Input) +{ + FNeuralNetworkOutput Output; + + if (NeuralNetwork == nullptr) + { + UE_LOG(LogTemp, Warning, TEXT("NeuralNetwork is not loaded.")); + return Output; // Return empty output if neural network is not loaded + } + + // Prepare the input array for the neural network based on the input struct + float inputArray[] = { + Input.Distance, + Input.EnemyOrientationVertical, + Input.EnemyOrientationHorizontal, + Input.EnemyCharacterWorldOrientation, + Input.CameraWorldOrientation, + Input.CharacterWorldOrientation, + Input.EnemyPerformingAction, + Input.EnemyRolling, + Input.EnemyKnockback, + Input.EnemyLightAttack, + Input.EnemyHeavyAttack, + Input.EnemySpecialAttack, + Input.PlayerRolling, + Input.PlayerKnockback, + Input.PlayerLightAttack, + Input.PlayerHeavyAttack, + Input.PlayerSpecialAttack, + Input.PlayerStamina, + Input.PlayerLightAttackLimit, + Input.PlayerHeavyAttackLimit, + Input.PlayerSpecialAttackLimit, + Input.Time + }; + + // Assuming fann_run returns a pointer to the output array from the neural network + float* outputArray = fann_run(NeuralNetwork, inputArray); + + // Map the neural network's output back to the FNeuralNetworkOutput struct + // Ensure the size of outputArray matches the expected output size + Output.VerticalMovement = outputArray[0]; + Output.HorizontalMovement = outputArray[1]; + Output.RotationYaw = outputArray[2]; + Output.RotationPitch = outputArray[3]; + Output.LightAttack = outputArray[4]; + Output.HeavyAttack = outputArray[5]; + Output.SpecialAttack = outputArray[6]; + Output.Roll = outputArray[7]; + + return Output; +} + + diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/Private/NeuralNetworkAIController.cpp b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/Private/NeuralNetworkAIController.cpp new file mode 100644 index 0000000..20db679 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/Private/NeuralNetworkAIController.cpp @@ -0,0 +1,18 @@ +#include "NeuralNetworkAIController.h" +#include "Modules/ModuleManager.h" + +#define LOCTEXT_NAMESPACE "FNeuralNetworkAIControllerModule" + +void FNeuralNetworkAIControllerModule::StartupModule() +{ + // Initialization logic here +} + +void FNeuralNetworkAIControllerModule::ShutdownModule() +{ + // Cleanup logic here +} + +#undef LOCTEXT_NAMESPACE + +IMPLEMENT_MODULE(FNeuralNetworkAIControllerModule, NeuralNetworkAIController) \ No newline at end of file diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/Public/FannAIController.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/Public/FannAIController.h new file mode 100644 index 0000000..74bf275 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/Public/FannAIController.h @@ -0,0 +1,142 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "UObject/NoExportTypes.h" +#include "fann.h" +#include "FannAIController.generated.h" + +USTRUCT(BlueprintType) +struct FNeuralNetworkInput +{ + GENERATED_BODY() + +public: + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float Distance; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float EnemyOrientationVertical; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float EnemyOrientationHorizontal; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float EnemyCharacterWorldOrientation; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float CameraWorldOrientation; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float CharacterWorldOrientation; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float EnemyPerformingAction; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float EnemyRolling; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float EnemyKnockback; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float EnemyLightAttack; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float EnemyHeavyAttack; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float EnemySpecialAttack; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float PlayerRolling; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float PlayerKnockback; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float PlayerLightAttack; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float PlayerHeavyAttack; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float PlayerSpecialAttack; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float PlayerStamina; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float PlayerLightAttackLimit; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float PlayerHeavyAttackLimit; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float PlayerSpecialAttackLimit; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float Time; + + // Constructor for easy initialization + FNeuralNetworkInput() {} +}; + +USTRUCT(BlueprintType) +struct FNeuralNetworkOutput +{ + GENERATED_BODY() + +public: + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float VerticalMovement; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float HorizontalMovement; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float RotationYaw; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float RotationPitch; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float LightAttack; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float HeavyAttack; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float SpecialAttack; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Neural Network") + float Roll; + + // Constructor for easy initialization + FNeuralNetworkOutput() {} +}; + +/** + * + */ +UCLASS(Blueprintable) +class NEURALNETWORKAICONTROLLER_API UFannAIController : public UObject +{ + GENERATED_BODY() + +public: + UFannAIController(); + virtual ~UFannAIController(); + + // Load a neural network from a file + UFUNCTION(BlueprintCallable, Category="Neural Network") + void LoadNeuralNetworkFromFile(const FString& FilePath); + + UFUNCTION(BlueprintCallable, Category = "Neural Network") + FNeuralNetworkOutput RunNeuralNetwork(const FNeuralNetworkInput& Input); + +private: + struct fann* NeuralNetwork; + +}; diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/Public/NeuralNetworkAIController.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/Public/NeuralNetworkAIController.h new file mode 100644 index 0000000..0251b0f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/Public/NeuralNetworkAIController.h @@ -0,0 +1,10 @@ +#pragma once + +#include "Modules/ModuleManager.h" + +class FNeuralNetworkAIControllerModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void ShutdownModule() override; +}; diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/doublefann.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/doublefann.h new file mode 100644 index 0000000..247779f --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/doublefann.h @@ -0,0 +1,33 @@ +/* +Fast Artificial Neural Network Library (fann) +Copyright (C) 2003-2016 Steffen Nissen (steffen.fann@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef __doublefann_h__ +#define __doublefann_h__ + +typedef double fann_type; + +#undef DOUBLEFANN +#define DOUBLEFANN +#define FANNPRINTF "%.20e" +#define FANNSCANF "%le" + +#define FANN_INCLUDE +#include "fann.h" + +#endif diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann.h new file mode 100644 index 0000000..5d4c0b7 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann.h @@ -0,0 +1,661 @@ +/* +Fast Artificial Neural Network Library (fann) +Copyright (C) 2003-2016 Steffen Nissen (steffen.fann@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +/* This file defines the user interface to the fann library. + It is included from fixedfann.h, floatfann.h and doublefann.h and should + NOT be included directly. If included directly it will react as if + floatfann.h was included. +*/ + +/* Section: FANN Creation/Execution + + The FANN library is designed to be very easy to use. + A feedforward ann can be created by a simple function, while + other ANNs can be created just as easily. The ANNs can be trained by + and executed by . + + All of this can be done without much knowledge of the internals of ANNs, although the ANNs + created will still be powerful and effective. If you have more knowledge about ANNs, and desire + more control, almost every part of the ANNs can be parametrized to create specialized and highly + optimal ANNs. + */ +/* Group: Creation, Destruction & Execution */ + +#ifndef FANN_INCLUDE +/* just to allow for inclusion of fann.h in normal stuations where only floats are needed */ +#ifdef FIXEDFANN +#include "fixedfann.h" +#else +#include "floatfann.h" +#endif /* FIXEDFANN */ + +#else + +/* COMPAT_TIME REPLACEMENT */ +#ifndef _WIN32 +#include +#else /* _WIN32 */ +#if !defined(_MSC_EXTENSIONS) && !defined(_INC_WINDOWS) +extern unsigned long __stdcall GetTickCount(void); + +#else /* _MSC_EXTENSIONS */ +#define WIN32_LEAN_AND_MEAN +#include +#endif /* _MSC_EXTENSIONS */ +#endif /* _WIN32 */ + +#ifndef __fann_h__ +#define __fann_h__ + +#ifdef __cplusplus +extern "C" { + +#ifndef __cplusplus +} /* to fool automatic indention engines */ +#endif +#endif /* __cplusplus */ + +#ifndef NULL +#define NULL 0 +#endif /* NULL */ + +/* ----- Macros used to define DLL external entrypoints ----- */ +/* + DLL Export, import and calling convention for Windows. + Only defined for Microsoft VC++ FANN_EXTERNAL indicates + that a function will be exported/imported from a dll + FANN_API ensures that the DLL calling convention + will be used for a function regardless of the calling convention + used when compiling. + + For a function to be exported from a DLL its prototype and + declaration must be like this: + FANN_EXTERNAL void FANN_API function(char *argument) + + The following ifdef block is a way of creating macros which + make exporting from a DLL simple. All files within a DLL are + compiled with the FANN_DLL_EXPORTS symbol defined on the + command line. This symbol should not be defined on any project + that uses this DLL. This way any other project whose source + files include this file see FANN_EXTERNAL functions as being imported + from a DLL, whereas a DLL sees symbols defined with this + macro as being exported which makes calls more efficient. + The __stdcall calling convention is used for functions in a + windows DLL. + + The callback functions for fann_set_callback must be declared as FANN_API + so the DLL and the application program both use the same + calling convention. +*/ + +/* + The following sets the default for MSVC++ 2003 or later to use + the fann dll's. To use a lib or fixedfann.c, floatfann.c or doublefann.c + with those compilers FANN_NO_DLL has to be defined before + including the fann headers. + The default for previous MSVC compilers such as VC++ 6 is not + to use dll's. To use dll's FANN_USE_DLL has to be defined before + including the fann headers. +*/ +#if defined(_MSC_VER) && (_MSC_VER > 1300) +#ifndef FANN_NO_DLL +#define FANN_USE_DLL +#endif /* FANN_USE_LIB */ +#endif /* _MSC_VER */ +#if defined(_MSC_VER) && (defined(FANN_USE_DLL) || defined(FANN_DLL_EXPORTS)) +#ifdef FANN_DLL_EXPORTS +#define FANN_EXTERNAL __declspec(dllexport) +#else /* */ +#define FANN_EXTERNAL __declspec(dllimport) +#endif /* FANN_DLL_EXPORTS*/ +#define FANN_API __stdcall +#else /* */ +#define FANN_EXTERNAL +#define FANN_API +#endif /* _MSC_VER */ +/* ----- End of macros used to define DLL external entrypoints ----- */ + +#include "fann_error.h" +#include "fann_activation.h" +#include "fann_data.h" +#include "fann_internal.h" +#include "fann_train.h" +#include "fann_cascade.h" +#include "fann_io.h" + +/* Function: fann_create_standard + + Creates a standard fully connected backpropagation neural network. + + There will be a bias neuron in each layer (except the output layer), + and this bias neuron will be connected to all neurons in the next layer. + When running the network, the bias nodes always emits 1. + + To destroy a use the function. + + Parameters: + num_layers - The total number of layers including the input and the output layer. + ... - Integer values determining the number of neurons in each layer starting with + the input layer and ending with the output layer. + + Returns: + A pointer to the newly created . + + Example: + > // Creating an ANN with 2 input neurons, 1 output neuron, + > // and two hidden layers with 8 and 9 neurons + > struct fann *ann = fann_create_standard(4, 2, 8, 9, 1); + + See also: + , , + + This function appears in FANN >= 2.0.0. +*/ +FANN_EXTERNAL struct fann *FANN_API fann_create_standard(unsigned int num_layers, ...); + +/* Function: fann_create_standard_array + Just like , but with an array of layer sizes + instead of individual parameters. + + Example: + > // Creating an ANN with 2 input neurons, 1 output neuron, + > // and two hidden layers with 8 and 9 neurons + > unsigned int layers[4] = {2, 8, 9, 1}; + > struct fann *ann = fann_create_standard_array(4, layers); + + See also: + , , + + This function appears in FANN >= 2.0.0. +*/ +FANN_EXTERNAL struct fann *FANN_API fann_create_standard_array(unsigned int num_layers, + const unsigned int *layers); + +/* Function: fann_create_sparse + + Creates a standard backpropagation neural network, which is not fully connected. + + Parameters: + connection_rate - The connection rate controls how many connections there will be in + the network. If the connection rate is set to 1, the network will be fully connected, but if it + is set to 0.5 only half of the connections will be set. A connection rate of 1 will yield the + same result as num_layers - The total number of layers including the input + and the output layer. + ... - Integer values determining the number of neurons in each layer starting with + the input layer and ending with the output layer. + + Returns: + A pointer to the newly created . + + See also: + , , + + This function appears in FANN >= 2.0.0. +*/ +FANN_EXTERNAL struct fann *FANN_API fann_create_sparse(float connection_rate, + unsigned int num_layers, ...); + +/* Function: fann_create_sparse_array + Just like , but with an array of layer sizes + instead of individual parameters. + + See for a description of the parameters. + + See also: + , , + + This function appears in FANN >= 2.0.0. +*/ +FANN_EXTERNAL struct fann *FANN_API fann_create_sparse_array(float connection_rate, + unsigned int num_layers, + const unsigned int *layers); + +/* Function: fann_create_shortcut + + Creates a standard backpropagation neural network, which is fully connected and which + also has shortcut connections. + + Shortcut connections are connections that skip layers. A fully connected network with + shortcut connections is a network where all neurons are connected to all neurons in later layers. + Including direct connections from the input layer to the output layer. + + See for a description of the parameters. + + See also: + , , , + + This function appears in FANN >= 2.0.0. +*/ +FANN_EXTERNAL struct fann *FANN_API fann_create_shortcut(unsigned int num_layers, ...); + +/* Function: fann_create_shortcut_array + Just like , but with an array of layer sizes + instead of individual parameters. + + See for a description of the parameters. + + See also: + , , + + This function appears in FANN >= 2.0.0. +*/ +FANN_EXTERNAL struct fann *FANN_API fann_create_shortcut_array(unsigned int num_layers, + const unsigned int *layers); +/* Function: fann_destroy + Destroys the entire network, properly freeing all the associated memory. + + This function appears in FANN >= 1.0.0. +*/ +FANN_EXTERNAL void FANN_API fann_destroy(struct fann *ann); + +/* Function: fann_copy + Creates a copy of a fann structure. + + Data in the user data is not copied, but the user data pointer is copied. + + This function appears in FANN >= 2.2.0. +*/ +FANN_EXTERNAL struct fann *FANN_API fann_copy(struct fann *ann); + +/* Function: fann_run + Will run input through the neural network, returning an array of outputs, the number of + which being equal to the number of neurons in the output layer. + + See also: + + + This function appears in FANN >= 1.0.0. +*/ +FANN_EXTERNAL fann_type *FANN_API fann_run(struct fann *ann, fann_type *input); + +/* Function: fann_randomize_weights + Give each connection a random weight between *min_weight* and *max_weight* + + From the beginning the weights are random between -0.1 and 0.1. + + See also: + + + This function appears in FANN >= 1.0.0. +*/ +FANN_EXTERNAL void FANN_API fann_randomize_weights(struct fann *ann, fann_type min_weight, + fann_type max_weight); + +/* Function: fann_init_weights + Initialize the weights using Widrow + Nguyen's algorithm. + + This function behaves similarly to fann_randomize_weights. It will use the algorithm + developed by Derrick Nguyen and Bernard Widrow to set the weights in such a way as to speed up + training. This technique is not always successful, and in some cases can be less efficient than a + purely random initialization. + + The algorithm requires access to the range of the input data (ie, largest and smallest + input), and therefore accepts a second argument, data, which is the training data that will be + used to train the network. + + See also: + , + + This function appears in FANN >= 1.1.0. +*/ +FANN_EXTERNAL void FANN_API fann_init_weights(struct fann *ann, struct fann_train_data *train_data); + +/* Function: fann_print_connections + Will print the connections of the ann in a compact matrix, for easy viewing of the internals + of the ann. + + The output from fann_print_connections on a small (2 2 1) network trained on the xor problem + >Layer / Neuron 012345 + >L 1 / N 3 BBa... + >L 1 / N 4 BBA... + >L 1 / N 5 ...... + >L 2 / N 6 ...BBA + >L 2 / N 7 ...... + + This network has five real neurons and two bias neurons. This gives a total of seven neurons + named from 0 to 6. The connections between these neurons can be seen in the matrix. "." is a + place where there is no connection, while a character tells how strong the connection is on + a scale from a-z. The two real neurons in the hidden layer (neuron 3 and 4 in layer 1) have + connections from the three neurons in the previous layer as is visible in the first two + lines. The output neuron (6) has connections from the three neurons in the hidden layer 3 - 5 as + is visible in the fourth line. + + To simplify the matrix output neurons are not visible as neurons that connections can come + from, and input and bias neurons are not visible as neurons that connections can go to. + + This function appears in FANN >= 1.2.0. +*/ +FANN_EXTERNAL void FANN_API fann_print_connections(struct fann *ann); + +/* Group: Parameters */ +/* Function: fann_print_parameters + + Prints all of the parameters and options of the ANN + + This function appears in FANN >= 1.2.0. +*/ +FANN_EXTERNAL void FANN_API fann_print_parameters(struct fann *ann); + +/* Function: fann_get_num_input + + Get the number of input neurons. + + This function appears in FANN >= 1.0.0. +*/ +FANN_EXTERNAL unsigned int FANN_API fann_get_num_input(struct fann *ann); + +/* Function: fann_get_num_output + + Get the number of output neurons. + + This function appears in FANN >= 1.0.0. +*/ +FANN_EXTERNAL unsigned int FANN_API fann_get_num_output(struct fann *ann); + +/* Function: fann_get_total_neurons + + Get the total number of neurons in the entire network. This number does also include the + bias neurons, so a 2-4-2 network has 2+4+2 +2(bias) = 10 neurons. + + This function appears in FANN >= 1.0.0. +*/ +FANN_EXTERNAL unsigned int FANN_API fann_get_total_neurons(struct fann *ann); + +/* Function: fann_get_total_connections + + Get the total number of connections in the entire network. + + This function appears in FANN >= 1.0.0. +*/ +FANN_EXTERNAL unsigned int FANN_API fann_get_total_connections(struct fann *ann); + +/* Function: fann_get_network_type + + Get the type of neural network it was created as. + + Parameters: + ann - A previously created neural network structure of + type pointer. + + Returns: + The neural network type from enum + + See Also: + + + This function appears in FANN >= 2.1.0 +*/ +FANN_EXTERNAL enum fann_nettype_enum FANN_API fann_get_network_type(struct fann *ann); + +/* Function: fann_get_connection_rate + + Get the connection rate used when the network was created + + Parameters: + ann - A previously created neural network structure of + type pointer. + + Returns: + The connection rate + + This function appears in FANN >= 2.1.0 +*/ +FANN_EXTERNAL float FANN_API fann_get_connection_rate(struct fann *ann); + +/* Function: fann_get_num_layers + + Get the number of layers in the network + + Parameters: + ann - A previously created neural network structure of + type pointer. + + Returns: + The number of layers in the neural network + + Example: + > // Obtain the number of layers in a neural network + > struct fann *ann = fann_create_standard(4, 2, 8, 9, 1); + > unsigned int num_layers = fann_get_num_layers(ann); + + This function appears in FANN >= 2.1.0 +*/ +FANN_EXTERNAL unsigned int FANN_API fann_get_num_layers(struct fann *ann); + +/*Function: fann_get_layer_array + + Get the number of neurons in each layer in the network. + + Bias is not included so the layers match the fann_create functions. + + Parameters: + ann - A previously created neural network structure of + type pointer. + + The layers array must be preallocated to at least + sizeof(unsigned int) * fann_num_layers() long. + + This function appears in FANN >= 2.1.0 +*/ +FANN_EXTERNAL void FANN_API fann_get_layer_array(struct fann *ann, unsigned int *layers); + +/* Function: fann_get_bias_array + + Get the number of bias in each layer in the network. + + Parameters: + ann - A previously created neural network structure of + type pointer. + + The bias array must be preallocated to at least + sizeof(unsigned int) * fann_num_layers() long. + + This function appears in FANN >= 2.1.0 +*/ +FANN_EXTERNAL void FANN_API fann_get_bias_array(struct fann *ann, unsigned int *bias); + +/* Function: fann_get_connection_array + + Get the connections in the network. + + Parameters: + ann - A previously created neural network structure of + type pointer. + + The connections array must be preallocated to at least + sizeof(struct fann_connection) * fann_get_total_connections() long. + + This function appears in FANN >= 2.1.0 +*/ +FANN_EXTERNAL void FANN_API fann_get_connection_array(struct fann *ann, + struct fann_connection *connections); + +/* Function: fann_set_weight_array + + Set connections in the network. + + Parameters: + ann - A previously created neural network structure of + type pointer. + + Only the weights can be changed, connections and weights are ignored + if they do not already exist in the network. + + The array must have sizeof(struct fann_connection) * num_connections size. + + This function appears in FANN >= 2.1.0 +*/ +FANN_EXTERNAL void FANN_API fann_set_weight_array(struct fann *ann, + struct fann_connection *connections, + unsigned int num_connections); + +/* Function: fann_set_weight + + Set a connection in the network. + + Parameters: + ann - A previously created neural network structure of + type pointer. + + Only the weights can be changed. The connection/weight is + ignored if it does not already exist in the network. + + This function appears in FANN >= 2.1.0 +*/ +FANN_EXTERNAL void FANN_API fann_set_weight(struct fann *ann, unsigned int from_neuron, + unsigned int to_neuron, fann_type weight); + +/* Function: fann_get_weights + + Get all the network weights. + + Parameters: + ann - A previously created neural network structure of + type pointer. + weights - A fann_type pointer to user data. It is the responsibility + of the user to allocate sufficient space to store all the weights. + + This function appears in FANN >= x.y.z +*/ +FANN_EXTERNAL void FANN_API fann_get_weights(struct fann *ann, fann_type *weights); + +/* Function: fann_set_weights + + Set network weights. + + Parameters: + ann - A previously created neural network structure of + type pointer. + weights - A fann_type pointer to user data. It is the responsibility + of the user to make the weights array sufficient long + to store all the weights. + + This function appears in FANN >= x.y.z +*/ +FANN_EXTERNAL void FANN_API fann_set_weights(struct fann *ann, fann_type *weights); + +/* Function: fann_set_user_data + + Store a pointer to user defined data. The pointer can be + retrieved with for example in a + callback. It is the user's responsibility to allocate and + deallocate any data that the pointer might point to. + + Parameters: + ann - A previously created neural network structure of + type pointer. + user_data - A void pointer to user defined data. + + This function appears in FANN >= 2.1.0 +*/ +FANN_EXTERNAL void FANN_API fann_set_user_data(struct fann *ann, void *user_data); + +/* Function: fann_get_user_data + + Get a pointer to user defined data that was previously set + with . It is the user's responsibility to + allocate and deallocate any data that the pointer might point to. + + Parameters: + ann - A previously created neural network structure of + type pointer. + + Returns: + A void pointer to user defined data. + + This function appears in FANN >= 2.1.0 +*/ +FANN_EXTERNAL void *FANN_API fann_get_user_data(struct fann *ann); + +/* Function: fann_disable_seed_rand + + Disables the automatic random generator seeding that happens in FANN. + + Per default FANN will always seed the random generator when creating a new network, + unless FANN_NO_SEED is defined during compilation of the library. This method can + disable this at runtime. + + This function appears in FANN >= 2.3.0 +*/ +FANN_EXTERNAL void FANN_API fann_disable_seed_rand(); + +/* Function: fann_enable_seed_rand + + Enables the automatic random generator seeding that happens in FANN. + + Per default FANN will always seed the random generator when creating a new network, + unless FANN_NO_SEED is defined during compilation of the library. This method can + disable this at runtime. + + This function appears in FANN >= 2.3.0 +*/ +FANN_EXTERNAL void FANN_API fann_enable_seed_rand(); + +#ifdef FIXEDFANN + +/* Function: fann_get_decimal_point + + Returns the position of the decimal point in the ann. + + This function is only available when the ANN is in fixed point mode. + + The decimal point is described in greater detail in the tutorial . + + See also: + , , , + + + This function appears in FANN >= 1.0.0. +*/ +FANN_EXTERNAL unsigned int FANN_API fann_get_decimal_point(struct fann *ann); + +/* Function: fann_get_multiplier + + returns the multiplier that fix point data is multiplied with. + + This function is only available when the ANN is in fixed point mode. + + The multiplier is the used to convert between floating point and fixed point notation. + A floating point number is multiplied with the multiplier in order to get the fixed point + number and visa versa. + + The multiplier is described in greater detail in the tutorial . + + See also: + , , , + + + This function appears in FANN >= 1.0.0. +*/ +FANN_EXTERNAL unsigned int FANN_API fann_get_multiplier(struct fann *ann); + +#endif /* FIXEDFANN */ + +#ifdef __cplusplus +#ifndef __cplusplus +/* to fool automatic indention engines */ +{ + +#endif +} +#endif /* __cplusplus */ + +#endif /* __fann_h__ */ + +#endif /* NOT FANN_INCLUDE */ diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_activation.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_activation.h new file mode 100644 index 0000000..9c634ee --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_activation.h @@ -0,0 +1,183 @@ +/* +Fast Artificial Neural Network Library (fann) +Copyright (C) 2003-2016 Steffen Nissen (steffen.fann@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef __fann_activation_h__ +#define __fann_activation_h__ +/* internal include file, not to be included directly + */ + +/* Implementation of the activation functions + */ + +/* stepwise linear functions used for some of the activation functions */ + +/* defines used for the stepwise linear functions */ + +/* Uses the single precision version of math.h functions if +__doublefann_h__ is not defined +*/ +#ifndef __doublefann_h__ +#define FANN_EXP(x) expf(x) +#define FANN_SIN(x) sinf(x) +#define FANN_COS(x) cosf(x) +#else +#define FANN_EXP(x) exp(x) +#define FANN_SIN(x) sin(x) +#define FANN_COS(x) cos(x) +#endif + +#define fann_linear_func(v1, r1, v2, r2, sum) \ + (((((r2) - (r1)) * ((sum) - (v1))) / ((v2) - (v1))) + (r1)) +#define fann_stepwise(v1, v2, v3, v4, v5, v6, r1, r2, r3, r4, r5, r6, min, max, sum) \ + (sum < v5 ? (sum < v3 ? (sum < v2 ? (sum < v1 ? min : fann_linear_func(v1, r1, v2, r2, sum)) \ + : fann_linear_func(v2, r2, v3, r3, sum)) \ + : (sum < v4 ? fann_linear_func(v3, r3, v4, r4, sum) \ + : fann_linear_func(v4, r4, v5, r5, sum))) \ + : (sum < v6 ? fann_linear_func(v5, r5, v6, r6, sum) : max)) + +/* FANN_LINEAR */ +/* #define fann_linear(steepness, sum) fann_mult(steepness, sum) */ +#define fann_linear_derive(steepness, value) (steepness) + +/* FANN_SIGMOID */ +/* #define fann_sigmoid(steepness, sum) (1.0f/(1.0f + exp(-2.0f * steepness * sum))) */ +#define fann_sigmoid_real(sum) (1.0f / (1.0f + FANN_EXP(-2.0f * sum))) +#define fann_sigmoid_derive(steepness, value) (2.0f * steepness * value * (1.0f - value)) + +/* FANN_SIGMOID_SYMMETRIC */ +/* #define fann_sigmoid_symmetric(steepness, sum) (2.0f/(1.0f + exp(-2.0f * steepness * sum)) + * - 1.0f) */ +#define fann_sigmoid_symmetric_real(sum) (2.0f / (1.0f + FANN_EXP(-2.0f * sum)) - 1.0f) +#define fann_sigmoid_symmetric_derive(steepness, value) steepness*(1.0f - (value * value)) + +/* FANN_GAUSSIAN */ +/* #define fann_gaussian(steepness, sum) (exp(-sum * steepness * sum * steepness)) */ +#define fann_gaussian_real(sum) (FANN_EXP(-sum * sum)) +#define fann_gaussian_derive(steepness, value, sum) (-2.0f * sum * value * steepness * steepness) + +/* FANN_GAUSSIAN_SYMMETRIC */ +/* #define fann_gaussian_symmetric(steepness, sum) ((exp(-sum * steepness * sum * + * steepness)*2.0)-1.0) */ +#define fann_gaussian_symmetric_real(sum) ((FANN_EXP(-sum * sum) * 2.0f) - 1.0f) +#define fann_gaussian_symmetric_derive(steepness, value, sum) \ + (-2.0f * sum * (value + 1.0f) * steepness * steepness) + +/* FANN_ELLIOT */ +/* #define fann_elliot(steepness, sum) (((sum * steepness) / 2.0f) / (1.0f + fann_abs(sum * + * steepness)) + 0.5f) */ +#define fann_elliot_real(sum) (((sum) / 2.0f) / (1.0f + fann_abs(sum)) + 0.5f) +#define fann_elliot_derive(steepness, value, sum) \ + (steepness * 1.0f / (2.0f * (1.0f + fann_abs(sum)) * (1.0f + fann_abs(sum)))) + +/* FANN_ELLIOT_SYMMETRIC */ +/* #define fann_elliot_symmetric(steepness, sum) ((sum * steepness) / (1.0f + fann_abs(sum * + * steepness)))*/ +#define fann_elliot_symmetric_real(sum) ((sum) / (1.0f + fann_abs(sum))) +#define fann_elliot_symmetric_derive(steepness, value, sum) \ + (steepness * 1.0f / ((1.0f + fann_abs(sum)) * (1.0f + fann_abs(sum)))) + +/* FANN_SIN_SYMMETRIC */ +#define fann_sin_symmetric_real(sum) (FANN_SIN(sum)) +#define fann_sin_symmetric_derive(steepness, sum) (steepness * cos(steepness * sum)) + +/* FANN_COS_SYMMETRIC */ +#define fann_cos_symmetric_real(sum) (FANN_COS(sum)) +#define fann_cos_symmetric_derive(steepness, sum) (steepness * -sin(steepness * sum)) + +/* FANN_SIN */ +#define fann_sin_real(sum) (FANN_SIN(sum) / 2.0f + 0.5f) +#define fann_sin_derive(steepness, sum) (steepness * cos(steepness * sum) / 2.0f) + +/* FANN_COS */ +#define fann_cos_real(sum) (FANN_COS(sum) / 2.0f + 0.5f) +#define fann_cos_derive(steepness, sum) (steepness * -sin(steepness * sum) / 2.0f) + +#define fann_activation_switch(activation_function, value, result) \ + switch (activation_function) { \ + case FANN_LINEAR: \ + result = (fann_type)value; \ + break; \ + case FANN_LINEAR_PIECE: \ + result = (fann_type)((value < 0) ? 0 : (value > 1) ? 1 : value); \ + break; \ + case FANN_LINEAR_PIECE_SYMMETRIC: \ + result = (fann_type)((value < -1) ? -1 : (value > 1) ? 1 : value); \ + break; \ + case FANN_SIGMOID: \ + result = (fann_type)fann_sigmoid_real(value); \ + break; \ + case FANN_SIGMOID_SYMMETRIC: \ + result = (fann_type)fann_sigmoid_symmetric_real(value); \ + break; \ + case FANN_SIGMOID_SYMMETRIC_STEPWISE: \ + result = (fann_type)fann_stepwise( \ + ((fann_type)-2.64665293693542480469e+00), ((fann_type)-1.47221934795379638672e+00), \ + ((fann_type)-5.49306154251098632812e-01), ((fann_type)5.49306154251098632812e-01), \ + ((fann_type)1.47221934795379638672e+00), ((fann_type)2.64665293693542480469e+00), \ + ((fann_type)-9.90000009536743164062e-01), ((fann_type)-8.99999976158142089844e-01), \ + ((fann_type)-5.00000000000000000000e-01), ((fann_type)5.00000000000000000000e-01), \ + ((fann_type)8.99999976158142089844e-01), ((fann_type)9.90000009536743164062e-01), -1, 1, \ + value); \ + break; \ + case FANN_SIGMOID_STEPWISE: \ + result = (fann_type)fann_stepwise( \ + ((fann_type)-2.64665246009826660156e+00), ((fann_type)-1.47221946716308593750e+00), \ + ((fann_type)-5.49306154251098632812e-01), ((fann_type)5.49306154251098632812e-01), \ + ((fann_type)1.47221934795379638672e+00), ((fann_type)2.64665293693542480469e+00), \ + ((fann_type)4.99999988824129104614e-03), ((fann_type)5.00000007450580596924e-02), \ + ((fann_type)2.50000000000000000000e-01), ((fann_type)7.50000000000000000000e-01), \ + ((fann_type)9.49999988079071044922e-01), ((fann_type)9.95000004768371582031e-01), 0, 1, \ + value); \ + break; \ + case FANN_THRESHOLD: \ + result = (fann_type)((value < 0) ? 0 : 1); \ + break; \ + case FANN_THRESHOLD_SYMMETRIC: \ + result = (fann_type)((value < 0) ? -1 : 1); \ + break; \ + case FANN_GAUSSIAN: \ + result = (fann_type)fann_gaussian_real(value); \ + break; \ + case FANN_GAUSSIAN_SYMMETRIC: \ + result = (fann_type)fann_gaussian_symmetric_real(value); \ + break; \ + case FANN_ELLIOT: \ + result = (fann_type)fann_elliot_real(value); \ + break; \ + case FANN_ELLIOT_SYMMETRIC: \ + result = (fann_type)fann_elliot_symmetric_real(value); \ + break; \ + case FANN_SIN_SYMMETRIC: \ + result = (fann_type)fann_sin_symmetric_real(value); \ + break; \ + case FANN_COS_SYMMETRIC: \ + result = (fann_type)fann_cos_symmetric_real(value); \ + break; \ + case FANN_SIN: \ + result = (fann_type)fann_sin_real(value); \ + break; \ + case FANN_COS: \ + result = (fann_type)fann_cos_real(value); \ + break; \ + case FANN_GAUSSIAN_STEPWISE: \ + result = 0; \ + break; \ + } + +#endif diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_cascade.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_cascade.h new file mode 100644 index 0000000..fd56367 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_cascade.h @@ -0,0 +1,550 @@ +/* +Fast Artificial Neural Network Library (fann) +Copyright (C) 2003-2016 Steffen Nissen (steffen.fann@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef __fann_cascade_h__ +#define __fann_cascade_h__ + +/* Section: FANN Cascade Training + Cascade training differs from ordinary training in the sense that it starts with an empty neural + network and then adds neurons one by one, while it trains the neural network. The main benefit of + this approach is that you do not have to guess the number of hidden layers and neurons prior to + training, but cascade training has also proved better at solving some problems. + + The basic idea of cascade training is that a number of candidate neurons are trained separate + from the real network, then the most promising of these candidate neurons is inserted into the + neural network. Then the output connections are trained and new candidate neurons are prepared. + The candidate neurons are created as shortcut connected neurons in a new hidden layer, which + means that the final neural network will consist of a number of hidden layers with one shortcut + connected neuron in each. +*/ + +/* Group: Cascade Training */ + +#ifndef FIXEDFANN +/* Function: fann_cascadetrain_on_data + + Trains on an entire dataset, for a period of time using the Cascade2 training algorithm. + This algorithm adds neurons to the neural network while training, which means that it + needs to start with an ANN without any hidden layers. The neural network should also use + shortcut connections, so should be used to create the ANN like this: + >struct fann *ann = fann_create_shortcut(2, fann_num_input_train_data(train_data), + fann_num_output_train_data(train_data)); + + This training uses the parameters set using the fann_set_cascade_..., but it also uses another + training algorithm as it's internal training algorithm. This algorithm can be set to either + FANN_TRAIN_RPROP or FANN_TRAIN_QUICKPROP by , and the parameters + set for these training algorithms will also affect the cascade training. + + Parameters: + ann - The neural network + data - The data, which should be used during training + max_neuron - The maximum number of neurons to be added to neural network + neurons_between_reports - The number of neurons between printing a status report to + stdout. A value of zero means no reports should be printed. desired_error - The desired + or , depending on which stop function is chosen by + . + + Instead of printing out reports every neurons_between_reports, a callback function can be + called (see ). + + See also: + , , + + This function appears in FANN >= 2.0.0. +*/ +FANN_EXTERNAL void FANN_API fann_cascadetrain_on_data(struct fann *ann, + struct fann_train_data *data, + unsigned int max_neurons, + unsigned int neurons_between_reports, + float desired_error); + +/* Function: fann_cascadetrain_on_file + + Does the same as , but reads the training data directly from a file. + + See also: + + + This function appears in FANN >= 2.0.0. +*/ +FANN_EXTERNAL void FANN_API fann_cascadetrain_on_file(struct fann *ann, const char *filename, + unsigned int max_neurons, + unsigned int neurons_between_reports, + float desired_error); + +/* Group: Parameters */ + +/* Function: fann_get_cascade_output_change_fraction + + The cascade output change fraction is a number between 0 and 1 determining how large a fraction + the value should change within during + training of the output connections, in order for the training not to stagnate. If the training + stagnates, the training of the output connections will be ended and new candidates will be + prepared. + + This means: + If the MSE does not change by a fraction of during a + period of , the training of the output connections + is stopped because the training has stagnated. + + If the cascade output change fraction is low, the output connections will be trained more and if + the fraction is high they will be trained less. + + The default cascade output change fraction is 0.01, which is equivalent to a 1% change in MSE. + + See also: + , , + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL float FANN_API fann_get_cascade_output_change_fraction(struct fann *ann); + +/* Function: fann_set_cascade_output_change_fraction + + Sets the cascade output change fraction. + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API +fann_set_cascade_output_change_fraction(struct fann *ann, float cascade_output_change_fraction); + +/* Function: fann_get_cascade_output_stagnation_epochs + + The number of cascade output stagnation epochs determines the number of epochs training is + allowed to continue without changing the MSE by a fraction of + . + + See more info about this parameter in . + + The default number of cascade output stagnation epochs is 12. + + See also: + , + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL unsigned int FANN_API fann_get_cascade_output_stagnation_epochs(struct fann *ann); + +/* Function: fann_set_cascade_output_stagnation_epochs + + Sets the number of cascade output stagnation epochs. + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_cascade_output_stagnation_epochs( + struct fann *ann, unsigned int cascade_output_stagnation_epochs); + +/* Function: fann_get_cascade_candidate_change_fraction + + The cascade candidate change fraction is a number between 0 and 1 determining how large a + fraction the value should change within + during training of the candidate neurons, in order + for the training not to stagnate. If the training stagnates, the training of the candidate + neurons will be ended and the best candidate will be selected. + + This means: + If the MSE does not change by a fraction of during a + period of , the training of the candidate neurons + is stopped because the training has stagnated. + + If the cascade candidate change fraction is low, the candidate neurons will be trained more and + if the fraction is high they will be trained less. + + The default cascade candidate change fraction is 0.01, which is equivalent to a 1% change in MSE. + + See also: + , , + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL float FANN_API fann_get_cascade_candidate_change_fraction(struct fann *ann); + +/* Function: fann_set_cascade_candidate_change_fraction + + Sets the cascade candidate change fraction. + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_cascade_candidate_change_fraction( + struct fann *ann, float cascade_candidate_change_fraction); + +/* Function: fann_get_cascade_candidate_stagnation_epochs + + The number of cascade candidate stagnation epochs determines the number of epochs training is + allowed to continue without changing the MSE by a fraction of + . + + See more info about this parameter in . + + The default number of cascade candidate stagnation epochs is 12. + + See also: + , + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL unsigned int FANN_API fann_get_cascade_candidate_stagnation_epochs(struct fann *ann); + +/* Function: fann_set_cascade_candidate_stagnation_epochs + + Sets the number of cascade candidate stagnation epochs. + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_cascade_candidate_stagnation_epochs( + struct fann *ann, unsigned int cascade_candidate_stagnation_epochs); + +/* Function: fann_get_cascade_weight_multiplier + + The weight multiplier is a parameter which is used to multiply the weights from the candidate + neuron before adding the neuron to the neural network. This parameter is usually between 0 and 1, + and is used to make the training a bit less aggressive. + + The default weight multiplier is 0.4 + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL fann_type FANN_API fann_get_cascade_weight_multiplier(struct fann *ann); + +/* Function: fann_set_cascade_weight_multiplier + + Sets the weight multiplier. + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_cascade_weight_multiplier(struct fann *ann, + fann_type cascade_weight_multiplier); + +/* Function: fann_get_cascade_candidate_limit + + The candidate limit is a limit for how much the candidate neuron may be trained. + The limit is a limit on the proportion between the MSE and candidate score. + + Set this to a lower value to avoid overfitting and to a higher if overfitting is + not a problem. + + The default candidate limit is 1000.0 + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL fann_type FANN_API fann_get_cascade_candidate_limit(struct fann *ann); + +/* Function: fann_set_cascade_candidate_limit + + Sets the candidate limit. + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_cascade_candidate_limit(struct fann *ann, + fann_type cascade_candidate_limit); + +/* Function: fann_get_cascade_max_out_epochs + + The maximum out epochs determines the maximum number of epochs the output connections + may be trained after adding a new candidate neuron. + + The default max out epochs is 150 + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL unsigned int FANN_API fann_get_cascade_max_out_epochs(struct fann *ann); + +/* Function: fann_set_cascade_max_out_epochs + + Sets the maximum out epochs. + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_cascade_max_out_epochs(struct fann *ann, + unsigned int cascade_max_out_epochs); + +/* Function: fann_get_cascade_min_out_epochs + + The minimum out epochs determines the minimum number of epochs the output connections + must be trained after adding a new candidate neuron. + + The default min out epochs is 50 + + See also: + + + This function appears in FANN >= 2.2.0. + */ +FANN_EXTERNAL unsigned int FANN_API fann_get_cascade_min_out_epochs(struct fann *ann); + +/* Function: fann_set_cascade_min_out_epochs + + Sets the minimum out epochs. + + See also: + + + This function appears in FANN >= 2.2.0. + */ +FANN_EXTERNAL void FANN_API fann_set_cascade_min_out_epochs(struct fann *ann, + unsigned int cascade_min_out_epochs); + +/* Function: fann_get_cascade_max_cand_epochs + + The maximum candidate epochs determines the maximum number of epochs the input + connections to the candidates may be trained before adding a new candidate neuron. + + The default max candidate epochs is 150 + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL unsigned int FANN_API fann_get_cascade_max_cand_epochs(struct fann *ann); + +/* Function: fann_set_cascade_max_cand_epochs + + Sets the max candidate epochs. + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_cascade_max_cand_epochs(struct fann *ann, + unsigned int cascade_max_cand_epochs); + +/* Function: fann_get_cascade_min_cand_epochs + + The minimum candidate epochs determines the minimum number of epochs the input + connections to the candidates may be trained before adding a new candidate neuron. + + The default min candidate epochs is 50 + + See also: + + + This function appears in FANN >= 2.2.0. + */ +FANN_EXTERNAL unsigned int FANN_API fann_get_cascade_min_cand_epochs(struct fann *ann); + +/* Function: fann_set_cascade_min_cand_epochs + + Sets the min candidate epochs. + + See also: + + + This function appears in FANN >= 2.2.0. + */ +FANN_EXTERNAL void FANN_API fann_set_cascade_min_cand_epochs(struct fann *ann, + unsigned int cascade_min_cand_epochs); + +/* Function: fann_get_cascade_num_candidates + + The number of candidates used during training (calculated by multiplying + , + and ). + + The actual candidates is defined by the and + arrays. These arrays define the activation functions + and activation steepnesses used for the candidate neurons. If there are 2 activation functions + in the activation function array and 3 steepnesses in the steepness array, then there will be + 2x3=6 different candidates which will be trained. These 6 different candidates can be copied into + several candidate groups, where the only difference between these groups is the initial weights. + If the number of groups is set to 2, then the number of candidate neurons will be 2x3x2=12. The + number of candidate groups is defined by . + + The default number of candidates is 6x4x2 = 48 + + See also: + , + , , + , + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL unsigned int FANN_API fann_get_cascade_num_candidates(struct fann *ann); + +/* Function: fann_get_cascade_activation_functions_count + + The number of activation functions in the array. + + The default number of activation functions is 10. + + See also: + , + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL unsigned int FANN_API fann_get_cascade_activation_functions_count(struct fann *ann); + +/* Function: fann_get_cascade_activation_functions + + The cascade activation functions array is an array of the different activation functions used by + the candidates. + + See for a description of which candidate neurons will be + generated by this array. + + The default activation functions are {FANN_SIGMOID, FANN_SIGMOID_SYMMETRIC, FANN_GAUSSIAN, + FANN_GAUSSIAN_SYMMETRIC, FANN_ELLIOT, FANN_ELLIOT_SYMMETRIC, FANN_SIN_SYMMETRIC, + FANN_COS_SYMMETRIC, FANN_SIN, FANN_COS} + + See also: + , + , + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL enum fann_activationfunc_enum *FANN_API +fann_get_cascade_activation_functions(struct fann *ann); + +/* Function: fann_set_cascade_activation_functions + + Sets the array of cascade candidate activation functions. The array must be just as long + as defined by the count. + + See for a description of which candidate neurons will be + generated by this array. + + See also: + , + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_cascade_activation_functions( + struct fann *ann, enum fann_activationfunc_enum *cascade_activation_functions, + unsigned int cascade_activation_functions_count); + +/* Function: fann_get_cascade_activation_steepnesses_count + + The number of activation steepnesses in the array. + + The default number of activation steepnesses is 4. + + See also: + , + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL unsigned int FANN_API fann_get_cascade_activation_steepnesses_count(struct fann *ann); + +/* Function: fann_get_cascade_activation_steepnesses + + The cascade activation steepnesses array is an array of the different activation functions used + by the candidates. + + See for a description of which candidate neurons will be + generated by this array. + + The default activation steepnesses is {0.25, 0.50, 0.75, 1.00} + + See also: + , + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL fann_type *FANN_API fann_get_cascade_activation_steepnesses(struct fann *ann); + +/* Function: fann_set_cascade_activation_steepnesses + + Sets the array of cascade candidate activation steepnesses. The array must be just as long + as defined by the count. + + See for a description of which candidate neurons will be + generated by this array. + + See also: + , + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API +fann_set_cascade_activation_steepnesses(struct fann *ann, fann_type *cascade_activation_steepnesses, + unsigned int cascade_activation_steepnesses_count); + +/* Function: fann_get_cascade_num_candidate_groups + + The number of candidate groups is the number of groups of identical candidates which will be used + during training. + + This number can be used to have more candidates without having to define new parameters for the + candidates. + + See for a description of which candidate neurons will be + generated by this parameter. + + The default number of candidate groups is 2 + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL unsigned int FANN_API fann_get_cascade_num_candidate_groups(struct fann *ann); + +/* Function: fann_set_cascade_num_candidate_groups + + Sets the number of candidate groups. + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API +fann_set_cascade_num_candidate_groups(struct fann *ann, unsigned int cascade_num_candidate_groups); + +#endif /* FIXEDFANN */ + +#endif diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_cpp.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_cpp.h new file mode 100644 index 0000000..412b752 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_cpp.h @@ -0,0 +1,2968 @@ +#ifndef FANN_CPP_H_INCLUDED +#define FANN_CPP_H_INCLUDED + +#include +#include +/* + * Fast Artificial Neural Network (fann) C++ Wrapper + * Copyright (C) 2004-2006 created by freegoldbar (at) yahoo dot com + * + * This wrapper is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This wrapper is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/* + * Title: FANN C++ Wrapper + * + * Overview: + * + * The Fann Wrapper for C++ provides two classes: + * and . To use the wrapper include + * doublefann.h, floatfann.h or fixedfann.h before the + * fann_cpp.h header file. + * + * To get started see xor_sample.cpp in the examples directory. + * The license is LGPL. Copyright (C) 2004-2006 created by . + * + * + * Note: Notes and differences from C API + * + * - The Fann Wrapper for C++ is a minimal wrapper without use of + * templates or exception handling for efficient use in any environment. + * Benefits include stricter type checking, simpler memory + * management and possibly code completion in program editor. + * - Method names are the same as the function names in the C + * API except the fann_ prefix has been removed. Enums in the + * namespace are similarly defined without the FANN_ prefix. + * - The arguments to the methods are the same as the C API + * except that the struct fann *ann/struct fann_train_data *data + * arguments are encapsulated so they are not present in the + * method signatures or are translated into class references. + * - C++ style constructors have been implemented to make network creation + * easier + * - The neural network and training data is automatically cleaned + * up in the destructors + * - To make the destructors virtual define USE_VIRTUAL_DESTRUCTOR + * before including the header file. + * - Additional methods are available on the training_data class to + * give access to the underlying training data. They are get_input, + * get_output and set_train_data. Finally fann_duplicate_train_data + * has been replaced by a copy constructor. + * + */ + +#include +#include +#include +#include "fann_data_cpp.h" +#include "fann_training_data_cpp.h" + +/* Namespace: FANN + The FANN namespace groups the C++ wrapper definitions */ +namespace FANN { +/* Class: neural_net + is the main neural network class used for both training and execution + + Encapsulation of a neural network and + associated C API functions. +*/ +class neural_net { + public: + /* Constructor: neural_net(network_type_enum net_type, unsigned int num_layers, const unsigned int + *layers) + + Creates a neural network of the desired net_type, based on array of + layers. + + Parameters: + net_type - The desired network type of the neural network + num_layers - The total number of layers including the input and the output layer. + layers - array of the layer sizes + + NOTE: if layers does not have the same size as num_layers, the result is undefined + + Example: + >FANN::neural_net net(LAYER, 3, (unsigned int[]) {2, 3, 1}); + + This function appears in FANN >= 2.3.0. + */ + neural_net(network_type_enum net_type, unsigned int num_layers, const unsigned int *layers) { + switch (net_type) { + case LAYER: + ann = fann_create_standard_array(num_layers, layers); + break; + case SHORTCUT: + ann = fann_create_shortcut_array(num_layers, layers); + break; + } + assert(ann != NULL); + } + + /* Constructor: neural_net(network_type_enum net_type, InputIterator layersBeginIterator, + InputIterator layersEndIterator) + + Creates a neural network of the desired net_type, based on iterator to the + layers. + + Parameters: + net_type - The desired network type of the neural network + layersBeginIterator - begin iterator to the collection of unsigned int layers + layersEndIterator - end iterator to the collection of unsigned int layers + + Example: + >vector layers{2, 3, 4, 5}; + >neural_net net(LAYER, layers.begin(), layers.end()); + + This function appears in FANN >= 2.3.0. + */ + template + neural_net(network_type_enum net_type, InputIterator layersBeginIterator, + InputIterator layersEndIterator) { + unsigned int num_layers = + static_cast(std::distance(layersBeginIterator, layersEndIterator)); + unsigned int *layers = new unsigned int[num_layers]; + std::copy(layersBeginIterator, layersEndIterator, layers); + + switch (net_type) { + case LAYER: + ann = fann_create_standard_array(num_layers, layers); + break; + case SHORTCUT: + ann = fann_create_shortcut_array(num_layers, layers); + break; + } + delete[] layers; + assert(ann != NULL); + } + + /* Constructor: neural_net(network_type_enum net_type, unsigned int num_layers, ...) + + Creates a neural network of the desired net_type. + + Parameters: + num_layers - The total number of layers including the input and the output layer. + ... - Integer values determining the number of neurons in each layer starting with + the input layer and ending with the output layer. + + Example: + >const unsigned int num_layers = 3; + >const unsigned int num_input = 2; + >const unsigned int num_hidden = 3; + >const unsigned int num_output = 1; + > + >FANN::neural_net net(num_layers, num_input, num_hidden, num_output); + + This function appears in FANN >= 2.3.0. + */ + neural_net(network_type_enum net_type, unsigned int num_layers, ...) { + std::unique_ptr data(new unsigned int[num_layers]); + + va_list layers; + va_start(layers, num_layers); + for (unsigned int i = 0; i < num_layers; i++) data.get()[i] = va_arg(layers, unsigned int); + va_end(layers); + + switch (net_type) { + case LAYER: + ann = fann_create_standard_array(num_layers, data.get()); + break; + case SHORTCUT: + ann = fann_create_shortcut_array(num_layers, data.get()); + break; + } + assert(ann != NULL); + } + + /* Constructor: neural_net(float connection_rate, unsigned int num_layers, ...) + + Creates a standard backpropagation neural network, which is sparsely connected, this will + default the to + + Parameters: + connection_rate - The connection rate controls how many connections there will be + in the network. If the connection rate is set to 1, the network will be fully connected, but if + it is set to 0.5 only half of the connections will be set. A connection rate of 1 will yield + the same result as num_layers - The total number of layers including the + input and the output layer. + ... - Integer values determining the number of neurons in each layer starting with + the input layer and ending with the output layer. + + This function appears in FANN >= 2.3.0. + */ + neural_net(float connection_rate, unsigned int num_layers, ...) { + std::unique_ptr data(new unsigned int[num_layers]); + + va_list layers; + va_start(layers, num_layers); + for (unsigned int i = 0; i < num_layers; i++) data.get()[i] = va_arg(layers, unsigned int); + va_end(layers); + + ann = fann_create_sparse_array(connection_rate, num_layers, data.get()); + assert(ann != NULL); + } + + /* Constructor: neural_net(float connection_rate, unsigned int num_layers, const unsigned int + *layers) + + Creates a standard backpropagation neural network, which is sparsely connected, this will + default the to + + Parameters: + connection_rate - The connection rate controls how many connections there will be + in the network. If the connection rate is set to 1, the network will be fully connected, but if + it is set to 0.5 only half of the connections will be set. A connection rate of 1 will yield + the same result as num_layers - The total number of layers including the + input and the output layer. layers - Integer values determining the number of neurons in each + layer starting with the input layer and ending with the output layer. + + This function appears in FANN >= 2.3.0. + */ + neural_net(float connection_rate, unsigned int num_layers, const unsigned int *layers) { + ann = fann_create_sparse_array(connection_rate, num_layers, layers); + assert(ann != NULL); + } + + /* Constructor: neural_net(const std::string &configuration_file) + + Constructs a backpropagation neural network from a configuration file, + which have been saved by . + + See also: + , + + This function appears in FANN >= 2.3.0. + */ + neural_net(const std::string &configuration_file) { + ann = fann_create_from_file(configuration_file.c_str()); + assert(ann != NULL); + } + + /* Constructor neural_net(const neural_net &other) + + Creates a copy the other neural_net. + */ + neural_net(const neural_net &other) : ann(NULL) { copy_from_struct_fann(other.ann); } + + /* Constructor: neural_net(struct fann *other) + + Creates a copy the other neural_net. + */ + neural_net(struct fann *other) { copy_from_struct_fann(other); } + + /* Constructor: neural_net() - DEPRECATED + + Creates an empty neural net. + Use one of the create functions to create the neural network. + + NOTE: As of version 2.3.0 it recommended to create neural networks using the constructors + instead of creating an empty network and setting the internal structure of that. This method is + hence discouraged and will be deprecated later on. + + See also: + , , , + , , + */ + neural_net() : ann(NULL) {} + + /* Method: copy_from_struct_fann - DEPRECATED + + Set the internal fann struct to a copy of other + + NOTE: As of version 2.3.0 it recommended to create neural networks using the constructors + instead of creating an empty network and setting the internal structure of that. This method is + hence discouraged and will be deprecated later on. + */ + void copy_from_struct_fann(struct fann *other) { + destroy(); + if (other != NULL) ann = fann_copy(other); + } + + /* Destructor: ~neural_net + + Provides automatic cleanup of data. + Define USE_VIRTUAL_DESTRUCTOR if you need the destructor to be virtual. + + See also: + + */ +#ifdef USE_VIRTUAL_DESTRUCTOR + virtual +#endif + + ~neural_net() { + destroy(); + } + + /* Method: destroy + + Destructs the entire network. Called automatically by the destructor. + + See also: + <~neural_net> + */ + void destroy() { + if (ann != NULL) { + user_context *user_data = static_cast(fann_get_user_data(ann)); + if (user_data != NULL) delete user_data; + + fann_destroy(ann); + ann = NULL; + } + } + + /* Method: create_standard - DEPRECATED + + Creates a standard fully connected backpropagation neural network. + + There will be a bias neuron in each layer (except the output layer), + and this bias neuron will be connected to all neurons in the next layer. + When running the network, the bias nodes always emits 1. + + Parameters: + num_layers - The total number of layers including the input and the output layer. + ... - Integer values determining the number of neurons in each layer starting with + the input layer and ending with the output layer. + + Returns: + Boolean true if the network was created, false otherwise. + + Example: + >const unsigned int num_layers = 3; + >const unsigned int num_input = 2; + >const unsigned int num_hidden = 3; + >const unsigned int num_output = 1; + > + >FANN::neural_net net; + >net.create_standard(num_layers, num_input, num_hidden, num_output); + + NOTE: As of version 2.3.0 it recommended to create neural networks using the constructors + instead of creating an empty network and setting the internal structure of that. This method is + hence discouraged and will be deprecated later on. + + See also: + , , , + + + This function appears in FANN >= 2.0.0. + */ + bool create_standard(unsigned int num_layers, ...) { + std::unique_ptr data(new unsigned int[num_layers]); + + va_list layers; + va_start(layers, num_layers); + for (unsigned int i = 0; i < num_layers; i++) data.get()[i] = va_arg(layers, unsigned int); + va_end(layers); + + bool status = create_standard_array(num_layers, data.get()); + return status; + } + + /* Method: create_standard_array - DEPRECATED + + Just like , but with an array of layer sizes + instead of individual parameters. + + NOTE: As of version 2.3.0 it recommended to create neural networks using the constructors + instead of creating an empty network and setting the internal structure of that. This method is + hence discouraged and will be deprecated later on. + + See also: + , , , + + + This function appears in FANN >= 2.0.0. + */ + bool create_standard_array(unsigned int num_layers, const unsigned int *layers) { + destroy(); + ann = fann_create_standard_array(num_layers, layers); + return (ann != NULL); + } + + /* Method: create_sparse - DEPRECATED + + Creates a standard backpropagation neural network, which is not fully connected. + + Parameters: + connection_rate - The connection rate controls how many connections there will be + in the network. If the connection rate is set to 1, the network will be fully connected, but if + it is set to 0.5 only half of the connections will be set. A connection rate of 1 will yield + the same result as num_layers - The total number of layers including the + input and the output layer. + ... - Integer values determining the number of neurons in each layer starting with + the input layer and ending with the output layer. + + Returns: + Boolean true if the network was created, false otherwise. + + NOTE: As of version 2.3.0 it recommended to create neural networks using the constructors + instead of creating an empty network and setting the internal structure of that. This method is + hence discouraged and will be deprecated later on. + + See also: + , , , + + + This function appears in FANN >= 2.0.0. + */ + bool create_sparse(float connection_rate, unsigned int num_layers, ...) { + std::unique_ptr data(new unsigned int[num_layers]); + + va_list layers; + va_start(layers, num_layers); + for (unsigned int i = 0; i < num_layers; i++) data.get()[i] = va_arg(layers, unsigned int); + va_end(layers); + + bool status = create_sparse_array(connection_rate, num_layers, data.get()); + return status; + } + + /* Method: create_sparse_array - DEPRECATED + Just like , but with an array of layer sizes + instead of individual parameters. + + See for a description of the parameters. + + NOTE: As of version 2.3.0 it recommended to create neural networks using the constructors + instead of creating an empty network and setting the internal structure of that. This method is + hence discouraged and will be deprecated later on. + + See also: + , , , + + + This function appears in FANN >= 2.0.0. + */ + bool create_sparse_array(float connection_rate, unsigned int num_layers, + const unsigned int *layers) { + destroy(); + ann = fann_create_sparse_array(connection_rate, num_layers, layers); + return (ann != NULL); + } + + /* Method: create_shortcut - DEPRECATED + + Creates a standard backpropagation neural network, which is fully connected and which + also has shortcut connections. + + Shortcut connections are connections that skip layers. A fully connected network with + shortcut connections, is a network where all neurons are connected to all neurons in later + layers. Including direct connections from the input layer to the output layer. + + See for a description of the parameters. + + NOTE: As of version 2.3.0 it recommended to create neural networks using the constructors + instead of creating an empty network and setting the internal structure of that. This method is + hence discouraged and will be deprecated later on. + + See also: + , , , + + + This function appears in FANN >= 2.0.0. + */ + bool create_shortcut(unsigned int num_layers, ...) { + std::unique_ptr data(new unsigned int[num_layers]); + + va_list layers; + va_start(layers, num_layers); + for (unsigned int i = 0; i < num_layers; i++) data.get()[i] = va_arg(layers, unsigned int); + va_end(layers); + + bool status = create_shortcut_array(num_layers, data.get()); + return status; + } + + /* Method: create_shortcut_array - DEPRECATED + + Just like , but with an array of layer sizes + instead of individual parameters. + + See for a description of the parameters. + + NOTE: As of version 2.3.0 it recommended to create neural networks using the constructors + instead of creating an empty network and setting the internal structure of that. This method is + hence discouraged and will be deprecated later on. + + See also: + , , , + + + This function appears in FANN >= 2.0.0. + */ + bool create_shortcut_array(unsigned int num_layers, const unsigned int *layers) { + destroy(); + ann = fann_create_shortcut_array(num_layers, layers); + return (ann != NULL); + } + + /* Method: run + + Will run input through the neural network, returning an array of outputs, the number of + which being equal to the number of neurons in the output layer. + + See also: + , + + This function appears in FANN >= 1.0.0. + */ + fann_type *run(fann_type *input) { + if (ann == NULL) { + return NULL; + } + return fann_run(ann, input); + } + + /* Method: randomize_weights + + Give each connection a random weight between *min_weight* and *max_weight* + + From the beginning the weights are random between -0.1 and 0.1. + + See also: + , + + This function appears in FANN >= 1.0.0. + */ + void randomize_weights(fann_type min_weight, fann_type max_weight) { + if (ann != NULL) { + fann_randomize_weights(ann, min_weight, max_weight); + } + } + + /* Method: init_weights + + Initialize the weights using Widrow + Nguyen's algorithm. + + This function behaves similarly to fann_randomize_weights. It will use the algorithm + developed by Derrick Nguyen and Bernard Widrow to set the weights in such a way as to speed up + training. This technique is not always successful, and in some cases can be less efficient than + a purely random initialization. + + The algorithm requires access to the range of the input data (ie, largest and smallest + input), and therefore accepts a second argument, data, which is the training data that will be + used to train the network. + + See also: + , , + + + This function appears in FANN >= 1.1.0. + */ + void init_weights(const training_data &data) { + if ((ann != NULL) && (data.train_data != NULL)) { + fann_init_weights(ann, data.train_data); + } + } + + /* Method: print_connections + + Will print the connections of the ann in a compact matrix, for easy viewing of the + internals of the ann. + + The output from fann_print_connections on a small (2 2 1) network trained on the xor + problem >Layer / Neuron 012345 >L 1 / N 3 BBa... >L 1 / N 4 BBA... >L 1 / N 5 + ...... >L 2 / N 6 ...BBA >L 2 / N 7 ...... + + This network have five real neurons and two bias neurons. This gives a total of seven + neurons named from 0 to 6. The connections between these neurons can be seen in the matrix. "." + is a place where there is no connection, while a character tells how strong the connection is + on a scale from a-z. The two real neurons in the hidden layer (neuron 3 and 4 in layer 1) has + connection from the three neurons in the previous layer as is visible in the first two + lines. The output neuron (6) has connections form the three neurons in the hidden layer 3 - 5 + as is visible in the fourth line. + + To simplify the matrix output neurons is not visible as neurons that connections can come + from, and input and bias neurons are not visible as neurons that connections can go to. + + This function appears in FANN >= 1.2.0. + */ + void print_connections() { + if (ann != NULL) { + fann_print_connections(ann); + } + } + + /* Method: create_from_file - DEPRECATED + + Constructs a backpropagation neural network from a configuration file, + which have been saved by . + + NOTE: As of version 2.3.0 it recommended to create neural networks using the constructors + instead of creating an empty network and setting the internal structure of that. This method is + hence discouraged and will be deprecated later on. + + See also: + , , + + This function appears in FANN >= 1.0.0. + */ + bool create_from_file(const std::string &configuration_file) { + destroy(); + ann = fann_create_from_file(configuration_file.c_str()); + return (ann != NULL); + } + + /* Method: save + + Save the entire network to a configuration file. + + The configuration file contains all information about the neural network and enables + to create an exact copy of the neural network and all of the + parameters associated with the neural network. + + These two parameters (, ) are *NOT* saved + to the file because they cannot safely be ported to a different location. Also temporary + parameters generated during training like is not saved. + + Return: + The function returns 0 on success and -1 on failure. + + See also: + , , + + This function appears in FANN >= 1.0.0. + */ + bool save(const std::string &configuration_file) { + if (ann == NULL) { + return false; + } + if (fann_save(ann, configuration_file.c_str()) == -1) { + return false; + } + return true; + } + + /* Method: save_to_fixed + + Saves the entire network to a configuration file. + But it is saved in fixed point format no matter which + format it is currently in. + + This is useful for training a network in floating points, + and then later executing it in fixed point. + + The function returns the bit position of the fix point, which + can be used to find out how accurate the fixed point network will be. + A high value indicates high precision, and a low value indicates low + precision. + + A negative value indicates very low precision, and a very + strong possibility for overflow. + (the actual fix point will be set to 0, since a negative + fix point does not make sence). + + Generally, a fix point lower than 6 is bad, and should be avoided. + The best way to avoid this, is to have less connections to each neuron, + or just less neurons in each layer. + + The fixed point use of this network is only intended for use on machines that + have no floating point processor, like an iPAQ. On normal computers the floating + point version is actually faster. + + See also: + , , + + This function appears in FANN >= 1.0.0. + */ + int save_to_fixed(const std::string &configuration_file) { + int fixpoint = 0; + if (ann != NULL) { + fixpoint = fann_save_to_fixed(ann, configuration_file.c_str()); + } + return fixpoint; + } + +#ifndef FIXEDFANN + + /* Method: train + + Train one iteration with a set of inputs, and a set of desired outputs. + This training is always incremental training (see ), + since only one pattern is presented. + + Parameters: + ann - The neural network structure + input - an array of inputs. This array must be exactly long. + desired_output - an array of desired outputs. This array must be exactly + long. + + See also: + , , + + This function appears in FANN >= 1.0.0. + */ + void train(fann_type *input, fann_type *desired_output) { + if (ann != NULL) { + fann_train(ann, input, desired_output); + } + } + + /* Method: train_epoch + Train one epoch with a set of training data. + + Train one epoch with the training data stored in data. One epoch is where all of + the training data is considered exactly once. + + This function returns the MSE error as it is calculated either before or during + the actual training. This is not the actual MSE after the training epoch, but since + calculating this will require to go through the entire training set once more, it is + more than adequate to use this value during training. + + The training algorithm used by this function is chosen by the + function. + + See also: + , , + + This function appears in FANN >= 1.2.0. + */ + float train_epoch(const training_data &data) { + float mse = 0.0f; + if ((ann != NULL) && (data.train_data != NULL)) { + mse = fann_train_epoch(ann, data.train_data); + } + return mse; + } + + /* Method: train_on_data + + Trains on an entire dataset, for a period of time. + + This training uses the training algorithm chosen by , + and the parameters set for these training algorithms. + + Parameters: + ann - The neural network + data - The data, which should be used during training + max_epochs - The maximum number of epochs the training should continue + epochs_between_reports - The number of epochs between printing a status report to + stdout. A value of zero means no reports should be printed. desired_error - The desired + or , depending on which stop function is chosen by + . + + Instead of printing out reports every epochs_between_reports, a callback function can be + called (see ). + + See also: + , , + + This function appears in FANN >= 1.0.0. + */ + void train_on_data(const training_data &data, unsigned int max_epochs, + unsigned int epochs_between_reports, float desired_error) { + if ((ann != NULL) && (data.train_data != NULL)) { + fann_train_on_data(ann, data.train_data, max_epochs, epochs_between_reports, desired_error); + } + } + + /* Method: train_on_file + + Does the same as , but reads the training data directly from a file. + + See also: + , + + This function appears in FANN >= 1.0.0. + */ + void train_on_file(const std::string &filename, unsigned int max_epochs, + unsigned int epochs_between_reports, float desired_error) { + if (ann != NULL) { + fann_train_on_file(ann, filename.c_str(), max_epochs, epochs_between_reports, desired_error); + } + } + +#endif /* NOT FIXEDFANN */ + + /* Method: test + + Test with a set of inputs, and a set of desired outputs. + This operation updates the mean square error, but does not + change the network in any way. + + See also: + , , + + This function appears in FANN >= 1.0.0. + */ + fann_type *test(fann_type *input, fann_type *desired_output) { + fann_type *output = NULL; + if (ann != NULL) { + output = fann_test(ann, input, desired_output); + } + return output; + } + + /* Method: test_data + + Test a set of training data and calculates the MSE for the training data. + + This function updates the MSE and the bit fail values. + + See also: + , , , + + This function appears in FANN >= 1.2.0. + */ + float test_data(const training_data &data) { + float mse = 0.0f; + if ((ann != NULL) && (data.train_data != NULL)) { + mse = fann_test_data(ann, data.train_data); + } + return mse; + } + + /* Method: get_MSE + Reads the mean square error from the network. + + Reads the mean square error from the network. This value is calculated during + training or testing, and can therefore sometimes be a bit off if the weights + have been changed since the last calculation of the value. + + See also: + , + + This function appears in FANN >= 1.1.0. + */ + float get_MSE() { + float mse = 0.0f; + if (ann != NULL) { + mse = fann_get_MSE(ann); + } + return mse; + } + + /* Method: reset_MSE + + Resets the mean square error from the network. + + This function also resets the number of bits that fail. + + See also: + , , + + This function appears in FANN >= 1.1.0 + */ + void reset_MSE() { + if (ann != NULL) { + fann_reset_MSE(ann); + } + } + +#ifndef FIXEDFANN + + /* Method: set_callback + + Sets the callback function for use during training. The user_data is passed to + the callback. It can point to arbitrary data that the callback might require and + can be NULL if it is not used. + + See for more information about the callback function. + + The default callback function simply prints out some status information. + + This function appears in FANN >= 2.0.0. + */ + void set_callback(callback_type callback, void *user_data) { + if (ann != NULL) { + // Allocated data is also deleted in the destroy method called by the destructor + user_context *user_instance = static_cast(fann_get_user_data(ann)); + if (user_instance != NULL) delete user_instance; + + user_instance = new user_context(); + user_instance->user_callback = callback; + user_instance->user_data = user_data; + user_instance->net = this; + fann_set_user_data(ann, user_instance); + + if (callback != NULL) + fann_set_callback(ann, &FANN::neural_net::internal_callback); + else + fann_set_callback(ann, NULL); + } + } + +#endif /* NOT FIXEDFANN */ + + /* Method: print_parameters + + Prints all of the parameters and options of the neural network + + See also: + + + This function appears in FANN >= 1.2.0. + */ + void print_parameters() { + if (ann != NULL) { + fann_print_parameters(ann); + } + } + + /* Method: get_training_algorithm + + Return the training algorithm as described by . + This training algorithm is used by and associated functions. + + Note that this algorithm is also used during , although only + FANN::TRAIN_RPROP and FANN::TRAIN_QUICKPROP is allowed during cascade training. + + The default training algorithm is FANN::TRAIN_RPROP. + + See also: + , , + + + This function appears in FANN >= 1.0.0. + */ + training_algorithm_enum get_training_algorithm() { + fann_train_enum training_algorithm = FANN_TRAIN_INCREMENTAL; + if (ann != NULL) { + training_algorithm = fann_get_training_algorithm(ann); + } + return static_cast(training_algorithm); + } + + /* Method: set_training_algorithm + + Set the training algorithm. + + More info available in + + This function appears in FANN >= 1.0.0. + */ + void set_training_algorithm(training_algorithm_enum training_algorithm) { + if (ann != NULL) { + fann_set_training_algorithm(ann, static_cast(training_algorithm)); + } + } + + /* Method: get_learning_rate + + Return the learning rate. + + The learning rate is used to determine how aggressive training should be for some of the + training algorithms (FANN::TRAIN_INCREMENTAL, FANN::TRAIN_BATCH, FANN::TRAIN_QUICKPROP). + Do however note that it is not used in FANN::TRAIN_RPROP. + + The default learning rate is 0.7. + + See also: + , , + + + This function appears in FANN >= 1.0.0. + */ + float get_learning_rate() { + float learning_rate = 0.0f; + if (ann != NULL) { + learning_rate = fann_get_learning_rate(ann); + } + return learning_rate; + } + + /* Method: set_learning_rate + + Set the learning rate. + + More info available in + + This function appears in FANN >= 1.0.0. + */ + void set_learning_rate(float learning_rate) { + if (ann != NULL) { + fann_set_learning_rate(ann, learning_rate); + } + } + + /*************************************************************************************************************/ + + /* Method: get_activation_function + + Get the activation function for neuron number *neuron* in layer number *layer*, + counting the input layer as layer 0. + + It is not possible to get activation functions for the neurons in the input layer. + + Information about the individual activation functions is available at + . + + Returns: + The activation function for the neuron or -1 if the neuron is not defined in the neural + network. + + See also: + , , + , , + , + + This function appears in FANN >= 2.1.0 + */ + activation_function_enum get_activation_function(int layer, int neuron) { + unsigned int activation_function = 0; + if (ann != NULL) { + activation_function = fann_get_activation_function(ann, layer, neuron); + } + return static_cast(activation_function); + } + + /* Method: set_activation_function + + Set the activation function for neuron number *neuron* in layer number *layer*, + counting the input layer as layer 0. + + It is not possible to set activation functions for the neurons in the input layer. + + When choosing an activation function it is important to note that the activation + functions have different range. FANN::SIGMOID is e.g. in the 0 - 1 range while + FANN::SIGMOID_SYMMETRIC is in the -1 - 1 range and FANN::LINEAR is unbounded. + + Information about the individual activation functions is available at + . + + The default activation function is FANN::SIGMOID_STEPWISE. + + See also: + , , + , , + , + + This function appears in FANN >= 2.0.0. + */ + void set_activation_function(activation_function_enum activation_function, int layer, + int neuron) { + if (ann != NULL) { + fann_set_activation_function(ann, static_cast(activation_function), + layer, neuron); + } + } + + /* Method: set_activation_function_layer + + Set the activation function for all the neurons in the layer number *layer*, + counting the input layer as layer 0. + + It is not possible to set activation functions for the neurons in the input layer. + + See also: + , , + , , + + + This function appears in FANN >= 2.0.0. + */ + void set_activation_function_layer(activation_function_enum activation_function, int layer) { + if (ann != NULL) { + fann_set_activation_function_layer( + ann, static_cast(activation_function), layer); + } + } + + /* Method: set_activation_function_hidden + + Set the activation function for all of the hidden layers. + + See also: + , , + , , + + + This function appears in FANN >= 1.0.0. + */ + void set_activation_function_hidden(activation_function_enum activation_function) { + if (ann != NULL) { + fann_set_activation_function_hidden( + ann, static_cast(activation_function)); + } + } + + /* Method: set_activation_function_output + + Set the activation function for the output layer. + + See also: + , , + , , + + + This function appears in FANN >= 1.0.0. + */ + void set_activation_function_output(activation_function_enum activation_function) { + if (ann != NULL) { + fann_set_activation_function_output( + ann, static_cast(activation_function)); + } + } + + /* Method: get_activation_steepness + + Get the activation steepness for neuron number *neuron* in layer number *layer*, + counting the input layer as layer 0. + + It is not possible to get activation steepness for the neurons in the input layer. + + The steepness of an activation function says something about how fast the activation function + goes from the minimum to the maximum. A high value for the activation function will also + give a more aggressive training. + + When training neural networks where the output values should be at the extremes (usually 0 and + 1, depending on the activation function), a steep activation function can be used (e.g. 1.0). + + The default activation steepness is 0.5. + + Returns: + The activation steepness for the neuron or -1 if the neuron is not defined in the neural + network. + + See also: + , , + , , + , + + This function appears in FANN >= 2.1.0 + */ + fann_type get_activation_steepness(int layer, int neuron) { + fann_type activation_steepness = 0; + if (ann != NULL) { + activation_steepness = fann_get_activation_steepness(ann, layer, neuron); + } + return activation_steepness; + } + + /* Method: set_activation_steepness + + Set the activation steepness for neuron number *neuron* in layer number *layer*, + counting the input layer as layer 0. + + It is not possible to set activation steepness for the neurons in the input layer. + + The steepness of an activation function says something about how fast the activation function + goes from the minimum to the maximum. A high value for the activation function will also + give a more aggressive training. + + When training neural networks where the output values should be at the extremes (usually 0 and + 1, depending on the activation function), a steep activation function can be used (e.g. 1.0). + + The default activation steepness is 0.5. + + See also: + , , + , , + , + + This function appears in FANN >= 2.0.0. + */ + void set_activation_steepness(fann_type steepness, int layer, int neuron) { + if (ann != NULL) { + fann_set_activation_steepness(ann, steepness, layer, neuron); + } + } + + /* Method: set_activation_steepness_layer + + Set the activation steepness all of the neurons in layer number *layer*, + counting the input layer as layer 0. + + It is not possible to set activation steepness for the neurons in the input layer. + + See also: + , , + , , + + + This function appears in FANN >= 2.0.0. + */ + void set_activation_steepness_layer(fann_type steepness, int layer) { + if (ann != NULL) { + fann_set_activation_steepness_layer(ann, steepness, layer); + } + } + + /* Method: set_activation_steepness_hidden + + Set the steepness of the activation steepness in all of the hidden layers. + + See also: + , , + , , + + + This function appears in FANN >= 1.2.0. + */ + void set_activation_steepness_hidden(fann_type steepness) { + if (ann != NULL) { + fann_set_activation_steepness_hidden(ann, steepness); + } + } + + /* Method: set_activation_steepness_output + + Set the steepness of the activation steepness in the output layer. + + See also: + , , + , , + + + This function appears in FANN >= 1.2.0. + */ + void set_activation_steepness_output(fann_type steepness) { + if (ann != NULL) { + fann_set_activation_steepness_output(ann, steepness); + } + } + + /*************************************************************************************************************/ + + /* Method: get_train_error_function + + Returns the error function used during training. + + The error functions is described further in + + The default error function is FANN::ERRORFUNC_TANH + + See also: + , + + This function appears in FANN >= 1.2.0. + */ + error_function_enum get_train_error_function() { + fann_errorfunc_enum train_error_function = FANN_ERRORFUNC_LINEAR; + if (ann != NULL) { + train_error_function = fann_get_train_error_function(ann); + } + return static_cast(train_error_function); + } + + /* Method: set_train_error_function + + Set the error function used during training. + + The error functions is described further in + + See also: + , + + This function appears in FANN >= 1.2.0. + */ + void set_train_error_function(error_function_enum train_error_function) { + if (ann != NULL) { + fann_set_train_error_function(ann, static_cast(train_error_function)); + } + } + + /* Method: get_quickprop_decay + + The decay is a small negative valued number which is the factor that the weights + should become smaller in each iteration during quickprop training. This is used + to make sure that the weights do not become too high during training. + + The default decay is -0.0001. + + See also: + , + + This function appears in FANN >= 1.2.0. + */ + float get_quickprop_decay() { + float quickprop_decay = 0.0f; + if (ann != NULL) { + quickprop_decay = fann_get_quickprop_decay(ann); + } + return quickprop_decay; + } + + /* Method: set_quickprop_decay + + Sets the quickprop decay factor. + + See also: + , + + This function appears in FANN >= 1.2.0. + */ + void set_quickprop_decay(float quickprop_decay) { + if (ann != NULL) { + fann_set_quickprop_decay(ann, quickprop_decay); + } + } + + /* Method: get_quickprop_mu + + The mu factor is used to increase and decrease the step-size during quickprop training. + The mu factor should always be above 1, since it would otherwise decrease the step-size + when it was suppose to increase it. + + The default mu factor is 1.75. + + See also: + , + + This function appears in FANN >= 1.2.0. + */ + float get_quickprop_mu() { + float quickprop_mu = 0.0f; + if (ann != NULL) { + quickprop_mu = fann_get_quickprop_mu(ann); + } + return quickprop_mu; + } + + /* Method: set_quickprop_mu + + Sets the quickprop mu factor. + + See also: + , + + This function appears in FANN >= 1.2.0. + */ + void set_quickprop_mu(float quickprop_mu) { + if (ann != NULL) { + fann_set_quickprop_mu(ann, quickprop_mu); + } + } + + /* Method: get_rprop_increase_factor + + The increase factor is a value larger than 1, which is used to + increase the step-size during RPROP training. + + The default increase factor is 1.2. + + See also: + , + + This function appears in FANN >= 1.2.0. + */ + float get_rprop_increase_factor() { + float factor = 0.0f; + if (ann != NULL) { + factor = fann_get_rprop_increase_factor(ann); + } + return factor; + } + + /* Method: set_rprop_increase_factor + + The increase factor used during RPROP training. + + See also: + , + + This function appears in FANN >= 1.2.0. + */ + void set_rprop_increase_factor(float rprop_increase_factor) { + if (ann != NULL) { + fann_set_rprop_increase_factor(ann, rprop_increase_factor); + } + } + + /* Method: get_rprop_decrease_factor + + The decrease factor is a value smaller than 1, which is used to decrease the step-size during + RPROP training. + + The default decrease factor is 0.5. + + See also: + , + + This function appears in FANN >= 1.2.0. + */ + float get_rprop_decrease_factor() { + float factor = 0.0f; + if (ann != NULL) { + factor = fann_get_rprop_decrease_factor(ann); + } + return factor; + } + + /* Method: set_rprop_decrease_factor + + The decrease factor is a value smaller than 1, which is used to decrease the step-size during + RPROP training. + + See also: + , + + This function appears in FANN >= 1.2.0. + */ + void set_rprop_decrease_factor(float rprop_decrease_factor) { + if (ann != NULL) { + fann_set_rprop_decrease_factor(ann, rprop_decrease_factor); + } + } + + /* Method: get_rprop_delta_zero + + The initial step-size is a small positive number determining how small the initial step-size + may be. + + The default value delta zero is 0.1. + + See also: + , + + This function appears in FANN >= 2.1.0. + */ + float get_rprop_delta_zero() { + float delta = 0.0f; + if (ann != NULL) { + delta = fann_get_rprop_delta_zero(ann); + } + return delta; + } + + /* Method: set_rprop_delta_zero + + The initial step-size is a small positive number determining how small the initial step-size + may be. + + See also: + , + + This function appears in FANN >= 2.1.0. + */ + void set_rprop_delta_zero(float rprop_delta_zero) { + if (ann != NULL) { + fann_set_rprop_delta_zero(ann, rprop_delta_zero); + } + } + + /* Method: get_rprop_delta_min + + The minimum step-size is a small positive number determining how small the minimum step-size + may be. + + The default value delta min is 0.0. + + See also: + , + + This function appears in FANN >= 1.2.0. + */ + float get_rprop_delta_min() { + float delta = 0.0f; + if (ann != NULL) { + delta = fann_get_rprop_delta_min(ann); + } + return delta; + } + + /* Method: set_rprop_delta_min + + The minimum step-size is a small positive number determining how small the minimum step-size + may be. + + See also: + , + + This function appears in FANN >= 1.2.0. + */ + void set_rprop_delta_min(float rprop_delta_min) { + if (ann != NULL) { + fann_set_rprop_delta_min(ann, rprop_delta_min); + } + } + + /* Method: get_rprop_delta_max + + The maximum step-size is a positive number determining how large the maximum step-size may be. + + The default delta max is 50.0. + + See also: + , , + + This function appears in FANN >= 1.2.0. + */ + float get_rprop_delta_max() { + float delta = 0.0f; + if (ann != NULL) { + delta = fann_get_rprop_delta_max(ann); + } + return delta; + } + + /* Method: set_rprop_delta_max + + The maximum step-size is a positive number determining how large the maximum step-size may be. + + See also: + , , + + This function appears in FANN >= 1.2.0. + */ + void set_rprop_delta_max(float rprop_delta_max) { + if (ann != NULL) { + fann_set_rprop_delta_max(ann, rprop_delta_max); + } + } + + /* Method: get_sarprop_weight_decay_shift + + The sarprop weight decay shift. + + The default delta max is -6.644. + + See also: + , + + This function appears in FANN >= 2.1.0. + */ + float get_sarprop_weight_decay_shift() { + float res = 0.0f; + if (ann != NULL) { + res = fann_get_rprop_delta_max(ann); + } + return res; + } + + /* Method: set_sarprop_weight_decay_shift + + Set the sarprop weight decay shift. + + This function appears in FANN >= 2.1.0. + + See also: + , + */ + void set_sarprop_weight_decay_shift(float sarprop_weight_decay_shift) { + if (ann != NULL) { + fann_set_sarprop_weight_decay_shift(ann, sarprop_weight_decay_shift); + } + } + + /* Method: get_sarprop_step_error_threshold_factor + + The sarprop step error threshold factor. + + The default delta max is 0.1. + + See also: + , + + This function appears in FANN >= 2.1.0. + */ + float get_sarprop_step_error_threshold_factor() { + float res = 0.0f; + if (ann != NULL) { + res = fann_get_rprop_delta_max(ann); + } + return res; + } + + /* Method: set_sarprop_step_error_threshold_factor + + Set the sarprop step error threshold factor. + + This function appears in FANN >= 2.1.0. + + See also: + , + */ + void set_sarprop_step_error_threshold_factor(float sarprop_step_error_threshold_factor) { + if (ann != NULL) { + fann_set_sarprop_step_error_threshold_factor(ann, sarprop_step_error_threshold_factor); + } + } + + /* Method: get_sarprop_step_error_shift + + The get sarprop step error shift. + + The default delta max is 1.385. + + See also: + , + + This function appears in FANN >= 2.1.0. + */ + float get_sarprop_step_error_shift() { + float res = 0.0f; + if (ann != NULL) { + res = fann_get_rprop_delta_max(ann); + } + return res; + } + + /* Method: set_sarprop_step_error_shift + + Set the sarprop step error shift. + + This function appears in FANN >= 2.1.0. + + See also: + , + */ + void set_sarprop_step_error_shift(float sarprop_step_error_shift) { + if (ann != NULL) { + fann_set_sarprop_step_error_shift(ann, sarprop_step_error_shift); + } + } + + /* Method: get_sarprop_temperature + + The sarprop weight decay shift. + + The default delta max is 0.015. + + See also: + , + + This function appears in FANN >= 2.1.0. + */ + float get_sarprop_temperature() { + float res = 0.0f; + if (ann != NULL) { + res = fann_get_rprop_delta_max(ann); + } + return res; + } + + /* Method: set_sarprop_temperature + + Set the sarprop_temperature. + + This function appears in FANN >= 2.1.0. + + See also: + , + */ + void set_sarprop_temperature(float sarprop_temperature) { + if (ann != NULL) { + fann_set_sarprop_temperature(ann, sarprop_temperature); + } + } + + /* Method: get_num_input + + Get the number of input neurons. + + This function appears in FANN >= 1.0.0. + */ + unsigned int get_num_input() { + unsigned int num_input = 0; + if (ann != NULL) { + num_input = fann_get_num_input(ann); + } + return num_input; + } + + /* Method: get_num_output + + Get the number of output neurons. + + This function appears in FANN >= 1.0.0. + */ + unsigned int get_num_output() { + unsigned int num_output = 0; + if (ann != NULL) { + num_output = fann_get_num_output(ann); + } + return num_output; + } + + /* Method: get_total_neurons + + Get the total number of neurons in the entire network. This number does also include the + bias neurons, so a 2-4-2 network has 2+4+2 +2(bias) = 10 neurons. + + This function appears in FANN >= 1.0.0. + */ + unsigned int get_total_neurons() { + if (ann == NULL) { + return 0; + } + return fann_get_total_neurons(ann); + } + + /* Method: get_total_connections + + Get the total number of connections in the entire network. + + This function appears in FANN >= 1.0.0. + */ + unsigned int get_total_connections() { + if (ann == NULL) { + return 0; + } + return fann_get_total_connections(ann); + } + +#ifdef FIXEDFANN + /* Method: get_decimal_point + + Returns the position of the decimal point in the ann. + + This function is only available when the ANN is in fixed point mode. + + The decimal point is described in greater detail in the tutorial . + + See also: + , , , + , + + This function appears in FANN >= 1.0.0. + */ + unsigned int get_decimal_point() { + if (ann == NULL) { + return 0; + } + return fann_get_decimal_point(ann); + } + + /* Method: get_multiplier + + Returns the multiplier that fix point data is multiplied with. + + This function is only available when the ANN is in fixed point mode. + + The multiplier is the used to convert between floating point and fixed point notation. + A floating point number is multiplied with the multiplier in order to get the fixed point + number and visa versa. + + The multiplier is described in greater detail in the tutorial . + + See also: + , , , + , + + This function appears in FANN >= 1.0.0. + */ + unsigned int get_multiplier() { + if (ann == NULL) { + return 0; + } + return fann_get_multiplier(ann); + } +#endif /* FIXEDFANN */ + + /*********************************************************************/ + + /* Method: get_network_type + + Get the type of neural network it was created as. + + Returns: + The neural network type from enum + + See Also: + + + This function appears in FANN >= 2.1.0 + */ + network_type_enum get_network_type() { + fann_nettype_enum network_type = FANN_NETTYPE_LAYER; + if (ann != NULL) { + network_type = fann_get_network_type(ann); + } + return static_cast(network_type); + } + + /* Method: get_connection_rate + + Get the connection rate used when the network was created + + Returns: + The connection rate + + See also: + + + This function appears in FANN >= 2.1.0 + */ + float get_connection_rate() { + if (ann == NULL) { + return 0; + } + return fann_get_connection_rate(ann); + } + + /* Method: get_num_layers + + Get the number of layers in the network + + Returns: + The number of layers in the neural network + + See also: + + + This function appears in FANN >= 2.1.0 + */ + unsigned int get_num_layers() { + if (ann == NULL) { + return 0; + } + return fann_get_num_layers(ann); + } + + /* Method: get_layer_array + + Get the number of neurons in each layer in the network. + + Bias is not included so the layers match the create methods. + + The layers array must be preallocated to at least + sizeof(unsigned int) * get_num_layers() long. + + See also: + + + This function appears in FANN >= 2.1.0 + */ + void get_layer_array(unsigned int *layers) { + if (ann != NULL) { + fann_get_layer_array(ann, layers); + } + } + + /* Method: get_bias_array + + Get the number of bias in each layer in the network. + + The bias array must be preallocated to at least + sizeof(unsigned int) * get_num_layers() long. + + See also: + + + This function appears in FANN >= 2.1.0 + */ + void get_bias_array(unsigned int *bias) { + if (ann != NULL) { + fann_get_bias_array(ann, bias); + } + } + + /* Method: get_connection_array + + Get the connections in the network. + + The connections array must be preallocated to at least + sizeof(struct fann_connection) * get_total_connections() long. + + See also: + + + This function appears in FANN >= 2.1.0 + */ + void get_connection_array(connection *connections) { + if (ann != NULL) { + fann_get_connection_array(ann, connections); + } + } + + /* Method: set_weight_array + + Set connections in the network. + + Only the weights can be changed, connections and weights are ignored + if they do not already exist in the network. + + The array must have sizeof(struct fann_connection) * num_connections size. + + See also: + + + This function appears in FANN >= 2.1.0 + */ + void set_weight_array(connection *connections, unsigned int num_connections) { + if (ann != NULL) { + fann_set_weight_array(ann, connections, num_connections); + } + } + + /* Method: set_weight + + Set a connection in the network. + + Only the weights can be changed. The connection/weight is + ignored if it does not already exist in the network. + + See also: + + + This function appears in FANN >= 2.1.0 + */ + void set_weight(unsigned int from_neuron, unsigned int to_neuron, fann_type weight) { + if (ann != NULL) { + fann_set_weight(ann, from_neuron, to_neuron, weight); + } + } + + /* Method: get_weights + + Get all the network weights. + + See also: + + + This function appears in FANN >= x.y.z + */ + void get_weights(fann_type *weights) { + if (ann != NULL) { + fann_get_weights(ann, weights); + } + } + + /* Method: set_weights + + Set network weights. + + See also: + + + This function appears in FANN >= x.y.z + */ + void set_weights(fann_type *weights) { + if (ann != NULL) { + fann_set_weights(ann, weights); + } + } + + /*********************************************************************/ + + /* Method: get_learning_momentum + + Get the learning momentum. + + The learning momentum can be used to speed up FANN::TRAIN_INCREMENTAL training. + A too high momentum will however not benefit training. Setting momentum to 0 will + be the same as not using the momentum parameter. The recommended value of this parameter + is between 0.0 and 1.0. + + The default momentum is 0. + + See also: + , + + This function appears in FANN >= 2.0.0. + */ + float get_learning_momentum() { + float learning_momentum = 0.0f; + if (ann != NULL) { + learning_momentum = fann_get_learning_momentum(ann); + } + return learning_momentum; + } + + /* Method: set_learning_momentum + + Set the learning momentum. + + More info available in + + This function appears in FANN >= 2.0.0. + */ + void set_learning_momentum(float learning_momentum) { + if (ann != NULL) { + fann_set_learning_momentum(ann, learning_momentum); + } + } + + /* Method: get_train_stop_function + + Returns the the stop function used during training. + + The stop function is described further in + + The default stop function is FANN::STOPFUNC_MSE + + See also: + , + + This function appears in FANN >= 2.0.0. + */ + stop_function_enum get_train_stop_function() { + enum fann_stopfunc_enum stopfunc = FANN_STOPFUNC_MSE; + if (ann != NULL) { + stopfunc = fann_get_train_stop_function(ann); + } + return static_cast(stopfunc); + } + + /* Method: set_train_stop_function + + Set the stop function used during training. + + The stop function is described further in + + See also: + + + This function appears in FANN >= 2.0.0. + */ + void set_train_stop_function(stop_function_enum train_stop_function) { + if (ann != NULL) { + fann_set_train_stop_function(ann, static_cast(train_stop_function)); + } + } + + /* Method: get_bit_fail_limit + + Returns the bit fail limit used during training. + + The bit fail limit is used during training when the is set to + FANN_STOPFUNC_BIT. + + The limit is the maximum accepted difference between the desired output and the actual output + during training. Each output that diverges more than this limit is counted as an error bit. + This difference is divided by two when dealing with symmetric activation functions, + so that symmetric and not symmetric activation functions can use the same limit. + + The default bit fail limit is 0.35. + + See also: + + + This function appears in FANN >= 2.0.0. + */ + fann_type get_bit_fail_limit() { + fann_type bit_fail_limit = 0.0f; + + if (ann != NULL) { + bit_fail_limit = fann_get_bit_fail_limit(ann); + } + return bit_fail_limit; + } + + /* Method: set_bit_fail_limit + + Set the bit fail limit used during training. + + See also: + + + This function appears in FANN >= 2.0.0. + */ + void set_bit_fail_limit(fann_type bit_fail_limit) { + if (ann != NULL) { + fann_set_bit_fail_limit(ann, bit_fail_limit); + } + } + + /* Method: get_bit_fail + + The number of fail bits; means the number of output neurons which differ more + than the bit fail limit (see , ). + The bits are counted in all of the training data, so this number can be higher than + the number of training data. + + This value is reset by and updated by all the same functions which also + updates the MSE value (e.g. , ) + + See also: + , + + This function appears in FANN >= 2.0.0 + */ + unsigned int get_bit_fail() { + unsigned int bit_fail = 0; + if (ann != NULL) { + bit_fail = fann_get_bit_fail(ann); + } + return bit_fail; + } + +#ifndef FIXEDFANN + /*********************************************************************/ + + /* Method: cascadetrain_on_data + + Trains on an entire dataset, for a period of time using the Cascade2 training algorithm. + This algorithm adds neurons to the neural network while training, which means that it + needs to start with an ANN without any hidden layers. The neural network should also use + shortcut connections, so should be used to create the ANN like this: + >net.create_shortcut(2, train_data.num_input_train_data(), train_data.num_output_train_data()); + + This training uses the parameters set using the set_cascade_..., but it also uses another + training algorithm as it's internal training algorithm. This algorithm can be set to either + FANN::TRAIN_RPROP or FANN::TRAIN_QUICKPROP by , and the parameters + set for these training algorithms will also affect the cascade training. + + Parameters: + data - The data, which should be used during training + max_neuron - The maximum number of neurons to be added to neural network + neurons_between_reports - The number of neurons between printing a status report + to stdout. A value of zero means no reports should be printed. desired_error - The desired + or , depending on which stop function is chosen by + . + + Instead of printing out reports every neurons_between_reports, a callback function can be + called (see ). + + See also: + , , + + This function appears in FANN >= 2.0.0. + */ + void cascadetrain_on_data(const training_data &data, unsigned int max_neurons, + unsigned int neurons_between_reports, float desired_error) { + if ((ann != NULL) && (data.train_data != NULL)) { + fann_cascadetrain_on_data(ann, data.train_data, max_neurons, neurons_between_reports, + desired_error); + } + } + + /* Method: cascadetrain_on_file + + Does the same as , but reads the training data directly from a file. + + See also: + , + + This function appears in FANN >= 2.0.0. + */ + void cascadetrain_on_file(const std::string &filename, unsigned int max_neurons, + unsigned int neurons_between_reports, float desired_error) { + if (ann != NULL) { + fann_cascadetrain_on_file(ann, filename.c_str(), max_neurons, neurons_between_reports, + desired_error); + } + } + + /* Method: get_cascade_output_change_fraction + + The cascade output change fraction is a number between 0 and 1 determining how large a fraction + the value should change within during + training of the output connections, in order for the training not to stagnate. If the training + stagnates, the training of the output connections will be ended and new candidates will be + prepared. + + This means: + If the MSE does not change by a fraction of during a + period of , the training of the output connections + is stopped because the training has stagnated. + + If the cascade output change fraction is low, the output connections will be trained more and + if the fraction is high they will be trained less. + + The default cascade output change fraction is 0.01, which is equalent to a 1% change in MSE. + + See also: + , , + , + + This function appears in FANN >= 2.0.0. + */ + float get_cascade_output_change_fraction() { + float change_fraction = 0.0f; + if (ann != NULL) { + change_fraction = fann_get_cascade_output_change_fraction(ann); + } + return change_fraction; + } + + /* Method: set_cascade_output_change_fraction + + Sets the cascade output change fraction. + + See also: + , + + This function appears in FANN >= 2.0.0. + */ + void set_cascade_output_change_fraction(float cascade_output_change_fraction) { + if (ann != NULL) { + fann_set_cascade_output_change_fraction(ann, cascade_output_change_fraction); + } + } + + /* Method: get_cascade_output_stagnation_epochs + + The number of cascade output stagnation epochs determines the number of epochs training is + allowed to continue without changing the MSE by a fraction of + . + + See more info about this parameter in . + + The default number of cascade output stagnation epochs is 12. + + See also: + , , + + + This function appears in FANN >= 2.0.0. + */ + unsigned int get_cascade_output_stagnation_epochs() { + unsigned int stagnation_epochs = 0; + if (ann != NULL) { + stagnation_epochs = fann_get_cascade_output_stagnation_epochs(ann); + } + return stagnation_epochs; + } + + /* Method: set_cascade_output_stagnation_epochs + + Sets the number of cascade output stagnation epochs. + + See also: + , + + + This function appears in FANN >= 2.0.0. + */ + void set_cascade_output_stagnation_epochs(unsigned int cascade_output_stagnation_epochs) { + if (ann != NULL) { + fann_set_cascade_output_stagnation_epochs(ann, cascade_output_stagnation_epochs); + } + } + + /* Method: get_cascade_candidate_change_fraction + + The cascade candidate change fraction is a number between 0 and 1 determining how large a + fraction the value should change within + during training of the candidate neurons, in order for the training not to stagnate. If the + training stagnates, the training of the candidate neurons will be ended and the best candidate + will be selected. + + This means: + If the MSE does not change by a fraction of during a + period of , the training of the candidate neurons + is stopped because the training has stagnated. + + If the cascade candidate change fraction is low, the candidate neurons will be trained more and + if the fraction is high they will be trained less. + + The default cascade candidate change fraction is 0.01, which is equalent to a 1% change in MSE. + + See also: + , , + , + + This function appears in FANN >= 2.0.0. + */ + float get_cascade_candidate_change_fraction() { + float change_fraction = 0.0f; + if (ann != NULL) { + change_fraction = fann_get_cascade_candidate_change_fraction(ann); + } + return change_fraction; + } + + /* Method: set_cascade_candidate_change_fraction + + Sets the cascade candidate change fraction. + + See also: + , + + + This function appears in FANN >= 2.0.0. + */ + void set_cascade_candidate_change_fraction(float cascade_candidate_change_fraction) { + if (ann != NULL) { + fann_set_cascade_candidate_change_fraction(ann, cascade_candidate_change_fraction); + } + } + + /* Method: get_cascade_candidate_stagnation_epochs + + The number of cascade candidate stagnation epochs determines the number of epochs training is + allowed to continue without changing the MSE by a fraction of + . + + See more info about this parameter in . + + The default number of cascade candidate stagnation epochs is 12. + + See also: + , + , + + This function appears in FANN >= 2.0.0. + */ + unsigned int get_cascade_candidate_stagnation_epochs() { + unsigned int stagnation_epochs = 0; + if (ann != NULL) { + stagnation_epochs = fann_get_cascade_candidate_stagnation_epochs(ann); + } + return stagnation_epochs; + } + + /* Method: set_cascade_candidate_stagnation_epochs + + Sets the number of cascade candidate stagnation epochs. + + See also: + , + + + This function appears in FANN >= 2.0.0. + */ + void set_cascade_candidate_stagnation_epochs(unsigned int cascade_candidate_stagnation_epochs) { + if (ann != NULL) { + fann_set_cascade_candidate_stagnation_epochs(ann, cascade_candidate_stagnation_epochs); + } + } + + /* Method: get_cascade_weight_multiplier + + The weight multiplier is a parameter which is used to multiply the weights from the candidate + neuron before adding the neuron to the neural network. This parameter is usually between 0 and + 1, and is used to make the training a bit less aggressive. + + The default weight multiplier is 0.4 + + See also: + , + + This function appears in FANN >= 2.0.0. + */ + fann_type get_cascade_weight_multiplier() { + fann_type weight_multiplier = 0; + if (ann != NULL) { + weight_multiplier = fann_get_cascade_weight_multiplier(ann); + } + return weight_multiplier; + } + + /* Method: set_cascade_weight_multiplier + + Sets the weight multiplier. + + See also: + , + + This function appears in FANN >= 2.0.0. + */ + void set_cascade_weight_multiplier(fann_type cascade_weight_multiplier) { + if (ann != NULL) { + fann_set_cascade_weight_multiplier(ann, cascade_weight_multiplier); + } + } + + /* Method: get_cascade_candidate_limit + + The candidate limit is a limit for how much the candidate neuron may be trained. + The limit is a limit on the proportion between the MSE and candidate score. + + Set this to a lower value to avoid overfitting and to a higher if overfitting is + not a problem. + + The default candidate limit is 1000.0 + + See also: + , + + This function appears in FANN >= 2.0.0. + */ + fann_type get_cascade_candidate_limit() { + fann_type candidate_limit = 0; + if (ann != NULL) { + candidate_limit = fann_get_cascade_candidate_limit(ann); + } + return candidate_limit; + } + + /* Method: set_cascade_candidate_limit + + Sets the candidate limit. + + See also: + , + + This function appears in FANN >= 2.0.0. + */ + void set_cascade_candidate_limit(fann_type cascade_candidate_limit) { + if (ann != NULL) { + fann_set_cascade_candidate_limit(ann, cascade_candidate_limit); + } + } + + /* Method: get_cascade_max_out_epochs + + The maximum out epochs determines the maximum number of epochs the output connections + may be trained after adding a new candidate neuron. + + The default max out epochs is 150 + + See also: + , + + This function appears in FANN >= 2.0.0. + */ + unsigned int get_cascade_max_out_epochs() { + unsigned int max_out_epochs = 0; + if (ann != NULL) { + max_out_epochs = fann_get_cascade_max_out_epochs(ann); + } + return max_out_epochs; + } + + /* Method: set_cascade_max_out_epochs + + Sets the maximum out epochs. + + See also: + , + + This function appears in FANN >= 2.0.0. + */ + void set_cascade_max_out_epochs(unsigned int cascade_max_out_epochs) { + if (ann != NULL) { + fann_set_cascade_max_out_epochs(ann, cascade_max_out_epochs); + } + } + + /* Method: get_cascade_max_cand_epochs + + The maximum candidate epochs determines the maximum number of epochs the input + connections to the candidates may be trained before adding a new candidate neuron. + + The default max candidate epochs is 150 + + See also: + , + + This function appears in FANN >= 2.0.0. + */ + unsigned int get_cascade_max_cand_epochs() { + unsigned int max_cand_epochs = 0; + if (ann != NULL) { + max_cand_epochs = fann_get_cascade_max_cand_epochs(ann); + } + return max_cand_epochs; + } + + /* Method: set_cascade_max_cand_epochs + + Sets the max candidate epochs. + + See also: + , + + This function appears in FANN >= 2.0.0. + */ + void set_cascade_max_cand_epochs(unsigned int cascade_max_cand_epochs) { + if (ann != NULL) { + fann_set_cascade_max_cand_epochs(ann, cascade_max_cand_epochs); + } + } + + /* Method: get_cascade_num_candidates + + The number of candidates used during training (calculated by multiplying + , and + ). + + The actual candidates is defined by the and + arrays. These arrays define the activation functions + and activation steepnesses used for the candidate neurons. If there are 2 activation functions + in the activation function array and 3 steepnesses in the steepness array, then there will be + 2x3=6 different candidates which will be trained. These 6 different candidates can be copied + into several candidate groups, where the only difference between these groups is the initial + weights. If the number of groups is set to 2, then the number of candidate neurons will be + 2x3x2=12. The number of candidate groups is defined by . + + The default number of candidates is 6x4x2 = 48 + + See also: + , , + , , + , + + This function appears in FANN >= 2.0.0. + */ + unsigned int get_cascade_num_candidates() { + unsigned int num_candidates = 0; + if (ann != NULL) { + num_candidates = fann_get_cascade_num_candidates(ann); + } + return num_candidates; + } + + /* Method: get_cascade_activation_functions_count + + The number of activation functions in the array. + + The default number of activation functions is 10. + + See also: + , , + + + This function appears in FANN >= 2.0.0. + */ + unsigned int get_cascade_activation_functions_count() { + unsigned int activation_functions_count = 0; + if (ann != NULL) { + activation_functions_count = fann_get_cascade_activation_functions_count(ann); + } + return activation_functions_count; + } + + /* Method: get_cascade_activation_functions + + The cascade activation functions array is an array of the different activation functions used + by the candidates. + + See for a description of which candidate neurons will be + generated by this array. + + See also: + , , + + + This function appears in FANN >= 2.0.0. + */ + activation_function_enum *get_cascade_activation_functions() { + enum fann_activationfunc_enum *activation_functions = NULL; + if (ann != NULL) { + activation_functions = fann_get_cascade_activation_functions(ann); + } + return reinterpret_cast(activation_functions); + } + + /* Method: set_cascade_activation_functions + + Sets the array of cascade candidate activation functions. The array must be just as long + as defined by the count. + + See for a description of which candidate neurons will be + generated by this array. + + See also: + , , + + + This function appears in FANN >= 2.0.0. + */ + void set_cascade_activation_functions(activation_function_enum *cascade_activation_functions, + unsigned int cascade_activation_functions_count) { + if (ann != NULL) { + fann_set_cascade_activation_functions( + ann, reinterpret_cast(cascade_activation_functions), + cascade_activation_functions_count); + } + } + + /* Method: get_cascade_activation_steepnesses_count + + The number of activation steepnesses in the array. + + The default number of activation steepnesses is 4. + + See also: + , , + + + This function appears in FANN >= 2.0.0. + */ + unsigned int get_cascade_activation_steepnesses_count() { + unsigned int activation_steepness_count = 0; + if (ann != NULL) { + activation_steepness_count = fann_get_cascade_activation_steepnesses_count(ann); + } + return activation_steepness_count; + } + + /* Method: get_cascade_activation_steepnesses + + The cascade activation steepnesses array is an array of the different activation functions used + by the candidates. + + See for a description of which candidate neurons will be + generated by this array. + + The default activation steepnesses is {0.25, 0.50, 0.75, 1.00} + + See also: + , , + + + This function appears in FANN >= 2.0.0. + */ + fann_type *get_cascade_activation_steepnesses() { + fann_type *activation_steepnesses = NULL; + if (ann != NULL) { + activation_steepnesses = fann_get_cascade_activation_steepnesses(ann); + } + return activation_steepnesses; + } + + /* Method: set_cascade_activation_steepnesses + + Sets the array of cascade candidate activation steepnesses. The array must be just as long + as defined by the count. + + See for a description of which candidate neurons will be + generated by this array. + + See also: + , , + + + This function appears in FANN >= 2.0.0. + */ + void set_cascade_activation_steepnesses(fann_type *cascade_activation_steepnesses, + unsigned int cascade_activation_steepnesses_count) { + if (ann != NULL) { + fann_set_cascade_activation_steepnesses(ann, cascade_activation_steepnesses, + cascade_activation_steepnesses_count); + } + } + + /* Method: get_cascade_num_candidate_groups + + The number of candidate groups is the number of groups of identical candidates which will be + used during training. + + This number can be used to have more candidates without having to define new parameters for the + candidates. + + See for a description of which candidate neurons will be + generated by this parameter. + + The default number of candidate groups is 2 + + See also: + , + + This function appears in FANN >= 2.0.0. + */ + unsigned int get_cascade_num_candidate_groups() { + unsigned int num_candidate_groups = 0; + if (ann != NULL) { + num_candidate_groups = fann_get_cascade_num_candidate_groups(ann); + } + return num_candidate_groups; + } + + /* Method: set_cascade_num_candidate_groups + + Sets the number of candidate groups. + + See also: + , + + This function appears in FANN >= 2.0.0. + */ + void set_cascade_num_candidate_groups(unsigned int cascade_num_candidate_groups) { + if (ann != NULL) { + fann_set_cascade_num_candidate_groups(ann, cascade_num_candidate_groups); + } + } + + /*********************************************************************/ + + /* Method: scale_train + + Scale input and output data based on previously calculated parameters. + + See also: + , + + This function appears in FANN >= 2.1.0. + */ + void scale_train(training_data &data) { + if (ann != NULL) { + fann_scale_train(ann, data.train_data); + } + } + + /* Method: descale_train + + Descale input and output data based on previously calculated parameters. + + See also: + , + + This function appears in FANN >= 2.1.0. + */ + void descale_train(training_data &data) { + if (ann != NULL) { + fann_descale_train(ann, data.train_data); + } + } + + /* Method: set_input_scaling_params + + Calculate scaling parameters for future use based on training data. + + See also: + , + + This function appears in FANN >= 2.1.0. + */ + bool set_input_scaling_params(const training_data &data, float new_input_min, + float new_input_max) { + bool status = false; + if (ann != NULL) { + status = + (fann_set_input_scaling_params(ann, data.train_data, new_input_min, new_input_max) != -1); + } + return status; + } + + /* Method: set_output_scaling_params + + Calculate scaling parameters for future use based on training data. + + See also: + , + + This function appears in FANN >= 2.1.0. + */ + bool set_output_scaling_params(const training_data &data, float new_output_min, + float new_output_max) { + bool status = false; + if (ann != NULL) { + status = (fann_set_output_scaling_params(ann, data.train_data, new_output_min, + new_output_max) != -1); + } + return status; + } + + /* Method: set_scaling_params + + Calculate scaling parameters for future use based on training data. + + See also: + , + + This function appears in FANN >= 2.1.0. + */ + bool set_scaling_params(const training_data &data, float new_input_min, float new_input_max, + float new_output_min, float new_output_max) { + bool status = false; + if (ann != NULL) { + status = (fann_set_scaling_params(ann, data.train_data, new_input_min, new_input_max, + new_output_min, new_output_max) != -1); + } + return status; + } + + /* Method: clear_scaling_params + + Clears scaling parameters. + + See also: + , + + This function appears in FANN >= 2.1.0. + */ + bool clear_scaling_params() { + bool status = false; + if (ann != NULL) { + status = (fann_clear_scaling_params(ann) != -1); + } + return status; + } + + /* Method: scale_input + + Scale data in input vector before feed it to ann based on previously calculated parameters. + + See also: + , , + + This function appears in FANN >= 2.1.0. + */ + void scale_input(fann_type *input_vector) { + if (ann != NULL) { + fann_scale_input(ann, input_vector); + } + } + + /* Method: scale_output + + Scale data in output vector before feed it to ann based on previously calculated parameters. + + See also: + , , + + This function appears in FANN >= 2.1.0. + */ + void scale_output(fann_type *output_vector) { + if (ann != NULL) { + fann_scale_output(ann, output_vector); + } + } + + /* Method: descale_input + + Scale data in input vector after get it from ann based on previously calculated parameters. + + See also: + , , + + This function appears in FANN >= 2.1.0. + */ + void descale_input(fann_type *input_vector) { + if (ann != NULL) { + fann_descale_input(ann, input_vector); + } + } + + /* Method: descale_output + + Scale data in output vector after get it from ann based on previously calculated parameters. + + See also: + , , + + This function appears in FANN >= 2.1.0. + */ + void descale_output(fann_type *output_vector) { + if (ann != NULL) { + fann_descale_output(ann, output_vector); + } + } + +#endif /* FIXEDFANN */ + + /*********************************************************************/ + + /* Method: set_error_log + + Change where errors are logged to. + + If log_file is NULL, no errors will be printed. + + If neural_net is empty i.e. ann is NULL, the default log will be set. + The default log is the log used when creating a neural_net. + This default log will also be the default for all new structs + that are created. + + The default behavior is to log them to stderr. + + See also: + , + + This function appears in FANN >= 1.1.0. + */ + void set_error_log(FILE *log_file) { + fann_set_error_log(reinterpret_cast(ann), log_file); + } + + /* Method: get_errno + + Returns the last error number. + + See also: + , , + + This function appears in FANN >= 1.1.0. + */ + unsigned int get_errno() { return fann_get_errno(reinterpret_cast(ann)); } + + /* Method: reset_errno + + Resets the last error number. + + This function appears in FANN >= 1.1.0. + */ + void reset_errno() { fann_reset_errno(reinterpret_cast(ann)); } + + /* Method: reset_errstr + + Resets the last error string. + + This function appears in FANN >= 1.1.0. + */ + void reset_errstr() { fann_reset_errstr(reinterpret_cast(ann)); } + + /* Method: get_errstr + + Returns the last errstr. + + This function calls and + + This function appears in FANN >= 1.1.0. + */ + std::string get_errstr() { + return std::string(fann_get_errstr(reinterpret_cast(ann))); + } + + /* Method: print_error + + Prints the last error to stderr. + + This function appears in FANN >= 1.1.0. + */ + void print_error() { fann_print_error(reinterpret_cast(ann)); } + + /* Function: disable_seed_rand + + Disables the automatic random generator seeding that happens in FANN. + + Per default FANN will always seed the random generator when creating a new network, + unless FANN_NO_SEED is defined during compilation of the library. This method can + disable this at runtime. + + This function appears in FANN >= 2.3.0 + */ + void disable_seed_rand() { fann_disable_seed_rand(); } + + /* Function: enable_seed_rand + + Enables the automatic random generator seeding that happens in FANN. + + Per default FANN will always seed the random generator when creating a new network, + unless FANN_NO_SEED is defined during compilation of the library. This method can + disable this at runtime. + + This function appears in FANN >= 2.3.0 + */ + void enable_seed_rand() { fann_enable_seed_rand(); } + + /*********************************************************************/ + + private: + // Structure used by set_callback to hold information about a user callback + typedef struct user_context_type { + callback_type user_callback; // Pointer to user callback function + void *user_data; // Arbitrary data pointer passed to the callback + neural_net *net; // This pointer for the neural network + } user_context; + +#ifndef FIXEDFANN + + // Internal callback used to convert from pointers to class references + static int FANN_API internal_callback(struct fann *ann, struct fann_train_data *train, + unsigned int max_epochs, + unsigned int epochs_between_reports, float desired_error, + unsigned int epochs) { + user_context *user_data = static_cast(fann_get_user_data(ann)); + if (user_data != NULL) { + FANN::training_data data; + data.train_data = train; + + int result = + (*user_data->user_callback)(*user_data->net, data, max_epochs, epochs_between_reports, + desired_error, epochs, user_data->user_data); + + data.train_data = NULL; // Prevent automatic cleanup + return result; + } else { + return -1; // This should not occur except if out of memory + } + } + +#endif /* NOT FIXEDFANN */ + + protected: + // Pointer the encapsulated fann neural net structure + struct fann *ann; +}; + +/*************************************************************************/ +} // namespace FANN + +#endif /* FANN_CPP_H_INCLUDED */ diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_data.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_data.h new file mode 100644 index 0000000..1425305 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_data.h @@ -0,0 +1,800 @@ +/* +Fast Artificial Neural Network Library (fann) +Copyright (C) 2003-2016 Steffen Nissen (steffen.fann@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef __fann_data_h__ +#define __fann_data_h__ + +#include + +/* Section: FANN Datatypes + + The two main datatypes used in the fann library are , + which represents an artificial neural network, and , + which represents training data. + */ + +/* Type: fann_type + fann_type is the type used for the weights, inputs and outputs of the neural network. + + fann_type is defined as a: + float - if you include fann.h or floatfann.h + double - if you include doublefann.h + int - if you include fixedfann.h (please be aware that fixed point usage is + only to be used during execution, and not during training). +*/ + +/* Enum: fann_train_enum + The Training algorithms used when training on with functions like + or . The incremental training alters the weights + after each time it is presented an input pattern, while batch only alters the weights once + after it has been presented to all the patterns. + + FANN_TRAIN_INCREMENTAL - Standard backpropagation algorithm, where the weights are + updated after each training pattern. This means that the weights are updated many + times during a single epoch. For this reason some problems will train very fast with + this algorithm, while other more advanced problems will not train very well. + FANN_TRAIN_BATCH - Standard backpropagation algorithm, where the weights are updated after + calculating the mean square error for the whole training set. This means that the + weights are only updated once during an epoch. For this reason some problems will train slower + with this algorithm. But since the mean square error is calculated more correctly than in + incremental training, some problems will reach better solutions with this algorithm. + FANN_TRAIN_RPROP - A more advanced batch training algorithm which achieves good results + for many problems. The RPROP training algorithm is adaptive, and does therefore not + use the learning_rate. Some other parameters can however be set to change the way + the RPROP algorithm works, but it is only recommended for users with insight in how the RPROP + training algorithm works. The RPROP training algorithm is described by + [Riedmiller and Braun, 1993], but the actual learning algorithm used here is the + iRPROP- training algorithm which is described by [Igel and Husken, 2000] which + is a variant of the standard RPROP training algorithm. + FANN_TRAIN_QUICKPROP - A more advanced batch training algorithm which achieves good results + for many problems. The quickprop training algorithm uses the learning_rate parameter + along with other more advanced parameters, but it is only recommended to change + these advanced parameters, for users with insight in how the quickprop training algorithm works. + The quickprop training algorithm is described by [Fahlman, 1988]. + FANN_TRAIN_SARPROP - THE SARPROP ALGORITHM: A SIMULATED ANNEALING ENHANCEMENT TO RESILIENT + BACK PROPAGATION + http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.47.8197&rep=rep1&type=pdf + + See also: + , +*/ +enum fann_train_enum { + FANN_TRAIN_INCREMENTAL = 0, + FANN_TRAIN_BATCH, + FANN_TRAIN_RPROP, + FANN_TRAIN_QUICKPROP, + FANN_TRAIN_SARPROP +}; + +/* Constant: FANN_TRAIN_NAMES + + Constant array consisting of the names for the training algorithms, so that the name of an + training function can be received by: + (code) + char *name = FANN_TRAIN_NAMES[train_function]; + (end) + + See Also: + +*/ +static char const *const FANN_TRAIN_NAMES[] = {"FANN_TRAIN_INCREMENTAL", "FANN_TRAIN_BATCH", + "FANN_TRAIN_RPROP", "FANN_TRAIN_QUICKPROP", + "FANN_TRAIN_SARPROP"}; + +/* Enums: fann_activationfunc_enum + + The activation functions used for the neurons during training. The activation functions + can either be defined for a group of neurons by and + or it can be defined for a single neuron by + . + + The steepness of an activation function is defined in the same way by + , and + . + + The functions are described with functions where: + * x is the input to the activation function, + * y is the output, + * s is the steepness and + * d is the derivation. + + FANN_LINEAR - Linear activation function. + * span: -inf < y < inf + * y = x*s, d = 1*s + * Can NOT be used in fixed point. + + FANN_THRESHOLD - Threshold activation function. + * x < 0 -> y = 0, x >= 0 -> y = 1 + * Can NOT be used during training. + + FANN_THRESHOLD_SYMMETRIC - Threshold activation function. + * x < 0 -> y = -1, x >= 0 -> y = 1 + * Can NOT be used during training. + + FANN_SIGMOID - Sigmoid activation function. + * One of the most used activation functions. + * span: 0 < y < 1 + * y = 1/(1 + exp(-2*s*x)) + * d = 2*s*y*(1 - y) + + FANN_SIGMOID_STEPWISE - Stepwise linear approximation to sigmoid. + * Faster than sigmoid but a bit less precise. + + FANN_SIGMOID_SYMMETRIC - Symmetric sigmoid activation function, aka. tanh. + * One of the most used activation functions. + * span: -1 < y < 1 + * y = tanh(s*x) = 2/(1 + exp(-2*s*x)) - 1 + * d = s*(1-(y*y)) + + FANN_SIGMOID_SYMMETRIC_STEPWISE - Stepwise linear approximation to symmetric sigmoid. + * Faster than symmetric sigmoid but a bit less precise. + + FANN_GAUSSIAN - Gaussian activation function. + * 0 when x = -inf, 1 when x = 0 and 0 when x = inf + * span: 0 < y < 1 + * y = exp(-x*s*x*s) + * d = -2*x*s*y*s + + FANN_GAUSSIAN_SYMMETRIC - Symmetric gaussian activation function. + * -1 when x = -inf, 1 when x = 0 and 0 when x = inf + * span: -1 < y < 1 + * y = exp(-x*s*x*s)*2-1 + * d = -2*x*s*(y+1)*s + + FANN_ELLIOT - Fast (sigmoid like) activation function defined by David Elliott + * span: 0 < y < 1 + * y = ((x*s) / 2) / (1 + |x*s|) + 0.5 + * d = s*1/(2*(1+|x*s|)*(1+|x*s|)) + + FANN_ELLIOT_SYMMETRIC - Fast (symmetric sigmoid like) activation function defined by David + Elliott + * span: -1 < y < 1 + * y = (x*s) / (1 + |x*s|) + * d = s*1/((1+|x*s|)*(1+|x*s|)) + + FANN_LINEAR_PIECE - Bounded linear activation function. + * span: 0 <= y <= 1 + * y = x*s, d = 1*s + + FANN_LINEAR_PIECE_SYMMETRIC - Bounded linear activation function. + * span: -1 <= y <= 1 + * y = x*s, d = 1*s + + FANN_SIN_SYMMETRIC - Periodical sinus activation function. + * span: -1 <= y <= 1 + * y = sin(x*s) + * d = s*cos(x*s) + + FANN_COS_SYMMETRIC - Periodical cosinus activation function. + * span: -1 <= y <= 1 + * y = cos(x*s) + * d = s*-sin(x*s) + + FANN_SIN - Periodical sinus activation function. + * span: 0 <= y <= 1 + * y = sin(x*s)/2+0.5 + * d = s*cos(x*s)/2 + + FANN_COS - Periodical cosinus activation function. + * span: 0 <= y <= 1 + * y = cos(x*s)/2+0.5 + * d = s*-sin(x*s)/2 + + See also: + , , + , , + +*/ +enum fann_activationfunc_enum { + FANN_LINEAR = 0, + FANN_THRESHOLD, + FANN_THRESHOLD_SYMMETRIC, + FANN_SIGMOID, + FANN_SIGMOID_STEPWISE, + FANN_SIGMOID_SYMMETRIC, + FANN_SIGMOID_SYMMETRIC_STEPWISE, + FANN_GAUSSIAN, + FANN_GAUSSIAN_SYMMETRIC, + /* Stepwise linear approximation to gaussian. + * Faster than gaussian but a bit less precise. + * NOT implemented yet. + */ + FANN_GAUSSIAN_STEPWISE, + FANN_ELLIOT, + FANN_ELLIOT_SYMMETRIC, + FANN_LINEAR_PIECE, + FANN_LINEAR_PIECE_SYMMETRIC, + FANN_SIN_SYMMETRIC, + FANN_COS_SYMMETRIC, + FANN_SIN, + FANN_COS +}; + +/* Constant: FANN_ACTIVATIONFUNC_NAMES + + Constant array consisting of the names for the activation function, so that the name of an + activation function can be received by: + (code) + char *name = FANN_ACTIVATIONFUNC_NAMES[activation_function]; + (end) + + See Also: + +*/ +static char const *const FANN_ACTIVATIONFUNC_NAMES[] = {"FANN_LINEAR", + "FANN_THRESHOLD", + "FANN_THRESHOLD_SYMMETRIC", + "FANN_SIGMOID", + "FANN_SIGMOID_STEPWISE", + "FANN_SIGMOID_SYMMETRIC", + "FANN_SIGMOID_SYMMETRIC_STEPWISE", + "FANN_GAUSSIAN", + "FANN_GAUSSIAN_SYMMETRIC", + "FANN_GAUSSIAN_STEPWISE", + "FANN_ELLIOT", + "FANN_ELLIOT_SYMMETRIC", + "FANN_LINEAR_PIECE", + "FANN_LINEAR_PIECE_SYMMETRIC", + "FANN_SIN_SYMMETRIC", + "FANN_COS_SYMMETRIC", + "FANN_SIN", + "FANN_COS"}; + +/* Enum: fann_errorfunc_enum + Error function used during training. + + FANN_ERRORFUNC_LINEAR - Standard linear error function. + FANN_ERRORFUNC_TANH - Tanh error function, usually better + but can require a lower learning rate. This error function aggressively targets + outputs that differ much from the desired, while not targeting outputs that only differ a little + that much. This activation function is not recommended for cascade training and incremental + training. + + See also: + , +*/ +enum fann_errorfunc_enum { FANN_ERRORFUNC_LINEAR = 0, FANN_ERRORFUNC_TANH }; + +/* Constant: FANN_ERRORFUNC_NAMES + + Constant array consisting of the names for the training error functions, so that the name of an + error function can be received by: + (code) + char *name = FANN_ERRORFUNC_NAMES[error_function]; + (end) + + See Also: + +*/ +static char const *const FANN_ERRORFUNC_NAMES[] = {"FANN_ERRORFUNC_LINEAR", "FANN_ERRORFUNC_TANH"}; + +/* Enum: fann_stopfunc_enum + Stop criteria used during training. + + FANN_STOPFUNC_MSE - Stop criterion is Mean Square Error (MSE) value. + FANN_STOPFUNC_BIT - Stop criterion is number of bits that fail. The number of bits; means + the number of output neurons which differ more than the bit fail limit (see + , ). The bits are counted in all of the + training data, so this number can be higher than the number of training data. + + See also: + , +*/ +enum fann_stopfunc_enum { FANN_STOPFUNC_MSE = 0, FANN_STOPFUNC_BIT }; + +/* Constant: FANN_STOPFUNC_NAMES + + Constant array consisting of the names for the training stop functions, so that the name of a + stop function can be received by: + (code) + char *name = FANN_STOPFUNC_NAMES[stop_function]; + (end) + + See Also: + +*/ +static char const *const FANN_STOPFUNC_NAMES[] = {"FANN_STOPFUNC_MSE", "FANN_STOPFUNC_BIT"}; + +/* Enum: fann_network_type_enum + + Definition of network types used by + + FANN_NETTYPE_LAYER - Each layer only has connections to the next layer + FANN_NETTYPE_SHORTCUT - Each layer has connections to all following layers + + See Also: + + + This enumeration appears in FANN >= 2.1.0 +*/ +enum fann_nettype_enum { + FANN_NETTYPE_LAYER = 0, /* Each layer only has connections to the next layer */ + FANN_NETTYPE_SHORTCUT /* Each layer has connections to all following layers */ +}; + +/* Constant: FANN_NETWORK_TYPE_NAMES + + Constant array consisting of the names for the network types, so that the name of an + network type can be received by: + (code) + char *network_type_name = FANN_NETWORK_TYPE_NAMES[fann_get_network_type(ann)]; + (end) + + See Also: + + + This constant appears in FANN >= 2.1.0 +*/ +static char const *const FANN_NETTYPE_NAMES[] = {"FANN_NETTYPE_LAYER", "FANN_NETTYPE_SHORTCUT"}; + +/* forward declarations for use with the callback */ +struct fann; +struct fann_train_data; +/* Type: fann_callback_type + This callback function can be called during training when using , + or . + + >typedef int (FANN_API * fann_callback_type) (struct fann *ann, struct fann_train_data + *train, + > unsigned int max_epochs, > unsigned int + epochs_between_reports, > float desired_error, + unsigned int epochs); + + The callback can be set by using and is very useful for doing custom + things during training. It is recommended to use this function when implementing custom + training procedures, or when visualizing the training in a GUI etc. The parameters which the + callback function takes are the parameters given to , plus an epochs + parameter which tells how many epochs the training has taken so far. + + The callback function should return an integer, if the callback function returns -1, the + training will terminate. + + Example of a callback function: + >int FANN_API test_callback(struct fann *ann, struct fann_train_data *train, + > unsigned int max_epochs, unsigned int + epochs_between_reports, + > float desired_error, unsigned int + epochs) + >{ + > printf("Epochs %8d. MSE: %.5f. Desired-MSE: %.5f\n", epochs, + fann_get_MSE(ann), desired_error); > return 0; + >} + + See also: + , + */ +FANN_EXTERNAL typedef int(FANN_API *fann_callback_type)(struct fann *ann, + struct fann_train_data *train, + unsigned int max_epochs, + unsigned int epochs_between_reports, + float desired_error, unsigned int epochs); + +/* ----- Data structures ----- + * No data within these structures should be altered directly by the user. + */ + +struct fann_neuron { + /* Index to the first and last connection + * (actually the last is a past end index) + */ + unsigned int first_con; + unsigned int last_con; + /* The sum of the inputs multiplied with the weights */ + fann_type sum; + /* The value of the activation function applied to the sum */ + fann_type value; + /* The steepness of the activation function */ + fann_type activation_steepness; + /* Used to choose which activation function to use */ + enum fann_activationfunc_enum activation_function; +#ifdef __GNUC__ +} __attribute__((packed)); +#else +}; +#endif + +/* A single layer in the neural network. + */ +struct fann_layer { + /* A pointer to the first neuron in the layer + * When allocated, all the neurons in all the layers are actually + * in one long array, this is because we want to easily clear all + * the neurons at once. + */ + struct fann_neuron *first_neuron; + + /* A pointer to the neuron past the last neuron in the layer */ + /* the number of neurons is last_neuron - first_neuron */ + struct fann_neuron *last_neuron; +}; + +/* Struct: struct fann_error + + Structure used to store error-related information, both + and can be casted to this type. + + See also: + , +*/ +struct fann_error { + enum fann_errno_enum errno_f; + FILE *error_log; + char *errstr; +}; + +/* Struct: struct fann + The fast artificial neural network (fann) structure. + + Data within this structure should never be accessed directly, but only by using the + *fann_get_...* and *fann_set_...* functions. + + The fann structure is created using one of the *fann_create_...* functions and each of + the functions which operates on the structure takes *struct fann * ann* as the first + parameter. + + See also: + , + */ +struct fann { + /* The type of error that last occured. */ + enum fann_errno_enum errno_f; + + /* Where to log error messages. */ + FILE *error_log; + + /* A string representation of the last error. */ + char *errstr; + + /* the learning rate of the network */ + float learning_rate; + + /* The learning momentum used for backpropagation algorithm. */ + float learning_momentum; + + /* the connection rate of the network + * between 0 and 1, 1 meaning fully connected + */ + float connection_rate; + + /* is 1 if shortcut connections are used in the ann otherwise 0 + * Shortcut connections are connections that skip layers. + * A fully connected ann with shortcut connections are a ann where + * neurons have connections to all neurons in all later layers. + */ + enum fann_nettype_enum network_type; + + /* pointer to the first layer (input layer) in an array af all the layers, + * including the input and outputlayers + */ + struct fann_layer *first_layer; + + /* pointer to the layer past the last layer in an array af all the layers, + * including the input and outputlayers + */ + struct fann_layer *last_layer; + + /* Total number of neurons. + * very useful, because the actual neurons are allocated in one long array + */ + unsigned int total_neurons; + + /* Number of input neurons (not calculating bias) */ + unsigned int num_input; + + /* Number of output neurons (not calculating bias) */ + unsigned int num_output; + + /* The weight array */ + fann_type *weights; + + /* The connection array */ + struct fann_neuron **connections; + + /* Used to contain the errors used during training + * Is allocated during first training session, + * which means that if we do not train, it is never allocated. + */ + fann_type *train_errors; + + /* Training algorithm used when calling fann_train_on_.. + */ + enum fann_train_enum training_algorithm; + +#ifdef FIXEDFANN + /* the decimal_point, used for shifting the fix point + * in fixed point integer operatons. + */ + unsigned int decimal_point; + + /* the multiplier, used for multiplying the fix point + * in fixed point integer operatons. + * Only used in special cases, since the decimal_point is much faster. + */ + unsigned int multiplier; + + /* When in choosen (or in fixed point), the sigmoid function is + * calculated as a stepwise linear function. In the + * activation_results array, the result is saved, and in the + * two values arrays, the values that gives the results are saved. + */ + fann_type sigmoid_results[6]; + fann_type sigmoid_values[6]; + fann_type sigmoid_symmetric_results[6]; + fann_type sigmoid_symmetric_values[6]; +#endif + + /* Total number of connections. + * very useful, because the actual connections + * are allocated in one long array + */ + unsigned int total_connections; + + /* used to store outputs in */ + fann_type *output; + + /* the number of data used to calculate the mean square error. + */ + unsigned int num_MSE; + + /* the total error value. + * the real mean square error is MSE_value/num_MSE + */ + float MSE_value; + + /* The number of outputs which would fail (only valid for classification problems) + */ + unsigned int num_bit_fail; + + /* The maximum difference between the actual output and the expected output + * which is accepted when counting the bit fails. + * This difference is multiplied by two when dealing with symmetric activation functions, + * so that symmetric and not symmetric activation functions can use the same limit. + */ + fann_type bit_fail_limit; + + /* The error function used during training. (default FANN_ERRORFUNC_TANH) + */ + enum fann_errorfunc_enum train_error_function; + + /* The stop function used during training. (default FANN_STOPFUNC_MSE) + */ + enum fann_stopfunc_enum train_stop_function; + + /* The callback function used during training. (default NULL) + */ + fann_callback_type callback; + + /* A pointer to user defined data. (default NULL) + */ + void *user_data; + + /* Variables for use with Cascade Correlation */ + + /* The error must change by at least this + * fraction of its old value to count as a + * significant change. + */ + float cascade_output_change_fraction; + + /* No change in this number of epochs will cause + * stagnation. + */ + unsigned int cascade_output_stagnation_epochs; + + /* The error must change by at least this + * fraction of its old value to count as a + * significant change. + */ + float cascade_candidate_change_fraction; + + /* No change in this number of epochs will cause + * stagnation. + */ + unsigned int cascade_candidate_stagnation_epochs; + + /* The current best candidate, which will be installed. + */ + unsigned int cascade_best_candidate; + + /* The upper limit for a candidate score + */ + fann_type cascade_candidate_limit; + + /* Scale of copied candidate output weights + */ + fann_type cascade_weight_multiplier; + + /* Maximum epochs to train the output neurons during cascade training + */ + unsigned int cascade_max_out_epochs; + + /* Maximum epochs to train the candidate neurons during cascade training + */ + unsigned int cascade_max_cand_epochs; + + /* Minimum epochs to train the output neurons during cascade training + */ + unsigned int cascade_min_out_epochs; + + /* Minimum epochs to train the candidate neurons during cascade training + */ + unsigned int cascade_min_cand_epochs; + + /* An array consisting of the activation functions used when doing + * cascade training. + */ + enum fann_activationfunc_enum *cascade_activation_functions; + + /* The number of elements in the cascade_activation_functions array. + */ + unsigned int cascade_activation_functions_count; + + /* An array consisting of the steepnesses used during cascade training. + */ + fann_type *cascade_activation_steepnesses; + + /* The number of elements in the cascade_activation_steepnesses array. + */ + unsigned int cascade_activation_steepnesses_count; + + /* The number of candidates of each type that will be present. + * The actual number of candidates is then + * cascade_activation_functions_count * + * cascade_activation_steepnesses_count * + * cascade_num_candidate_groups + */ + unsigned int cascade_num_candidate_groups; + + /* An array consisting of the score of the individual candidates, + * which is used to decide which candidate is the best + */ + fann_type *cascade_candidate_scores; + + /* The number of allocated neurons during cascade correlation algorithms. + * This number might be higher than the actual number of neurons to avoid + * allocating new space too often. + */ + unsigned int total_neurons_allocated; + + /* The number of allocated connections during cascade correlation algorithms. + * This number might be higher than the actual number of neurons to avoid + * allocating new space too often. + */ + unsigned int total_connections_allocated; + + /* Variables for use with Quickprop training */ + + /* Decay is used to make the weights not go so high */ + float quickprop_decay; + + /* Mu is a factor used to increase and decrease the stepsize */ + float quickprop_mu; + + /* Variables for use with with RPROP training */ + + /* Tells how much the stepsize should increase during learning */ + float rprop_increase_factor; + + /* Tells how much the stepsize should decrease during learning */ + float rprop_decrease_factor; + + /* The minimum stepsize */ + float rprop_delta_min; + + /* The maximum stepsize */ + float rprop_delta_max; + + /* The initial stepsize */ + float rprop_delta_zero; + + /* Defines how much the weights are constrained to smaller values at the beginning */ + float sarprop_weight_decay_shift; + + /* Decides if the stepsize is too big with regard to the error */ + float sarprop_step_error_threshold_factor; + + /* Defines how much the stepsize is influenced by the error */ + float sarprop_step_error_shift; + + /* Defines how much the epoch influences weight decay and noise */ + float sarprop_temperature; + + /* Current training epoch */ + unsigned int sarprop_epoch; + + /* Used to contain the slope errors used during batch training + * Is allocated during first training session, + * which means that if we do not train, it is never allocated. + */ + fann_type *train_slopes; + + /* The previous step taken by the quickprop/rprop procedures. + * Not allocated if not used. + */ + fann_type *prev_steps; + + /* The slope values used by the quickprop/rprop procedures. + * Not allocated if not used. + */ + fann_type *prev_train_slopes; + + /* The last delta applied to a connection weight. + * This is used for the momentum term in the backpropagation algorithm. + * Not allocated if not used. + */ + fann_type *prev_weights_deltas; + +#ifndef FIXEDFANN + /* Arithmetic mean used to remove steady component in input data. */ + float *scale_mean_in; + + /* Standart deviation used to normalize input data (mostly to [-1;1]). */ + float *scale_deviation_in; + + /* User-defined new minimum for input data. + * Resulting data values may be less than user-defined minimum. + */ + float *scale_new_min_in; + + /* Used to scale data to user-defined new maximum for input data. + * Resulting data values may be greater than user-defined maximum. + */ + float *scale_factor_in; + + /* Arithmetic mean used to remove steady component in output data. */ + float *scale_mean_out; + + /* Standart deviation used to normalize output data (mostly to [-1;1]). */ + float *scale_deviation_out; + + /* User-defined new minimum for output data. + * Resulting data values may be less than user-defined minimum. + */ + float *scale_new_min_out; + + /* Used to scale data to user-defined new maximum for output data. + * Resulting data values may be greater than user-defined maximum. + */ + float *scale_factor_out; +#endif +}; + +/* Type: fann_connection + + Describes a connection between two neurons and its weight + + from_neuron - Unique number used to identify source neuron + to_neuron - Unique number used to identify destination neuron + weight - The numerical value of the weight + + See Also: + , + + This structure appears in FANN >= 2.1.0 +*/ +struct fann_connection { + /* Unique number used to identify source neuron */ + unsigned int from_neuron; + /* Unique number used to identify destination neuron */ + unsigned int to_neuron; + /* The numerical value of the weight */ + fann_type weight; +}; + +#endif diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_data_cpp.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_data_cpp.h new file mode 100644 index 0000000..62ebf34 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_data_cpp.h @@ -0,0 +1,295 @@ +/* +Fast Artificial Neural Network Library (fann) +Copyright (C) 2003-2016 Steffen Nissen (steffen.fann@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef FANN_FANN_DATA_CPP_H_H +#define FANN_FANN_DATA_CPP_H_H + +#include +#include + +/* Section: FANN C++ Datatypes + This section includes enums and helper data types used by the two main classes and + + */ + +/* Type: fann_type + fann_type is the type used for the weights, inputs and outputs of the neural network. + + fann_type is defined as a: + float - if you include fann.h or floatfann.h + double - if you include doublefann.h + int - if you include fixedfann.h (please be aware that fixed point usage is + only to be used during execution, and not during training). +*/ + +namespace FANN { +/* Enum: error_function_enum + Error function used during training. + + ERRORFUNC_LINEAR - Standard linear error function. + ERRORFUNC_TANH - Tanh error function, usually better + but can require a lower learning rate. This error function aggressively targets + outputs that differ much from the desired, while not targeting outputs that only differ a little + that much. This activation function is not recommended for cascade training and incremental + training. + + See also: + , +*/ +enum error_function_enum { ERRORFUNC_LINEAR = FANN_ERRORFUNC_LINEAR, ERRORFUNC_TANH }; + +/* Enum: stop_function_enum + Stop criteria used during training. + + STOPFUNC_MSE - Stop criteria is Mean Square Error (MSE) value. + STOPFUNC_BIT - Stop criteria is number of bits that fail. The number of bits; means the + number of output neurons which differ more than the bit fail limit + (see , ). + The bits are counted in all of the training data, so this number can be higher than + the number of training data. + + See also: + , +*/ +enum stop_function_enum { STOPFUNC_MSE = FANN_STOPFUNC_MSE, STOPFUNC_BIT }; + +/* Enum: training_algorithm_enum + The Training algorithms used when training on with functions like + or . The incremental training + looks alters the weights after each time it is presented an input pattern, while batch + only alters the weights once after it has been presented to all the patterns. + + TRAIN_INCREMENTAL - Standard backpropagation algorithm, where the weights are + updated after each training pattern. This means that the weights are updated many + times during a single epoch. For this reason some problems, will train very fast + with this algorithm, while other more advanced problems will not train very well. TRAIN_BATCH - + Standard backpropagation algorithm, where the weights are updated after calculating the mean + square error for the whole training set. This means that the weights are only updated once during + an epoch. For this reason some problems, will train slower with this algorithm. But since the + mean square error is calculated more correctly than in incremental training, some problems will + reach a better solutions with this algorithm. TRAIN_RPROP - A more advanced batch training + algorithm which achieves good results for many problems. The RPROP training algorithm is + adaptive, and does therefore not use the learning_rate. Some other parameters can however be set + to change the way the RPROP algorithm works, but it is only recommended for users with insight in + how the RPROP training algorithm works. The RPROP training algorithm is described by [Riedmiller + and Braun, 1993], but the actual learning algorithm used here is the iRPROP- training algorithm + which is described by [Igel and Husken, 2000] which is a variant of the standard RPROP training + algorithm. TRAIN_QUICKPROP - A more advanced batch training algorithm which achieves good results + for many problems. The quickprop training algorithm uses the learning_rate parameter + along with other more advanced parameters, but it is only recommended to change + these advanced parameters, for users with insight in how the quickprop training algorithm works. + The quickprop training algorithm is described by [Fahlman, 1988]. + FANN_TRAIN_SARPROP - THE SARPROP ALGORITHM: A SIMULATED ANNEALING ENHANCEMENT TO + RESILIENT BACK PROPAGATION + http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.47.8197&rep=rep1&type=pdf + + + See also: + , +*/ +enum training_algorithm_enum { + TRAIN_INCREMENTAL = FANN_TRAIN_INCREMENTAL, + TRAIN_BATCH, + TRAIN_RPROP, + TRAIN_QUICKPROP, + TRAIN_SARPROP +}; + +/* Enum: activation_function_enum + + The activation functions used for the neurons during training. The activation functions + can either be defined for a group of neurons by + and or it can be defined for a single neuron by + . + + The steepness of an activation function is defined in the same way by + , + and . + + The functions are described with functions where: + * x is the input to the activation function, + * y is the output, + * s is the steepness and + * d is the derivation. + + FANN_LINEAR - Linear activation function. + * span: -inf < y < inf + * y = x*s, d = 1*s + * Can NOT be used in fixed point. + + FANN_THRESHOLD - Threshold activation function. + * x < 0 -> y = 0, x >= 0 -> y = 1 + * Can NOT be used during training. + + FANN_THRESHOLD_SYMMETRIC - Threshold activation function. + * x < 0 -> y = 0, x >= 0 -> y = 1 + * Can NOT be used during training. + + FANN_SIGMOID - Sigmoid activation function. + * One of the most used activation functions. + * span: 0 < y < 1 + * y = 1/(1 + exp(-2*s*x)) + * d = 2*s*y*(1 - y) + + FANN_SIGMOID_STEPWISE - Stepwise linear approximation to sigmoid. + * Faster than sigmoid but a bit less precise. + + FANN_SIGMOID_SYMMETRIC - Symmetric sigmoid activation function, aka. tanh. + * One of the most used activation functions. + * span: -1 < y < 1 + * y = tanh(s*x) = 2/(1 + exp(-2*s*x)) - 1 + * d = s*(1-(y*y)) + + FANN_SIGMOID_SYMMETRIC - Stepwise linear approximation to symmetric sigmoid. + * Faster than symmetric sigmoid but a bit less precise. + + FANN_GAUSSIAN - Gaussian activation function. + * 0 when x = -inf, 1 when x = 0 and 0 when x = inf + * span: 0 < y < 1 + * y = exp(-x*s*x*s) + * d = -2*x*s*y*s + + FANN_GAUSSIAN_SYMMETRIC - Symmetric gaussian activation function. + * -1 when x = -inf, 1 when x = 0 and 0 when x = inf + * span: -1 < y < 1 + * y = exp(-x*s*x*s)*2-1 + * d = -2*x*s*(y+1)*s + + FANN_ELLIOT - Fast (sigmoid like) activation function defined by David Elliott + * span: 0 < y < 1 + * y = ((x*s) / 2) / (1 + |x*s|) + 0.5 + * d = s*1/(2*(1+|x*s|)*(1+|x*s|)) + + FANN_ELLIOT_SYMMETRIC - Fast (symmetric sigmoid like) activation function defined by David + Elliott + * span: -1 < y < 1 + * y = (x*s) / (1 + |x*s|) + * d = s*1/((1+|x*s|)*(1+|x*s|)) + + FANN_LINEAR_PIECE - Bounded linear activation function. + * span: 0 < y < 1 + * y = x*s, d = 1*s + + FANN_LINEAR_PIECE_SYMMETRIC - Bounded Linear activation function. + * span: -1 < y < 1 + * y = x*s, d = 1*s + + FANN_SIN_SYMMETRIC - Periodical sinus activation function. + * span: -1 <= y <= 1 + * y = sin(x*s) + * d = s*cos(x*s) + + FANN_COS_SYMMETRIC - Periodical cosinus activation function. + * span: -1 <= y <= 1 + * y = cos(x*s) + * d = s*-sin(x*s) + + See also: + , + +*/ +enum activation_function_enum { + LINEAR = FANN_LINEAR, + THRESHOLD, + THRESHOLD_SYMMETRIC, + SIGMOID, + SIGMOID_STEPWISE, + SIGMOID_SYMMETRIC, + SIGMOID_SYMMETRIC_STEPWISE, + GAUSSIAN, + GAUSSIAN_SYMMETRIC, + GAUSSIAN_STEPWISE, + ELLIOT, + ELLIOT_SYMMETRIC, + LINEAR_PIECE, + LINEAR_PIECE_SYMMETRIC, + SIN_SYMMETRIC, + COS_SYMMETRIC +}; + +/* Enum: network_type_enum + + Definition of network types used by + + LAYER - Each layer only has connections to the next layer + SHORTCUT - Each layer has connections to all following layers + + See Also: + , + + This enumeration appears in FANN >= 2.1.0 +*/ +enum network_type_enum { LAYER = FANN_NETTYPE_LAYER, SHORTCUT }; + +/* Type: connection + + Describes a connection between two neurons and its weight + + from_neuron - Unique number used to identify source neuron + to_neuron - Unique number used to identify destination neuron + weight - The numerical value of the weight + + See Also: + , + + This structure appears in FANN >= 2.1.0 +*/ +typedef struct fann_connection connection; + +/* Forward declaration of class neural_net and training_data */ +class neural_net; + +class training_data; + +/* Type: callback_type + This callback function can be called during training when using , + or . + + >typedef int (*callback_type) (neural_net &net, training_data &train, + > unsigned int max_epochs, unsigned int epochs_between_reports, + > float desired_error, unsigned int epochs, void *user_data); + + The callback can be set by using and is very useful for doing + custom things during training. It is recommended to use this function when implementing custom + training procedures, or when visualizing the training in a GUI etc. The parameters which the + callback function takes is the parameters given to the , plus an + epochs parameter which tells how many epochs the training have taken so far. + + The callback function should return an integer, if the callback function returns -1, the + training will terminate. + + Example of a callback function that prints information to cout: + >int print_callback(FANN::neural_net &net, FANN::training_data &train, + > unsigned int max_epochs, unsigned int epochs_between_reports, + > float desired_error, unsigned int epochs, void *user_data) + >{ + > cout << "Epochs " << setw(8) << epochs << ". " + > << "Current Error: " << left << net.get_MSE() << right << endl; + > return 0; + >} + + See also: + , + */ +typedef int (*callback_type)(neural_net &net, training_data &train, unsigned int max_epochs, + unsigned int epochs_between_reports, float desired_error, + unsigned int epochs, void *user_data); +} // namespace FANN + +#endif // FANN_FANN_DATA_CPP_H_H diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_error.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_error.h new file mode 100644 index 0000000..9c79c0c --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_error.h @@ -0,0 +1,162 @@ +/* +Fast Artificial Neural Network Library (fann) +Copyright (C) 2003-2016 Steffen Nissen (steffen.fann@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef __fann_error_h__ +#define __fann_error_h__ + +#include + +#define FANN_ERRSTR_MAX 128 +struct fann_error; + +/* Section: FANN Error Handling + + Errors from the fann library are usually reported on stderr. + It is however possible to redirect these error messages to a file, + or completely ignore them by the function. + + It is also possible to inspect the last error message by using the + and functions. + */ + +/* Enum: fann_errno_enum + Used to define error events on and . + + See also: + , , + + FANN_E_NO_ERROR - No error + FANN_E_CANT_OPEN_CONFIG_R - Unable to open configuration file for reading + FANN_E_CANT_OPEN_CONFIG_W - Unable to open configuration file for writing + FANN_E_WRONG_CONFIG_VERSION - Wrong version of configuration file + FANN_E_CANT_READ_CONFIG - Error reading info from configuration file + FANN_E_CANT_READ_NEURON - Error reading neuron info from configuration file + FANN_E_CANT_READ_CONNECTIONS - Error reading connections from configuration file + FANN_E_WRONG_NUM_CONNECTIONS - Number of connections not equal to the number expected + FANN_E_CANT_OPEN_TD_W - Unable to open train data file for writing + FANN_E_CANT_OPEN_TD_R - Unable to open train data file for reading + FANN_E_CANT_READ_TD - Error reading training data from file + FANN_E_CANT_ALLOCATE_MEM - Unable to allocate memory + FANN_E_CANT_TRAIN_ACTIVATION - Unable to train with the selected activation function + FANN_E_CANT_USE_ACTIVATION - Unable to use the selected activation function + FANN_E_TRAIN_DATA_MISMATCH - Irreconcilable differences between two + structures FANN_E_CANT_USE_TRAIN_ALG - Unable to use the selected training algorithm + FANN_E_TRAIN_DATA_SUBSET - Trying to take subset which is not within the training set + FANN_E_INDEX_OUT_OF_BOUND - Index is out of bound + FANN_E_SCALE_NOT_PRESENT - Scaling parameters not present + FANN_E_INPUT_NO_MATCH - The number of input neurons in the ann and data don't match + FANN_E_OUTPUT_NO_MATCH - The number of output neurons in the ann and data don't match + FANN_E_WRONG_PARAMETERS_FOR_CREATE - The parameters for create_standard are wrong, either + too few parameters provided or a negative/very high value provided +*/ +enum fann_errno_enum { + FANN_E_NO_ERROR = 0, + FANN_E_CANT_OPEN_CONFIG_R, + FANN_E_CANT_OPEN_CONFIG_W, + FANN_E_WRONG_CONFIG_VERSION, + FANN_E_CANT_READ_CONFIG, + FANN_E_CANT_READ_NEURON, + FANN_E_CANT_READ_CONNECTIONS, + FANN_E_WRONG_NUM_CONNECTIONS, + FANN_E_CANT_OPEN_TD_W, + FANN_E_CANT_OPEN_TD_R, + FANN_E_CANT_READ_TD, + FANN_E_CANT_ALLOCATE_MEM, + FANN_E_CANT_TRAIN_ACTIVATION, + FANN_E_CANT_USE_ACTIVATION, + FANN_E_TRAIN_DATA_MISMATCH, + FANN_E_CANT_USE_TRAIN_ALG, + FANN_E_TRAIN_DATA_SUBSET, + FANN_E_INDEX_OUT_OF_BOUND, + FANN_E_SCALE_NOT_PRESENT, + FANN_E_INPUT_NO_MATCH, + FANN_E_OUTPUT_NO_MATCH, + FANN_E_WRONG_PARAMETERS_FOR_CREATE +}; + +/* Group: Error Handling */ + +/* Function: fann_set_error_log + + Change where errors are logged to. Both and can be + casted to , so this function can be used to set either of these. + + If log_file is NULL, no errors will be printed. + + If errdat is NULL, the default log will be set. The default log is the log used when creating + and . This default log will also be the default for all new + structs that are created. + + The default behavior is to log them to stderr. + + See also: + + + This function appears in FANN >= 1.1.0. + */ +FANN_EXTERNAL void FANN_API fann_set_error_log(struct fann_error *errdat, FILE *log_file); + +/* Function: fann_get_errno + + Returns the last error number. + + See also: + , + + This function appears in FANN >= 1.1.0. + */ +FANN_EXTERNAL enum fann_errno_enum FANN_API fann_get_errno(struct fann_error *errdat); + +/* Function: fann_reset_errno + + Resets the last error number. + + This function appears in FANN >= 1.1.0. + */ +FANN_EXTERNAL void FANN_API fann_reset_errno(struct fann_error *errdat); + +/* Function: fann_reset_errstr + + Resets the last error string. + + This function appears in FANN >= 1.1.0. + */ +FANN_EXTERNAL void FANN_API fann_reset_errstr(struct fann_error *errdat); + +/* Function: fann_get_errstr + + Returns the last errstr. + + This function calls and + + This function appears in FANN >= 1.1.0. + */ +FANN_EXTERNAL char *FANN_API fann_get_errstr(struct fann_error *errdat); + +/* Function: fann_print_error + + Prints the last error to stderr. + + This function appears in FANN >= 1.1.0. + */ +FANN_EXTERNAL void FANN_API fann_print_error(struct fann_error *errdat); + +FANN_EXTERNAL extern FILE *fann_default_error_log; + +#endif diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_internal.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_internal.h new file mode 100644 index 0000000..4aac070 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_internal.h @@ -0,0 +1,158 @@ +/* +Fast Artificial Neural Network Library (fann) +Copyright (C) 2003-2016 Steffen Nissen (steffen.fann@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef __fann_internal_h__ +#define __fann_internal_h__ +/* internal include file, not to be included directly + */ + +#include +#include +#include +#include "fann_data.h" + +#define FANN_FIX_VERSION "FANN_FIX_2.0" +#define FANN_FLO_VERSION "FANN_FLO_2.1" + +#ifdef FIXEDFANN +#define FANN_CONF_VERSION FANN_FIX_VERSION +#else +#define FANN_CONF_VERSION FANN_FLO_VERSION +#endif + +#define FANN_GET(type, name) \ + FANN_EXTERNAL type FANN_API fann_get_##name(struct fann *ann) { return ann->name; } + +#define FANN_SET(type, name) \ + FANN_EXTERNAL void FANN_API fann_set_##name(struct fann *ann, type value) { ann->name = value; } + +#define FANN_GET_SET(type, name) \ + FANN_GET(type, name) \ + FANN_SET(type, name) + +struct fann_train_data; + +struct fann *fann_allocate_structure(unsigned int num_layers); +void fann_allocate_neurons(struct fann *ann); + +void fann_allocate_connections(struct fann *ann); + +int fann_save_internal(struct fann *ann, const char *configuration_file, + unsigned int save_as_fixed); +int fann_save_internal_fd(struct fann *ann, FILE *conf, const char *configuration_file, + unsigned int save_as_fixed); +int fann_save_train_internal(struct fann_train_data *data, const char *filename, + unsigned int save_as_fixed, unsigned int decimal_point); +int fann_save_train_internal_fd(struct fann_train_data *data, FILE *file, const char *filename, + unsigned int save_as_fixed, unsigned int decimal_point); + +void fann_update_stepwise(struct fann *ann); +void fann_seed_rand(); + +void fann_error(struct fann_error *errdat, const enum fann_errno_enum errno_f, ...); +void fann_init_error_data(struct fann_error *errdat); + +struct fann *fann_create_from_fd(FILE *conf, const char *configuration_file); +struct fann_train_data *fann_read_train_from_fd(FILE *file, const char *filename); + +void fann_compute_MSE(struct fann *ann, fann_type *desired_output); +void fann_update_output_weights(struct fann *ann); +void fann_backpropagate_MSE(struct fann *ann); +void fann_update_weights(struct fann *ann); +void fann_update_slopes_batch(struct fann *ann, struct fann_layer *layer_begin, + struct fann_layer *layer_end); +void fann_update_weights_quickprop(struct fann *ann, unsigned int num_data, + unsigned int first_weight, unsigned int past_end); +void fann_update_weights_batch(struct fann *ann, unsigned int num_data, unsigned int first_weight, + unsigned int past_end); +void fann_update_weights_irpropm(struct fann *ann, unsigned int first_weight, + unsigned int past_end); +void fann_update_weights_sarprop(struct fann *ann, unsigned int epoch, unsigned int first_weight, + unsigned int past_end); + +void fann_clear_train_arrays(struct fann *ann); + +fann_type fann_activation(struct fann *ann, unsigned int activation_function, fann_type steepness, + fann_type value); + +fann_type fann_activation_derived(unsigned int activation_function, fann_type steepness, + fann_type value, fann_type sum); + +int fann_desired_error_reached(struct fann *ann, float desired_error); + +/* Some functions for cascade */ +int fann_train_outputs(struct fann *ann, struct fann_train_data *data, float desired_error); + +float fann_train_outputs_epoch(struct fann *ann, struct fann_train_data *data); + +int fann_train_candidates(struct fann *ann, struct fann_train_data *data); + +fann_type fann_train_candidates_epoch(struct fann *ann, struct fann_train_data *data); + +void fann_install_candidate(struct fann *ann); +int fann_check_input_output_sizes(struct fann *ann, struct fann_train_data *data); + +int fann_initialize_candidates(struct fann *ann); + +void fann_set_shortcut_connections(struct fann *ann); + +int fann_allocate_scale(struct fann *ann); + +FANN_EXTERNAL void FANN_API fann_scale_data_to_range(fann_type **data, unsigned int num_data, + unsigned int num_elem, fann_type old_min, + fann_type old_max, fann_type new_min, + fann_type new_max); + +/* called fann_max, in order to not interferre with predefined versions of max */ +#define fann_max(x, y) (((x) > (y)) ? (x) : (y)) +#define fann_min(x, y) (((x) < (y)) ? (x) : (y)) +#define fann_safe_free(x) \ + { \ + if (x) { \ + free(x); \ + x = NULL; \ + } \ + } +#define fann_clip(x, lo, hi) (((x) < (lo)) ? (lo) : (((x) > (hi)) ? (hi) : (x))) +#define fann_exp2(x) exp(0.69314718055994530942 * (x)) +/*#define fann_clip(x, lo, hi) (x)*/ + +#define fann_rand(min_value, max_value) \ + (((float)(min_value)) + \ + (((float)(max_value) - ((float)(min_value))) * rand() / (RAND_MAX + 1.0f))) + +#define fann_abs(value) (((value) > 0) ? (value) : -(value)) + +#ifdef FIXEDFANN + +#define fann_mult(x, y) ((x * y) >> decimal_point) +#define fann_div(x, y) (((x) << decimal_point) / y) +#define fann_random_weight() (fann_type)(fann_rand(0, multiplier / 10)) +#define fann_random_bias_weight() (fann_type)(fann_rand((0 - multiplier) / 10, multiplier / 10)) + +#else + +#define fann_mult(x, y) (x * y) +#define fann_div(x, y) (x / y) +#define fann_random_weight() (fann_rand(-0.1f, 0.1f)) +#define fann_random_bias_weight() (fann_rand(-0.1f, 0.1f)) + +#endif + +#endif diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_io.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_io.h new file mode 100644 index 0000000..c72e072 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_io.h @@ -0,0 +1,100 @@ +/* +Fast Artificial Neural Network Library (fann) +Copyright (C) 2003-2016 Steffen Nissen (steffen.fann@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef __fann_io_h__ +#define __fann_io_h__ + +/* Section: FANN File Input/Output + + It is possible to save an entire ann to a file with for future loading with + . + */ + +/* Group: File Input and Output */ + +/* Function: fann_create_from_file + + Constructs a backpropagation neural network from a configuration file, which has been saved by + . + + See also: + , + + This function appears in FANN >= 1.0.0. + */ +FANN_EXTERNAL struct fann *FANN_API fann_create_from_file(const char *configuration_file); + +/* Function: fann_save + + Save the entire network to a configuration file. + + The configuration file contains all information about the neural network and enables + to create an exact copy of the neural network and all of the + parameters associated with the neural network. + + These three parameters (, , + ) are *NOT* saved to the file because they cannot safely be + ported to a different location. Also temporary parameters generated during training + like are not saved. + + Return: + The function returns 0 on success and -1 on failure. + + See also: + , + + This function appears in FANN >= 1.0.0. + */ +FANN_EXTERNAL int FANN_API fann_save(struct fann *ann, const char *configuration_file); + +/* Function: fann_save_to_fixed + + Saves the entire network to a configuration file. + But it is saved in fixed point format no matter which + format it is currently in. + + This is useful for training a network in floating points, + and then later executing it in fixed point. + + The function returns the bit position of the fix point, which + can be used to find out how accurate the fixed point network will be. + A high value indicates high precision, and a low value indicates low + precision. + + A negative value indicates very low precision, and a very + strong possibility for overflow. + (the actual fix point will be set to 0, since a negative + fix point does not make sense). + + Generally, a fix point lower than 6 is bad, and should be avoided. + The best way to avoid this, is to have less connections to each neuron, + or just less neurons in each layer. + + The fixed point use of this network is only intended for use on machines that + have no floating point processor, like an iPAQ. On normal computers the floating + point version is actually faster. + + See also: + , + + This function appears in FANN >= 1.0.0. +*/ +FANN_EXTERNAL int FANN_API fann_save_to_fixed(struct fann *ann, const char *configuration_file); + +#endif diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_train.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_train.h new file mode 100644 index 0000000..18f0486 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_train.h @@ -0,0 +1,1391 @@ +/* +Fast Artificial Neural Network Library (fann) +Copyright (C) 2003-2016 Steffen Nissen (steffen.fann@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef __fann_train_h__ +#define __fann_train_h__ + +/* Section: FANN Training + + There are many different ways of training neural networks and the FANN library supports + a number of different approaches. + + Two fundamentally different approaches are the most commonly used: + + Fixed topology training - The size and topology of the ANN is determined in advance + and the training alters the weights in order to minimize the difference + between the desired output values and the actual output values. This kind of training is + supported by . + + Evolving topology training - The training start out with an empty ANN, only + consisting of input and output neurons. Hidden neurons and connections are added during training, + in order to reach the same goal as for fixed topology training. This kind of + training is supported by . + */ + +/* Struct: struct fann_train_data + Structure used to store data, for use with training. + + The data inside this structure should never be manipulated directly, but should use some + of the supplied functions in . + + The training data structure is very usefull for storing data during training and testing of + a neural network. + + See also: + , , +*/ +struct fann_train_data { + enum fann_errno_enum errno_f; + FILE *error_log; + char *errstr; + + unsigned int num_data; + unsigned int num_input; + unsigned int num_output; + fann_type **input; + fann_type **output; +}; + +/* Section: FANN Training */ + +/* Group: Training */ + +#ifndef FIXEDFANN +/* Function: fann_train + + Train one iteration with a set of inputs, and a set of desired outputs. + This training is always incremental training (see ), since + only one pattern is presented. + + Parameters: + ann - The neural network structure + input - an array of inputs. This array must be exactly long. + desired_output - an array of desired outputs. This array must be exactly + long. + + See also: + , + + This function appears in FANN >= 1.0.0. + */ +FANN_EXTERNAL void FANN_API fann_train(struct fann *ann, fann_type *input, + fann_type *desired_output); + +#endif /* NOT FIXEDFANN */ + +/* Function: fann_test + Test with a set of inputs, and a set of desired outputs. + This operation updates the mean square error, but does not + change the network in any way. + + See also: + , + + This function appears in FANN >= 1.0.0. +*/ +FANN_EXTERNAL fann_type *FANN_API fann_test(struct fann *ann, fann_type *input, + fann_type *desired_output); + +/* Function: fann_get_MSE + Reads the mean square error from the network. + + Reads the mean square error from the network. This value is calculated during + training or testing, and can therefore sometimes be a bit off if the weights + have been changed since the last calculation of the value. + + See also: + + + This function appears in FANN >= 1.1.0. + */ +FANN_EXTERNAL float FANN_API fann_get_MSE(struct fann *ann); + +/* Function: fann_get_bit_fail + + The number of fail bits; means the number of output neurons which differ more + than the bit fail limit (see , ). + The bits are counted in all of the training data, so this number can be higher than + the number of training data. + + This value is reset by and updated by all the same functions which also + update the MSE value (e.g. , ) + + See also: + , + + This function appears in FANN >= 2.0.0 +*/ +FANN_EXTERNAL unsigned int FANN_API fann_get_bit_fail(struct fann *ann); + +/* Function: fann_reset_MSE + Resets the mean square error from the network. + + This function also resets the number of bits that fail. + + See also: + , + + This function appears in FANN >= 1.1.0 + */ +FANN_EXTERNAL void FANN_API fann_reset_MSE(struct fann *ann); + +/* Group: Training Data Training */ + +#ifndef FIXEDFANN + +/* Function: fann_train_on_data + + Trains on an entire dataset, for a period of time. + + This training uses the training algorithm chosen by , + and the parameters set for these training algorithms. + + Parameters: + ann - The neural network + data - The data, which should be used during training + max_epochs - The maximum number of epochs the training should continue + epochs_between_reports - The number of epochs between printing a status report to + stdout. A value of zero means no reports should be printed. desired_error - The desired + or , depending on which stop function is chosen by + . + + Instead of printing out reports every epochs_between_reports, a callback function can be + called (see ). + + See also: + , , + + This function appears in FANN >= 1.0.0. +*/ +FANN_EXTERNAL void FANN_API fann_train_on_data(struct fann *ann, struct fann_train_data *data, + unsigned int max_epochs, + unsigned int epochs_between_reports, + float desired_error); + +/* Function: fann_train_on_file + + Does the same as , but reads the training data directly from a file. + + See also: + + + This function appears in FANN >= 1.0.0. +*/ +FANN_EXTERNAL void FANN_API fann_train_on_file(struct fann *ann, const char *filename, + unsigned int max_epochs, + unsigned int epochs_between_reports, + float desired_error); + +/* Function: fann_train_epoch + Train one epoch with a set of training data. + + Train one epoch with the training data stored in data. One epoch is where all of + the training data is considered exactly once. + + This function returns the MSE error as it is calculated either before or during + the actual training. This is not the actual MSE after the training epoch, but since + calculating this will require to go through the entire training set once more, it is + more than adequate to use this value during training. + + The training algorithm used by this function is chosen by the + function. + + See also: + , + + This function appears in FANN >= 1.2.0. + */ +FANN_EXTERNAL float FANN_API fann_train_epoch(struct fann *ann, struct fann_train_data *data); +#endif /* NOT FIXEDFANN */ + +/* Function: fann_test_data + + Test a set of training data and calculates the MSE for the training data. + + This function updates the MSE and the bit fail values. + + See also: + , , + + This function appears in FANN >= 1.2.0. + */ +FANN_EXTERNAL float FANN_API fann_test_data(struct fann *ann, struct fann_train_data *data); + +/* Group: Training Data Manipulation */ + +/* Function: fann_read_train_from_file + Reads a file that stores training data. + + The file must be formatted like: + >num_train_data num_input num_output + >inputdata separated by space + >outputdata separated by space + > + >. + >. + >. + > + >inputdata separated by space + >outputdata separated by space + + See also: + , , + + This function appears in FANN >= 1.0.0 +*/ +FANN_EXTERNAL struct fann_train_data *FANN_API fann_read_train_from_file(const char *filename); + +/* Function: fann_create_train + Creates an empty training data struct. + + See also: + , , , + , + + This function appears in FANN >= 2.2.0 +*/ +FANN_EXTERNAL struct fann_train_data *FANN_API fann_create_train(unsigned int num_data, + unsigned int num_input, + unsigned int num_output); + +/* Function: fann_create_train_pointer_array + Creates an training data struct and fills it with data from provided arrays of pointer. + + A copy of the data is made so there are no restrictions on the + allocation of the input/output data and the caller is responsible + for the deallocation of the data pointed to by input and output. + + See also: + , , , + , , + + This function appears in FANN >= 2.3.0 +*/ +FANN_EXTERNAL struct fann_train_data *FANN_API +fann_create_train_pointer_array(unsigned int num_data, unsigned int num_input, fann_type **input, + unsigned int num_output, fann_type **output); + +/* Function: fann_create_train_array + Creates an training data struct and fills it with data from provided arrays, where the arrays + must have the dimensions: input[num_data*num_input] output[num_data*num_output] + + A copy of the data is made so there are no restrictions on the + allocation of the input/output data and the caller is responsible + for the deallocation of the data pointed to by input and output. + + See also: + , , , + , , + + This function appears in FANN >= 2.3.0 +*/ +FANN_EXTERNAL struct fann_train_data *FANN_API fann_create_train_array(unsigned int num_data, + unsigned int num_input, + fann_type *input, + unsigned int num_output, + fann_type *output); + +/* Function: fann_create_train_from_callback + Creates the training data struct from a user supplied function. + As the training data are numerable (data 1, data 2...), the user must write + a function that receives the number of the training data set (input,output) + and returns the set. fann_create_train_from_callback will call the user + supplied function 'num_data' times, one input-output pair each time. Each + time the user supplied function is called, the time of the call will be passed + as the 'num' parameter and the user supplied function must write the input + and output to the corresponding parameters. + + + Parameters: + num_data - The number of training data + num_input - The number of inputs per training data + num_output - The number of ouputs per training data + user_function - The user supplied function + + Parameters for the user function: + num - The number of the training data set + num_input - The number of inputs per training data + num_output - The number of ouputs per training data + input - The set of inputs + output - The set of desired outputs + + See also: + , , , + + + This function appears in FANN >= 2.1.0 +*/ +FANN_EXTERNAL struct fann_train_data *FANN_API fann_create_train_from_callback( + unsigned int num_data, unsigned int num_input, unsigned int num_output, + void(FANN_API *user_function)(unsigned int, unsigned int, unsigned int, fann_type *, + fann_type *)); + +/* Function: fann_destroy_train + Destructs the training data and properly deallocates all of the associated data. + Be sure to call this function when finished using the training data. + + This function appears in FANN >= 1.0.0 + */ +FANN_EXTERNAL void FANN_API fann_destroy_train(struct fann_train_data *train_data); + +/* Function: fann_get_train_input + Gets the training input data at the given position + + See also: + + + This function appears in FANN >= 2.3.0 + */ +FANN_EXTERNAL fann_type *FANN_API fann_get_train_input(struct fann_train_data *data, + unsigned int position); + +/* Function: fann_get_train_output + Gets the training output data at the given position + + See also: + + + This function appears in FANN >= 2.3.0 + */ +FANN_EXTERNAL fann_type *FANN_API fann_get_train_output(struct fann_train_data *data, + unsigned int position); + +/* Function: fann_shuffle_train_data + + Shuffles training data, randomizing the order. + This is recommended for incremental training, while it has no influence during batch training. + + This function appears in FANN >= 1.1.0. + */ +FANN_EXTERNAL void FANN_API fann_shuffle_train_data(struct fann_train_data *train_data); + +#ifndef FIXEDFANN + +/* Function: fann_get_min_train_input + + Get the minimum value of all in the input data + + This function appears in FANN >= 2.3.0 +*/ +FANN_EXTERNAL fann_type FANN_API fann_get_min_train_input(struct fann_train_data *train_data); + +/* Function: fann_get_max_train_input + + Get the maximum value of all in the input data + + This function appears in FANN >= 2.3.0 +*/ +FANN_EXTERNAL fann_type FANN_API fann_get_max_train_input(struct fann_train_data *train_data); + +/* Function: fann_get_min_train_output + + Get the minimum value of all in the output data + + This function appears in FANN >= 2.3.0 +*/ +FANN_EXTERNAL fann_type FANN_API fann_get_min_train_output(struct fann_train_data *train_data); + +/* Function: fann_get_max_train_output + + Get the maximum value of all in the output data + + This function appears in FANN >= 2.3.0 +*/ +FANN_EXTERNAL fann_type FANN_API fann_get_max_train_output(struct fann_train_data *train_data); + +/* Function: fann_scale_train + + Scale input and output data based on previously calculated parameters. + + Parameters: + ann - ann for which trained parameters were calculated before + data - training data that needs to be scaled + + See also: + , + + This function appears in FANN >= 2.1.0 +*/ +FANN_EXTERNAL void FANN_API fann_scale_train(struct fann *ann, struct fann_train_data *data); + +/* Function: fann_descale_train + + Descale input and output data based on previously calculated parameters. + + Parameters: + ann - ann for which trained parameters were calculated before + data - training data that needs to be descaled + + See also: + , + + This function appears in FANN >= 2.1.0 + */ +FANN_EXTERNAL void FANN_API fann_descale_train(struct fann *ann, struct fann_train_data *data); + +/* Function: fann_set_input_scaling_params + + Calculate input scaling parameters for future use based on training data. + + Parameters: + ann - ann for which parameters need to be calculated + data - training data that will be used to calculate scaling parameters + new_input_min - desired lower bound in input data after scaling (not strictly followed) + new_input_max - desired upper bound in input data after scaling (not strictly followed) + + See also: + + + This function appears in FANN >= 2.1.0 + */ +FANN_EXTERNAL int FANN_API fann_set_input_scaling_params(struct fann *ann, + const struct fann_train_data *data, + float new_input_min, float new_input_max); + +/* Function: fann_set_output_scaling_params + + Calculate output scaling parameters for future use based on training data. + + Parameters: + ann - ann for which parameters need to be calculated + data - training data that will be used to calculate scaling parameters + new_output_min - desired lower bound in output data after scaling (not strictly followed) + new_output_max - desired upper bound in output data after scaling (not strictly followed) + + See also: + + + This function appears in FANN >= 2.1.0 + */ +FANN_EXTERNAL int FANN_API fann_set_output_scaling_params(struct fann *ann, + const struct fann_train_data *data, + float new_output_min, + float new_output_max); + +/* Function: fann_set_scaling_params + + Calculate input and output scaling parameters for future use based on training data. + + Parameters: + ann - ann for which parameters need to be calculated + data - training data that will be used to calculate scaling parameters + new_input_min - desired lower bound in input data after scaling (not strictly followed) + new_input_max - desired upper bound in input data after scaling (not strictly followed) + new_output_min - desired lower bound in output data after scaling (not strictly followed) + new_output_max - desired upper bound in output data after scaling (not strictly followed) + + See also: + , + + This function appears in FANN >= 2.1.0 + */ +FANN_EXTERNAL int FANN_API fann_set_scaling_params(struct fann *ann, + const struct fann_train_data *data, + float new_input_min, float new_input_max, + float new_output_min, float new_output_max); + +/* Function: fann_clear_scaling_params + + Clears scaling parameters. + + Parameters: + ann - ann for which to clear scaling parameters + + This function appears in FANN >= 2.1.0 + */ +FANN_EXTERNAL int FANN_API fann_clear_scaling_params(struct fann *ann); + +/* Function: fann_scale_input + + Scale data in input vector before feeding it to ann based on previously calculated parameters. + + Parameters: + ann - for which scaling parameters were calculated + input_vector - input vector that will be scaled + + See also: + , + + This function appears in FANN >= 2.1.0 +*/ +FANN_EXTERNAL void FANN_API fann_scale_input(struct fann *ann, fann_type *input_vector); + +/* Function: fann_scale_output + + Scale data in output vector before feeding it to ann based on previously calculated parameters. + + Parameters: + ann - for which scaling parameters were calculated + output_vector - output vector that will be scaled + + See also: + , + + This function appears in FANN >= 2.1.0 + */ +FANN_EXTERNAL void FANN_API fann_scale_output(struct fann *ann, fann_type *output_vector); + +/* Function: fann_descale_input + + Scale data in input vector after getting it from ann based on previously calculated parameters. + + Parameters: + ann - for which scaling parameters were calculated + input_vector - input vector that will be descaled + + See also: + , + + This function appears in FANN >= 2.1.0 + */ +FANN_EXTERNAL void FANN_API fann_descale_input(struct fann *ann, fann_type *input_vector); + +/* Function: fann_descale_output + + Scale data in output vector after getting it from ann based on previously calculated parameters. + + Parameters: + ann - for which scaling parameters were calculated + output_vector - output vector that will be descaled + + See also: + , + + This function appears in FANN >= 2.1.0 + */ +FANN_EXTERNAL void FANN_API fann_descale_output(struct fann *ann, fann_type *output_vector); + +#endif + +/* Function: fann_scale_input_train_data + + Scales the inputs in the training data to the specified range. + + A simplified scaling method, which is mostly useful in examples where it's known that all the + data will be in one range and it should be transformed to another range. + + It is not recommended to use this on subsets of data as the complete input range might not be + available in that subset. + + For more powerful scaling, please consider + + See also: + , , + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_scale_input_train_data(struct fann_train_data *train_data, + fann_type new_min, fann_type new_max); + +/* Function: fann_scale_output_train_data + + Scales the outputs in the training data to the specified range. + + A simplified scaling method, which is mostly useful in examples where it's known that all the + data will be in one range and it should be transformed to another range. + + It is not recommended to use this on subsets of data as the complete input range might not be + available in that subset. + + For more powerful scaling, please consider + + See also: + , + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_scale_output_train_data(struct fann_train_data *train_data, + fann_type new_min, fann_type new_max); + +/* Function: fann_scale_train_data + + Scales the inputs and outputs in the training data to the specified range. + + A simplified scaling method, which is mostly useful in examples where it's known that all the + data will be in one range and it should be transformed to another range. + + It is not recommended to use this on subsets of data as the complete input range might not be + available in that subset. + + For more powerful scaling, please consider + + See also: + , + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_scale_train_data(struct fann_train_data *train_data, + fann_type new_min, fann_type new_max); + +/* Function: fann_merge_train_data + + Merges the data from *data1* and *data2* into a new . + + This function appears in FANN >= 1.1.0. + */ +FANN_EXTERNAL struct fann_train_data *FANN_API fann_merge_train_data(struct fann_train_data *data1, + struct fann_train_data *data2); + +/* Function: fann_duplicate_train_data + + Returns an exact copy of a . + + This function appears in FANN >= 1.1.0. + */ +FANN_EXTERNAL struct fann_train_data *FANN_API +fann_duplicate_train_data(struct fann_train_data *data); + +/* Function: fann_subset_train_data + + Returns an copy of a subset of the , starting at position *pos* + and *length* elements forward. + + >fann_subset_train_data(train_data, 0, fann_length_train_data(train_data)) + + Will do the same as . + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL struct fann_train_data *FANN_API fann_subset_train_data(struct fann_train_data *data, + unsigned int pos, + unsigned int length); + +/* Function: fann_length_train_data + + Returns the number of training patterns in the . + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL unsigned int FANN_API fann_length_train_data(struct fann_train_data *data); + +/* Function: fann_num_input_train_data + + Returns the number of inputs in each of the training patterns in the . + + See also: + , + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL unsigned int FANN_API fann_num_input_train_data(struct fann_train_data *data); + +/* Function: fann_num_output_train_data + + Returns the number of outputs in each of the training patterns in the . + + See also: + , + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL unsigned int FANN_API fann_num_output_train_data(struct fann_train_data *data); + +/* Function: fann_save_train + + Save the training structure to a file, with the format as specified in + + + Return: + The function returns 0 on success and -1 on failure. + + See also: + , + + This function appears in FANN >= 1.0.0. + */ +FANN_EXTERNAL int FANN_API fann_save_train(struct fann_train_data *data, const char *filename); + +/* Function: fann_save_train_to_fixed + + Saves the training structure to a fixed point data file. + + This function is very useful for testing the quality of a fixed point network. + + Return: + The function returns 0 on success and -1 on failure. + + See also: + + + This function appears in FANN >= 1.0.0. + */ +FANN_EXTERNAL int FANN_API fann_save_train_to_fixed(struct fann_train_data *data, + const char *filename, + unsigned int decimal_point); + +/* Group: Parameters */ + +/* Function: fann_get_training_algorithm + + Return the training algorithm as described by . This training algorithm + is used by and associated functions. + + Note that this algorithm is also used during , although only + FANN_TRAIN_RPROP and FANN_TRAIN_QUICKPROP is allowed during cascade training. + + The default training algorithm is FANN_TRAIN_RPROP. + + See also: + , + + This function appears in FANN >= 1.0.0. + */ +FANN_EXTERNAL enum fann_train_enum FANN_API fann_get_training_algorithm(struct fann *ann); + +/* Function: fann_set_training_algorithm + + Set the training algorithm. + + More info available in + + This function appears in FANN >= 1.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_training_algorithm(struct fann *ann, + enum fann_train_enum training_algorithm); + +/* Function: fann_get_learning_rate + + Return the learning rate. + + The learning rate is used to determine how aggressive training should be for some of the + training algorithms (FANN_TRAIN_INCREMENTAL, FANN_TRAIN_BATCH, FANN_TRAIN_QUICKPROP). + Do however note that it is not used in FANN_TRAIN_RPROP. + + The default learning rate is 0.7. + + See also: + , + + This function appears in FANN >= 1.0.0. + */ +FANN_EXTERNAL float FANN_API fann_get_learning_rate(struct fann *ann); + +/* Function: fann_set_learning_rate + + Set the learning rate. + + More info available in + + This function appears in FANN >= 1.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_learning_rate(struct fann *ann, float learning_rate); + +/* Function: fann_get_learning_momentum + + Get the learning momentum. + + The learning momentum can be used to speed up FANN_TRAIN_INCREMENTAL training. + A too high momentum will however not benefit training. Setting momentum to 0 will + be the same as not using the momentum parameter. The recommended value of this parameter + is between 0.0 and 1.0. + + The default momentum is 0. + + See also: + , + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL float FANN_API fann_get_learning_momentum(struct fann *ann); + +/* Function: fann_set_learning_momentum + + Set the learning momentum. + + More info available in + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_learning_momentum(struct fann *ann, float learning_momentum); + +/* Function: fann_get_activation_function + + Get the activation function for neuron number *neuron* in layer number *layer*, + counting the input layer as layer 0. + + It is not possible to get activation functions for the neurons in the input layer. + + Information about the individual activation functions is available at . + + Returns: + The activation function for the neuron or -1 if the neuron is not defined in the neural network. + + See also: + , , + , , + + + This function appears in FANN >= 2.1.0 + */ +FANN_EXTERNAL enum fann_activationfunc_enum FANN_API fann_get_activation_function(struct fann *ann, + int layer, + int neuron); + +/* Function: fann_set_activation_function + + Set the activation function for neuron number *neuron* in layer number *layer*, + counting the input layer as layer 0. + + It is not possible to set activation functions for the neurons in the input layer. + + When choosing an activation function it is important to note that the activation + functions have different range. FANN_SIGMOID is e.g. in the 0 - 1 range while + FANN_SIGMOID_SYMMETRIC is in the -1 - 1 range and FANN_LINEAR is unbounded. + + Information about the individual activation functions is available at . + + The default activation function is FANN_SIGMOID_STEPWISE. + + See also: + , , + , , + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_activation_function( + struct fann *ann, enum fann_activationfunc_enum activation_function, int layer, int neuron); + +/* Function: fann_set_activation_function_layer + + Set the activation function for all the neurons in the layer number *layer*, + counting the input layer as layer 0. + + It is not possible to set activation functions for the neurons in the input layer. + + See also: + , , + , + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_activation_function_layer( + struct fann *ann, enum fann_activationfunc_enum activation_function, int layer); + +/* Function: fann_set_activation_function_hidden + + Set the activation function for all of the hidden layers. + + See also: + , , + , + + This function appears in FANN >= 1.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_activation_function_hidden( + struct fann *ann, enum fann_activationfunc_enum activation_function); + +/* Function: fann_set_activation_function_output + + Set the activation function for the output layer. + + See also: + , , + , + + This function appears in FANN >= 1.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_activation_function_output( + struct fann *ann, enum fann_activationfunc_enum activation_function); + +/* Function: fann_get_activation_steepness + + Get the activation steepness for neuron number *neuron* in layer number *layer*, + counting the input layer as layer 0. + + It is not possible to get activation steepness for the neurons in the input layer. + + The steepness of an activation function says something about how fast the activation function + goes from the minimum to the maximum. A high value for the activation function will also + give a more aggressive training. + + When training neural networks where the output values should be at the extremes (usually 0 and 1, + depending on the activation function), a steep activation function can be used (e.g. 1.0). + + The default activation steepness is 0.5. + + Returns: + The activation steepness for the neuron or -1 if the neuron is not defined in the neural + network. + + See also: + , , + , , + + + This function appears in FANN >= 2.1.0 + */ +FANN_EXTERNAL fann_type FANN_API fann_get_activation_steepness(struct fann *ann, int layer, + int neuron); + +/* Function: fann_set_activation_steepness + + Set the activation steepness for neuron number *neuron* in layer number *layer*, + counting the input layer as layer 0. + + It is not possible to set activation steepness for the neurons in the input layer. + + The steepness of an activation function says something about how fast the activation function + goes from the minimum to the maximum. A high value for the activation function will also + give a more aggressive training. + + When training neural networks where the output values should be at the extremes (usually 0 and 1, + depending on the activation function), a steep activation function can be used (e.g. 1.0). + + The default activation steepness is 0.5. + + See also: + , , + , , + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_activation_steepness(struct fann *ann, fann_type steepness, + int layer, int neuron); + +/* Function: fann_set_activation_steepness_layer + + Set the activation steepness for all of the neurons in layer number *layer*, + counting the input layer as layer 0. + + It is not possible to set activation steepness for the neurons in the input layer. + + See also: + , , + , + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_activation_steepness_layer(struct fann *ann, + fann_type steepness, int layer); + +/* Function: fann_set_activation_steepness_hidden + + Set the steepness of the activation steepness in all of the hidden layers. + + See also: + , , + , + + This function appears in FANN >= 1.2.0. + */ +FANN_EXTERNAL void FANN_API fann_set_activation_steepness_hidden(struct fann *ann, + fann_type steepness); + +/* Function: fann_set_activation_steepness_output + + Set the steepness of the activation steepness in the output layer. + + See also: + , , + , + + This function appears in FANN >= 1.2.0. + */ +FANN_EXTERNAL void FANN_API fann_set_activation_steepness_output(struct fann *ann, + fann_type steepness); + +/* Function: fann_get_train_error_function + + Returns the error function used during training. + + The error functions are described further in + + The default error function is FANN_ERRORFUNC_TANH + + See also: + + + This function appears in FANN >= 1.2.0. + */ +FANN_EXTERNAL enum fann_errorfunc_enum FANN_API fann_get_train_error_function(struct fann *ann); + +/* Function: fann_set_train_error_function + + Set the error function used during training. + + The error functions are described further in + + See also: + + + This function appears in FANN >= 1.2.0. + */ +FANN_EXTERNAL void FANN_API +fann_set_train_error_function(struct fann *ann, enum fann_errorfunc_enum train_error_function); + +/* Function: fann_get_train_stop_function + + Returns the the stop function used during training. + + The stop function is described further in + + The default stop function is FANN_STOPFUNC_MSE + + See also: + , + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL enum fann_stopfunc_enum FANN_API fann_get_train_stop_function(struct fann *ann); + +/* Function: fann_set_train_stop_function + + Set the stop function used during training. + + Returns the the stop function used during training. + + The stop function is described further in + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API +fann_set_train_stop_function(struct fann *ann, enum fann_stopfunc_enum train_stop_function); + +/* Function: fann_get_bit_fail_limit + + Returns the bit fail limit used during training. + + The bit fail limit is used during training where the is set to + FANN_STOPFUNC_BIT. + + The limit is the maximum accepted difference between the desired output and the actual output + during training. Each output that diverges more than this limit is counted as an error bit. This + difference is divided by two when dealing with symmetric activation functions, so that symmetric + and not symmetric activation functions can use the same limit. + + The default bit fail limit is 0.35. + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL fann_type FANN_API fann_get_bit_fail_limit(struct fann *ann); + +/* Function: fann_set_bit_fail_limit + + Set the bit fail limit used during training. + + See also: + + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_bit_fail_limit(struct fann *ann, fann_type bit_fail_limit); + +/* Function: fann_set_callback + + Sets the callback function for use during training. + + See for more information about the callback function. + + The default callback function simply prints out some status information. + + This function appears in FANN >= 2.0.0. + */ +FANN_EXTERNAL void FANN_API fann_set_callback(struct fann *ann, fann_callback_type callback); + +/* Function: fann_get_quickprop_decay + + The decay is a small negative valued number which is the factor that the weights + should become smaller in each iteration during quickprop training. This is used + to make sure that the weights do not become too high during training. + + The default decay is -0.0001. + + See also: + + + This function appears in FANN >= 1.2.0. + */ +FANN_EXTERNAL float FANN_API fann_get_quickprop_decay(struct fann *ann); + +/* Function: fann_set_quickprop_decay + + Sets the quickprop decay factor. + + See also: + + + This function appears in FANN >= 1.2.0. +*/ +FANN_EXTERNAL void FANN_API fann_set_quickprop_decay(struct fann *ann, float quickprop_decay); + +/* Function: fann_get_quickprop_mu + + The mu factor is used to increase and decrease the step-size during quickprop training. + The mu factor should always be above 1, since it would otherwise decrease the step-size + when it was supposed to increase it. + + The default mu factor is 1.75. + + See also: + + + This function appears in FANN >= 1.2.0. +*/ +FANN_EXTERNAL float FANN_API fann_get_quickprop_mu(struct fann *ann); + +/* Function: fann_set_quickprop_mu + + Sets the quickprop mu factor. + + See also: + + + This function appears in FANN >= 1.2.0. +*/ +FANN_EXTERNAL void FANN_API fann_set_quickprop_mu(struct fann *ann, float quickprop_mu); + +/* Function: fann_get_rprop_increase_factor + + The increase factor is a value larger than 1, which is used to + increase the step-size during RPROP training. + + The default increase factor is 1.2. + + See also: + + + This function appears in FANN >= 1.2.0. +*/ +FANN_EXTERNAL float FANN_API fann_get_rprop_increase_factor(struct fann *ann); + +/* Function: fann_set_rprop_increase_factor + + The increase factor used during RPROP training. + + See also: + + + This function appears in FANN >= 1.2.0. +*/ +FANN_EXTERNAL void FANN_API fann_set_rprop_increase_factor(struct fann *ann, + float rprop_increase_factor); + +/* Function: fann_get_rprop_decrease_factor + + The decrease factor is a value smaller than 1, which is used to decrease the step-size during + RPROP training. + + The default decrease factor is 0.5. + + See also: + + + This function appears in FANN >= 1.2.0. +*/ +FANN_EXTERNAL float FANN_API fann_get_rprop_decrease_factor(struct fann *ann); + +/* Function: fann_set_rprop_decrease_factor + + The decrease factor is a value smaller than 1, which is used to decrease the step-size during + RPROP training. + + See also: + + + This function appears in FANN >= 1.2.0. +*/ +FANN_EXTERNAL void FANN_API fann_set_rprop_decrease_factor(struct fann *ann, + float rprop_decrease_factor); + +/* Function: fann_get_rprop_delta_min + + The minimum step-size is a small positive number determining how small the minimum step-size may + be. + + The default value delta min is 0.0. + + See also: + + + This function appears in FANN >= 1.2.0. +*/ +FANN_EXTERNAL float FANN_API fann_get_rprop_delta_min(struct fann *ann); + +/* Function: fann_set_rprop_delta_min + + The minimum step-size is a small positive number determining how small the minimum step-size may + be. + + See also: + + + This function appears in FANN >= 1.2.0. +*/ +FANN_EXTERNAL void FANN_API fann_set_rprop_delta_min(struct fann *ann, float rprop_delta_min); + +/* Function: fann_get_rprop_delta_max + + The maximum step-size is a positive number determining how large the maximum step-size may be. + + The default delta max is 50.0. + + See also: + , + + This function appears in FANN >= 1.2.0. +*/ +FANN_EXTERNAL float FANN_API fann_get_rprop_delta_max(struct fann *ann); + +/* Function: fann_set_rprop_delta_max + + The maximum step-size is a positive number determining how large the maximum step-size may be. + + See also: + , + + This function appears in FANN >= 1.2.0. +*/ +FANN_EXTERNAL void FANN_API fann_set_rprop_delta_max(struct fann *ann, float rprop_delta_max); + +/* Function: fann_get_rprop_delta_zero + + The initial step-size is a positive number determining the initial step size. + + The default delta zero is 0.1. + + See also: + , , + + This function appears in FANN >= 2.1.0. +*/ +FANN_EXTERNAL float FANN_API fann_get_rprop_delta_zero(struct fann *ann); + +/* Function: fann_set_rprop_delta_zero + + The initial step-size is a positive number determining the initial step size. + + See also: + , + + This function appears in FANN >= 2.1.0. +*/ +FANN_EXTERNAL void FANN_API fann_set_rprop_delta_zero(struct fann *ann, float rprop_delta_max); + +/* Method: fann_get_sarprop_weight_decay_shift + + The sarprop weight decay shift. + + The default delta max is -6.644. + + See also: + + + This function appears in FANN >= 2.1.0. + */ +FANN_EXTERNAL float FANN_API fann_get_sarprop_weight_decay_shift(struct fann *ann); + +/* Method: fann_set_sarprop_weight_decay_shift + + Set the sarprop weight decay shift. + + This function appears in FANN >= 2.1.0. + + See also: + + */ +FANN_EXTERNAL void FANN_API fann_set_sarprop_weight_decay_shift(struct fann *ann, + float sarprop_weight_decay_shift); + +/* Method: fann_get_sarprop_step_error_threshold_factor + + The sarprop step error threshold factor. + + The default delta max is 0.1. + + See also: + + + This function appears in FANN >= 2.1.0. + */ +FANN_EXTERNAL float FANN_API fann_get_sarprop_step_error_threshold_factor(struct fann *ann); + +/* Method: fann_set_sarprop_step_error_threshold_factor + + Set the sarprop step error threshold factor. + + This function appears in FANN >= 2.1.0. + + See also: + + */ +FANN_EXTERNAL void FANN_API fann_set_sarprop_step_error_threshold_factor( + struct fann *ann, float sarprop_step_error_threshold_factor); + +/* Method: fann_get_sarprop_step_error_shift + + The get sarprop step error shift. + + The default delta max is 1.385. + + See also: + + + This function appears in FANN >= 2.1.0. + */ +FANN_EXTERNAL float FANN_API fann_get_sarprop_step_error_shift(struct fann *ann); + +/* Method: fann_set_sarprop_step_error_shift + + Set the sarprop step error shift. + + This function appears in FANN >= 2.1.0. + + See also: + + */ +FANN_EXTERNAL void FANN_API fann_set_sarprop_step_error_shift(struct fann *ann, + float sarprop_step_error_shift); + +/* Method: fann_get_sarprop_temperature + + The sarprop weight decay shift. + + The default delta max is 0.015. + + See also: + + + This function appears in FANN >= 2.1.0. + */ +FANN_EXTERNAL float FANN_API fann_get_sarprop_temperature(struct fann *ann); + +/* Method: fann_set_sarprop_temperature + + Set the sarprop_temperature. + + This function appears in FANN >= 2.1.0. + + See also: + + */ +FANN_EXTERNAL void FANN_API fann_set_sarprop_temperature(struct fann *ann, + float sarprop_temperature); + +#endif diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_training_data_cpp.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_training_data_cpp.h new file mode 100644 index 0000000..04248f6 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fann_training_data_cpp.h @@ -0,0 +1,543 @@ +/* +Fast Artificial Neural Network Library (fann) +Copyright (C) 2003-2016 Steffen Nissen (steffen.fann@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef FANN_FANN_TRAINING_DATA_CPP_H +#define FANN_FANN_TRAINING_DATA_CPP_H + +#include +#include + +namespace FANN { + +/* Section: FANN C++ Training Data + */ + +/* Class: training_data + + is used to create and manipulate training data used by the + +Encapsulation of a training data set and +associated C API functions. +*/ +class training_data { + public: + /* Constructor: training_data + + Default constructor creates an empty training data. + Use , or to initialize. + */ + training_data() : train_data(NULL) {} + + /* Constructor: training_data + + Copy constructor constructs a copy of the training data. + Corresponds to the C API function. + */ + training_data(const training_data &data) { + train_data = fann_duplicate_train_data(data.train_data); + } + + /* Destructor: ~training_data + + Provides automatic cleanup of data. + Define USE_VIRTUAL_DESTRUCTOR if you need the destructor to be virtual. + + See also: + + */ +#ifdef USE_VIRTUAL_DESTRUCTOR + virtual +#endif + + ~training_data() { + destroy_train(); + } + + /* Method: destroy + + Destructs the training data. Called automatically by the destructor. + + See also: + <~training_data> + */ + void destroy_train() { + if (train_data != NULL) { + fann_destroy_train(train_data); + train_data = NULL; + } + } + + /* Method: read_train_from_file + Reads a file that stores training data. + + The file must be formatted like: + >num_train_data num_input num_output + >inputdata seperated by space + >outputdata seperated by space + > + >. + >. + >. + > + >inputdata seperated by space + >outputdata seperated by space + + See also: + , , + + This function appears in FANN >= 1.0.0 + */ + bool read_train_from_file(const std::string &filename) { + destroy_train(); + train_data = fann_read_train_from_file(filename.c_str()); + return (train_data != NULL); + } + + /* Method: save_train + + Save the training structure to a file, with the format as specified in + + Return: + The function returns true on success and false on failure. + + See also: + , , + + This function appears in FANN >= 1.0.0. + */ + bool save_train(const std::string &filename) { + if (train_data == NULL) { + return false; + } + if (fann_save_train(train_data, filename.c_str()) == -1) { + return false; + } + return true; + } + + /* Method: save_train_to_fixed + + Saves the training structure to a fixed point data file. + + This function is very useful for testing the quality of a fixed point network. + + Return: + The function returns true on success and false on failure. + + See also: + , + + This function appears in FANN >= 1.0.0. + */ + bool save_train_to_fixed(const std::string &filename, unsigned int decimal_point) { + if (train_data == NULL) { + return false; + } + if (fann_save_train_to_fixed(train_data, filename.c_str(), decimal_point) == -1) { + return false; + } + return true; + } + + /* Method: shuffle_train_data + + Shuffles training data, randomizing the order. + This is recommended for incremental training, while it have no influence during batch training. + + This function appears in FANN >= 1.1.0. + */ + void shuffle_train_data() { + if (train_data != NULL) { + fann_shuffle_train_data(train_data); + } + } + + /* Method: merge_train_data + + Merges the data into the data contained in the . + + This function appears in FANN >= 1.1.0. + */ + void merge_train_data(const training_data &data) { + fann_train_data *new_data = fann_merge_train_data(train_data, data.train_data); + if (new_data != NULL) { + destroy_train(); + train_data = new_data; + } + } + + /* Method: length_train_data + + Returns the number of training patterns in the . + + See also: + , , + + This function appears in FANN >= 2.0.0. + */ + unsigned int length_train_data() { + if (train_data == NULL) { + return 0; + } else { + return fann_length_train_data(train_data); + } + } + + /* Method: num_input_train_data + + Returns the number of inputs in each of the training patterns in the . + + See also: + , , + + This function appears in FANN >= 2.0.0. + */ + unsigned int num_input_train_data() { + if (train_data == NULL) { + return 0; + } else { + return fann_num_input_train_data(train_data); + } + } + + /* Method: num_output_train_data + + Returns the number of outputs in each of the training patterns in the . + + See also: + , , + + This function appears in FANN >= 2.0.0. + */ + unsigned int num_output_train_data() { + if (train_data == NULL) { + return 0; + } else { + return fann_num_output_train_data(train_data); + } + } + + /* Method: get_input + Grant access to the encapsulated data since many situations + and applications creates the data from sources other than files + or uses the training data for testing and related functions + + Returns: + A pointer to the array of input training data + + See also: + , + + This function appears in FANN >= 2.0.0. + */ + fann_type **get_input() { + if (train_data == NULL) { + return NULL; + } else { + return train_data->input; + } + } + + /* Method: get_output + + Grant access to the encapsulated data since many situations + and applications creates the data from sources other than files + or uses the training data for testing and related functions + + Returns: + A pointer to the array of output training data + + See also: + , + + This function appears in FANN >= 2.0.0. + */ + fann_type **get_output() { + if (train_data == NULL) { + return NULL; + } else { + return train_data->output; + } + } + + /* Method: get_train_input + Gets the training input data at the given position + + Returns: + A pointer to the array of input training data at the given position + + See also: + , + + This function appears in FANN >= 2.3.0. + */ + fann_type *get_train_input(unsigned int position) { + return fann_get_train_input(train_data, position); + } + + /* Method: get_train_output + Gets the training output data at the given position + + Returns: + A pointer to the array of output training data at the given position + + See also: + + + This function appears in FANN >= 2.3.0. + */ + fann_type *get_train_output(unsigned int position) { + return fann_get_train_output(train_data, position); + } + + /* Method: set_train_data + + Set the training data to the input and output data provided. + + A copy of the data is made so there are no restrictions on the + allocation of the input/output data and the caller is responsible + for the deallocation of the data pointed to by input and output. + + Parameters: + num_data - The number of training data + num_input - The number of inputs per training data + num_output - The number of ouputs per training data + input - The set of inputs (a pointer to an array of pointers to arrays of floating point + data) output - The set of desired outputs (a pointer to an array of pointers to arrays of + floating point data) + + See also: + , + */ + void set_train_data(unsigned int num_data, unsigned int num_input, fann_type **input, + unsigned int num_output, fann_type **output) { + set_train_data(fann_create_train_pointer_array(num_data, num_input, input, num_output, output)); + } + + /* Method: set_train_data + + Set the training data to the input and output data provided. + + A copy of the data is made so there are no restrictions on the + allocation of the input/output data and the caller is responsible + for the deallocation of the data pointed to by input and output. + + Parameters: + num_data - The number of training data + num_input - The number of inputs per training data + num_output - The number of ouputs per training data + input - The set of inputs (an array with the dimension num_data*num_input) + output - The set of desired outputs (an array with the dimension num_data*num_output) + + See also: + , + */ + void set_train_data(unsigned int num_data, unsigned int num_input, fann_type *input, + unsigned int num_output, fann_type *output) { + set_train_data(fann_create_train_array(num_data, num_input, input, num_output, output)); + } + + private: + /* Set the training data to the struct fann_training_data pointer. + The struct has to be allocated with malloc to be compatible + with fann_destroy. */ + void set_train_data(struct fann_train_data *data) { + destroy_train(); + train_data = data; + } + + public: + /*********************************************************************/ + + /* Method: create_train_from_callback + Creates the training data struct from a user supplied function. + As the training data are numerable (data 1, data 2...), the user must write + a function that receives the number of the training data set (input,output) + and returns the set. + + Parameters: + num_data - The number of training data + num_input - The number of inputs per training data + num_output - The number of ouputs per training data + user_function - The user suplied function + + Parameters for the user function: + num - The number of the training data set + num_input - The number of inputs per training data + num_output - The number of ouputs per training data + input - The set of inputs + output - The set of desired outputs + + See also: + , , + + + This function appears in FANN >= 2.1.0 + */ + void create_train_from_callback(unsigned int num_data, unsigned int num_input, + unsigned int num_output, + void(FANN_API *user_function)(unsigned int, unsigned int, + unsigned int, fann_type *, + fann_type *)) { + destroy_train(); + train_data = fann_create_train_from_callback(num_data, num_input, num_output, user_function); + } + +#ifndef FIXEDFANN + /* Function: get_min_input + + Get the minimum value of all in the input data + + This function appears in FANN >= 2.3.0 + */ + fann_type get_min_input() { return fann_get_min_train_input(train_data); } + + /* Function: get_max_input + + Get the maximum value of all in the input data + + This function appears in FANN >= 2.3.0 + */ + fann_type get_max_input() { return fann_get_max_train_input(train_data); } + + /* Function: get_min_output + + Get the minimum value of all in the output data + + This function appears in FANN >= 2.3.0 + */ + fann_type get_min_output() { return fann_get_min_train_output(train_data); } + + /* Function: get_max_output + + Get the maximum value of all in the output data + + This function appears in FANN >= 2.3.0 + */ + fann_type get_max_output() { return fann_get_max_train_output(train_data); } +#endif /* FIXEDFANN */ + + /* Method: scale_input_train_data + + Scales the inputs in the training data to the specified range. + + A simplified scaling method, which is mostly useful in examples where it's known that all the + data will be in one range and it should be transformed to another range. + + It is not recommended to use this on subsets of data as the complete input range might not be + available in that subset. + + For more powerful scaling, please consider + + See also: + , , + + This function appears in FANN >= 2.0.0. + */ + void scale_input_train_data(fann_type new_min, fann_type new_max) { + if (train_data != NULL) { + fann_scale_input_train_data(train_data, new_min, new_max); + } + } + + /* Method: scale_output_train_data + + Scales the outputs in the training data to the specified range. + + A simplified scaling method, which is mostly useful in examples where it's known that all the + data will be in one range and it should be transformed to another range. + + It is not recommended to use this on subsets of data as the complete input range might not be + available in that subset. + + For more powerful scaling, please consider + + See also: + , , + + This function appears in FANN >= 2.0.0. + */ + void scale_output_train_data(fann_type new_min, fann_type new_max) { + if (train_data != NULL) { + fann_scale_output_train_data(train_data, new_min, new_max); + } + } + + /* Method: scale_train_data + + Scales the inputs and outputs in the training data to the specified range. + + A simplified scaling method, which is mostly useful in examples where it's known that all the + data will be in one range and it should be transformed to another range. + + It is not recommended to use this on subsets of data as the complete input range might not be + available in that subset. + + For more powerful scaling, please consider + + See also: + , , + + This function appears in FANN >= 2.0.0. + */ + void scale_train_data(fann_type new_min, fann_type new_max) { + if (train_data != NULL) { + fann_scale_train_data(train_data, new_min, new_max); + } + } + + /* Method: subset_train_data + + Changes the training data to a subset, starting at position *pos* + and *length* elements forward. Use the copy constructor to work + on a new copy of the training data. + + >FANN::training_data full_data_set; + >full_data_set.read_train_from_file("somefile.train"); + >FANN::training_data *small_data_set = new FANN::training_data(full_data_set); + >small_data_set->subset_train_data(0, 2); // Only use first two + >// Use small_data_set ... + >delete small_data_set; + + See also: + + + This function appears in FANN >= 2.0.0. + */ + void subset_train_data(unsigned int pos, unsigned int length) { + if (train_data != NULL) { + struct fann_train_data *temp = fann_subset_train_data(train_data, pos, length); + destroy_train(); + train_data = temp; + } + } + + /*********************************************************************/ + + protected: + /* The neural_net class has direct access to the training data */ + friend class neural_net; + + /* Pointer to the encapsulated training data */ + struct fann_train_data *train_data; +}; + +} // namespace FANN + +#endif // FANN_FANN_TRAINING_DATA_CPP_H diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fixedfann.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fixedfann.h new file mode 100644 index 0000000..df3bcd4 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/fixedfann.h @@ -0,0 +1,33 @@ +/* +Fast Artificial Neural Network Library (fann) +Copyright (C) 2003-2016 Steffen Nissen (steffen.fann@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef __fixedfann_h__ +#define __fixedfann_h__ + +typedef int fann_type; + +#undef FIXEDFANN +#define FIXEDFANN +#define FANNPRINTF "%d" +#define FANNSCANF "%d" + +#define FANN_INCLUDE +#include "fann.h" + +#endif diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/floatfann.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/floatfann.h new file mode 100644 index 0000000..ab876ca --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/floatfann.h @@ -0,0 +1,33 @@ +/* +Fast Artificial Neural Network Library (fann) +Copyright (C) 2003-2016 Steffen Nissen (steffen.fann@gmail.com) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef __floatfann_h__ +#define __floatfann_h__ + +typedef float fann_type; + +#undef FLOATFANN +#define FLOATFANN +#define FANNPRINTF "%.20e" +#define FANNSCANF "%f" + +#define FANN_INCLUDE +#include "fann.h" + +#endif diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/parallel_fann.h b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/parallel_fann.h new file mode 100644 index 0000000..28d0781 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/parallel_fann.h @@ -0,0 +1,53 @@ +/* + * parallel_FANN.h + * + * Author: Alessandro Pietro Bardelli + */ +#ifndef DISABLE_PARALLEL_FANN +#ifndef PARALLEL_FANN_H_ +#define PARALLEL_FANN_H_ + +#include "fann.h" + +#ifdef __cplusplus +extern "C" { + +#ifndef __cplusplus +} /* to fool automatic indention engines */ +#endif +#endif /* __cplusplus */ + +#ifndef FIXEDFANN +FANN_EXTERNAL float FANN_API fann_train_epoch_batch_parallel(struct fann *ann, + struct fann_train_data *data, + const unsigned int threadnumb); + +FANN_EXTERNAL float FANN_API fann_train_epoch_irpropm_parallel(struct fann *ann, + struct fann_train_data *data, + const unsigned int threadnumb); + +FANN_EXTERNAL float FANN_API fann_train_epoch_quickprop_parallel(struct fann *ann, + struct fann_train_data *data, + const unsigned int threadnumb); + +FANN_EXTERNAL float FANN_API fann_train_epoch_sarprop_parallel(struct fann *ann, + struct fann_train_data *data, + const unsigned int threadnumb); + +FANN_EXTERNAL float FANN_API fann_train_epoch_incremental_mod(struct fann *ann, + struct fann_train_data *data); + +FANN_EXTERNAL float FANN_API fann_test_data_parallel(struct fann *ann, struct fann_train_data *data, + const unsigned int threadnumb); +#endif /* FIXEDFANN */ + +#ifdef __cplusplus +#ifndef __cplusplus +/* to fool automatic indention engines */ +{ +#endif +} +#endif /* __cplusplus */ + +#endif /* PARALLEL_FANN_H_ */ +#endif /* DISABLE_PARALLEL_FANN */ diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/parallel_fann.hpp b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/parallel_fann.hpp new file mode 100644 index 0000000..ff5ee6d --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/include/parallel_fann.hpp @@ -0,0 +1,55 @@ +/* + * parallel_FANN.hpp + * Author: Alessandro Pietro Bardelli + */ +#ifndef DISABLE_PARALLEL_FANN +#ifndef PARALLEL_FANN_HPP_ +#define PARALLEL_FANN_HPP_ +#include +#include +#include "fann.h" + +#ifndef FIXEDFANN +namespace parallel_fann { +float train_epoch_batch_parallel(struct fann *ann, struct fann_train_data *data, + const unsigned int threadnumb); + +float train_epoch_irpropm_parallel(struct fann *ann, struct fann_train_data *data, + const unsigned int threadnumb); + +float train_epoch_quickprop_parallel(struct fann *ann, struct fann_train_data *data, + const unsigned int threadnumb); + +float train_epoch_sarprop_parallel(struct fann *ann, struct fann_train_data *data, + const unsigned int threadnumb); + +float train_epoch_incremental_mod(struct fann *ann, struct fann_train_data *data); + +float train_epoch_batch_parallel(struct fann *ann, struct fann_train_data *data, + const unsigned int threadnumb, + std::vector > &predicted_outputs); + +float train_epoch_irpropm_parallel(struct fann *ann, struct fann_train_data *data, + const unsigned int threadnumb, + std::vector > &predicted_outputs); + +float train_epoch_quickprop_parallel(struct fann *ann, struct fann_train_data *data, + const unsigned int threadnumb, + std::vector > &predicted_outputs); + +float train_epoch_sarprop_parallel(struct fann *ann, struct fann_train_data *data, + const unsigned int threadnumb, + std::vector > &predicted_outputs); + +float train_epoch_incremental_mod(struct fann *ann, struct fann_train_data *data, + std::vector > &predicted_outputs); + +float test_data_parallel(struct fann *ann, struct fann_train_data *data, + const unsigned int threadnumb); +float test_data_parallel(struct fann *ann, struct fann_train_data *data, + const unsigned int threadnumb, + std::vector > &predicted_outputs); +} // namespace parallel_fann +#endif /* FIXEDFANN */ +#endif /* PARALLEL_FANN_HPP_ */ +#endif /* DISABLE_PARALLEL_FANN */ diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/lib/pkgconfig/fann.pc b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/lib/pkgconfig/fann.pc new file mode 100644 index 0000000..9d80ccb --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/lib/pkgconfig/fann.pc @@ -0,0 +1,11 @@ +prefix=${pcfiledir}/../.. +exec_prefix=${prefix}/bin +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: fann +Description: Fast Artificial Neural Network Library +Version: +Libs: "-L${libdir}" -lm -lfann +Cflags: "-I${includedir}" + diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/copyright b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/copyright new file mode 100644 index 0000000..b1e3f5a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/copyright @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/fann-config.cmake b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/fann-config.cmake new file mode 100644 index 0000000..97d27c2 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/fann-config.cmake @@ -0,0 +1,53 @@ +get_filename_component(VCPKG_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) +# -*- cmake -*- +# +# fann-config.cmake(.in) +# + +# Use the following variables to compile and link against FANN: +# FANN_FOUND - True if FANN was found on your system +# FANN_USE_FILE - The file making FANN usable +# FANN_DEFINITIONS - Definitions needed to build with FANN +# FANN_INCLUDE_DIR - Directory where fann.h can be found +# FANN_INCLUDE_DIRS - List of directories of FANN and it's dependencies +# FANN_LIBRARY - FANN library location +# FANN_LIBRARIES - List of libraries to link against FANN library +# FANN_LIBRARY_DIRS - List of directories containing FANN' libraries +# FANN_ROOT_DIR - The base directory of FANN +# FANN_VERSION_STRING - A human-readable string containing the version +# FANN_VERSION_MAJOR - The major version of FANN +# FANN_VERSION_MINOR - The minor version of FANN +# FANN_VERSION_PATCH - The patch version of FANN + + +####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() ####### +####### Any changes to this file will be overwritten by the next CMake run #### +####### The input file was fann-config.cmake.in ######## + +get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) + +macro(set_and_check _var _file) + set(${_var} "${_file}") + if(NOT EXISTS "${_file}") + message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !") + endif() +endmacro() + +#################################################################################### + +set ( FANN_FOUND 1 ) +set ( FANN_USE_FILE "${VCPKG_IMPORT_PREFIX}/lib/cmake/fann/fann-use.cmake" ) + +set ( FANN_DEFINITIONS "" ) +set ( FANN_INCLUDE_DIR "${VCPKG_IMPORT_PREFIX}/include" ) +set ( FANN_INCLUDE_DIRS "${VCPKG_IMPORT_PREFIX}/include" ) +set ( FANN_LIBRARY "fann" ) +set ( FANN_LIBRARIES "fann" ) +set ( FANN_LIBRARY_DIRS "${VCPKG_IMPORT_PREFIX}/lib" ) +set ( FANN_ROOT_DIR "${VCPKG_IMPORT_PREFIX}" ) + +set ( FANN_VERSION_STRING "2.2.0" ) +set ( FANN_VERSION_MAJOR "2" ) +set ( FANN_VERSION_MINOR "2" ) +set ( FANN_VERSION_PATCH "0" ) + diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/fann-use.cmake b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/fann-use.cmake new file mode 100644 index 0000000..7f04255 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/fann-use.cmake @@ -0,0 +1,9 @@ +# -*- cmake -*- +# +# fann-use.cmake +# + +add_definitions ( ${FANN_DEFINITIONS} ) +include_directories ( ${FANN_INCLUDE_DIRS} ) +link_directories ( ${FANN_LIBRARY_DIRS} ) + diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/vcpkg.spdx.json b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/vcpkg.spdx.json new file mode 100644 index 0000000..66604e0 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/vcpkg.spdx.json @@ -0,0 +1,198 @@ +{ + "$schema": "https://raw.githubusercontent.com/spdx/spdx-spec/v2.2.1/schemas/spdx-schema.json", + "spdxVersion": "SPDX-2.2", + "dataLicense": "CC0-1.0", + "SPDXID": "SPDXRef-DOCUMENT", + "documentNamespace": "https://spdx.org/spdxdocs/fann-x64-windows-2023-01-26-ce8397b7-6f7b-4dbc-b19b-e00cdba7c913", + "name": "fann:x64-windows@2023-01-26 ec3e8660f6be2382038aa9415c905fcbf1fe448b16400cd48d2ff4d126526ba5", + "creationInfo": { + "creators": [ + "Tool: vcpkg-8a83681f921b10d86ae626fd833c253f4f8c355b" + ], + "created": "2024-03-10T08:55:29Z" + }, + "relationships": [ + { + "spdxElementId": "SPDXRef-port", + "relationshipType": "GENERATES", + "relatedSpdxElement": "SPDXRef-binary" + }, + { + "spdxElementId": "SPDXRef-port", + "relationshipType": "CONTAINS", + "relatedSpdxElement": "SPDXRef-file-0" + }, + { + "spdxElementId": "SPDXRef-port", + "relationshipType": "CONTAINS", + "relatedSpdxElement": "SPDXRef-file-1" + }, + { + "spdxElementId": "SPDXRef-port", + "relationshipType": "CONTAINS", + "relatedSpdxElement": "SPDXRef-file-2" + }, + { + "spdxElementId": "SPDXRef-port", + "relationshipType": "CONTAINS", + "relatedSpdxElement": "SPDXRef-file-3" + }, + { + "spdxElementId": "SPDXRef-port", + "relationshipType": "CONTAINS", + "relatedSpdxElement": "SPDXRef-file-4" + }, + { + "spdxElementId": "SPDXRef-port", + "relationshipType": "CONTAINS", + "relatedSpdxElement": "SPDXRef-file-5" + }, + { + "spdxElementId": "SPDXRef-binary", + "relationshipType": "GENERATED_FROM", + "relatedSpdxElement": "SPDXRef-port" + }, + { + "spdxElementId": "SPDXRef-file-0", + "relationshipType": "CONTAINED_BY", + "relatedSpdxElement": "SPDXRef-port" + }, + { + "spdxElementId": "SPDXRef-file-1", + "relationshipType": "CONTAINED_BY", + "relatedSpdxElement": "SPDXRef-port" + }, + { + "spdxElementId": "SPDXRef-file-2", + "relationshipType": "CONTAINED_BY", + "relatedSpdxElement": "SPDXRef-port" + }, + { + "spdxElementId": "SPDXRef-file-3", + "relationshipType": "CONTAINED_BY", + "relatedSpdxElement": "SPDXRef-port" + }, + { + "spdxElementId": "SPDXRef-file-4", + "relationshipType": "CONTAINED_BY", + "relatedSpdxElement": "SPDXRef-port" + }, + { + "spdxElementId": "SPDXRef-file-5", + "relationshipType": "CONTAINED_BY", + "relatedSpdxElement": "SPDXRef-port" + } + ], + "packages": [ + { + "name": "fann", + "SPDXID": "SPDXRef-port", + "versionInfo": "2023-01-26", + "downloadLocation": "git+https://github.com/Microsoft/vcpkg#ports/fann", + "homepage": "https://github.com/libfann/fann", + "licenseConcluded": "LGPL-2.1-only", + "licenseDeclared": "NOASSERTION", + "copyrightText": "NOASSERTION", + "description": "Fast Artificial Neural Network (FANN) Library is a free open source neural network library, which implements multilayer artificial neural networks in C with support for both fully connected and sparsely connected networks.", + "comment": "This is the port (recipe) consumed by vcpkg." + }, + { + "name": "fann:x64-windows", + "SPDXID": "SPDXRef-binary", + "versionInfo": "ec3e8660f6be2382038aa9415c905fcbf1fe448b16400cd48d2ff4d126526ba5", + "downloadLocation": "NONE", + "licenseConcluded": "LGPL-2.1-only", + "licenseDeclared": "NOASSERTION", + "copyrightText": "NOASSERTION", + "comment": "This is a binary package built by vcpkg." + }, + { + "SPDXID": "SPDXRef-resource-1", + "name": "libfann/fann", + "downloadLocation": "git+https://github.com/libfann/fann@8409b42d308bf9428b9d3e60927595e53a797bbc", + "licenseConcluded": "NOASSERTION", + "licenseDeclared": "NOASSERTION", + "copyrightText": "NOASSERTION", + "checksums": [ + { + "algorithm": "SHA512", + "checksumValue": "4ad66808d7c88911d4c6d63368240ece2d0cbc73d89a95d32261b95dc551c47c46b3a34cc81b8cb0e03fe3f9ea61cb304e028780357bcf332d660824b066fd1e" + } + ] + } + ], + "files": [ + { + "fileName": "./F:/vandomej/Downloads/vcpkg/ports/fann/fix-build_type.patch", + "SPDXID": "SPDXRef-file-0", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "24b138e38b90893e2e69830aa3fb9abce52c9edfbd8a8e5f3d1022e44ad28888" + } + ], + "licenseConcluded": "NOASSERTION", + "copyrightText": "NOASSERTION" + }, + { + "fileName": "./F:/vandomej/Downloads/vcpkg/ports/fann/fix-installation.patch", + "SPDXID": "SPDXRef-file-1", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "cf8fb095fe040aaba230bc20ca45918808104a1d264a7e619993c5bd16795722" + } + ], + "licenseConcluded": "NOASSERTION", + "copyrightText": "NOASSERTION" + }, + { + "fileName": "./F:/vandomej/Downloads/vcpkg/ports/fann/fix-uwp-build.patch", + "SPDXID": "SPDXRef-file-2", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "6fd094c7eab67fd8cc8b2832a0f78231b0df8f55c1af705b48f2148f1241497b" + } + ], + "licenseConcluded": "NOASSERTION", + "copyrightText": "NOASSERTION" + }, + { + "fileName": "./F:/vandomej/Downloads/vcpkg/ports/fann/portfile.cmake", + "SPDXID": "SPDXRef-file-3", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "fcf360a46b2d257f7d7de63f6a04f04fe9511cd55611cb22e6a96d11628605d6" + } + ], + "licenseConcluded": "NOASSERTION", + "copyrightText": "NOASSERTION" + }, + { + "fileName": "./F:/vandomej/Downloads/vcpkg/ports/fann/remove-nouse-target.patch", + "SPDXID": "SPDXRef-file-4", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "1e337a505a1c74f5d35d28296d8e1fa04d4acfe49e9b73e27edfc237d553496f" + } + ], + "licenseConcluded": "NOASSERTION", + "copyrightText": "NOASSERTION" + }, + { + "fileName": "./F:/vandomej/Downloads/vcpkg/ports/fann/vcpkg.json", + "SPDXID": "SPDXRef-file-5", + "checksums": [ + { + "algorithm": "SHA256", + "checksumValue": "62e752bacc2f5fd3b0bf3f9d58dc4d0d1606ce5456a0e1244bf3c09dbe490fbe" + } + ], + "licenseConcluded": "NOASSERTION", + "copyrightText": "NOASSERTION" + } + ] +} diff --git a/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/vcpkg_abi_info.txt b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/vcpkg_abi_info.txt new file mode 100644 index 0000000..d969670 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Plugins/NeuralNetworkAIController/Source/NeuralNetworkAIController/ThirdParty/FANN/share/fann/vcpkg_abi_info.txt @@ -0,0 +1,20 @@ +cmake 3.27.1 +features core +fix-build_type.patch 24b138e38b90893e2e69830aa3fb9abce52c9edfbd8a8e5f3d1022e44ad28888 +fix-installation.patch cf8fb095fe040aaba230bc20ca45918808104a1d264a7e619993c5bd16795722 +fix-uwp-build.patch 6fd094c7eab67fd8cc8b2832a0f78231b0df8f55c1af705b48f2148f1241497b +portfile.cmake fcf360a46b2d257f7d7de63f6a04f04fe9511cd55611cb22e6a96d11628605d6 +ports.cmake 0500e9e2422fe0084c99bdd0c9de4c7069b76da14c8b58228a7e95ebac43058a +post_build_checks 2 +powershell 7.2.16 +remove-nouse-target.patch 1e337a505a1c74f5d35d28296d8e1fa04d4acfe49e9b73e27edfc237d553496f +triplet x64-windows +triplet_abi 4556164a2cd3dd6f4742101eabb46def7e71b6e5856faa88e5d005aac12a803c-e36df1c7f50ab25f9c182fa927d06c19ae082e0d599f132b3f655784b49e4b33-37ddf335dc10d14fa90c13a22cc1ec1cdbd1efcd +vcpkg-cmake 60e25dfd2d1ab5afe209de30eee1a8a9428fc7faa4dfb087874027758bfd9348 +vcpkg-cmake-config 22296a1b86e887eb28cbf7acb600c3e0cdf98358cb8b61f48bcb79d78e7534df +vcpkg.json 62e752bacc2f5fd3b0bf3f9d58dc4d0d1606ce5456a0e1244bf3c09dbe490fbe +vcpkg_copy_pdbs d57e4f196c82dc562a9968c6155073094513c31e2de475694143d3aa47954b1c +vcpkg_fixup_pkgconfig 904e67c46ecbb67379911bc1d7222855c0cbfcf1129bf47783858bcf0cc44970 +vcpkg_from_git 96ed81968f76354c00096dd8cd4e63c6a235fa969334a11ab18d11c0c512ff58 +vcpkg_from_github b743742296a114ea1b18ae99672e02f142c4eb2bef7f57d36c038bedbfb0502f +vcpkg_install_copyright ba6c169ab4e59fa05682e530cdeb883767de22c8391f023d4e6844a7ec5dd3d2 diff --git a/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim.Target.cs b/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim.Target.cs new file mode 100644 index 0000000..d0f5e77 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim.Target.cs @@ -0,0 +1,15 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +using UnrealBuildTool; +using System.Collections.Generic; + +public class AI_Fight_SimTarget : TargetRules +{ + public AI_Fight_SimTarget(TargetInfo Target) : base(Target) + { + Type = TargetType.Game; + DefaultBuildSettings = BuildSettingsVersion.V2; + + ExtraModuleNames.AddRange( new string[] { "AI_Fight_Sim" } ); + } +} diff --git a/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/AI_Fight_Sim.Build.cs b/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/AI_Fight_Sim.Build.cs new file mode 100644 index 0000000..291c928 --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/AI_Fight_Sim.Build.cs @@ -0,0 +1,23 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +using UnrealBuildTool; + +public class AI_Fight_Sim : ModuleRules +{ + public AI_Fight_Sim(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; + + PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" }); + + PrivateDependencyModuleNames.AddRange(new string[] { }); + + // Uncomment if you are using Slate UI + // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); + + // Uncomment if you are using online features + // PrivateDependencyModuleNames.Add("OnlineSubsystem"); + + // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true + } +} diff --git a/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/AI_Fight_Sim.cpp b/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/AI_Fight_Sim.cpp new file mode 100644 index 0000000..91413da --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/AI_Fight_Sim.cpp @@ -0,0 +1,6 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#include "AI_Fight_Sim.h" +#include "Modules/ModuleManager.h" + +IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, AI_Fight_Sim, "AI_Fight_Sim" ); diff --git a/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/AI_Fight_Sim.h b/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/AI_Fight_Sim.h new file mode 100644 index 0000000..90aad9e --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/AI_Fight_Sim.h @@ -0,0 +1,6 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" + diff --git a/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/Private/NeuralNetworkCommandLineParsing.cpp b/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/Private/NeuralNetworkCommandLineParsing.cpp new file mode 100644 index 0000000..5439f2b --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/Private/NeuralNetworkCommandLineParsing.cpp @@ -0,0 +1,36 @@ +#include "NeuralNetworkCommandLineParsing.h" + +void UNeuralNetworkCommandLineParsing::Init() +{ + Super::Init(); // Call the base class's Init function + + // Initialize ConfigFilePath to an empty string to ensure it has a default value + NeuralNetwork1ConfigPath = TEXT(""); + NeuralNetwork2ConfigPath = TEXT(""); + + // Temporary variable to hold the command line argument value + FString CommandLineConfigPath; + // Check for a "-NNConfig=" argument in the command line + if (FParse::Value(FCommandLine::Get(), TEXT("-NN1Config="), CommandLineConfigPath)) + { + // If found, assign the command line argument to the class variable + NeuralNetwork1ConfigPath = CommandLineConfigPath; + } + + // Check for a "-NNConfig=" argument in the command line + if (FParse::Value(FCommandLine::Get(), TEXT("-NN2Config="), CommandLineConfigPath)) + { + // If found, assign the command line argument to the class variable + NeuralNetwork2ConfigPath = CommandLineConfigPath; + } + + // Optional: Log the config file path for debugging purposes + UE_LOG(LogTemp, Warning, TEXT("Neural Network 1 Config File Path: %s"), *NeuralNetwork1ConfigPath); + UE_LOG(LogTemp, Warning, TEXT("Neural Network 2 Config File Path: %s"), *NeuralNetwork2ConfigPath); +} + +// Implementation of WriteStringToFile +bool UNeuralNetworkCommandLineParsing::WriteStringToFile(const FString& FilePath, const FString& Data) +{ + return FFileHelper::SaveStringToFile(Data, *FilePath); +} diff --git a/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/Public/NeuralNetworkCommandLineParsing.h b/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/Public/NeuralNetworkCommandLineParsing.h new file mode 100644 index 0000000..c7fa58c --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Source/AI_Fight_Sim/Public/NeuralNetworkCommandLineParsing.h @@ -0,0 +1,27 @@ +#include "CoreMinimal.h" +#include "Engine/GameInstance.h" +#include "Misc/FileHelper.h" +#include "HAL/PlatformFilemanager.h" +#include "NeuralNetworkCommandLineParsing.generated.h" + +UCLASS() +class AI_FIGHT_SIM_API UNeuralNetworkCommandLineParsing : public UGameInstance +{ + GENERATED_BODY() + +public: + // Override the Init function + virtual void Init() override; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Neural Network") + FString NeuralNetwork1ConfigPath; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Neural Network") + FString NeuralNetwork2ConfigPath; + + // Function to write a string to a file + UFUNCTION(BlueprintCallable, Category = "File Operations") + bool WriteStringToFile(const FString& FilePath, const FString& Data); +}; + + diff --git a/ai_fighter/AI_Fight_Sim/Source/AI_Fight_SimEditor.Target.cs b/ai_fighter/AI_Fight_Sim/Source/AI_Fight_SimEditor.Target.cs new file mode 100644 index 0000000..c2c0e4a --- /dev/null +++ b/ai_fighter/AI_Fight_Sim/Source/AI_Fight_SimEditor.Target.cs @@ -0,0 +1,15 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +using UnrealBuildTool; +using System.Collections.Generic; + +public class AI_Fight_SimEditorTarget : TargetRules +{ + public AI_Fight_SimEditorTarget(TargetInfo Target) : base(Target) + { + Type = TargetType.Editor; + DefaultBuildSettings = BuildSettingsVersion.V2; + + ExtraModuleNames.AddRange( new string[] { "AI_Fight_Sim" } ); + } +}