From 11170f08814e04760075d0e8217a22bac706f81f Mon Sep 17 00:00:00 2001
From: MuhamadAjiW <16521119@mahasiswa.itb.ac.id>
Date: Mon, 22 Apr 2024 22:55:33 +0700
Subject: [PATCH] refactor: weapon and projectile data

---
 Assets/Data.meta                              |   8 +
 Assets/Data/Weapon Data.meta                  |   8 +
 Assets/Data/Weapon Data/TestWeapon.meta       |   8 +
 .../TestWeapon/TestWeaponData.asset           |  19 +++
 .../TestWeapon/TestWeaponData.asset.meta      |   8 +
 .../TestWeapon/TestWeaponProjectileData.asset |  18 +++
 .../TestWeaponProjectileData.asset.meta       |   8 +
 Assets/{ => Resources}/Models.meta            |   0
 Assets/{ => Resources}/Models/Characters.meta |   0
 .../Models/Characters/Basic.meta              |   0
 .../Models/Characters/Basic/Animations.meta   |   0
 .../Animations/BasicCharAnim.controller}      |   2 +-
 .../Animations/BasicCharAnim.controller.meta} |   0
 .../Characters/Basic/BasicCharModel.prefab}   |   2 +-
 .../Basic/BasicCharModel.prefab.meta}         |   0
 .../Models/Characters/Basic2.meta             |   0
 .../Characters/Basic2/BasicChar2Model.prefab} |   2 +-
 .../Basic2/BasicChar2Model.prefab.meta}       |   0
 .../Models/Characters/Jean.meta               |   0
 .../Models/Characters/Jean/Animations.meta    |   0
 .../Jean/Animations/jean.controller           |   0
 .../Jean/Animations/jean.controller.meta      |   0
 ...\343\203\263_arm_Idle_breathing_bone.anim" |   0
 ...203\263_arm_Idle_breathing_bone.anim.meta" |   0
 ...0\343\203\263_arm_catwalk_fixed_bone.anim" |   0
 ...\203\263_arm_catwalk_fixed_bone.anim.meta" |   0
 .../Models/Characters/Jean/Materials.meta     |   0
 .../Materials/\345\244\264\345\217\221.mat"   |   0
 .../\345\244\264\345\217\221.mat.meta"        |   0
 .../Materials/\346\212\253\350\202\251.mat"   |   0
 .../\346\212\253\350\202\251.mat.meta"        |   0
 .../Materials/\347\232\256\350\202\244.mat"   |   0
 .../\347\232\256\350\202\244.mat.meta"        |   0
 .../Materials/\347\234\274\347\231\275.mat"   |   0
 .../\347\234\274\347\231\275.mat.meta"        |   0
 .../Materials/\347\234\274\347\235\233.mat"   |   0
 .../\347\234\274\347\235\233.mat.meta"        |   0
 .../Jean/Materials/\350\204\270.mat"          |   0
 .../Jean/Materials/\350\204\270.mat.meta"     |   0
 .../Materials/\350\205\260\345\270\246.mat"   |   0
 .../\350\205\260\345\270\246.mat.meta"        |   0
 .../Materials/\350\241\243\346\234\215.mat"   |   0
 .../\350\241\243\346\234\215.mat.meta"        |   0
 .../Materials/\350\241\250\346\203\205.mat"   |   0
 .../\350\241\250\346\203\205.mat.meta"        |   0
 .../Materials/\350\243\244\345\255\220.mat"   |   0
 .../\350\243\244\345\255\220.mat.meta"        |   0
 .../Models/Characters/Jean/Textures.meta      |   0
 .../Characters/Jean/Textures/krita.meta       |   0
 .../Jean/Textures/krita/\346\234\215n.kra"    | Bin
 .../Textures/krita/\346\234\215n.kra.meta"    |   0
 .../Jean/Textures/krita/\351\241\224n.kra"    | Bin
 .../Textures/krita/\351\241\224n.kra.meta"    |   0
 .../Jean/Textures/krita/\351\253\252.kra"     | Bin
 .../Textures/krita/\351\253\252.kra.meta"     |   0
 .../Models/Characters/Jean/Textures/mc3.png   | Bin
 .../Characters/Jean/Textures/mc3.png.meta     |   0
 .../Models/Characters/Jean/Textures/toon.png  | Bin
 .../Characters/Jean/Textures/toon.png.meta    |   0
 .../Jean/Textures/\346\234\215.jpg"           | Bin
 .../Jean/Textures/\346\234\215.jpg.meta"      |   0
 .../Textures/\350\241\250\346\203\205.png"    | Bin
 .../\350\241\250\346\203\205.png.meta"        |   0
 .../Jean/Textures/\351\241\224.jpg"           | Bin
 .../Jean/Textures/\351\241\224.jpg.meta"      |   0
 .../Jean/Textures/\351\241\224n.jpg~"         | Bin
 .../Jean/Textures/\351\253\252.jpg"           | Bin
 .../Jean/Textures/\351\253\252.jpg.meta"      |   0
 .../Models/Characters/Jean/jean.fbx           | Bin
 .../Models/Characters/Jean/jean.fbx.meta      |   0
 .../{ => Resources}/Models/Collectibles.meta  |   0
 .../Models/Collectibles/TestCollectible.meta  |   0
 .../TestCollectibleModel.prefab}              |   2 +-
 .../TestCollectibleModel.prefab.meta}         |   0
 .../{ => Resources}/Models/Environment.meta   |   0
 .../Models/Environment/TestInteractable.meta  |   0
 .../TestInteractableModel.prefab}             |   2 +-
 .../TestInteractableModel.prefab.meta}        |   0
 Assets/{ => Resources}/Models/Weapons.meta    |   0
 .../Models/Weapons/TestWeapon.meta            |   0
 .../Models/Weapons/TestWeapon/Animations.meta |   0
 .../Animations/TestWeaponAnimator.controller  |   0
 .../TestWeaponAnimator.controller.meta        |   0
 .../Animations/TestWeaponAttack.anim          |   0
 .../Animations/TestWeaponAttack.anim.meta     |   0
 .../TestWeapon/Animations/TestWeaponIdle.anim |   0
 .../Animations/TestWeaponIdle.anim.meta       |   0
 .../TestWeapon/TestWeaponModel.prefab}        |   2 +-
 .../TestWeapon/TestWeaponModel.prefab.meta}   |   0
 .../TestWeaponProjectileModel.prefab          |  85 ++++++++++
 .../TestWeaponProjectileModel.prefab.meta     |   7 +
 .../Weapons/TestWeapon/TestProjectile.prefab  | 149 ++++++++----------
 .../Weapons/TestWeapon/TestWeapon.prefab      |   5 +-
 .../Core/Objects/Weapons/ProjectileData.cs    |  11 ++
 .../Objects/Weapons/ProjectileData.cs.meta    |  11 ++
 .../Core/Objects/Weapons/ProjectileObject.cs  |  10 +-
 .../Objects/Weapons/TestWeapon/TestWeapon.cs  |  12 +-
 .../Core/Objects/Weapons/WeaponData.cs        |  12 ++
 .../Core/Objects/Weapons/WeaponData.cs.meta   |  11 ++
 .../Core/Objects/Weapons/WeaponObject.cs      |   9 +-
 Assets/Scripts/Core/Player/Player.cs          |   7 +-
 .../EntityObject/CombatantEntity.cs           |  16 +-
 102 files changed, 313 insertions(+), 121 deletions(-)
 create mode 100644 Assets/Data.meta
 create mode 100644 Assets/Data/Weapon Data.meta
 create mode 100644 Assets/Data/Weapon Data/TestWeapon.meta
 create mode 100644 Assets/Data/Weapon Data/TestWeapon/TestWeaponData.asset
 create mode 100644 Assets/Data/Weapon Data/TestWeapon/TestWeaponData.asset.meta
 create mode 100644 Assets/Data/Weapon Data/TestWeapon/TestWeaponProjectileData.asset
 create mode 100644 Assets/Data/Weapon Data/TestWeapon/TestWeaponProjectileData.asset.meta
 rename Assets/{ => Resources}/Models.meta (100%)
 rename Assets/{ => Resources}/Models/Characters.meta (100%)
 rename Assets/{ => Resources}/Models/Characters/Basic.meta (100%)
 rename Assets/{ => Resources}/Models/Characters/Basic/Animations.meta (100%)
 rename Assets/{Models/Characters/Basic/Animations/Basic.controller => Resources/Models/Characters/Basic/Animations/BasicCharAnim.controller} (99%)
 rename Assets/{Models/Characters/Basic/Animations/Basic.controller.meta => Resources/Models/Characters/Basic/Animations/BasicCharAnim.controller.meta} (100%)
 rename Assets/{Models/Characters/Basic/Model.prefab => Resources/Models/Characters/Basic/BasicCharModel.prefab} (99%)
 rename Assets/{Models/Characters/Basic/Model.prefab.meta => Resources/Models/Characters/Basic/BasicCharModel.prefab.meta} (100%)
 rename Assets/{ => Resources}/Models/Characters/Basic2.meta (100%)
 rename Assets/{Models/Characters/Basic2/Model.prefab => Resources/Models/Characters/Basic2/BasicChar2Model.prefab} (99%)
 rename Assets/{Models/Characters/Basic2/Model.prefab.meta => Resources/Models/Characters/Basic2/BasicChar2Model.prefab.meta} (100%)
 rename Assets/{ => Resources}/Models/Characters/Jean.meta (100%)
 rename Assets/{ => Resources}/Models/Characters/Jean/Animations.meta (100%)
 rename Assets/{ => Resources}/Models/Characters/Jean/Animations/jean.controller (100%)
 rename Assets/{ => Resources}/Models/Characters/Jean/Animations/jean.controller.meta (100%)
 rename "Assets/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_Idle_breathing_bone.anim" => "Assets/Resources/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_Idle_breathing_bone.anim" (100%)
 rename "Assets/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_Idle_breathing_bone.anim.meta" => "Assets/Resources/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_Idle_breathing_bone.anim.meta" (100%)
 rename "Assets/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_catwalk_fixed_bone.anim" => "Assets/Resources/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_catwalk_fixed_bone.anim" (100%)
 rename "Assets/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_catwalk_fixed_bone.anim.meta" => "Assets/Resources/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_catwalk_fixed_bone.anim.meta" (100%)
 rename Assets/{ => Resources}/Models/Characters/Jean/Materials.meta (100%)
 rename "Assets/Models/Characters/Jean/Materials/\345\244\264\345\217\221.mat" => "Assets/Resources/Models/Characters/Jean/Materials/\345\244\264\345\217\221.mat" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\345\244\264\345\217\221.mat.meta" => "Assets/Resources/Models/Characters/Jean/Materials/\345\244\264\345\217\221.mat.meta" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\346\212\253\350\202\251.mat" => "Assets/Resources/Models/Characters/Jean/Materials/\346\212\253\350\202\251.mat" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\346\212\253\350\202\251.mat.meta" => "Assets/Resources/Models/Characters/Jean/Materials/\346\212\253\350\202\251.mat.meta" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\347\232\256\350\202\244.mat" => "Assets/Resources/Models/Characters/Jean/Materials/\347\232\256\350\202\244.mat" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\347\232\256\350\202\244.mat.meta" => "Assets/Resources/Models/Characters/Jean/Materials/\347\232\256\350\202\244.mat.meta" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\347\234\274\347\231\275.mat" => "Assets/Resources/Models/Characters/Jean/Materials/\347\234\274\347\231\275.mat" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\347\234\274\347\231\275.mat.meta" => "Assets/Resources/Models/Characters/Jean/Materials/\347\234\274\347\231\275.mat.meta" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\347\234\274\347\235\233.mat" => "Assets/Resources/Models/Characters/Jean/Materials/\347\234\274\347\235\233.mat" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\347\234\274\347\235\233.mat.meta" => "Assets/Resources/Models/Characters/Jean/Materials/\347\234\274\347\235\233.mat.meta" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\350\204\270.mat" => "Assets/Resources/Models/Characters/Jean/Materials/\350\204\270.mat" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\350\204\270.mat.meta" => "Assets/Resources/Models/Characters/Jean/Materials/\350\204\270.mat.meta" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\350\205\260\345\270\246.mat" => "Assets/Resources/Models/Characters/Jean/Materials/\350\205\260\345\270\246.mat" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\350\205\260\345\270\246.mat.meta" => "Assets/Resources/Models/Characters/Jean/Materials/\350\205\260\345\270\246.mat.meta" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\350\241\243\346\234\215.mat" => "Assets/Resources/Models/Characters/Jean/Materials/\350\241\243\346\234\215.mat" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\350\241\243\346\234\215.mat.meta" => "Assets/Resources/Models/Characters/Jean/Materials/\350\241\243\346\234\215.mat.meta" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\350\241\250\346\203\205.mat" => "Assets/Resources/Models/Characters/Jean/Materials/\350\241\250\346\203\205.mat" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\350\241\250\346\203\205.mat.meta" => "Assets/Resources/Models/Characters/Jean/Materials/\350\241\250\346\203\205.mat.meta" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\350\243\244\345\255\220.mat" => "Assets/Resources/Models/Characters/Jean/Materials/\350\243\244\345\255\220.mat" (100%)
 rename "Assets/Models/Characters/Jean/Materials/\350\243\244\345\255\220.mat.meta" => "Assets/Resources/Models/Characters/Jean/Materials/\350\243\244\345\255\220.mat.meta" (100%)
 rename Assets/{ => Resources}/Models/Characters/Jean/Textures.meta (100%)
 rename Assets/{ => Resources}/Models/Characters/Jean/Textures/krita.meta (100%)
 rename "Assets/Models/Characters/Jean/Textures/krita/\346\234\215n.kra" => "Assets/Resources/Models/Characters/Jean/Textures/krita/\346\234\215n.kra" (100%)
 rename "Assets/Models/Characters/Jean/Textures/krita/\346\234\215n.kra.meta" => "Assets/Resources/Models/Characters/Jean/Textures/krita/\346\234\215n.kra.meta" (100%)
 rename "Assets/Models/Characters/Jean/Textures/krita/\351\241\224n.kra" => "Assets/Resources/Models/Characters/Jean/Textures/krita/\351\241\224n.kra" (100%)
 rename "Assets/Models/Characters/Jean/Textures/krita/\351\241\224n.kra.meta" => "Assets/Resources/Models/Characters/Jean/Textures/krita/\351\241\224n.kra.meta" (100%)
 rename "Assets/Models/Characters/Jean/Textures/krita/\351\253\252.kra" => "Assets/Resources/Models/Characters/Jean/Textures/krita/\351\253\252.kra" (100%)
 rename "Assets/Models/Characters/Jean/Textures/krita/\351\253\252.kra.meta" => "Assets/Resources/Models/Characters/Jean/Textures/krita/\351\253\252.kra.meta" (100%)
 rename Assets/{ => Resources}/Models/Characters/Jean/Textures/mc3.png (100%)
 rename Assets/{ => Resources}/Models/Characters/Jean/Textures/mc3.png.meta (100%)
 rename Assets/{ => Resources}/Models/Characters/Jean/Textures/toon.png (100%)
 rename Assets/{ => Resources}/Models/Characters/Jean/Textures/toon.png.meta (100%)
 rename "Assets/Models/Characters/Jean/Textures/\346\234\215.jpg" => "Assets/Resources/Models/Characters/Jean/Textures/\346\234\215.jpg" (100%)
 rename "Assets/Models/Characters/Jean/Textures/\346\234\215.jpg.meta" => "Assets/Resources/Models/Characters/Jean/Textures/\346\234\215.jpg.meta" (100%)
 rename "Assets/Models/Characters/Jean/Textures/\350\241\250\346\203\205.png" => "Assets/Resources/Models/Characters/Jean/Textures/\350\241\250\346\203\205.png" (100%)
 rename "Assets/Models/Characters/Jean/Textures/\350\241\250\346\203\205.png.meta" => "Assets/Resources/Models/Characters/Jean/Textures/\350\241\250\346\203\205.png.meta" (100%)
 rename "Assets/Models/Characters/Jean/Textures/\351\241\224.jpg" => "Assets/Resources/Models/Characters/Jean/Textures/\351\241\224.jpg" (100%)
 rename "Assets/Models/Characters/Jean/Textures/\351\241\224.jpg.meta" => "Assets/Resources/Models/Characters/Jean/Textures/\351\241\224.jpg.meta" (100%)
 rename "Assets/Models/Characters/Jean/Textures/\351\241\224n.jpg~" => "Assets/Resources/Models/Characters/Jean/Textures/\351\241\224n.jpg~" (100%)
 rename "Assets/Models/Characters/Jean/Textures/\351\253\252.jpg" => "Assets/Resources/Models/Characters/Jean/Textures/\351\253\252.jpg" (100%)
 rename "Assets/Models/Characters/Jean/Textures/\351\253\252.jpg.meta" => "Assets/Resources/Models/Characters/Jean/Textures/\351\253\252.jpg.meta" (100%)
 rename Assets/{ => Resources}/Models/Characters/Jean/jean.fbx (100%)
 rename Assets/{ => Resources}/Models/Characters/Jean/jean.fbx.meta (100%)
 rename Assets/{ => Resources}/Models/Collectibles.meta (100%)
 rename Assets/{ => Resources}/Models/Collectibles/TestCollectible.meta (100%)
 rename Assets/{Models/Collectibles/TestCollectible/Model.prefab => Resources/Models/Collectibles/TestCollectible/TestCollectibleModel.prefab} (98%)
 rename Assets/{Models/Collectibles/TestCollectible/Model.prefab.meta => Resources/Models/Collectibles/TestCollectible/TestCollectibleModel.prefab.meta} (100%)
 rename Assets/{ => Resources}/Models/Environment.meta (100%)
 rename Assets/{ => Resources}/Models/Environment/TestInteractable.meta (100%)
 rename Assets/{Models/Environment/TestInteractable/Model.prefab => Resources/Models/Environment/TestInteractable/TestInteractableModel.prefab} (99%)
 rename Assets/{Models/Environment/TestInteractable/Model.prefab.meta => Resources/Models/Environment/TestInteractable/TestInteractableModel.prefab.meta} (100%)
 rename Assets/{ => Resources}/Models/Weapons.meta (100%)
 rename Assets/{ => Resources}/Models/Weapons/TestWeapon.meta (100%)
 rename Assets/{ => Resources}/Models/Weapons/TestWeapon/Animations.meta (100%)
 rename Assets/{ => Resources}/Models/Weapons/TestWeapon/Animations/TestWeaponAnimator.controller (100%)
 rename Assets/{ => Resources}/Models/Weapons/TestWeapon/Animations/TestWeaponAnimator.controller.meta (100%)
 rename Assets/{ => Resources}/Models/Weapons/TestWeapon/Animations/TestWeaponAttack.anim (100%)
 rename Assets/{ => Resources}/Models/Weapons/TestWeapon/Animations/TestWeaponAttack.anim.meta (100%)
 rename Assets/{ => Resources}/Models/Weapons/TestWeapon/Animations/TestWeaponIdle.anim (100%)
 rename Assets/{ => Resources}/Models/Weapons/TestWeapon/Animations/TestWeaponIdle.anim.meta (100%)
 rename Assets/{Models/Weapons/TestWeapon/Model.prefab => Resources/Models/Weapons/TestWeapon/TestWeaponModel.prefab} (99%)
 rename Assets/{Models/Weapons/TestWeapon/Model.prefab.meta => Resources/Models/Weapons/TestWeapon/TestWeaponModel.prefab.meta} (100%)
 create mode 100644 Assets/Resources/Models/Weapons/TestWeapon/TestWeaponProjectileModel.prefab
 create mode 100644 Assets/Resources/Models/Weapons/TestWeapon/TestWeaponProjectileModel.prefab.meta
 create mode 100644 Assets/Scripts/Core/Objects/Weapons/ProjectileData.cs
 create mode 100644 Assets/Scripts/Core/Objects/Weapons/ProjectileData.cs.meta
 create mode 100644 Assets/Scripts/Core/Objects/Weapons/WeaponData.cs
 create mode 100644 Assets/Scripts/Core/Objects/Weapons/WeaponData.cs.meta

diff --git a/Assets/Data.meta b/Assets/Data.meta
new file mode 100644
index 00000000..7965561a
--- /dev/null
+++ b/Assets/Data.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bb116ff8f5e8bdb408605245a20d5961
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Data/Weapon Data.meta b/Assets/Data/Weapon Data.meta
new file mode 100644
index 00000000..8270a4e3
--- /dev/null
+++ b/Assets/Data/Weapon Data.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c34d309793e2e1c47ab18a59b7fa08a0
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Data/Weapon Data/TestWeapon.meta b/Assets/Data/Weapon Data/TestWeapon.meta
new file mode 100644
index 00000000..a5ad84db
--- /dev/null
+++ b/Assets/Data/Weapon Data/TestWeapon.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 85f4fa1d777ae894c971e1cec73cc989
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Data/Weapon Data/TestWeapon/TestWeaponData.asset b/Assets/Data/Weapon Data/TestWeapon/TestWeaponData.asset
new file mode 100644
index 00000000..52188fd9
--- /dev/null
+++ b/Assets/Data/Weapon Data/TestWeapon/TestWeaponData.asset	
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: abc4ca3f3ac6a5646addd6dfbe0b996b, type: 3}
+  m_Name: TestWeaponData
+  m_EditorClassIdentifier: 
+  baseDamage: 10
+  knockbackPower: 10
+  attackInterval: 0.5
+  alternateAttackInterval: 1
+  model: {fileID: 6146631199650576833, guid: 50599534a77c7dd46b591a71fbb5feba, type: 3}
diff --git a/Assets/Data/Weapon Data/TestWeapon/TestWeaponData.asset.meta b/Assets/Data/Weapon Data/TestWeapon/TestWeaponData.asset.meta
new file mode 100644
index 00000000..6716ecad
--- /dev/null
+++ b/Assets/Data/Weapon Data/TestWeapon/TestWeaponData.asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 875c881f7a9ed2347a9d28ca2c18c4b5
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Data/Weapon Data/TestWeapon/TestWeaponProjectileData.asset b/Assets/Data/Weapon Data/TestWeapon/TestWeaponProjectileData.asset
new file mode 100644
index 00000000..e67302fd
--- /dev/null
+++ b/Assets/Data/Weapon Data/TestWeapon/TestWeaponProjectileData.asset	
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 9eb73b2d49aa0a5439d5c9a15a3f49e0, type: 3}
+  m_Name: TestWeaponProjectileData
+  m_EditorClassIdentifier: 
+  speed: 0
+  travelDistance: 0
+  through: 0
+  model: {fileID: 0}
diff --git a/Assets/Data/Weapon Data/TestWeapon/TestWeaponProjectileData.asset.meta b/Assets/Data/Weapon Data/TestWeapon/TestWeaponProjectileData.asset.meta
new file mode 100644
index 00000000..4f206262
--- /dev/null
+++ b/Assets/Data/Weapon Data/TestWeapon/TestWeaponProjectileData.asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 307a62b01b8b11a49b1b3cc9ce47a4df
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Models.meta b/Assets/Resources/Models.meta
similarity index 100%
rename from Assets/Models.meta
rename to Assets/Resources/Models.meta
diff --git a/Assets/Models/Characters.meta b/Assets/Resources/Models/Characters.meta
similarity index 100%
rename from Assets/Models/Characters.meta
rename to Assets/Resources/Models/Characters.meta
diff --git a/Assets/Models/Characters/Basic.meta b/Assets/Resources/Models/Characters/Basic.meta
similarity index 100%
rename from Assets/Models/Characters/Basic.meta
rename to Assets/Resources/Models/Characters/Basic.meta
diff --git a/Assets/Models/Characters/Basic/Animations.meta b/Assets/Resources/Models/Characters/Basic/Animations.meta
similarity index 100%
rename from Assets/Models/Characters/Basic/Animations.meta
rename to Assets/Resources/Models/Characters/Basic/Animations.meta
diff --git a/Assets/Models/Characters/Basic/Animations/Basic.controller b/Assets/Resources/Models/Characters/Basic/Animations/BasicCharAnim.controller
similarity index 99%
rename from Assets/Models/Characters/Basic/Animations/Basic.controller
rename to Assets/Resources/Models/Characters/Basic/Animations/BasicCharAnim.controller
index b7c2463f..6c9052b1 100644
--- a/Assets/Models/Characters/Basic/Animations/Basic.controller
+++ b/Assets/Resources/Models/Characters/Basic/Animations/BasicCharAnim.controller
@@ -76,7 +76,7 @@ AnimatorController:
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: Basic
+  m_Name: BasicCharAnim
   serializedVersion: 5
   m_AnimatorParameters:
   - m_Name: Walk_param
diff --git a/Assets/Models/Characters/Basic/Animations/Basic.controller.meta b/Assets/Resources/Models/Characters/Basic/Animations/BasicCharAnim.controller.meta
similarity index 100%
rename from Assets/Models/Characters/Basic/Animations/Basic.controller.meta
rename to Assets/Resources/Models/Characters/Basic/Animations/BasicCharAnim.controller.meta
diff --git a/Assets/Models/Characters/Basic/Model.prefab b/Assets/Resources/Models/Characters/Basic/BasicCharModel.prefab
similarity index 99%
rename from Assets/Models/Characters/Basic/Model.prefab
rename to Assets/Resources/Models/Characters/Basic/BasicCharModel.prefab
index 5c1b83fb..c6ac7e45 100644
--- a/Assets/Models/Characters/Basic/Model.prefab
+++ b/Assets/Resources/Models/Characters/Basic/BasicCharModel.prefab
@@ -14,7 +14,7 @@ GameObject:
   - component: {fileID: 211686610887331952}
   - component: {fileID: 7854868560450781420}
   m_Layer: 6
-  m_Name: Model
+  m_Name: BasicCharModel
   m_TagString: Player
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
diff --git a/Assets/Models/Characters/Basic/Model.prefab.meta b/Assets/Resources/Models/Characters/Basic/BasicCharModel.prefab.meta
similarity index 100%
rename from Assets/Models/Characters/Basic/Model.prefab.meta
rename to Assets/Resources/Models/Characters/Basic/BasicCharModel.prefab.meta
diff --git a/Assets/Models/Characters/Basic2.meta b/Assets/Resources/Models/Characters/Basic2.meta
similarity index 100%
rename from Assets/Models/Characters/Basic2.meta
rename to Assets/Resources/Models/Characters/Basic2.meta
diff --git a/Assets/Models/Characters/Basic2/Model.prefab b/Assets/Resources/Models/Characters/Basic2/BasicChar2Model.prefab
similarity index 99%
rename from Assets/Models/Characters/Basic2/Model.prefab
rename to Assets/Resources/Models/Characters/Basic2/BasicChar2Model.prefab
index cb1a3811..136bbe67 100644
--- a/Assets/Models/Characters/Basic2/Model.prefab
+++ b/Assets/Resources/Models/Characters/Basic2/BasicChar2Model.prefab
@@ -14,7 +14,7 @@ GameObject:
   - component: {fileID: 7320871978689485787}
   - component: {fileID: 4205797128800968765}
   m_Layer: 7
-  m_Name: Model
+  m_Name: BasicChar2Model
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
diff --git a/Assets/Models/Characters/Basic2/Model.prefab.meta b/Assets/Resources/Models/Characters/Basic2/BasicChar2Model.prefab.meta
similarity index 100%
rename from Assets/Models/Characters/Basic2/Model.prefab.meta
rename to Assets/Resources/Models/Characters/Basic2/BasicChar2Model.prefab.meta
diff --git a/Assets/Models/Characters/Jean.meta b/Assets/Resources/Models/Characters/Jean.meta
similarity index 100%
rename from Assets/Models/Characters/Jean.meta
rename to Assets/Resources/Models/Characters/Jean.meta
diff --git a/Assets/Models/Characters/Jean/Animations.meta b/Assets/Resources/Models/Characters/Jean/Animations.meta
similarity index 100%
rename from Assets/Models/Characters/Jean/Animations.meta
rename to Assets/Resources/Models/Characters/Jean/Animations.meta
diff --git a/Assets/Models/Characters/Jean/Animations/jean.controller b/Assets/Resources/Models/Characters/Jean/Animations/jean.controller
similarity index 100%
rename from Assets/Models/Characters/Jean/Animations/jean.controller
rename to Assets/Resources/Models/Characters/Jean/Animations/jean.controller
diff --git a/Assets/Models/Characters/Jean/Animations/jean.controller.meta b/Assets/Resources/Models/Characters/Jean/Animations/jean.controller.meta
similarity index 100%
rename from Assets/Models/Characters/Jean/Animations/jean.controller.meta
rename to Assets/Resources/Models/Characters/Jean/Animations/jean.controller.meta
diff --git "a/Assets/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_Idle_breathing_bone.anim" "b/Assets/Resources/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_Idle_breathing_bone.anim"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_Idle_breathing_bone.anim"
rename to "Assets/Resources/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_Idle_breathing_bone.anim"
diff --git "a/Assets/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_Idle_breathing_bone.anim.meta" "b/Assets/Resources/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_Idle_breathing_bone.anim.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_Idle_breathing_bone.anim.meta"
rename to "Assets/Resources/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_Idle_breathing_bone.anim.meta"
diff --git "a/Assets/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_catwalk_fixed_bone.anim" "b/Assets/Resources/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_catwalk_fixed_bone.anim"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_catwalk_fixed_bone.anim"
rename to "Assets/Resources/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_catwalk_fixed_bone.anim"
diff --git "a/Assets/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_catwalk_fixed_bone.anim.meta" "b/Assets/Resources/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_catwalk_fixed_bone.anim.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_catwalk_fixed_bone.anim.meta"
rename to "Assets/Resources/Models/Characters/Jean/Animations/\343\202\270\343\203\263_arm_catwalk_fixed_bone.anim.meta"
diff --git a/Assets/Models/Characters/Jean/Materials.meta b/Assets/Resources/Models/Characters/Jean/Materials.meta
similarity index 100%
rename from Assets/Models/Characters/Jean/Materials.meta
rename to Assets/Resources/Models/Characters/Jean/Materials.meta
diff --git "a/Assets/Models/Characters/Jean/Materials/\345\244\264\345\217\221.mat" "b/Assets/Resources/Models/Characters/Jean/Materials/\345\244\264\345\217\221.mat"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\345\244\264\345\217\221.mat"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\345\244\264\345\217\221.mat"
diff --git "a/Assets/Models/Characters/Jean/Materials/\345\244\264\345\217\221.mat.meta" "b/Assets/Resources/Models/Characters/Jean/Materials/\345\244\264\345\217\221.mat.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\345\244\264\345\217\221.mat.meta"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\345\244\264\345\217\221.mat.meta"
diff --git "a/Assets/Models/Characters/Jean/Materials/\346\212\253\350\202\251.mat" "b/Assets/Resources/Models/Characters/Jean/Materials/\346\212\253\350\202\251.mat"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\346\212\253\350\202\251.mat"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\346\212\253\350\202\251.mat"
diff --git "a/Assets/Models/Characters/Jean/Materials/\346\212\253\350\202\251.mat.meta" "b/Assets/Resources/Models/Characters/Jean/Materials/\346\212\253\350\202\251.mat.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\346\212\253\350\202\251.mat.meta"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\346\212\253\350\202\251.mat.meta"
diff --git "a/Assets/Models/Characters/Jean/Materials/\347\232\256\350\202\244.mat" "b/Assets/Resources/Models/Characters/Jean/Materials/\347\232\256\350\202\244.mat"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\347\232\256\350\202\244.mat"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\347\232\256\350\202\244.mat"
diff --git "a/Assets/Models/Characters/Jean/Materials/\347\232\256\350\202\244.mat.meta" "b/Assets/Resources/Models/Characters/Jean/Materials/\347\232\256\350\202\244.mat.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\347\232\256\350\202\244.mat.meta"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\347\232\256\350\202\244.mat.meta"
diff --git "a/Assets/Models/Characters/Jean/Materials/\347\234\274\347\231\275.mat" "b/Assets/Resources/Models/Characters/Jean/Materials/\347\234\274\347\231\275.mat"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\347\234\274\347\231\275.mat"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\347\234\274\347\231\275.mat"
diff --git "a/Assets/Models/Characters/Jean/Materials/\347\234\274\347\231\275.mat.meta" "b/Assets/Resources/Models/Characters/Jean/Materials/\347\234\274\347\231\275.mat.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\347\234\274\347\231\275.mat.meta"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\347\234\274\347\231\275.mat.meta"
diff --git "a/Assets/Models/Characters/Jean/Materials/\347\234\274\347\235\233.mat" "b/Assets/Resources/Models/Characters/Jean/Materials/\347\234\274\347\235\233.mat"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\347\234\274\347\235\233.mat"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\347\234\274\347\235\233.mat"
diff --git "a/Assets/Models/Characters/Jean/Materials/\347\234\274\347\235\233.mat.meta" "b/Assets/Resources/Models/Characters/Jean/Materials/\347\234\274\347\235\233.mat.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\347\234\274\347\235\233.mat.meta"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\347\234\274\347\235\233.mat.meta"
diff --git "a/Assets/Models/Characters/Jean/Materials/\350\204\270.mat" "b/Assets/Resources/Models/Characters/Jean/Materials/\350\204\270.mat"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\350\204\270.mat"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\350\204\270.mat"
diff --git "a/Assets/Models/Characters/Jean/Materials/\350\204\270.mat.meta" "b/Assets/Resources/Models/Characters/Jean/Materials/\350\204\270.mat.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\350\204\270.mat.meta"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\350\204\270.mat.meta"
diff --git "a/Assets/Models/Characters/Jean/Materials/\350\205\260\345\270\246.mat" "b/Assets/Resources/Models/Characters/Jean/Materials/\350\205\260\345\270\246.mat"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\350\205\260\345\270\246.mat"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\350\205\260\345\270\246.mat"
diff --git "a/Assets/Models/Characters/Jean/Materials/\350\205\260\345\270\246.mat.meta" "b/Assets/Resources/Models/Characters/Jean/Materials/\350\205\260\345\270\246.mat.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\350\205\260\345\270\246.mat.meta"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\350\205\260\345\270\246.mat.meta"
diff --git "a/Assets/Models/Characters/Jean/Materials/\350\241\243\346\234\215.mat" "b/Assets/Resources/Models/Characters/Jean/Materials/\350\241\243\346\234\215.mat"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\350\241\243\346\234\215.mat"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\350\241\243\346\234\215.mat"
diff --git "a/Assets/Models/Characters/Jean/Materials/\350\241\243\346\234\215.mat.meta" "b/Assets/Resources/Models/Characters/Jean/Materials/\350\241\243\346\234\215.mat.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\350\241\243\346\234\215.mat.meta"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\350\241\243\346\234\215.mat.meta"
diff --git "a/Assets/Models/Characters/Jean/Materials/\350\241\250\346\203\205.mat" "b/Assets/Resources/Models/Characters/Jean/Materials/\350\241\250\346\203\205.mat"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\350\241\250\346\203\205.mat"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\350\241\250\346\203\205.mat"
diff --git "a/Assets/Models/Characters/Jean/Materials/\350\241\250\346\203\205.mat.meta" "b/Assets/Resources/Models/Characters/Jean/Materials/\350\241\250\346\203\205.mat.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\350\241\250\346\203\205.mat.meta"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\350\241\250\346\203\205.mat.meta"
diff --git "a/Assets/Models/Characters/Jean/Materials/\350\243\244\345\255\220.mat" "b/Assets/Resources/Models/Characters/Jean/Materials/\350\243\244\345\255\220.mat"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\350\243\244\345\255\220.mat"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\350\243\244\345\255\220.mat"
diff --git "a/Assets/Models/Characters/Jean/Materials/\350\243\244\345\255\220.mat.meta" "b/Assets/Resources/Models/Characters/Jean/Materials/\350\243\244\345\255\220.mat.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Materials/\350\243\244\345\255\220.mat.meta"
rename to "Assets/Resources/Models/Characters/Jean/Materials/\350\243\244\345\255\220.mat.meta"
diff --git a/Assets/Models/Characters/Jean/Textures.meta b/Assets/Resources/Models/Characters/Jean/Textures.meta
similarity index 100%
rename from Assets/Models/Characters/Jean/Textures.meta
rename to Assets/Resources/Models/Characters/Jean/Textures.meta
diff --git a/Assets/Models/Characters/Jean/Textures/krita.meta b/Assets/Resources/Models/Characters/Jean/Textures/krita.meta
similarity index 100%
rename from Assets/Models/Characters/Jean/Textures/krita.meta
rename to Assets/Resources/Models/Characters/Jean/Textures/krita.meta
diff --git "a/Assets/Models/Characters/Jean/Textures/krita/\346\234\215n.kra" "b/Assets/Resources/Models/Characters/Jean/Textures/krita/\346\234\215n.kra"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Textures/krita/\346\234\215n.kra"
rename to "Assets/Resources/Models/Characters/Jean/Textures/krita/\346\234\215n.kra"
diff --git "a/Assets/Models/Characters/Jean/Textures/krita/\346\234\215n.kra.meta" "b/Assets/Resources/Models/Characters/Jean/Textures/krita/\346\234\215n.kra.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Textures/krita/\346\234\215n.kra.meta"
rename to "Assets/Resources/Models/Characters/Jean/Textures/krita/\346\234\215n.kra.meta"
diff --git "a/Assets/Models/Characters/Jean/Textures/krita/\351\241\224n.kra" "b/Assets/Resources/Models/Characters/Jean/Textures/krita/\351\241\224n.kra"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Textures/krita/\351\241\224n.kra"
rename to "Assets/Resources/Models/Characters/Jean/Textures/krita/\351\241\224n.kra"
diff --git "a/Assets/Models/Characters/Jean/Textures/krita/\351\241\224n.kra.meta" "b/Assets/Resources/Models/Characters/Jean/Textures/krita/\351\241\224n.kra.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Textures/krita/\351\241\224n.kra.meta"
rename to "Assets/Resources/Models/Characters/Jean/Textures/krita/\351\241\224n.kra.meta"
diff --git "a/Assets/Models/Characters/Jean/Textures/krita/\351\253\252.kra" "b/Assets/Resources/Models/Characters/Jean/Textures/krita/\351\253\252.kra"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Textures/krita/\351\253\252.kra"
rename to "Assets/Resources/Models/Characters/Jean/Textures/krita/\351\253\252.kra"
diff --git "a/Assets/Models/Characters/Jean/Textures/krita/\351\253\252.kra.meta" "b/Assets/Resources/Models/Characters/Jean/Textures/krita/\351\253\252.kra.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Textures/krita/\351\253\252.kra.meta"
rename to "Assets/Resources/Models/Characters/Jean/Textures/krita/\351\253\252.kra.meta"
diff --git a/Assets/Models/Characters/Jean/Textures/mc3.png b/Assets/Resources/Models/Characters/Jean/Textures/mc3.png
similarity index 100%
rename from Assets/Models/Characters/Jean/Textures/mc3.png
rename to Assets/Resources/Models/Characters/Jean/Textures/mc3.png
diff --git a/Assets/Models/Characters/Jean/Textures/mc3.png.meta b/Assets/Resources/Models/Characters/Jean/Textures/mc3.png.meta
similarity index 100%
rename from Assets/Models/Characters/Jean/Textures/mc3.png.meta
rename to Assets/Resources/Models/Characters/Jean/Textures/mc3.png.meta
diff --git a/Assets/Models/Characters/Jean/Textures/toon.png b/Assets/Resources/Models/Characters/Jean/Textures/toon.png
similarity index 100%
rename from Assets/Models/Characters/Jean/Textures/toon.png
rename to Assets/Resources/Models/Characters/Jean/Textures/toon.png
diff --git a/Assets/Models/Characters/Jean/Textures/toon.png.meta b/Assets/Resources/Models/Characters/Jean/Textures/toon.png.meta
similarity index 100%
rename from Assets/Models/Characters/Jean/Textures/toon.png.meta
rename to Assets/Resources/Models/Characters/Jean/Textures/toon.png.meta
diff --git "a/Assets/Models/Characters/Jean/Textures/\346\234\215.jpg" "b/Assets/Resources/Models/Characters/Jean/Textures/\346\234\215.jpg"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Textures/\346\234\215.jpg"
rename to "Assets/Resources/Models/Characters/Jean/Textures/\346\234\215.jpg"
diff --git "a/Assets/Models/Characters/Jean/Textures/\346\234\215.jpg.meta" "b/Assets/Resources/Models/Characters/Jean/Textures/\346\234\215.jpg.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Textures/\346\234\215.jpg.meta"
rename to "Assets/Resources/Models/Characters/Jean/Textures/\346\234\215.jpg.meta"
diff --git "a/Assets/Models/Characters/Jean/Textures/\350\241\250\346\203\205.png" "b/Assets/Resources/Models/Characters/Jean/Textures/\350\241\250\346\203\205.png"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Textures/\350\241\250\346\203\205.png"
rename to "Assets/Resources/Models/Characters/Jean/Textures/\350\241\250\346\203\205.png"
diff --git "a/Assets/Models/Characters/Jean/Textures/\350\241\250\346\203\205.png.meta" "b/Assets/Resources/Models/Characters/Jean/Textures/\350\241\250\346\203\205.png.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Textures/\350\241\250\346\203\205.png.meta"
rename to "Assets/Resources/Models/Characters/Jean/Textures/\350\241\250\346\203\205.png.meta"
diff --git "a/Assets/Models/Characters/Jean/Textures/\351\241\224.jpg" "b/Assets/Resources/Models/Characters/Jean/Textures/\351\241\224.jpg"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Textures/\351\241\224.jpg"
rename to "Assets/Resources/Models/Characters/Jean/Textures/\351\241\224.jpg"
diff --git "a/Assets/Models/Characters/Jean/Textures/\351\241\224.jpg.meta" "b/Assets/Resources/Models/Characters/Jean/Textures/\351\241\224.jpg.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Textures/\351\241\224.jpg.meta"
rename to "Assets/Resources/Models/Characters/Jean/Textures/\351\241\224.jpg.meta"
diff --git "a/Assets/Models/Characters/Jean/Textures/\351\241\224n.jpg~" "b/Assets/Resources/Models/Characters/Jean/Textures/\351\241\224n.jpg~"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Textures/\351\241\224n.jpg~"
rename to "Assets/Resources/Models/Characters/Jean/Textures/\351\241\224n.jpg~"
diff --git "a/Assets/Models/Characters/Jean/Textures/\351\253\252.jpg" "b/Assets/Resources/Models/Characters/Jean/Textures/\351\253\252.jpg"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Textures/\351\253\252.jpg"
rename to "Assets/Resources/Models/Characters/Jean/Textures/\351\253\252.jpg"
diff --git "a/Assets/Models/Characters/Jean/Textures/\351\253\252.jpg.meta" "b/Assets/Resources/Models/Characters/Jean/Textures/\351\253\252.jpg.meta"
similarity index 100%
rename from "Assets/Models/Characters/Jean/Textures/\351\253\252.jpg.meta"
rename to "Assets/Resources/Models/Characters/Jean/Textures/\351\253\252.jpg.meta"
diff --git a/Assets/Models/Characters/Jean/jean.fbx b/Assets/Resources/Models/Characters/Jean/jean.fbx
similarity index 100%
rename from Assets/Models/Characters/Jean/jean.fbx
rename to Assets/Resources/Models/Characters/Jean/jean.fbx
diff --git a/Assets/Models/Characters/Jean/jean.fbx.meta b/Assets/Resources/Models/Characters/Jean/jean.fbx.meta
similarity index 100%
rename from Assets/Models/Characters/Jean/jean.fbx.meta
rename to Assets/Resources/Models/Characters/Jean/jean.fbx.meta
diff --git a/Assets/Models/Collectibles.meta b/Assets/Resources/Models/Collectibles.meta
similarity index 100%
rename from Assets/Models/Collectibles.meta
rename to Assets/Resources/Models/Collectibles.meta
diff --git a/Assets/Models/Collectibles/TestCollectible.meta b/Assets/Resources/Models/Collectibles/TestCollectible.meta
similarity index 100%
rename from Assets/Models/Collectibles/TestCollectible.meta
rename to Assets/Resources/Models/Collectibles/TestCollectible.meta
diff --git a/Assets/Models/Collectibles/TestCollectible/Model.prefab b/Assets/Resources/Models/Collectibles/TestCollectible/TestCollectibleModel.prefab
similarity index 98%
rename from Assets/Models/Collectibles/TestCollectible/Model.prefab
rename to Assets/Resources/Models/Collectibles/TestCollectible/TestCollectibleModel.prefab
index 9aa50422..f2c87895 100644
--- a/Assets/Models/Collectibles/TestCollectible/Model.prefab
+++ b/Assets/Resources/Models/Collectibles/TestCollectible/TestCollectibleModel.prefab
@@ -12,7 +12,7 @@ GameObject:
   - component: {fileID: 4625772305908470796}
   - component: {fileID: 8329980963113584251}
   m_Layer: 0
-  m_Name: Model
+  m_Name: TestCollectibleModel
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
diff --git a/Assets/Models/Collectibles/TestCollectible/Model.prefab.meta b/Assets/Resources/Models/Collectibles/TestCollectible/TestCollectibleModel.prefab.meta
similarity index 100%
rename from Assets/Models/Collectibles/TestCollectible/Model.prefab.meta
rename to Assets/Resources/Models/Collectibles/TestCollectible/TestCollectibleModel.prefab.meta
diff --git a/Assets/Models/Environment.meta b/Assets/Resources/Models/Environment.meta
similarity index 100%
rename from Assets/Models/Environment.meta
rename to Assets/Resources/Models/Environment.meta
diff --git a/Assets/Models/Environment/TestInteractable.meta b/Assets/Resources/Models/Environment/TestInteractable.meta
similarity index 100%
rename from Assets/Models/Environment/TestInteractable.meta
rename to Assets/Resources/Models/Environment/TestInteractable.meta
diff --git a/Assets/Models/Environment/TestInteractable/Model.prefab b/Assets/Resources/Models/Environment/TestInteractable/TestInteractableModel.prefab
similarity index 99%
rename from Assets/Models/Environment/TestInteractable/Model.prefab
rename to Assets/Resources/Models/Environment/TestInteractable/TestInteractableModel.prefab
index 80882e33..8975cc8a 100644
--- a/Assets/Models/Environment/TestInteractable/Model.prefab
+++ b/Assets/Resources/Models/Environment/TestInteractable/TestInteractableModel.prefab
@@ -14,7 +14,7 @@ GameObject:
   - component: {fileID: 1310652413205708510}
   - component: {fileID: 4681449771849682896}
   m_Layer: 0
-  m_Name: Model
+  m_Name: TestInteractableModel
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
diff --git a/Assets/Models/Environment/TestInteractable/Model.prefab.meta b/Assets/Resources/Models/Environment/TestInteractable/TestInteractableModel.prefab.meta
similarity index 100%
rename from Assets/Models/Environment/TestInteractable/Model.prefab.meta
rename to Assets/Resources/Models/Environment/TestInteractable/TestInteractableModel.prefab.meta
diff --git a/Assets/Models/Weapons.meta b/Assets/Resources/Models/Weapons.meta
similarity index 100%
rename from Assets/Models/Weapons.meta
rename to Assets/Resources/Models/Weapons.meta
diff --git a/Assets/Models/Weapons/TestWeapon.meta b/Assets/Resources/Models/Weapons/TestWeapon.meta
similarity index 100%
rename from Assets/Models/Weapons/TestWeapon.meta
rename to Assets/Resources/Models/Weapons/TestWeapon.meta
diff --git a/Assets/Models/Weapons/TestWeapon/Animations.meta b/Assets/Resources/Models/Weapons/TestWeapon/Animations.meta
similarity index 100%
rename from Assets/Models/Weapons/TestWeapon/Animations.meta
rename to Assets/Resources/Models/Weapons/TestWeapon/Animations.meta
diff --git a/Assets/Models/Weapons/TestWeapon/Animations/TestWeaponAnimator.controller b/Assets/Resources/Models/Weapons/TestWeapon/Animations/TestWeaponAnimator.controller
similarity index 100%
rename from Assets/Models/Weapons/TestWeapon/Animations/TestWeaponAnimator.controller
rename to Assets/Resources/Models/Weapons/TestWeapon/Animations/TestWeaponAnimator.controller
diff --git a/Assets/Models/Weapons/TestWeapon/Animations/TestWeaponAnimator.controller.meta b/Assets/Resources/Models/Weapons/TestWeapon/Animations/TestWeaponAnimator.controller.meta
similarity index 100%
rename from Assets/Models/Weapons/TestWeapon/Animations/TestWeaponAnimator.controller.meta
rename to Assets/Resources/Models/Weapons/TestWeapon/Animations/TestWeaponAnimator.controller.meta
diff --git a/Assets/Models/Weapons/TestWeapon/Animations/TestWeaponAttack.anim b/Assets/Resources/Models/Weapons/TestWeapon/Animations/TestWeaponAttack.anim
similarity index 100%
rename from Assets/Models/Weapons/TestWeapon/Animations/TestWeaponAttack.anim
rename to Assets/Resources/Models/Weapons/TestWeapon/Animations/TestWeaponAttack.anim
diff --git a/Assets/Models/Weapons/TestWeapon/Animations/TestWeaponAttack.anim.meta b/Assets/Resources/Models/Weapons/TestWeapon/Animations/TestWeaponAttack.anim.meta
similarity index 100%
rename from Assets/Models/Weapons/TestWeapon/Animations/TestWeaponAttack.anim.meta
rename to Assets/Resources/Models/Weapons/TestWeapon/Animations/TestWeaponAttack.anim.meta
diff --git a/Assets/Models/Weapons/TestWeapon/Animations/TestWeaponIdle.anim b/Assets/Resources/Models/Weapons/TestWeapon/Animations/TestWeaponIdle.anim
similarity index 100%
rename from Assets/Models/Weapons/TestWeapon/Animations/TestWeaponIdle.anim
rename to Assets/Resources/Models/Weapons/TestWeapon/Animations/TestWeaponIdle.anim
diff --git a/Assets/Models/Weapons/TestWeapon/Animations/TestWeaponIdle.anim.meta b/Assets/Resources/Models/Weapons/TestWeapon/Animations/TestWeaponIdle.anim.meta
similarity index 100%
rename from Assets/Models/Weapons/TestWeapon/Animations/TestWeaponIdle.anim.meta
rename to Assets/Resources/Models/Weapons/TestWeapon/Animations/TestWeaponIdle.anim.meta
diff --git a/Assets/Models/Weapons/TestWeapon/Model.prefab b/Assets/Resources/Models/Weapons/TestWeapon/TestWeaponModel.prefab
similarity index 99%
rename from Assets/Models/Weapons/TestWeapon/Model.prefab
rename to Assets/Resources/Models/Weapons/TestWeapon/TestWeaponModel.prefab
index 47a0df8f..1f98c326 100644
--- a/Assets/Models/Weapons/TestWeapon/Model.prefab
+++ b/Assets/Resources/Models/Weapons/TestWeapon/TestWeaponModel.prefab
@@ -13,7 +13,7 @@ GameObject:
   - component: {fileID: 1664417149787680797}
   - component: {fileID: 444274800546035912}
   m_Layer: 8
-  m_Name: Model
+  m_Name: TestWeaponModel
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
diff --git a/Assets/Models/Weapons/TestWeapon/Model.prefab.meta b/Assets/Resources/Models/Weapons/TestWeapon/TestWeaponModel.prefab.meta
similarity index 100%
rename from Assets/Models/Weapons/TestWeapon/Model.prefab.meta
rename to Assets/Resources/Models/Weapons/TestWeapon/TestWeaponModel.prefab.meta
diff --git a/Assets/Resources/Models/Weapons/TestWeapon/TestWeaponProjectileModel.prefab b/Assets/Resources/Models/Weapons/TestWeapon/TestWeaponProjectileModel.prefab
new file mode 100644
index 00000000..344a15f1
--- /dev/null
+++ b/Assets/Resources/Models/Weapons/TestWeapon/TestWeaponProjectileModel.prefab
@@ -0,0 +1,85 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &5003074370431539976
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4703596535311943251}
+  - component: {fileID: 3866431707628175166}
+  - component: {fileID: 1806522729611391177}
+  m_Layer: 8
+  m_Name: TestWeaponProjectileModel
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &4703596535311943251
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5003074370431539976}
+  serializedVersion: 2
+  m_LocalRotation: {x: 0.5, y: 0.5, z: 0.5, w: 0.5}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_LocalEulerAnglesHint: {x: 0, y: 90, z: 90}
+--- !u!33 &3866431707628175166
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5003074370431539976}
+  m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &1806522729611391177
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5003074370431539976}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_StaticShadowCaster: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
diff --git a/Assets/Resources/Models/Weapons/TestWeapon/TestWeaponProjectileModel.prefab.meta b/Assets/Resources/Models/Weapons/TestWeapon/TestWeaponProjectileModel.prefab.meta
new file mode 100644
index 00000000..76a19173
--- /dev/null
+++ b/Assets/Resources/Models/Weapons/TestWeapon/TestWeaponProjectileModel.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 8c93d213036531f47a377ee7fd1e7877
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Resources/Prefabs/Weapons/TestWeapon/TestProjectile.prefab b/Assets/Resources/Prefabs/Weapons/TestWeapon/TestProjectile.prefab
index 32ef57f3..fb24d10f 100644
--- a/Assets/Resources/Prefabs/Weapons/TestWeapon/TestProjectile.prefab
+++ b/Assets/Resources/Prefabs/Weapons/TestWeapon/TestProjectile.prefab
@@ -1,88 +1,5 @@
 %YAML 1.1
 %TAG !u! tag:unity3d.com,2011:
---- !u!1 &3635903520720366118
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 3917471409857181565}
-  - component: {fileID: 4806322091654909456}
-  - component: {fileID: 7928905474033320423}
-  m_Layer: 8
-  m_Name: Model
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!4 &3917471409857181565
-Transform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 3635903520720366118}
-  serializedVersion: 2
-  m_LocalRotation: {x: 0.5, y: 0.5, z: 0.5, w: 0.5}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_ConstrainProportionsScale: 0
-  m_Children: []
-  m_Father: {fileID: 2755710452689614233}
-  m_LocalEulerAnglesHint: {x: 0, y: 90, z: 90}
---- !u!33 &4806322091654909456
-MeshFilter:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 3635903520720366118}
-  m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
---- !u!23 &7928905474033320423
-MeshRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 3635903520720366118}
-  m_Enabled: 1
-  m_CastShadows: 1
-  m_ReceiveShadows: 1
-  m_DynamicOccludee: 1
-  m_StaticShadowCaster: 0
-  m_MotionVectors: 1
-  m_LightProbeUsage: 1
-  m_ReflectionProbeUsage: 1
-  m_RayTracingMode: 2
-  m_RayTraceProcedural: 0
-  m_RenderingLayerMask: 1
-  m_RendererPriority: 0
-  m_Materials:
-  - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
-  m_StaticBatchInfo:
-    firstSubMesh: 0
-    subMeshCount: 0
-  m_StaticBatchRoot: {fileID: 0}
-  m_ProbeAnchor: {fileID: 0}
-  m_LightProbeVolumeOverride: {fileID: 0}
-  m_ScaleInLightmap: 1
-  m_ReceiveGI: 1
-  m_PreserveUVs: 0
-  m_IgnoreNormalsForChartDetection: 0
-  m_ImportantGI: 0
-  m_StitchLightmapSeams: 1
-  m_SelectedEditorRenderState: 3
-  m_MinimumChartSize: 4
-  m_AutoUVMaxDistance: 0.5
-  m_AutoUVMaxAngle: 89
-  m_LightmapParameters: {fileID: 0}
-  m_SortingLayerID: 0
-  m_SortingLayer: 0
-  m_SortingOrder: 0
-  m_AdditionalVertexStreams: {fileID: 0}
 --- !u!1 &4422916666859880328
 GameObject:
   m_ObjectHideFlags: 0
@@ -132,9 +49,7 @@ MonoBehaviour:
   damage: 5
   knockbackPower: 10
   direction: {x: 0, y: 0, z: 0}
-  speed: 1
-  travelDistance: 10
-  through: 0
+  data: {fileID: 11400000, guid: 307a62b01b8b11a49b1b3cc9ce47a4df, type: 2}
 --- !u!65 &7153244774890821173
 BoxCollider:
   m_ObjectHideFlags: 0
@@ -156,3 +71,65 @@ BoxCollider:
   serializedVersion: 3
   m_Size: {x: 1, y: 1, z: 2}
   m_Center: {x: 0, y: 0, z: 0}
+--- !u!1001 &8582505591703859502
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    serializedVersion: 3
+    m_TransformParent: {fileID: 2755710452689614233}
+    m_Modifications:
+    - target: {fileID: 4703596535311943251, guid: 8c93d213036531f47a377ee7fd1e7877, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4703596535311943251, guid: 8c93d213036531f47a377ee7fd1e7877, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4703596535311943251, guid: 8c93d213036531f47a377ee7fd1e7877, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4703596535311943251, guid: 8c93d213036531f47a377ee7fd1e7877, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 4703596535311943251, guid: 8c93d213036531f47a377ee7fd1e7877, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 4703596535311943251, guid: 8c93d213036531f47a377ee7fd1e7877, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 4703596535311943251, guid: 8c93d213036531f47a377ee7fd1e7877, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: 0.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 4703596535311943251, guid: 8c93d213036531f47a377ee7fd1e7877, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4703596535311943251, guid: 8c93d213036531f47a377ee7fd1e7877, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 90
+      objectReference: {fileID: 0}
+    - target: {fileID: 4703596535311943251, guid: 8c93d213036531f47a377ee7fd1e7877, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 90
+      objectReference: {fileID: 0}
+    - target: {fileID: 5003074370431539976, guid: 8c93d213036531f47a377ee7fd1e7877, type: 3}
+      propertyPath: m_Name
+      value: Model
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+    m_RemovedGameObjects: []
+    m_AddedGameObjects: []
+    m_AddedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: 8c93d213036531f47a377ee7fd1e7877, type: 3}
+--- !u!4 &3917471409857181565 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 4703596535311943251, guid: 8c93d213036531f47a377ee7fd1e7877, type: 3}
+  m_PrefabInstance: {fileID: 8582505591703859502}
+  m_PrefabAsset: {fileID: 0}
diff --git a/Assets/Resources/Prefabs/Weapons/TestWeapon/TestWeapon.prefab b/Assets/Resources/Prefabs/Weapons/TestWeapon/TestWeapon.prefab
index 31b36ae8..6e2b78e1 100644
--- a/Assets/Resources/Prefabs/Weapons/TestWeapon/TestWeapon.prefab
+++ b/Assets/Resources/Prefabs/Weapons/TestWeapon/TestWeapon.prefab
@@ -45,10 +45,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 68705b8ed948aae4d98ef6e87b6f6961, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  BaseDamage: 10
-  KnockbackPower: 10
-  AttackInterval: 0.2
-  AlternateAttackInterval: 1
+  data: {fileID: 11400000, guid: 875c881f7a9ed2347a9d28ca2c18c4b5, type: 2}
   canAttack: 0
   fireRange: 10
   projectileSpeed: 50
diff --git a/Assets/Scripts/Core/Objects/Weapons/ProjectileData.cs b/Assets/Scripts/Core/Objects/Weapons/ProjectileData.cs
new file mode 100644
index 00000000..556b46f6
--- /dev/null
+++ b/Assets/Scripts/Core/Objects/Weapons/ProjectileData.cs
@@ -0,0 +1,11 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+[CreateAssetMenu(fileName = "NewProjectileData", menuName = "Data/Weapon/Projectile Data")]
+public class ProjectileData : ScriptableObject
+{
+    public float speed;
+    public float travelDistance;
+    public bool through;
+    public GameObject model;
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Core/Objects/Weapons/ProjectileData.cs.meta b/Assets/Scripts/Core/Objects/Weapons/ProjectileData.cs.meta
new file mode 100644
index 00000000..42658c61
--- /dev/null
+++ b/Assets/Scripts/Core/Objects/Weapons/ProjectileData.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9eb73b2d49aa0a5439d5c9a15a3f49e0
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Core/Objects/Weapons/ProjectileObject.cs b/Assets/Scripts/Core/Objects/Weapons/ProjectileObject.cs
index f1eb6c19..c3156f76 100644
--- a/Assets/Scripts/Core/Objects/Weapons/ProjectileObject.cs
+++ b/Assets/Scripts/Core/Objects/Weapons/ProjectileObject.cs
@@ -6,9 +6,7 @@ public abstract class ProjectileObject : AttackObject
     protected float distanceTravelled = 0;
     protected Vector3 position;
     public Vector3 direction;
-    public float speed;
-    public float travelDistance;
-    public bool through;
+    public ProjectileData data;
 
     // Constructor
     protected new void Start()
@@ -20,7 +18,7 @@ public abstract class ProjectileObject : AttackObject
     // Functions
     protected void OnTriggerEnter(Collider otherCollider)
     {
-        if(Hit(otherCollider) && !through)
+        if(Hit(otherCollider) && !data.through)
         {
             Destroy(gameObject);
         }
@@ -28,7 +26,7 @@ public abstract class ProjectileObject : AttackObject
 
     protected virtual void Move()
     {
-        transform.position += direction.normalized * speed / 100;
+        transform.position += direction.normalized * data.speed / 100;
     }
 
     protected void FixedUpdate()
@@ -37,7 +35,7 @@ public abstract class ProjectileObject : AttackObject
         distanceTravelled += Vector3.Distance(transform.position, position);
         position = transform.position;
 
-        if(distanceTravelled >= travelDistance)
+        if(distanceTravelled >= data.travelDistance)
         {
             Destroy(gameObject);
         }
diff --git a/Assets/Scripts/Core/Objects/Weapons/TestWeapon/TestWeapon.cs b/Assets/Scripts/Core/Objects/Weapons/TestWeapon/TestWeapon.cs
index 210c837e..4720285b 100644
--- a/Assets/Scripts/Core/Objects/Weapons/TestWeapon/TestWeapon.cs
+++ b/Assets/Scripts/Core/Objects/Weapons/TestWeapon/TestWeapon.cs
@@ -23,8 +23,8 @@ public class TestWeapon : WeaponObject
     {
         ProjectileObject attackProjectile = ObjectFactory.CreateAttackObject<ProjectileObject>(
             prefabPath: projectilePrefab,
-            damage: MathUtils.CalculateDamage(bearer.BaseDamage, BaseDamage),
-            knockbackPower: KnockbackPower / 4,
+            damage: MathUtils.CalculateDamage(bearer.BaseDamage, data.baseDamage),
+            knockbackPower: data.knockbackPower / 4,
             type: bearerType,
             position: transform.position,
             rotation: bearer.Orientation.rotation,
@@ -32,8 +32,8 @@ public class TestWeapon : WeaponObject
             objectName: "TestWeapon Projectile"
         );
 
-        attackProjectile.travelDistance = fireRange;
-        attackProjectile.speed = projectileSpeed;
+        attackProjectile.data.travelDistance = fireRange;
+        attackProjectile.data.speed = projectileSpeed;
         attackProjectile.direction = bearer.Orientation.forward;
 
         ObjectFactory.DestroyObject(attackProjectile, 1f);
@@ -45,8 +45,8 @@ public class TestWeapon : WeaponObject
 
         AttackObject attackHitbox = ObjectFactory.CreateAttackObject(
             prefabPath: hitboxPrefab,
-            damage: MathUtils.CalculateDamage(bearer.BaseDamage, BaseDamage),
-            knockbackPower: KnockbackPower,
+            damage: MathUtils.CalculateDamage(bearer.BaseDamage, data.baseDamage),
+            knockbackPower: data.knockbackPower,
             type: bearerType,
             knockbackOrigin: transform.position,
             parent: animationController.model,
diff --git a/Assets/Scripts/Core/Objects/Weapons/WeaponData.cs b/Assets/Scripts/Core/Objects/Weapons/WeaponData.cs
new file mode 100644
index 00000000..b8031157
--- /dev/null
+++ b/Assets/Scripts/Core/Objects/Weapons/WeaponData.cs
@@ -0,0 +1,12 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+[CreateAssetMenu(fileName = "NewWeaponData", menuName = "Data/Weapon/Weapon Data")]
+public class WeaponData : ScriptableObject
+{
+    public float baseDamage;
+    public float knockbackPower;
+    public float attackInterval;
+    public float alternateAttackInterval;
+    public GameObject model;
+}
\ No newline at end of file
diff --git a/Assets/Scripts/Core/Objects/Weapons/WeaponData.cs.meta b/Assets/Scripts/Core/Objects/Weapons/WeaponData.cs.meta
new file mode 100644
index 00000000..ada32cf8
--- /dev/null
+++ b/Assets/Scripts/Core/Objects/Weapons/WeaponData.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: abc4ca3f3ac6a5646addd6dfbe0b996b
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Core/Objects/Weapons/WeaponObject.cs b/Assets/Scripts/Core/Objects/Weapons/WeaponObject.cs
index afb1784a..b6294063 100644
--- a/Assets/Scripts/Core/Objects/Weapons/WeaponObject.cs
+++ b/Assets/Scripts/Core/Objects/Weapons/WeaponObject.cs
@@ -5,12 +5,9 @@ using UnityEngine;
 public abstract class WeaponObject : MonoBehaviour 
 {
     // Attributes
+    public WeaponData data;
     protected AttackObjectType bearerType;
     protected IArmed bearer;
-    [SerializeField] protected float BaseDamage;
-    [SerializeField] protected float KnockbackPower;
-    [SerializeField] protected float AttackInterval;
-    [SerializeField] protected float AlternateAttackInterval;
     [SerializeField] private bool canAttack;
 
     // Events
@@ -50,7 +47,7 @@ public abstract class WeaponObject : MonoBehaviour
         }
         
         canAttack = false;
-        StartCoroutine(DelayAttack(AttackInterval));
+        StartCoroutine(DelayAttack(data.attackInterval));
         OnAttackEvent?.Invoke();
 
         return true;
@@ -64,7 +61,7 @@ public abstract class WeaponObject : MonoBehaviour
         }
 
         canAttack = false;
-        StartCoroutine(DelayAttack(AlternateAttackInterval));
+        StartCoroutine(DelayAttack(data.alternateAttackInterval));
         OnAlternateAttackEvent?.Invoke();
         
         return true;
diff --git a/Assets/Scripts/Core/Player/Player.cs b/Assets/Scripts/Core/Player/Player.cs
index 4027f21e..b559a55e 100644
--- a/Assets/Scripts/Core/Player/Player.cs
+++ b/Assets/Scripts/Core/Player/Player.cs
@@ -28,7 +28,12 @@ public class Player : PlayerEntity
         stats = new PlayerStats(this);
 
         WeaponList.Add(GetComponentInChildren<WeaponObject>());
-        WeaponIndex = 0;
+        
+        foreach (WeaponObject weapon in GetComponentsInChildren<WeaponObject>())
+        {
+            WeaponList.Add(weapon);
+        }
+        SetWeapon(0);
 
         GameController.instance.player = this;
     }
diff --git a/Assets/Scripts/Library/BaseClasses/EntityObject/CombatantEntity.cs b/Assets/Scripts/Library/BaseClasses/EntityObject/CombatantEntity.cs
index e497fd03..4b3eebc5 100644
--- a/Assets/Scripts/Library/BaseClasses/EntityObject/CombatantEntity.cs
+++ b/Assets/Scripts/Library/BaseClasses/EntityObject/CombatantEntity.cs
@@ -6,7 +6,7 @@ public class CombatantEntity : DamageableEntity, IArmed
 {
     // Attributes
     [SerializeField] private float baseDamage;
-    private readonly List<WeaponObject> weaponList = new();
+    public List<WeaponObject> weaponList = new();
     private int weaponIndex;
     
     // Set-Getters
@@ -32,9 +32,13 @@ public class CombatantEntity : DamageableEntity, IArmed
     }
 
     // Functions
-    // TODO: Test then decide whether to destroy/disable previous weapon
-    // public void SwapWeapon(WeaponObject newWeapon)
-    // {
-    //      ActiveWeapon = newWeapon;
-    // }
+    public void SetWeapon(int index)
+    {
+        if(weaponList.Count == 0)
+        {
+            return;
+        }
+
+        WeaponIndex = index;
+    }
 }
-- 
GitLab