diff --git a/Assembly-CSharp-Editor.csproj b/Assembly-CSharp-Editor.csproj index 28ddb8b..0b04632 100644 --- a/Assembly-CSharp-Editor.csproj +++ b/Assembly-CSharp-Editor.csproj @@ -62,6 +62,7 @@ + diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index de4d5c1..8a7d6b3 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -67,7 +67,7 @@ - + @@ -78,6 +78,7 @@ + @@ -86,10 +87,12 @@ + + diff --git a/Assets/Data/ScriptableObjects/Creep.meta b/Assets/Data/ScriptableObjects/Creep.meta new file mode 100644 index 0000000..010de85 --- /dev/null +++ b/Assets/Data/ScriptableObjects/Creep.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a5c1da0f3a91f2e40b5dff67f0be3705 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Data/ScriptableObjects/Creep/Creep1.asset b/Assets/Data/ScriptableObjects/Creep/Creep1.asset new file mode 100644 index 0000000..a252603 --- /dev/null +++ b/Assets/Data/ScriptableObjects/Creep/Creep1.asset @@ -0,0 +1,25 @@ +%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: f7bb664a82feb0e43b3c5f459ca775f7, type: 3} + m_Name: Creep1 + m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.CreepData + id: 1 + memo: "\uAE30\uBCF81" + moveSpeed: 5 + maxHp: 100 + atkRange: 3 + atkDamage: 20 + atkIntervalSec: 1.5 + cost: 1 + weight: 1 + modelPath: Assets/Models/PlantWarrior.fbx + animationControllerPath: Assets/Animations/MonsterAnimationController.controller diff --git a/Assets/Data/ScriptableObjects/Creep/Creep1.asset.meta b/Assets/Data/ScriptableObjects/Creep/Creep1.asset.meta new file mode 100644 index 0000000..60d9b18 --- /dev/null +++ b/Assets/Data/ScriptableObjects/Creep/Creep1.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3d9df9cc2ed8c9e4394fa77bc21c47c6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Data/ScriptableObjects/Tower/Tower1.asset b/Assets/Data/ScriptableObjects/Tower/Tower1.asset index 17661e0..5e3d8cb 100644 --- a/Assets/Data/ScriptableObjects/Tower/Tower1.asset +++ b/Assets/Data/ScriptableObjects/Tower/Tower1.asset @@ -12,24 +12,32 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 8c40fef5ebc37b743a3f225c1ca57c32, type: 3} m_Name: Tower1 m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.TowerData - buildingName: "\uD0C0\uC6CC" - prefab: {fileID: 8512676738329978770, guid: 3f7838db2c2fc424d9bd9a0d243b43be, type: 3} - icon: {fileID: 0} id: 1 memo: "\uD0C0\uC6CC" + buildingName: mana: 25 + manpower: 10 sizeX: 4 sizeY: 10 sizeZ: 4 - placementOffset: {x: 0, y: 0, z: 0} - allowRotation: 1 - manpower: 10 maxHp: 50 - isIndestructible: 0 - autoRegenerate: 0 - regenPerSecond: 1 atkRange: 10 - providesVision: 1 atkDamage: 5 atkIntervalSec: 2 modelPath: Assets/Models/building_tower_B_blue.fbx + prefab: {fileID: 8512676738329978770, guid: 3f7838db2c2fc424d9bd9a0d243b43be, type: 3} + icon: {fileID: 0} + placementOffset: {x: 0, y: 0, z: 0} + allowRotation: 1 + isIndestructible: 0 + autoRegenerate: 0 + regenPerSecond: 1 + providesVision: 1 + constructionEquipment: + socketName: RightHand + equipmentPrefab: {fileID: 0} + attachOnStart: 1 + detachOnEnd: 1 + keepEquipped: 0 + attachDelay: 0 + detachDelay: 0 diff --git a/Assets/Data/ScriptableObjects/Tower/Tower2.asset b/Assets/Data/ScriptableObjects/Tower/Tower2.asset index 4a5f553..8a19857 100644 --- a/Assets/Data/ScriptableObjects/Tower/Tower2.asset +++ b/Assets/Data/ScriptableObjects/Tower/Tower2.asset @@ -12,24 +12,32 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 8c40fef5ebc37b743a3f225c1ca57c32, type: 3} m_Name: Tower2 m_EditorClassIdentifier: Assembly-CSharp::Northbound.Data.TowerData - buildingName: "\uBCBD" - prefab: {fileID: 3671057791414486316, guid: ae9a9b515e1792a45887f0d967b943d6, type: 3} - icon: {fileID: 0} id: 2 memo: "\uBCBD" + buildingName: mana: 5 + manpower: 5 sizeX: 8 sizeY: 4 sizeZ: 3 - placementOffset: {x: 0, y: 0, z: 0} - allowRotation: 1 - manpower: 5 maxHp: 30 - isIndestructible: 0 - autoRegenerate: 0 - regenPerSecond: 1 atkRange: 0 - providesVision: 1 atkDamage: 0 atkIntervalSec: 0 modelPath: Assets/Models/wall_straight.fbx + prefab: {fileID: 3671057791414486316, guid: ae9a9b515e1792a45887f0d967b943d6, type: 3} + icon: {fileID: 0} + placementOffset: {x: 0, y: 0, z: 0} + allowRotation: 1 + isIndestructible: 0 + autoRegenerate: 0 + regenPerSecond: 1 + providesVision: 1 + constructionEquipment: + socketName: RightHand + equipmentPrefab: {fileID: 0} + attachOnStart: 1 + detachOnEnd: 1 + keepEquipped: 0 + attachDelay: 0 + detachDelay: 0 diff --git a/Assets/Data/Scripts/DataClasses/CreepData.cs b/Assets/Data/Scripts/DataClasses/CreepData.cs new file mode 100644 index 0000000..6a608a0 --- /dev/null +++ b/Assets/Data/Scripts/DataClasses/CreepData.cs @@ -0,0 +1,37 @@ +// 이 파일은 자동 생성되었습니다. 직접 수정하지 마세요! +// 생성 스크립트: DataTools/generate_csharp_classes.py + +using UnityEngine; +using System.Collections.Generic; // 리스트 지원을 위해 추가 + +namespace Northbound.Data +{ + [CreateAssetMenu(fileName = "CreepData", menuName = "Northbound/Creep Data")] + public partial class CreepData : ScriptableObject + { + [Header("기본 정보")] + /// 고유 ID + public int id; + /// 기획 메모 + public string memo; + /// 이동 속도 + public float moveSpeed; + /// 체력 + public int maxHp; + /// 사정 거리 + public int atkRange; + /// 데미지 + public int atkDamage; + /// 공격 주기 + public float atkIntervalSec; + /// 몬스터 난이도 점수 + public int cost; + /// 등장 가중치 + public float weight; + /// 사용할 모델의 경로 + public string modelPath; + /// 사용할 애니메이션 컨트롤러의 경로 + public string animationControllerPath; + + } +} \ No newline at end of file diff --git a/Assets/Data/Scripts/DataClasses/CreepData.cs.meta b/Assets/Data/Scripts/DataClasses/CreepData.cs.meta new file mode 100644 index 0000000..7c77899 --- /dev/null +++ b/Assets/Data/Scripts/DataClasses/CreepData.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f7bb664a82feb0e43b3c5f459ca775f7 \ No newline at end of file diff --git a/Assets/Data/Scripts/DataClasses/DefaultSettingsData.cs b/Assets/Data/Scripts/DataClasses/DefaultSettingsData.cs index 1d2fbff..fb90d1d 100644 --- a/Assets/Data/Scripts/DataClasses/DefaultSettingsData.cs +++ b/Assets/Data/Scripts/DataClasses/DefaultSettingsData.cs @@ -7,7 +7,7 @@ using System.Collections.Generic; // 리스트 지원을 위해 추가 namespace Northbound.Data { [CreateAssetMenu(fileName = "DefaultSettingsData", menuName = "Northbound/DefaultSettings Data")] - public class DefaultSettingsData : ScriptableObject + public partial class DefaultSettingsData : ScriptableObject { [Header("기본 정보")] /// 고유 ID diff --git a/Assets/Data/Scripts/DataClasses/MonsterData.cs b/Assets/Data/Scripts/DataClasses/MonsterData.cs index 8262c97..de8dec6 100644 --- a/Assets/Data/Scripts/DataClasses/MonsterData.cs +++ b/Assets/Data/Scripts/DataClasses/MonsterData.cs @@ -7,7 +7,7 @@ using System.Collections.Generic; // 리스트 지원을 위해 추가 namespace Northbound.Data { [CreateAssetMenu(fileName = "MonsterData", menuName = "Northbound/Monster Data")] - public class MonsterData : ScriptableObject + public partial class MonsterData : ScriptableObject { [Header("기본 정보")] /// 고유 ID diff --git a/Assets/Data/Scripts/DataClasses/PlayerData.cs b/Assets/Data/Scripts/DataClasses/PlayerData.cs index 6bcbb8e..1c0cff1 100644 --- a/Assets/Data/Scripts/DataClasses/PlayerData.cs +++ b/Assets/Data/Scripts/DataClasses/PlayerData.cs @@ -7,7 +7,7 @@ using System.Collections.Generic; // 리스트 지원을 위해 추가 namespace Northbound.Data { [CreateAssetMenu(fileName = "PlayerData", menuName = "Northbound/Player Data")] - public class PlayerData : ScriptableObject + public partial class PlayerData : ScriptableObject { [Header("기본 정보")] /// 고유 ID diff --git a/Assets/Data/Scripts/DataClasses/TowerData.cs b/Assets/Data/Scripts/DataClasses/TowerData.cs index 46f8863..7a4e69f 100644 --- a/Assets/Data/Scripts/DataClasses/TowerData.cs +++ b/Assets/Data/Scripts/DataClasses/TowerData.cs @@ -1,83 +1,41 @@ +// 이 파일은 자동 생성되었습니다. 직접 수정하지 마세요! +// 생성 스크립트: DataTools/generate_csharp_classes.py + using UnityEngine; +using System.Collections.Generic; // 리스트 지원을 위해 추가 namespace Northbound.Data { [CreateAssetMenu(fileName = "TowerData", menuName = "Northbound/Tower Data")] - public class TowerData : ScriptableObject + public partial class TowerData : ScriptableObject { - [Header("Building Info")] - public string buildingName; - public GameObject prefab; - [Tooltip("UI에 표시될 건물 아이콘")] - public Sprite icon; - - [Header("Basic Info")] - [Tooltip("고유 ID")] + [Header("기본 정보")] + /// 고유 ID public int id; - [Tooltip("기획 메모")] + /// 기획 메모 public string memo; - [Tooltip("건설 비용")] + /// 건물 이름 + public string buildingName; + /// 건설 비용 (mana=20) (mana=50; iron=10) public int mana; - - [Header("Grid Size")] - [Tooltip("X 그리드 차지 공간")] - public int sizeX = 1; - [Tooltip("Y 그리드 차지 공간")] - public int sizeY = 1; - [Tooltip("Z 차지 공간")] - public int sizeZ = 2; - - [Header("Placement Settings")] - [Tooltip("Offset from grid position")] - public Vector3 placementOffset = Vector3.zero; - [Tooltip("Can rotate this building?")] - public bool allowRotation = true; - - [Header("Construction Settings")] - [Tooltip("건설 완료에 필요한 총 작업량")] - public float manpower = 100f; - - [Header("Health Settings")] - [Tooltip("체력")] - public int maxHp = 100; - [Tooltip("Can this building be damaged?")] - public bool isIndestructible = false; - [Tooltip("Auto-regenerate health over time")] - public bool autoRegenerate = false; - [Tooltip("Health regeneration per second")] - public int regenPerSecond = 1; - - [Header("Vision Settings")] - [Tooltip("사정거리")] - public int atkRange = 15; - [Tooltip("Does this building provide vision?")] - public bool providesVision = true; - - [Header("Attack Settings")] - [Tooltip("데미지")] - public int atkDamage = 10; - [Tooltip("공격 주기")] - public float atkIntervalSec = 1f; - - [Header("Model Settings")] - [Tooltip("모델 경로")] + /// 건설 노동량 + public float manpower; + /// X 그리드 차지 공간 + public int sizeX; + /// Y 그리드 차지 공간 + public int sizeY; + /// Z 차지 공간 + public int sizeZ; + /// 체력 + public int maxHp; + /// 사정거리 + public int atkRange; + /// 데미지 + public int atkDamage; + /// 공격 주기 + public float atkIntervalSec; + /// 모델 경로 public string modelPath; - [Header("Properties for convenience")] - public int width => sizeX; - public int length => sizeY; - public float height => sizeY; - public int maxHealth => maxHp; - public float visionRange => atkRange; - public float requiredWorkAmount => manpower; - - public Vector3 GetSize(int rotation) - { - // Rotation 0,180 = normal, 90,270 = swap width/length - bool isRotated = (rotation == 1 || rotation == 3); - float w = isRotated ? length : width; - float l = isRotated ? width : length; - return new Vector3(w, sizeY, l); - } } -} +} \ No newline at end of file diff --git a/Assets/Data/Scripts/DataClasses/TowerDataExtensions.cs b/Assets/Data/Scripts/DataClasses/TowerDataExtensions.cs new file mode 100644 index 0000000..a188c6a --- /dev/null +++ b/Assets/Data/Scripts/DataClasses/TowerDataExtensions.cs @@ -0,0 +1,52 @@ +using UnityEngine; +using Northbound; + +namespace Northbound.Data +{ + public partial class TowerData + { + [Header("Runtime References")] + [Tooltip("Prefab reference - set by data pipeline")] + public GameObject prefab; + [Tooltip("UI icon")] + public Sprite icon; + + [Header("Placement Settings")] + [Tooltip("Offset from grid position")] + public Vector3 placementOffset = Vector3.zero; + [Tooltip("Can rotate this building?")] + public bool allowRotation = true; + + [Header("Health Settings")] + [Tooltip("Can this building be damaged?")] + public bool isIndestructible = false; + [Tooltip("Auto-regenerate health over time")] + public bool autoRegenerate = false; + [Tooltip("Health regeneration per second")] + public int regenPerSecond = 1; + + [Header("Vision Settings")] + [Tooltip("Does this building provide vision?")] + public bool providesVision = true; + + [Header("Construction Settings")] + [Tooltip("건설 시 사용할 도구")] + public EquipmentData constructionEquipment; + + [Header("Properties for convenience")] + public int width => sizeX; + public int length => sizeY; + public float height => sizeY; + public int maxHealth => maxHp; + public float visionRange => atkRange; + public float requiredWorkAmount => manpower; + + public Vector3 GetSize(int rotation) + { + bool isRotated = (rotation == 1 || rotation == 3); + float w = isRotated ? length : width; + float l = isRotated ? width : length; + return new Vector3(w, sizeY, l); + } + } +} diff --git a/Assets/Data/Scripts/DataClasses/TowerDataExtensions.cs.meta b/Assets/Data/Scripts/DataClasses/TowerDataExtensions.cs.meta new file mode 100644 index 0000000..0ea9acb --- /dev/null +++ b/Assets/Data/Scripts/DataClasses/TowerDataExtensions.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: fc31df76646aef242938ae1ab8547e0d \ No newline at end of file diff --git a/Assets/Data/Templates/CreepTemplate.prefab b/Assets/Data/Templates/CreepTemplate.prefab new file mode 100644 index 0000000..8c35bd8 --- /dev/null +++ b/Assets/Data/Templates/CreepTemplate.prefab @@ -0,0 +1,212 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3810918154428190126 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 244366501961263783} + - component: {fileID: 6694091345637567571} + - component: {fileID: 876002834352819743} + - component: {fileID: 3376121002006894933} + - component: {fileID: 4485945348237935463} + - component: {fileID: 3318886927439461238} + - component: {fileID: 6023907831447366429} + - component: {fileID: 8728041163683826261} + - component: {fileID: 3928237758911375249} + m_Layer: 11 + m_Name: CreepTemplate + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &244366501961263783 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3810918154428190126} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + 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: 0, z: 0} +--- !u!136 &6694091345637567571 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3810918154428190126} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 1, z: 0} +--- !u!114 &876002834352819743 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3810918154428190126} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject + GlobalObjectIdHash: 437508337 + InScenePlacedSourceGlobalObjectIdHash: 0 + DeferredDespawnTick: 0 + Ownership: 1 + AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 0 + SpawnWithObservers: 1 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 + SyncOwnerTransformWhenParented: 1 + AllowOwnerToParent: 0 +--- !u!114 &3376121002006894933 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3810918154428190126} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 345fc6e7d4f06314f8b548129700eccb, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyUnit + ShowTopMostFoldoutHeaderGroup: 1 + enemyTeam: 2 + maxHealth: 100 + damageEffectPrefab: {fileID: 0} + destroyEffectPrefab: {fileID: 0} +--- !u!195 &4485945348237935463 +NavMeshAgent: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3810918154428190126} + m_Enabled: 1 + m_AgentTypeID: 0 + m_Radius: 0.5 + m_Speed: 3.5 + m_Acceleration: 8 + avoidancePriority: 50 + m_AngularSpeed: 120 + m_StoppingDistance: 0 + m_AutoTraverseOffMeshLink: 1 + m_AutoBraking: 1 + m_AutoRepath: 1 + m_Height: 2 + m_BaseOffset: 0 + m_WalkableMask: 4294967295 + m_ObstacleAvoidanceType: 4 +--- !u!114 &3318886927439461238 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3810918154428190126} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 453e726e48d16214f84c6d5737edd7df, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyAIController + ShowTopMostFoldoutHeaderGroup: 1 + aiType: 2 + detectionRange: 15 + detectionAngle: 120 + playerLayer: + serializedVersion: 2 + m_Bits: 640 + obstacleLayer: + serializedVersion: 2 + m_Bits: 1152 + maxChaseDistance: 30 + chaseGiveUpDistance: 25 + attackRange: 2 + attackInterval: 1.5 + attackDamage: 10 + moveSpeed: 3.5 + chaseSpeedMultiplier: 1.5 + showDebugInfo: 1 +--- !u!95 &6023907831447366429 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3810918154428190126} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: 0a6254dd97e2e8a47ab5cd5c1a629717, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!114 &8728041163683826261 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3810918154428190126} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2b2a547d86f65d64a93a7a3c415d1ce2, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Northbound.MonsterAnimationController + ShowTopMostFoldoutHeaderGroup: 1 + speedParam: Speed + attackTriggerParam: Attack + isMovingParam: IsMoving + autoLoadFromMonsterData: 1 + debugLogging: 0 +--- !u!114 &3928237758911375249 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3810918154428190126} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 85e4c68e85ef1704b83cecb71de7d67a, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Northbound.CreepDataComponent + creepData: {fileID: 0} + autoApplyOnAwake: 1 diff --git a/Assets/Data/Templates/CreepTemplate.prefab.meta b/Assets/Data/Templates/CreepTemplate.prefab.meta new file mode 100644 index 0000000..ef84c3b --- /dev/null +++ b/Assets/Data/Templates/CreepTemplate.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ed91faf6ce548f94b80fff463c6c42e2 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DefaultNetworkPrefabs.asset b/Assets/DefaultNetworkPrefabs.asset index 5388f8c..6a746f9 100644 --- a/Assets/DefaultNetworkPrefabs.asset +++ b/Assets/DefaultNetworkPrefabs.asset @@ -139,3 +139,18 @@ MonoBehaviour: SourcePrefabToOverride: {fileID: 0} SourceHashToOverride: 0 OverridingTargetPrefab: {fileID: 0} + - Override: 0 + Prefab: {fileID: 3810918154428190126, guid: ed91faf6ce548f94b80fff463c6c42e2, type: 3} + SourcePrefabToOverride: {fileID: 0} + SourceHashToOverride: 0 + OverridingTargetPrefab: {fileID: 0} + - Override: 0 + Prefab: {fileID: 4538112939981844081, guid: 79ce9cde6263e34498c5011cdcf36695, type: 3} + SourcePrefabToOverride: {fileID: 0} + SourceHashToOverride: 0 + OverridingTargetPrefab: {fileID: 0} + - Override: 0 + Prefab: {fileID: 3360908504529629757, guid: 41d918243a20cbd4d8f1558ac8345e9b, type: 3} + SourcePrefabToOverride: {fileID: 0} + SourceHashToOverride: 0 + OverridingTargetPrefab: {fileID: 0} diff --git a/Assets/External/Kaykit Plant Warrior.meta b/Assets/External/Kaykit Plant Warrior.meta new file mode 100644 index 0000000..7933bd7 --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 54bd923b7725e12459eaed04d33a5c48 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Animations.meta b/Assets/External/Kaykit Plant Warrior/Animations.meta new file mode 100644 index 0000000..f818617 --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Animations.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 75ee017f5669e634c9ca6c410cc48fc8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Animations/Click here for more Free Animations.url b/Assets/External/Kaykit Plant Warrior/Animations/Click here for more Free Animations.url new file mode 100644 index 0000000..837f77e --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Animations/Click here for more Free Animations.url @@ -0,0 +1,6 @@ +[{000214A0-0000-0000-C000-000000000046}] +Prop3=19,11 +[InternetShortcut] +IDList= +URL=https://kaylousberg.itch.io/kaykit-character-animations +HotKey=0 diff --git a/Assets/External/Kaykit Plant Warrior/Animations/Click here for more Free Animations.url.meta b/Assets/External/Kaykit Plant Warrior/Animations/Click here for more Free Animations.url.meta new file mode 100644 index 0000000..a817a9f --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Animations/Click here for more Free Animations.url.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8763aa09260d6ac409f2707855fa5443 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Animations/fbx.meta b/Assets/External/Kaykit Plant Warrior/Animations/fbx.meta new file mode 100644 index 0000000..efc0ea6 --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Animations/fbx.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b0874cb7ca57c3d49a29ed6d136ab653 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Animations/fbx/Rig_Medium.meta b/Assets/External/Kaykit Plant Warrior/Animations/fbx/Rig_Medium.meta new file mode 100644 index 0000000..15103a8 --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Animations/fbx/Rig_Medium.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6b8d81791453f9d458015812a83e2c39 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Animations/fbx/Rig_Medium/Rig_Medium_General.fbx b/Assets/External/Kaykit Plant Warrior/Animations/fbx/Rig_Medium/Rig_Medium_General.fbx new file mode 100644 index 0000000..2abcd06 Binary files /dev/null and b/Assets/External/Kaykit Plant Warrior/Animations/fbx/Rig_Medium/Rig_Medium_General.fbx differ diff --git a/Assets/External/Kaykit Plant Warrior/Animations/fbx/Rig_Medium/Rig_Medium_General.fbx.meta b/Assets/External/Kaykit Plant Warrior/Animations/fbx/Rig_Medium/Rig_Medium_General.fbx.meta new file mode 100644 index 0000000..4df50b7 --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Animations/fbx/Rig_Medium/Rig_Medium_General.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 8872ce421a78bdd4eb1f5c8fc78e87c9 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Animations/fbx/Rig_Medium/Rig_Medium_MovementBasic.fbx b/Assets/External/Kaykit Plant Warrior/Animations/fbx/Rig_Medium/Rig_Medium_MovementBasic.fbx new file mode 100644 index 0000000..afbc674 Binary files /dev/null and b/Assets/External/Kaykit Plant Warrior/Animations/fbx/Rig_Medium/Rig_Medium_MovementBasic.fbx differ diff --git a/Assets/External/Kaykit Plant Warrior/Animations/fbx/Rig_Medium/Rig_Medium_MovementBasic.fbx.meta b/Assets/External/Kaykit Plant Warrior/Animations/fbx/Rig_Medium/Rig_Medium_MovementBasic.fbx.meta new file mode 100644 index 0000000..53242da --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Animations/fbx/Rig_Medium/Rig_Medium_MovementBasic.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 596f19e97b943af4f8167f39421d88ed +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Animations/gltf.meta b/Assets/External/Kaykit Plant Warrior/Animations/gltf.meta new file mode 100644 index 0000000..52bb593 --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Animations/gltf.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5d922eec39a80ae4ba3d599b6825af8b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Animations/gltf/Rig_Medium.meta b/Assets/External/Kaykit Plant Warrior/Animations/gltf/Rig_Medium.meta new file mode 100644 index 0000000..c87140d --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Animations/gltf/Rig_Medium.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c9f6f1074733b2d41b39d4510728a029 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Animations/gltf/Rig_Medium/Rig_Medium_General.glb b/Assets/External/Kaykit Plant Warrior/Animations/gltf/Rig_Medium/Rig_Medium_General.glb new file mode 100644 index 0000000..5d16cb6 Binary files /dev/null and b/Assets/External/Kaykit Plant Warrior/Animations/gltf/Rig_Medium/Rig_Medium_General.glb differ diff --git a/Assets/External/Kaykit Plant Warrior/Animations/gltf/Rig_Medium/Rig_Medium_General.glb.meta b/Assets/External/Kaykit Plant Warrior/Animations/gltf/Rig_Medium/Rig_Medium_General.glb.meta new file mode 100644 index 0000000..4006736 --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Animations/gltf/Rig_Medium/Rig_Medium_General.glb.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bd4101a0e02dd1b4bbccff629b1fde15 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Animations/gltf/Rig_Medium/Rig_Medium_MovementBasic.glb b/Assets/External/Kaykit Plant Warrior/Animations/gltf/Rig_Medium/Rig_Medium_MovementBasic.glb new file mode 100644 index 0000000..98e965e Binary files /dev/null and b/Assets/External/Kaykit Plant Warrior/Animations/gltf/Rig_Medium/Rig_Medium_MovementBasic.glb differ diff --git a/Assets/External/Kaykit Plant Warrior/Animations/gltf/Rig_Medium/Rig_Medium_MovementBasic.glb.meta b/Assets/External/Kaykit Plant Warrior/Animations/gltf/Rig_Medium/Rig_Medium_MovementBasic.glb.meta new file mode 100644 index 0000000..797920a --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Animations/gltf/Rig_Medium/Rig_Medium_MovementBasic.glb.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 779d860784ddc294c9bb39a03ec33862 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Assets.meta b/Assets/External/Kaykit Plant Warrior/Assets.meta new file mode 100644 index 0000000..d394142 --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Assets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c54d0285bea0de94b874a9fb29d9fbd3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Arrow.fbx b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Arrow.fbx new file mode 100644 index 0000000..2f65947 Binary files /dev/null and b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Arrow.fbx differ diff --git a/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Arrow.fbx.meta b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Arrow.fbx.meta new file mode 100644 index 0000000..67a130f --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Arrow.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 8c62b3852e53ff14dad446ec1d6d3f39 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Bow.fbx b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Bow.fbx new file mode 100644 index 0000000..54d520e Binary files /dev/null and b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Bow.fbx differ diff --git a/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Bow.fbx.meta b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Bow.fbx.meta new file mode 100644 index 0000000..eba6388 --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Bow.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: f12d0aaf9f944044e968c491911ae432 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Bow_withString.fbx b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Bow_withString.fbx new file mode 100644 index 0000000..766f942 Binary files /dev/null and b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Bow_withString.fbx differ diff --git a/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Bow_withString.fbx.meta b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Bow_withString.fbx.meta new file mode 100644 index 0000000..4af8a9e --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Bow_withString.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 0bec7fc8ba62f974cb204103d5086ac6 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Shield.fbx b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Shield.fbx new file mode 100644 index 0000000..4a0ce26 Binary files /dev/null and b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Shield.fbx differ diff --git a/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Shield.fbx.meta b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Shield.fbx.meta new file mode 100644 index 0000000..b40c740 --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Shield.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: d952e765bc3159946897942a74a81b27 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Spear.fbx b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Spear.fbx new file mode 100644 index 0000000..87101f2 Binary files /dev/null and b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Spear.fbx differ diff --git a/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Spear.fbx.meta b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Spear.fbx.meta new file mode 100644 index 0000000..8cbd0c8 --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Assets/PlantWarrior_Spear.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: bec7726862777a042919c40fd38fce81 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/Assets/plantcreatures_texture.png b/Assets/External/Kaykit Plant Warrior/Assets/plantcreatures_texture.png new file mode 100644 index 0000000..ef75cb0 Binary files /dev/null and b/Assets/External/Kaykit Plant Warrior/Assets/plantcreatures_texture.png differ diff --git a/Assets/External/Kaykit Plant Warrior/Assets/plantcreatures_texture.png.meta b/Assets/External/Kaykit Plant Warrior/Assets/plantcreatures_texture.png.meta new file mode 100644 index 0000000..b531541 --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/Assets/plantcreatures_texture.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: e521081c4e068ff409bd4d6199155ceb +TextureImporter: + internalIDToNameTable: + - first: + 213: 934633628187620750 + second: plantcreatures_texture_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: plantcreatures_texture_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1024 + height: 1024 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: e85f14b355c78fc00800000000000000 + internalID: 934633628187620750 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + plantcreatures_texture_0: 934633628187620750 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/characters.meta b/Assets/External/Kaykit Plant Warrior/characters.meta new file mode 100644 index 0000000..f320bf7 --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/characters.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d915cfad29386964abec8e1e1dec1598 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/characters/PlantWarrior.fbx b/Assets/External/Kaykit Plant Warrior/characters/PlantWarrior.fbx new file mode 100644 index 0000000..b1074e8 Binary files /dev/null and b/Assets/External/Kaykit Plant Warrior/characters/PlantWarrior.fbx differ diff --git a/Assets/External/Kaykit Plant Warrior/characters/PlantWarrior.fbx.meta b/Assets/External/Kaykit Plant Warrior/characters/PlantWarrior.fbx.meta new file mode 100644 index 0000000..76d70ce --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/characters/PlantWarrior.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: a7b7bbc10aa9e924e842b5f03bf52e44 +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/textures.meta b/Assets/External/Kaykit Plant Warrior/textures.meta new file mode 100644 index 0000000..a6032bb --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0a22594ddd696564c9c15862251e4e47 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/textures/plantcreatures_texture.png b/Assets/External/Kaykit Plant Warrior/textures/plantcreatures_texture.png new file mode 100644 index 0000000..ef75cb0 Binary files /dev/null and b/Assets/External/Kaykit Plant Warrior/textures/plantcreatures_texture.png differ diff --git a/Assets/External/Kaykit Plant Warrior/textures/plantcreatures_texture.png.meta b/Assets/External/Kaykit Plant Warrior/textures/plantcreatures_texture.png.meta new file mode 100644 index 0000000..b7586ee --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/textures/plantcreatures_texture.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 2e4c485dd1ea2564cb09817675b80365 +TextureImporter: + internalIDToNameTable: + - first: + 213: 934633628187620750 + second: plantcreatures_texture_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: plantcreatures_texture_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1024 + height: 1024 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: e85f14b355c78fc00800000000000000 + internalID: 934633628187620750 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + plantcreatures_texture_0: 934633628187620750 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/External/Kaykit Plant Warrior/textures/plantcreatures_texture_B.png b/Assets/External/Kaykit Plant Warrior/textures/plantcreatures_texture_B.png new file mode 100644 index 0000000..34dc1a5 Binary files /dev/null and b/Assets/External/Kaykit Plant Warrior/textures/plantcreatures_texture_B.png differ diff --git a/Assets/External/Kaykit Plant Warrior/textures/plantcreatures_texture_B.png.meta b/Assets/External/Kaykit Plant Warrior/textures/plantcreatures_texture_B.png.meta new file mode 100644 index 0000000..b11a051 --- /dev/null +++ b/Assets/External/Kaykit Plant Warrior/textures/plantcreatures_texture_B.png.meta @@ -0,0 +1,143 @@ +fileFormatVersion: 2 +guid: 810873a624517f34282bfa7bb27e0d85 +TextureImporter: + internalIDToNameTable: + - first: + 213: -4786934506563326636 + second: plantcreatures_texture_B_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: plantcreatures_texture_B_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1024 + height: 1024 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 45dab35bd64619db0800000000000000 + internalID: -4786934506563326636 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + plantcreatures_texture_B_0: -4786934506563326636 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models/PlantWarrior.fbx b/Assets/Models/PlantWarrior.fbx new file mode 100644 index 0000000..b1074e8 Binary files /dev/null and b/Assets/Models/PlantWarrior.fbx differ diff --git a/Assets/Models/PlantWarrior.fbx.meta b/Assets/Models/PlantWarrior.fbx.meta new file mode 100644 index 0000000..5709fdf --- /dev/null +++ b/Assets/Models/PlantWarrior.fbx.meta @@ -0,0 +1,110 @@ +fileFormatVersion: 2 +guid: 1b47a488ece83f249abea22b1b1877fb +ModelImporter: + serializedVersion: 24200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: root + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 1 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Creep.meta b/Assets/Prefabs/Creep.meta new file mode 100644 index 0000000..67f5bf0 --- /dev/null +++ b/Assets/Prefabs/Creep.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d7d14085325223a4d9f0b56c40c0d2b9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Creep/Creep1.prefab b/Assets/Prefabs/Creep/Creep1.prefab new file mode 100644 index 0000000..a61c867 --- /dev/null +++ b/Assets/Prefabs/Creep/Creep1.prefab @@ -0,0 +1,1910 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &190360703109604688 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3274993898624407610} + m_Layer: 0 + m_Name: toes.r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3274993898624407610 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 190360703109604688} + serializedVersion: 2 + m_LocalRotation: {x: -0.0000000054509326, y: 0.9203549, z: -0.39108425, w: -0.000000079715036} + m_LocalPosition: {x: -0.0000000013123729, y: 0.16565003, z: -0.00000000615794} + m_LocalScale: {x: 1, y: 0.9999976, z: 1.0000035} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 663591747991919462} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &326506820427804313 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4224940412511149290} + m_Layer: 0 + m_Name: lowerarm.l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4224940412511149290 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 326506820427804313} + serializedVersion: 2 + m_LocalRotation: {x: 3.3142294e-10, y: 0.000000062216756, z: 0.05528553, w: 0.9984706} + m_LocalPosition: {x: 3.169376e-10, y: 0.24189739, z: -0.00000011563963} + m_LocalScale: {x: 1.0000001, y: 0.99999994, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2740845544782652583} + m_Father: {fileID: 1405172510574593241} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &570246259683579619 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5777581867229857299} + m_Layer: 0 + m_Name: hips + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5777581867229857299 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570246259683579619} + serializedVersion: 2 + m_LocalRotation: {x: -5.3290705e-15, y: 0.00000011920927, z: 1.0663281e-21, w: 1} + m_LocalPosition: {x: -6.352747e-22, y: 0.40566343, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6072440475513436469} + - {fileID: 8492516464826570623} + - {fileID: 5913234808679439497} + m_Father: {fileID: 1557528873174209333} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &760745041941163532 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2856184476308544689} + m_Layer: 0 + m_Name: lowerarm.r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2856184476308544689 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 760745041941163532} + serializedVersion: 2 + m_LocalRotation: {x: 3.314229e-10, y: -0.00000006221675, z: -0.05528553, w: 0.9984706} + m_LocalPosition: {x: -2.1567625e-10, y: 0.24189739, z: -0.00000011685303} + m_LocalScale: {x: 1.0000001, y: 0.99999994, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5788892707127785232} + m_Father: {fileID: 9080269579646429203} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &920967548464919842 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 593722527783556422} + - component: {fileID: 8656785032653553372} + m_Layer: 0 + m_Name: PlantWarrior_Body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &593722527783556422 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 920967548464919842} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1255131874752196371} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!137 &8656785032653553372 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 920967548464919842} + 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: 3 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: -6923508976625904674, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3} + 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_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 6697439845133417162, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3} + m_Bones: + - {fileID: 1557528873174209333} + - {fileID: 5777581867229857299} + - {fileID: 6072440475513436469} + - {fileID: 4295311974523757100} + - {fileID: 1405172510574593241} + - {fileID: 4224940412511149290} + - {fileID: 2740845544782652583} + - {fileID: 2452858451824991102} + - {fileID: 3941125806132166793} + - {fileID: 9080269579646429203} + - {fileID: 2856184476308544689} + - {fileID: 5788892707127785232} + - {fileID: 4062086443240261109} + - {fileID: 8423154880772228728} + - {fileID: 6649253583463388225} + - {fileID: 8492516464826570623} + - {fileID: 433343343632923625} + - {fileID: 5937274323932404828} + - {fileID: 2736205232961304566} + - {fileID: 5913234808679439497} + - {fileID: 831869074809750824} + - {fileID: 663591747991919462} + - {fileID: 3274993898624407610} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 1557528873174209333} + m_AABB: + m_Center: {x: -0.02020368, y: 0.8059407, z: -0.027507156} + m_Extent: {x: 0.39004484, y: 0.44566542, z: 0.35767853} + m_DirtyAABB: 0 +--- !u!1 &1798985952328552389 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4286957981302156683} + - component: {fileID: 4079724886414729434} + m_Layer: 0 + m_Name: PlantWarrior_LegRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4286957981302156683 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1798985952328552389} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1255131874752196371} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!137 &4079724886414729434 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1798985952328552389} + 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: 3 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: -6923508976625904674, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3} + 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_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: -6154981922039001261, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3} + m_Bones: + - {fileID: 1557528873174209333} + - {fileID: 5777581867229857299} + - {fileID: 6072440475513436469} + - {fileID: 4295311974523757100} + - {fileID: 1405172510574593241} + - {fileID: 4224940412511149290} + - {fileID: 2740845544782652583} + - {fileID: 2452858451824991102} + - {fileID: 3941125806132166793} + - {fileID: 9080269579646429203} + - {fileID: 2856184476308544689} + - {fileID: 5788892707127785232} + - {fileID: 4062086443240261109} + - {fileID: 8423154880772228728} + - {fileID: 6649253583463388225} + - {fileID: 8492516464826570623} + - {fileID: 433343343632923625} + - {fileID: 5937274323932404828} + - {fileID: 2736205232961304566} + - {fileID: 5913234808679439497} + - {fileID: 831869074809750824} + - {fileID: 663591747991919462} + - {fileID: 3274993898624407610} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 1557528873174209333} + m_AABB: + m_Center: {x: 0.20242496, y: 0.2556593, z: -0.012588412} + m_Extent: {x: 0.130174, y: 0.27607432, z: 0.1900217} + m_DirtyAABB: 0 +--- !u!1 &2249014177564105891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2740845544782652583} + m_Layer: 0 + m_Name: wrist.l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2740845544782652583 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2249014177564105891} + serializedVersion: 2 + m_LocalRotation: {x: 0.0000000012139638, y: 2.7674268e-10, z: -0.026658101, w: 0.99964464} + m_LocalPosition: {x: -0.0000000016788704, y: 0.26004383, z: 0.0000000018543524} + m_LocalScale: {x: 0.99999994, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2452858451824991102} + m_Father: {fileID: 4224940412511149290} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2307987660138585121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6072440475513436469} + m_Layer: 0 + m_Name: spine + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6072440475513436469 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2307987660138585121} + serializedVersion: 2 + m_LocalRotation: {x: 5.3290705e-15, y: -1.4210854e-14, z: -5.5151863e-22, w: 1} + m_LocalPosition: {x: -5.04871e-29, y: 0.1919775, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4295311974523757100} + m_Father: {fileID: 5777581867229857299} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2624770254723251668 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 663591747991919462} + m_Layer: 0 + m_Name: foot.r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &663591747991919462 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2624770254723251668} + serializedVersion: 2 + m_LocalRotation: {x: -0.45523942, y: -0.00000018406836, z: 0.00000003220032, w: 0.8903691} + m_LocalPosition: {x: -0.000000005432395, y: 0.14943695, z: 8.4266816e-10} + m_LocalScale: {x: 1, y: 1.0000005, z: 0.999999} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3274993898624407610} + m_Father: {fileID: 831869074809750824} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3053722403246699562 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5913234808679439497} + m_Layer: 0 + m_Name: upperleg.r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5913234808679439497 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3053722403246699562} + serializedVersion: 2 + m_LocalRotation: {x: 0.9998491, y: -0.00000007426609, z: 0.00000003172626, w: 0.017373597} + m_LocalPosition: {x: 0.17094506, y: 0.11358726, z: 0.000000013923276} + m_LocalScale: {x: 1, y: 0.99999976, z: 1.0000011} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 831869074809750824} + m_Father: {fileID: 5777581867229857299} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3064501784522952398 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1405172510574593241} + m_Layer: 0 + m_Name: upperarm.l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1405172510574593241 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3064501784522952398} + serializedVersion: 2 + m_LocalRotation: {x: -0.514122, y: 0.48546726, z: 0.4854683, w: 0.5141213} + m_LocalPosition: {x: -0.21200736, y: 0.13413227, z: 0.00000008487841} + m_LocalScale: {x: 0.99999934, y: 0.99999934, z: 0.9999998} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4224940412511149290} + m_Father: {fileID: 4295311974523757100} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3170440643709779400 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3315749511735144707} + - component: {fileID: 6150592738518698652} + m_Layer: 0 + m_Name: PlantWarrior_LegLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3315749511735144707 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3170440643709779400} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1255131874752196371} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!137 &6150592738518698652 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3170440643709779400} + 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: 3 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: -6923508976625904674, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3} + 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_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 8717808006600495725, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3} + m_Bones: + - {fileID: 1557528873174209333} + - {fileID: 5777581867229857299} + - {fileID: 6072440475513436469} + - {fileID: 4295311974523757100} + - {fileID: 1405172510574593241} + - {fileID: 4224940412511149290} + - {fileID: 2740845544782652583} + - {fileID: 2452858451824991102} + - {fileID: 3941125806132166793} + - {fileID: 9080269579646429203} + - {fileID: 2856184476308544689} + - {fileID: 5788892707127785232} + - {fileID: 4062086443240261109} + - {fileID: 8423154880772228728} + - {fileID: 6649253583463388225} + - {fileID: 8492516464826570623} + - {fileID: 433343343632923625} + - {fileID: 5937274323932404828} + - {fileID: 2736205232961304566} + - {fileID: 5913234808679439497} + - {fileID: 831869074809750824} + - {fileID: 663591747991919462} + - {fileID: 3274993898624407610} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 1557528873174209333} + m_AABB: + m_Center: {x: -0.17309168, y: 0.25565922, z: -0.0003632158} + m_Extent: {x: 0.10084072, y: 0.2760744, z: 0.17779666} + m_DirtyAABB: 0 +--- !u!1 &3185357251779744645 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6294760295574973299} + - component: {fileID: 5335404872662605641} + m_Layer: 0 + m_Name: PlantWarrior_Head + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6294760295574973299 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3185357251779744645} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 1.2158737, z: -0.00000039627776} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1255131874752196371} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!137 &5335404872662605641 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3185357251779744645} + 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: 3 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: -6923508976625904674, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3} + 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_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: 6726205331920572589, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3} + m_Bones: + - {fileID: 1557528873174209333} + - {fileID: 5777581867229857299} + - {fileID: 6072440475513436469} + - {fileID: 4295311974523757100} + - {fileID: 1405172510574593241} + - {fileID: 4224940412511149290} + - {fileID: 2740845544782652583} + - {fileID: 2452858451824991102} + - {fileID: 3941125806132166793} + - {fileID: 9080269579646429203} + - {fileID: 2856184476308544689} + - {fileID: 5788892707127785232} + - {fileID: 4062086443240261109} + - {fileID: 8423154880772228728} + - {fileID: 6649253583463388225} + - {fileID: 8492516464826570623} + - {fileID: 433343343632923625} + - {fileID: 5937274323932404828} + - {fileID: 2736205232961304566} + - {fileID: 5913234808679439497} + - {fileID: 831869074809750824} + - {fileID: 663591747991919462} + - {fileID: 3274993898624407610} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 1557528873174209333} + m_AABB: + m_Center: {x: -0.022910178, y: 1.8667164, z: 0.013646424} + m_Extent: {x: 0.5686588, y: 0.7017436, z: 0.57668257} + m_DirtyAABB: 0 +--- !u!1 &3372178453179750745 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9080269579646429203} + m_Layer: 0 + m_Name: upperarm.r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9080269579646429203 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3372178453179750745} + serializedVersion: 2 + m_LocalRotation: {x: -0.5141217, y: -0.48546743, z: -0.48546806, w: 0.5141216} + m_LocalPosition: {x: 0.21200736, y: 0.13413227, z: 0.00000008487841} + m_LocalScale: {x: 0.99999934, y: 0.99999934, z: 0.9999998} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2856184476308544689} + m_Father: {fileID: 4295311974523757100} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3432107483015469343 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2736205232961304566} + m_Layer: 0 + m_Name: toes.l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2736205232961304566 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3432107483015469343} + serializedVersion: 2 + m_LocalRotation: {x: -0.000000045685184, y: 0.9203549, z: -0.39108425, w: -0.00000006261839} + m_LocalPosition: {x: 0.000000024138604, y: 0.16565004, z: 0.000000026648877} + m_LocalScale: {x: 1, y: 0.9999977, z: 1.0000033} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5937274323932404828} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &3932114763692414423 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 831869074809750824} + m_Layer: 0 + m_Name: lowerleg.r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &831869074809750824 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3932114763692414423} + serializedVersion: 2 + m_LocalRotation: {x: 0.10622621, y: 0.00000006865227, z: -0.00000007377099, w: 0.994342} + m_LocalPosition: {x: 0.000000017036669, y: 0.22707745, z: -0.0000000017018262} + m_LocalScale: {x: 1, y: 0.9999999, z: 0.9999997} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 663591747991919462} + m_Father: {fileID: 5913234808679439497} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4155685368439712365 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 433343343632923625} + m_Layer: 0 + m_Name: lowerleg.l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &433343343632923625 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4155685368439712365} + serializedVersion: 2 + m_LocalRotation: {x: 0.10622619, y: -0.00000006865224, z: 0.00000007377099, w: 0.994342} + m_LocalPosition: {x: -0.000000017618225, y: 0.22707745, z: -0.0000000026764488} + m_LocalScale: {x: 1, y: 0.9999998, z: 0.99999964} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5937274323932404828} + m_Father: {fileID: 8492516464826570623} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4538112939981844081 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3764584954333487147} + - component: {fileID: 7759150479693212258} + - component: {fileID: 2549958795894663420} + - component: {fileID: 2794704654662246098} + - component: {fileID: 2894690479083926678} + - component: {fileID: 927856165276174212} + - component: {fileID: 7284672060047320725} + - component: {fileID: 250122487001659295} + - component: {fileID: 286142144341486567} + m_Layer: 11 + m_Name: Creep1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3764584954333487147 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4538112939981844081} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1255131874752196371} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!136 &7759150479693212258 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4538112939981844081} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 1, z: 0} +--- !u!114 &2549958795894663420 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4538112939981844081} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject + GlobalObjectIdHash: 415512315 + InScenePlacedSourceGlobalObjectIdHash: 0 + DeferredDespawnTick: 0 + Ownership: 1 + AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 0 + SpawnWithObservers: 1 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 + SyncOwnerTransformWhenParented: 1 + AllowOwnerToParent: 0 +--- !u!114 &2794704654662246098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4538112939981844081} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 345fc6e7d4f06314f8b548129700eccb, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyUnit + ShowTopMostFoldoutHeaderGroup: 1 + enemyTeam: 2 + maxHealth: 100 + damageEffectPrefab: {fileID: 0} + destroyEffectPrefab: {fileID: 0} +--- !u!195 &2894690479083926678 +NavMeshAgent: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4538112939981844081} + m_Enabled: 1 + m_AgentTypeID: 0 + m_Radius: 0.5 + m_Speed: 5 + m_Acceleration: 8 + avoidancePriority: 50 + m_AngularSpeed: 120 + m_StoppingDistance: 0 + m_AutoTraverseOffMeshLink: 1 + m_AutoBraking: 1 + m_AutoRepath: 1 + m_Height: 2 + m_BaseOffset: 0 + m_WalkableMask: 4294967295 + m_ObstacleAvoidanceType: 4 +--- !u!114 &927856165276174212 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4538112939981844081} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 453e726e48d16214f84c6d5737edd7df, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Northbound.EnemyAIController + ShowTopMostFoldoutHeaderGroup: 1 + aiType: 2 + detectionRange: 15 + detectionAngle: 120 + playerLayer: + serializedVersion: 2 + m_Bits: 640 + obstacleLayer: + serializedVersion: 2 + m_Bits: 1152 + maxChaseDistance: 30 + chaseGiveUpDistance: 25 + attackRange: 3 + attackInterval: 1.5 + attackDamage: 20 + moveSpeed: 5 + chaseSpeedMultiplier: 1.5 + showDebugInfo: 1 +--- !u!95 &7284672060047320725 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4538112939981844081} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3} + m_Controller: {fileID: 9100000, guid: 0a6254dd97e2e8a47ab5cd5c1a629717, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!114 &250122487001659295 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4538112939981844081} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2b2a547d86f65d64a93a7a3c415d1ce2, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Northbound.MonsterAnimationController + ShowTopMostFoldoutHeaderGroup: 1 + speedParam: Speed + attackTriggerParam: Attack + isMovingParam: IsMoving + autoLoadFromMonsterData: 1 + debugLogging: 0 +--- !u!114 &286142144341486567 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4538112939981844081} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 85e4c68e85ef1704b83cecb71de7d67a, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Northbound.CreepDataComponent + creepData: {fileID: 11400000, guid: 3d9df9cc2ed8c9e4394fa77bc21c47c6, type: 2} + autoApplyOnAwake: 1 +--- !u!1 &4827787360031545274 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1526288100783744983} + - component: {fileID: 6315861272446095316} + m_Layer: 0 + m_Name: PlantWarrior_Cloak + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1526288100783744983 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4827787360031545274} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1255131874752196371} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!137 &6315861272446095316 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4827787360031545274} + 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: 3 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: -6923508976625904674, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3} + 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_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: -6378995912128804763, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3} + m_Bones: + - {fileID: 1557528873174209333} + - {fileID: 5777581867229857299} + - {fileID: 6072440475513436469} + - {fileID: 4295311974523757100} + - {fileID: 1405172510574593241} + - {fileID: 4224940412511149290} + - {fileID: 2740845544782652583} + - {fileID: 2452858451824991102} + - {fileID: 3941125806132166793} + - {fileID: 9080269579646429203} + - {fileID: 2856184476308544689} + - {fileID: 5788892707127785232} + - {fileID: 4062086443240261109} + - {fileID: 8423154880772228728} + - {fileID: 6649253583463388225} + - {fileID: 8492516464826570623} + - {fileID: 433343343632923625} + - {fileID: 5937274323932404828} + - {fileID: 2736205232961304566} + - {fileID: 5913234808679439497} + - {fileID: 831869074809750824} + - {fileID: 663591747991919462} + - {fileID: 3274993898624407610} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 1557528873174209333} + m_AABB: + m_Center: {x: 0.0000006854534, y: 1.1364065, z: 0.012326479} + m_Extent: {x: 0.4017007, y: 0.2070671, z: 0.34576973} + m_DirtyAABB: 0 +--- !u!1 &5071855376598738387 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4062086443240261109} + m_Layer: 0 + m_Name: hand.r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4062086443240261109 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5071855376598738387} + serializedVersion: 2 + m_LocalRotation: {x: 5.954004e-10, y: 0.000000092012904, z: -0.000005455195, w: 1} + m_LocalPosition: {x: 1.6058266e-12, y: 0.073825896, z: 0.00000011935722} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8423154880772228728} + m_Father: {fileID: 5788892707127785232} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &5974759880527385034 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8492516464826570623} + m_Layer: 0 + m_Name: upperleg.l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8492516464826570623 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5974759880527385034} + serializedVersion: 2 + m_LocalRotation: {x: 0.9998491, y: 0.00000007132798, z: 0.00000001204276, w: 0.017373597} + m_LocalPosition: {x: -0.17094506, y: 0.11358726, z: 0.000000013923269} + m_LocalScale: {x: 1, y: 0.99999976, z: 1.0000011} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 433343343632923625} + m_Father: {fileID: 5777581867229857299} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6339582872751840309 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6185442527957571215} + - component: {fileID: 1419090518731935417} + m_Layer: 0 + m_Name: PlantWarrior_ArmRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6185442527957571215 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6339582872751840309} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1255131874752196371} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!137 &1419090518731935417 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6339582872751840309} + 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: 3 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: -6923508976625904674, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3} + 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_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: -6710724610184440133, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3} + m_Bones: + - {fileID: 1557528873174209333} + - {fileID: 5777581867229857299} + - {fileID: 6072440475513436469} + - {fileID: 4295311974523757100} + - {fileID: 1405172510574593241} + - {fileID: 4224940412511149290} + - {fileID: 2740845544782652583} + - {fileID: 2452858451824991102} + - {fileID: 3941125806132166793} + - {fileID: 9080269579646429203} + - {fileID: 2856184476308544689} + - {fileID: 5788892707127785232} + - {fileID: 4062086443240261109} + - {fileID: 8423154880772228728} + - {fileID: 6649253583463388225} + - {fileID: 8492516464826570623} + - {fileID: 433343343632923625} + - {fileID: 5937274323932404828} + - {fileID: 2736205232961304566} + - {fileID: 5913234808679439497} + - {fileID: 831869074809750824} + - {fileID: 663591747991919462} + - {fileID: 3274993898624407610} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 1557528873174209333} + m_AABB: + m_Center: {x: 0.5282133, y: 1.0978565, z: -0.0053696334} + m_Extent: {x: 0.44385785, y: 0.114856124, z: 0.14569849} + m_DirtyAABB: 0 +--- !u!1 &6673048615472443495 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3941125806132166793} + m_Layer: 0 + m_Name: handslot.l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3941125806132166793 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6673048615472443495} + serializedVersion: 2 + m_LocalRotation: {x: -0.000000016437694, y: -0.000000019798927, z: 0.7071068, w: 0.7071067} + m_LocalPosition: {x: -5.209344e-10, y: 0.096125245, z: -0.057499886} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2452858451824991102} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &6848368146506229940 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6649253583463388225} + m_Layer: 0 + m_Name: head + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6649253583463388225 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6848368146506229940} + serializedVersion: 2 + m_LocalRotation: {x: -3.5527137e-15, y: -1.2705494e-21, z: 8.555763e-29, w: 1} + m_LocalPosition: {x: -5.04871e-29, y: 0.26879656, z: -6.018532e-36} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4295311974523757100} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7142658656289627699 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7802207219643676180} + - component: {fileID: 4848847968628440405} + m_Layer: 0 + m_Name: PlantWarrior_ArmLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7802207219643676180 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7142658656289627699} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1255131874752196371} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!137 &4848847968628440405 +SkinnedMeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7142658656289627699} + 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: 3 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: -6923508976625904674, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3} + 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_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_MaskInteraction: 0 + serializedVersion: 2 + m_Quality: 0 + m_UpdateWhenOffscreen: 0 + m_SkinnedMotionVectors: 1 + m_Mesh: {fileID: -5274104480018123676, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3} + m_Bones: + - {fileID: 1557528873174209333} + - {fileID: 5777581867229857299} + - {fileID: 6072440475513436469} + - {fileID: 4295311974523757100} + - {fileID: 1405172510574593241} + - {fileID: 4224940412511149290} + - {fileID: 2740845544782652583} + - {fileID: 2452858451824991102} + - {fileID: 3941125806132166793} + - {fileID: 9080269579646429203} + - {fileID: 2856184476308544689} + - {fileID: 5788892707127785232} + - {fileID: 4062086443240261109} + - {fileID: 8423154880772228728} + - {fileID: 6649253583463388225} + - {fileID: 8492516464826570623} + - {fileID: 433343343632923625} + - {fileID: 5937274323932404828} + - {fileID: 2736205232961304566} + - {fileID: 5913234808679439497} + - {fileID: 831869074809750824} + - {fileID: 663591747991919462} + - {fileID: 3274993898624407610} + m_BlendShapeWeights: [] + m_RootBone: {fileID: 1557528873174209333} + m_AABB: + m_Center: {x: -0.5285057, y: 1.0978562, z: -0.001726523} + m_Extent: {x: 0.44356582, y: 0.11485663, z: 0.15012585} + m_DirtyAABB: 0 +--- !u!1 &7199472835842197323 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1255131874752196371} + - component: {fileID: 7659434895168708073} + m_Layer: 0 + m_Name: Model + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1255131874752196371 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7199472835842197323} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7802207219643676180} + - {fileID: 6185442527957571215} + - {fileID: 593722527783556422} + - {fileID: 1526288100783744983} + - {fileID: 6294760295574973299} + - {fileID: 3315749511735144707} + - {fileID: 4286957981302156683} + - {fileID: 8408772387617115987} + m_Father: {fileID: 3764584954333487147} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!95 &7659434895168708073 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7199472835842197323} + m_Enabled: 1 + m_Avatar: {fileID: 9000000, guid: 1b47a488ece83f249abea22b1b1877fb, type: 3} + m_Controller: {fileID: 0} + m_CullingMode: 1 + m_UpdateMode: 0 + m_ApplyRootMotion: 1 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 +--- !u!1 &7295203804695816959 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1557528873174209333} + m_Layer: 0 + m_Name: root + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1557528873174209333 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7295203804695816959} + serializedVersion: 2 + m_LocalRotation: {x: -0.000000021855692, y: -0.00000011920926, z: 2.605401e-15, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5777581867229857299} + m_Father: {fileID: 8408772387617115987} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7692634778016897407 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4295311974523757100} + m_Layer: 0 + m_Name: chest + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4295311974523757100 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7692634778016897407} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 4.2351647e-22, z: 7.361622e-30, w: 1} + m_LocalPosition: {x: -5.04871e-29, y: 0.37498796, z: 1.7763568e-15} + m_LocalScale: {x: 1, y: 0.99999994, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6649253583463388225} + - {fileID: 1405172510574593241} + - {fileID: 9080269579646429203} + m_Father: {fileID: 6072440475513436469} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8433324621375667472 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8408772387617115987} + m_Layer: 0 + m_Name: Rig_Medium + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8408772387617115987 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8433324621375667472} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000021855694, y: 0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1557528873174209333} + m_Father: {fileID: 1255131874752196371} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8624745165827520985 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2452858451824991102} + m_Layer: 0 + m_Name: hand.l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2452858451824991102 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8624745165827520985} + serializedVersion: 2 + m_LocalRotation: {x: 5.956492e-10, y: -0.00000013579616, z: 0.000005455195, w: 1} + m_LocalPosition: {x: -1.2647661e-12, y: 0.073825896, z: 0.0000001193573} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3941125806132166793} + m_Father: {fileID: 2740845544782652583} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8699493277302882802 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8423154880772228728} + m_Layer: 0 + m_Name: handslot.r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8423154880772228728 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8699493277302882802} + serializedVersion: 2 + m_LocalRotation: {x: -0.000000016437719, y: 0.000000019798906, z: -0.7071068, w: 0.7071067} + m_LocalPosition: {x: 5.2087756e-10, y: 0.096125245, z: -0.057499886} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5114414950704533121} + m_Father: {fileID: 4062086443240261109} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8747750484294987188 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5937274323932404828} + m_Layer: 0 + m_Name: foot.l + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5937274323932404828 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8747750484294987188} + serializedVersion: 2 + m_LocalRotation: {x: -0.45523942, y: -0.000000044499128, z: 0.000000048826482, w: 0.8903691} + m_LocalPosition: {x: 0.0000000031713479, y: 0.14943705, z: 0.0000000027321736} + m_LocalScale: {x: 1, y: 1.0000008, z: 0.9999996} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2736205232961304566} + m_Father: {fileID: 433343343632923625} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8936869349657827408 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5788892707127785232} + m_Layer: 0 + m_Name: wrist.r + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5788892707127785232 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8936869349657827408} + serializedVersion: 2 + m_LocalRotation: {x: 0.0000000012139642, y: -2.7674288e-10, z: 0.026658101, w: 0.99964464} + m_LocalPosition: {x: 0.0000000017586785, y: 0.26004383, z: 0.0000000018543502} + m_LocalScale: {x: 0.99999994, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4062086443240261109} + m_Father: {fileID: 2856184476308544689} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &4715466935021447530 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 8423154880772228728} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3} + propertyPath: m_LocalPosition.y + value: 0.382 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3} + propertyPath: m_LocalRotation.x + value: 0.00000008146034 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: ae56b484bc4355945bd90ed0f6359194, type: 3} + propertyPath: m_Name + value: scissors + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ae56b484bc4355945bd90ed0f6359194, type: 3} +--- !u!4 &5114414950704533121 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: ae56b484bc4355945bd90ed0f6359194, type: 3} + m_PrefabInstance: {fileID: 4715466935021447530} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Creep/Creep1.prefab.meta b/Assets/Prefabs/Creep/Creep1.prefab.meta new file mode 100644 index 0000000..d010283 --- /dev/null +++ b/Assets/Prefabs/Creep/Creep1.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 79ce9cde6263e34498c5011cdcf36695 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/CreepCamp.prefab b/Assets/Prefabs/CreepCamp.prefab new file mode 100644 index 0000000..1a12d21 --- /dev/null +++ b/Assets/Prefabs/CreepCamp.prefab @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3360908504529629757 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5307373070786284181} + - component: {fileID: 7944914562202077200} + - component: {fileID: 3349671398273528302} + m_Layer: 0 + m_Name: CreepCamp + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5307373070786284181 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3360908504529629757} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -6.74042, y: 1.00002, z: -72.33073} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7944914562202077200 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3360908504529629757} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.Netcode.Runtime::Unity.Netcode.NetworkObject + GlobalObjectIdHash: 0 + InScenePlacedSourceGlobalObjectIdHash: 0 + DeferredDespawnTick: 0 + Ownership: 1 + AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 + SyncOwnerTransformWhenParented: 1 + AllowOwnerToParent: 0 +--- !u!114 &3349671398273528302 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3360908504529629757} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d4c5f296c2ebd7d41b2517a03c8b574c, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Northbound.CreepCamp + ShowTopMostFoldoutHeaderGroup: 1 + creepPrefabs: [] + campStrength: 1 + campCostBudget: 10 + spawnRadius: 5 + maxSpawnAttempts: 50 diff --git a/Assets/Prefabs/CreepCamp.prefab.meta b/Assets/Prefabs/CreepCamp.prefab.meta new file mode 100644 index 0000000..8662119 --- /dev/null +++ b/Assets/Prefabs/CreepCamp.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 41d918243a20cbd4d8f1558ac8345e9b +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/GameMain.unity b/Assets/Scenes/GameMain.unity index 58aa196..5608617 100644 --- a/Assets/Scenes/GameMain.unity +++ b/Assets/Scenes/GameMain.unity @@ -930,6 +930,15 @@ MonoBehaviour: randomRotation: 1 scaleVariation: 0.2 maxObstacleSpawnAttempts: 50 + creepCampPrefab: {fileID: 3360908504529629757, guid: 41d918243a20cbd4d8f1558ac8345e9b, type: 3} + minDistanceBetweenCamps: 60 + minDistanceFromCoreCamps: 60 + minDistanceFromBarracksCamps: 60 + minDistanceFromInitialResource: 60 + additionalCreepCampCount: 5 + baseCampStrength: 3 + strengthIncreasePerZ100: 0.1 + resourceCampStrengthBonus: 0.2 generateResourcesFirst: 1 --- !u!4 &672563223 Transform: @@ -1836,8 +1845,8 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 64 availableBuildings: - - {fileID: 11400000, guid: 03a521eb1160745439ba2d0efeb12f3c, type: 2} - {fileID: 11400000, guid: 3e2e145df85a3ee4eb615f87efba4554, type: 2} + - {fileID: 11400000, guid: 03a521eb1160745439ba2d0efeb12f3c, type: 2} foundationPrefab: {fileID: 1340458267086560577, guid: d20c3ce6a3c39154aa033d0f61bd9a4d, type: 3} --- !u!4 &1199559224 Transform: @@ -2049,7 +2058,7 @@ MonoBehaviour: m_DisconnectTimeoutMS: 30000 ConnectionData: Address: 127.0.0.1 - Port: 7914 + Port: 7954 ServerListenAddress: 127.0.0.1 ClientBindPort: 0 DebugSimulator: diff --git a/Assets/ScriptableObjects/Creep.meta b/Assets/ScriptableObjects/Creep.meta new file mode 100644 index 0000000..26004f2 --- /dev/null +++ b/Assets/ScriptableObjects/Creep.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f03bcf83cef19884cb1e18080e7f7cf4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/BuildingDamageTest.cs b/Assets/Scripts/BuildingDamageTest.cs deleted file mode 100644 index 138145f..0000000 --- a/Assets/Scripts/BuildingDamageTest.cs +++ /dev/null @@ -1,69 +0,0 @@ -using Unity.Netcode; -using UnityEngine; - -namespace Northbound -{ - /// - /// 건물에 데미지를 주는 테스트/공격 시스템 - /// - public class BuildingDamageTest : MonoBehaviour - { - [Header("Damage Settings")] - public int damageAmount = 10; - public float damageInterval = 1f; - public KeyCode damageKey = KeyCode.F; - - [Header("Target")] - public float maxDistance = 10f; - public LayerMask buildingLayer; - - private float _lastDamageTime; - - private void Update() - { - if (Input.GetKeyDown(damageKey)) - { - TryDamageBuilding(); - } - - // 자동 데미지 (테스트용) - if (Input.GetKey(KeyCode.LeftShift) && Input.GetKey(damageKey)) - { - if (Time.time - _lastDamageTime >= damageInterval) - { - TryDamageBuilding(); - _lastDamageTime = Time.time; - } - } - } - - private void TryDamageBuilding() - { - // 카메라에서 레이캐스트 - Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); - - if (Physics.Raycast(ray, out RaycastHit hit, maxDistance, buildingLayer)) - { - Building building = hit.collider.GetComponentInParent(); - - if (building != null) - { - ulong attackerId = NetworkManager.Singleton != null && NetworkManager.Singleton.IsClient - ? NetworkManager.Singleton.LocalClientId - : 0; - - building.TakeDamage(damageAmount, attackerId); - Debug.Log($"[Test] {building.buildingData?.buildingName ?? "건물"}에게 {damageAmount} 데미지!"); - } - } - } - - private void OnGUI() - { - GUILayout.BeginArea(new Rect(10, 10, 300, 100)); - GUILayout.Label($"[{damageKey}] 건물에 {damageAmount} 데미지"); - GUILayout.Label($"[Shift + {damageKey}] 연속 데미지"); - GUILayout.EndArea(); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/BuildingDamageTest.cs.meta b/Assets/Scripts/BuildingDamageTest.cs.meta deleted file mode 100644 index 25d9b7c..0000000 --- a/Assets/Scripts/BuildingDamageTest.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 62b3bdffc8c849d48886167d316e16b6 \ No newline at end of file diff --git a/Assets/Scripts/BuildingSlotButton.cs b/Assets/Scripts/BuildingSlotButton.cs index afb55e3..2a94241 100644 --- a/Assets/Scripts/BuildingSlotButton.cs +++ b/Assets/Scripts/BuildingSlotButton.cs @@ -60,6 +60,7 @@ namespace Northbound if (buildingData == null) return; // 아이콘 설정 + /* if (iconImage != null && buildingData.icon != null) { iconImage.sprite = buildingData.icon; @@ -69,7 +70,8 @@ namespace Northbound { iconImage.enabled = false; } - + */ + iconImage.enabled = false; // 이름 설정 if (nameText != null) { diff --git a/Assets/Scripts/CreepCamp.cs b/Assets/Scripts/CreepCamp.cs new file mode 100644 index 0000000..500e7e2 --- /dev/null +++ b/Assets/Scripts/CreepCamp.cs @@ -0,0 +1,215 @@ +using Northbound.Data; +using System.Collections.Generic; +using Unity.Netcode; +using UnityEngine; + +namespace Northbound +{ + public class CreepCamp : NetworkBehaviour + { + [Header("Camp Settings")] + [Tooltip("Creep prefabs available to spawn")] + [SerializeField] private List creepPrefabs = new List(); + + [Header("Spawning Settings")] + [Tooltip("Camp strength multiplier (higher = stronger creeps)")] + [SerializeField] private float campStrength = 1f; + + [Tooltip("Cost budget for spawning creeps")] + [SerializeField] private float campCostBudget = 10f; + + [Tooltip("Spawn radius around camp")] + [SerializeField] private float spawnRadius = 5f; + + [Tooltip("Max creep spawn attempts")] + [SerializeField] private int maxSpawnAttempts = 50; + + private float _zPosition; + + public override void OnNetworkSpawn() + { + if (IsServer) + { + SpawnCreeps(); + } + } + + public void InitializeCamp(float zPosition, float strengthMultiplier) + { + _zPosition = zPosition; + campStrength = strengthMultiplier; + } + + public void SetCreepPrefabs(List prefabs) + { + creepPrefabs.Clear(); + creepPrefabs.AddRange(prefabs); + Debug.Log($"[CreepCamp] SetCreepPrefabs called with {prefabs.Count} prefabs. Current count: {creepPrefabs.Count}"); + } + + private void SpawnCreeps() + { + Debug.Log($"[CreepCamp] Starting creep spawn at Z={_zPosition:F1}, strength={campStrength:F2}x, prefabs={creepPrefabs.Count}"); + + if (creepPrefabs.Count == 0) + { + Debug.LogWarning($"[CreepCamp] No creep prefabs assigned!"); + return; + } + + float remainingCost = campCostBudget * campStrength; + Debug.Log($"[CreepCamp] Cost budget: {campCostBudget} x {campStrength:F2} = {remainingCost:F2}"); + + int spawnedCount = 0; + + for (int attempt = 0; attempt < maxSpawnAttempts && remainingCost > 0; attempt++) + { + GameObject selectedCreep = SelectCreepByCost(remainingCost); + if (selectedCreep == null) + { + Debug.LogWarning($"[CreepCamp] Could not select creep (attempt {attempt + 1}/{maxSpawnAttempts}), remaining cost: {remainingCost:F2}"); + break; + } + + CreepData creepData = GetCreepDataFromPrefab(selectedCreep); + if (creepData == null) + { + Debug.LogWarning($"[CreepCamp] Could not get creep data from {selectedCreep.name}"); + continue; + } + + if (creepData.cost > remainingCost) + { + if (!CanSpawnAnyCreep(remainingCost)) + { + Debug.LogWarning($"[CreepCamp] No affordable creeps found. Remaining cost: {remainingCost:F2}"); + break; + } + continue; + } + + Debug.Log($"[CreepCamp] Spawning {selectedCreep.name} (cost: {creepData.cost}, remaining: {remainingCost:F2})"); + SpawnCreep(selectedCreep); + remainingCost -= creepData.cost; + spawnedCount++; + } + + Debug.Log($"[CreepCamp] Spawned {spawnedCount} creeps at Z={_zPosition:F1} with strength {campStrength:F2}x"); + } + + private GameObject SelectCreepByCost(float remainingCost) + { + List affordableCreeps = new List(); + + foreach (var prefab in creepPrefabs) + { + CreepData creepData = GetCreepDataFromPrefab(prefab); + if (creepData != null && creepData.cost <= remainingCost) + { + affordableCreeps.Add(prefab); + } + } + + if (affordableCreeps.Count == 0) + { + return null; + } + + float totalWeight = 0f; + foreach (var prefab in affordableCreeps) + { + CreepData creepData = GetCreepDataFromPrefab(prefab); + if (creepData != null) + { + totalWeight += creepData.weight; + } + } + + if (totalWeight == 0f) + { + return affordableCreeps[Random.Range(0, affordableCreeps.Count)]; + } + + float randomValue = Random.Range(0f, totalWeight); + float cumulativeWeight = 0f; + + foreach (var prefab in affordableCreeps) + { + CreepData creepData = GetCreepDataFromPrefab(prefab); + if (creepData != null) + { + cumulativeWeight += creepData.weight; + if (randomValue <= cumulativeWeight) + { + return prefab; + } + } + } + + return affordableCreeps[Random.Range(0, affordableCreeps.Count)]; + } + + private bool CanSpawnAnyCreep(float remainingCost) + { + foreach (var prefab in creepPrefabs) + { + CreepData creepData = GetCreepDataFromPrefab(prefab); + if (creepData != null && creepData.cost <= remainingCost) + { + return true; + } + } + return false; + } + + private CreepData GetCreepDataFromPrefab(GameObject prefab) + { + if (prefab == null) return null; + + CreepDataComponent component = prefab.GetComponent(); + if (component != null) + { + return component.creepData; + } + + return null; + } + + private void SpawnCreep(GameObject prefab) + { + Vector3 spawnOffset = Random.insideUnitSphere * spawnRadius; + spawnOffset.y = 0; + + GameObject creep = Instantiate(prefab, transform.position + spawnOffset, Quaternion.identity); + + if (creep.GetComponent() == null) + { + var visibility = creep.AddComponent(); + visibility.showInExploredAreas = false; + visibility.updateInterval = 0.2f; + } + + NetworkObject networkObj = creep.GetComponent(); + if (networkObj == null) + { + networkObj = creep.AddComponent(); + } + + networkObj.Spawn(); + + creep.transform.SetParent(transform); + } + + private void OnDrawGizmos() + { + Gizmos.color = Color.red; + Gizmos.DrawWireSphere(transform.position, spawnRadius); + } + + private void OnDrawGizmosSelected() + { + Gizmos.color = new Color(1f, 0f, 0f, 0.3f); + Gizmos.DrawSphere(transform.position, spawnRadius); + } + } +} diff --git a/Assets/Scripts/CreepCamp.cs.meta b/Assets/Scripts/CreepCamp.cs.meta new file mode 100644 index 0000000..243197e --- /dev/null +++ b/Assets/Scripts/CreepCamp.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d4c5f296c2ebd7d41b2517a03c8b574c \ No newline at end of file diff --git a/Assets/Scripts/CreepDataComponent.cs b/Assets/Scripts/CreepDataComponent.cs new file mode 100644 index 0000000..1b1b8a4 --- /dev/null +++ b/Assets/Scripts/CreepDataComponent.cs @@ -0,0 +1,62 @@ +using Northbound.Data; +using Unity.Netcode; +using UnityEngine; +using UnityEngine.AI; + +namespace Northbound +{ + [RequireComponent(typeof(EnemyUnit))] + [RequireComponent(typeof(EnemyAIController))] + [RequireComponent(typeof(NavMeshAgent))] + [RequireComponent(typeof(NetworkObject))] + public class CreepDataComponent : MonoBehaviour + { + [Header("Data Reference")] + [Tooltip("ScriptableObject containing creep data")] + public CreepData creepData; + + [Header("Auto-Apply Settings")] + [Tooltip("Automatically apply stats from creepData on Awake")] + public bool autoApplyOnAwake = true; + + private void Awake() + { + if (autoApplyOnAwake && creepData != null) + { + ApplyCreepData(); + } + } + + public void ApplyCreepData() + { + if (creepData == null) + { + Debug.LogWarning("[CreepDataComponent] creepData is null", this); + return; + } + + EnemyUnit enemyUnit = GetComponent(); + if (enemyUnit != null) + { + enemyUnit.maxHealth = creepData.maxHp; + } + + EnemyAIController aiController = GetComponent(); + if (aiController != null) + { + aiController.moveSpeed = creepData.moveSpeed; + aiController.attackDamage = creepData.atkDamage; + aiController.attackRange = creepData.atkRange; + aiController.attackInterval = creepData.atkIntervalSec; + } + + NavMeshAgent navAgent = GetComponent(); + if (navAgent != null) + { + navAgent.speed = creepData.moveSpeed; + } + + Debug.Log($"[CreepDataComponent] Applied data for {creepData.id} ({creepData.memo})", this); + } + } +} diff --git a/Assets/Scripts/CreepDataComponent.cs.meta b/Assets/Scripts/CreepDataComponent.cs.meta new file mode 100644 index 0000000..1580ace --- /dev/null +++ b/Assets/Scripts/CreepDataComponent.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 85e4c68e85ef1704b83cecb71de7d67a \ No newline at end of file diff --git a/Assets/Scripts/Editor/CSVToSOImporter.cs b/Assets/Scripts/Editor/CSVToSOImporter.cs index d206f56..43198cb 100644 --- a/Assets/Scripts/Editor/CSVToSOImporter.cs +++ b/Assets/Scripts/Editor/CSVToSOImporter.cs @@ -59,6 +59,7 @@ namespace Northbound.Editor prefabSetups = new Dictionary { { "Monster", new MonsterPrefabSetup() }, + { "Creep", new CreepPrefabSetup() }, { "Tower", new TowerPrefabSetup() }, { "Player", new PlayerPrefabSetup() } }; diff --git a/Assets/Scripts/Editor/CreepPrefabSetup.cs b/Assets/Scripts/Editor/CreepPrefabSetup.cs new file mode 100644 index 0000000..8b63d6b --- /dev/null +++ b/Assets/Scripts/Editor/CreepPrefabSetup.cs @@ -0,0 +1,118 @@ +using Northbound.Data; +using UnityEditor; +using UnityEngine; + +namespace Northbound.Editor +{ + public class CreepPrefabSetup : IPrefabSetup + { + public string GetTemplateName() + { + return "CreepTemplate"; + } + + public void SetupPrefab(GameObject prefab, ScriptableObject data) + { + if (!(data is CreepData creepData)) + { + Debug.LogWarning($"[CreepPrefabSetup] Expected CreepData, got {data.GetType().Name}"); + return; + } + + var creepDataComponent = prefab.GetComponent(); + if (creepDataComponent != null) + { + creepDataComponent.creepData = creepData; + creepDataComponent.ApplyCreepData(); + } + + var animationController = prefab.GetComponent(); + if (animationController == null) + { + animationController = prefab.AddComponent(); + Debug.Log($"[CreepPrefabSetup] Added MonsterAnimationController component"); + } + + if (!string.IsNullOrEmpty(creepData.modelPath)) + { + RemoveOldModel(prefab); + + if (creepData.modelPath.ToLower().EndsWith(".fbx")) + { + GameObject fbxModel = AssetDatabase.LoadAssetAtPath(creepData.modelPath); + if (fbxModel != null) + { + GameObject fbxInstance = GameObject.Instantiate(fbxModel); + fbxInstance.name = "Model"; + fbxInstance.transform.SetParent(prefab.transform, false); + fbxInstance.transform.localPosition = Vector3.zero; + fbxInstance.transform.localRotation = Quaternion.identity; + fbxInstance.transform.localScale = Vector3.one; + + Debug.Log($"[CreepPrefabSetup] Applied FBX model: {creepData.modelPath}"); + + Avatar modelAvatar = fbxModel.GetComponent()?.avatar; + + if (modelAvatar != null) + { + Animator prefabAnimator = prefab.GetComponent(); + if (prefabAnimator != null) + { + prefabAnimator.avatar = modelAvatar; + Debug.Log($"[CreepPrefabSetup] Applied Avatar: {modelAvatar.name}"); + } + } + } + else + { + Debug.LogWarning($"[CreepPrefabSetup] Could not load FBX model: {creepData.modelPath}"); + } + } + else + { + var meshFilter = prefab.GetComponent(); + if (meshFilter != null) + { + Mesh mesh = AssetDatabase.LoadAssetAtPath(creepData.modelPath); + if (mesh != null) + { + meshFilter.sharedMesh = mesh; + Debug.Log($"[CreepPrefabSetup] Applied mesh: {creepData.modelPath}"); + } + else + { + Debug.LogWarning($"[CreepPrefabSetup] Could not load mesh: {creepData.modelPath}"); + } + } + } + } + + if (!string.IsNullOrEmpty(creepData.animationControllerPath)) + { + Animator animator = prefab.GetComponent(); + if (animator != null) + { + RuntimeAnimatorController controller = AssetDatabase.LoadAssetAtPath(creepData.animationControllerPath); + if (controller != null) + { + animator.runtimeAnimatorController = controller; + Debug.Log($"[CreepPrefabSetup] Applied Animator Controller: {creepData.animationControllerPath}"); + } + else + { + Debug.LogWarning($"[CreepPrefabSetup] Could not load Animator Controller: {creepData.animationControllerPath}"); + } + } + } + } + + private void RemoveOldModel(GameObject prefab) + { + Transform oldModel = prefab.transform.Find("Model"); + if (oldModel != null) + { + GameObject.DestroyImmediate(oldModel.gameObject); + } + } + } +} diff --git a/Assets/Scripts/Editor/CreepPrefabSetup.cs.meta b/Assets/Scripts/Editor/CreepPrefabSetup.cs.meta new file mode 100644 index 0000000..e520671 --- /dev/null +++ b/Assets/Scripts/Editor/CreepPrefabSetup.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 74efb75ea8ccbe54a9c86d0fd503f85f \ No newline at end of file diff --git a/Assets/Scripts/MapGenerator.cs b/Assets/Scripts/MapGenerator.cs index 71c7596..ed2eeee 100644 --- a/Assets/Scripts/MapGenerator.cs +++ b/Assets/Scripts/MapGenerator.cs @@ -86,6 +86,27 @@ namespace Northbound [Tooltip("배치 시도 최대 횟수")] [SerializeField] private int maxObstacleSpawnAttempts = 50; + [Header("Creep Camp Settings")] + [Tooltip("크립 캠프 프리팹")] + public GameObject creepCampPrefab; + [Tooltip("크립 캠프 간 최소 거리")] + [SerializeField] private float minDistanceBetweenCamps = 30f; + [Tooltip("코어와의 최소 거리")] + [SerializeField] private float minDistanceFromCoreCamps = 30f; + [Tooltip("막사와의 최소 거리")] + [SerializeField] private float minDistanceFromBarracksCamps = 30f; + [Tooltip("초기 자원과의 최소 거리")] + [SerializeField] private float minDistanceFromInitialResource = 30f; + [Tooltip("추가 크립 캠프 개수")] + [Range(0, 10)] + [SerializeField] private int additionalCreepCampCount = 5; + [Tooltip("크립 캠프 강도 기본값")] + [SerializeField] private float baseCampStrength = 1f; + [Tooltip("Z 위치에 따른 강도 증가율 (Z 100당)")] + [SerializeField] private float strengthIncreasePerZ100 = 0.2f; + [Tooltip("자원 보호 캠프 강도 보너스 (far camp보다 얼마나 강할지)")] + [SerializeField] private float resourceCampStrengthBonus = 0.5f; + [Header("Generation Order")] [Tooltip("자원 먼저 생성 후 장애물 생성 (true) 또는 그 반대 (false)")] [SerializeField] private bool generateResourcesFirst = true; @@ -93,6 +114,8 @@ namespace Northbound private ResourceData[] _generatedResources; private float _globalProductionMultiplier = 1f; private List _spawnedPositions = new List(); + private List _creepCampPositions = new List(); + private List _creepPrefabs = new List(); private Transform _objectsParent; [System.Serializable] @@ -177,6 +200,7 @@ namespace Northbound } _spawnedPositions.Clear(); + _creepCampPositions.Clear(); if (generateResourcesFirst) { @@ -189,6 +213,8 @@ namespace Northbound GenerateResources(); } + GenerateCreepCamps(); + Debug.Log($"[MapGenerator] Map generation complete!"); } @@ -658,6 +684,241 @@ namespace Northbound #endregion + #region Creep Camp Generation + + private void GenerateCreepCamps() + { + if (creepCampPrefab == null) + { + Debug.LogWarning("[MapGenerator] Creep camp prefab not assigned, skipping creep camp generation."); + return; + } + + LoadCreepPrefabs(); + + if (_creepPrefabs.Count == 0) + { + Debug.LogWarning("[MapGenerator] No creep prefabs found in Assets/Prefabs/Creep/, skipping creep camp generation."); + return; + } + + Debug.Log($"[MapGenerator] Starting creep camp generation. Resources: {_generatedResources.Length}, Additional camps: {additionalCreepCampCount}"); + + int totalCampsSpawned = 0; + + for (int i = 0; i < _generatedResources.Length; i++) + { + Vector3 campPosition = FindValidCampPositionForResource(_generatedResources[i].position); + if (campPosition != Vector3.zero) + { + float strength = CalculateCampStrength(_generatedResources[i].position.y, isResourceCamp: true); + Debug.Log($"[MapGenerator] Spawning resource camp {i + 1} for resource at {_generatedResources[i].position}, position: {campPosition}, strength: {strength:F2} (with bonus)"); + SpawnCreepCamp(campPosition, strength); + _creepCampPositions.Add(campPosition); + totalCampsSpawned++; + } + } + + int additionalSpawned = 0; + for (int i = 0; i < additionalCreepCampCount; i++) + { + Vector3 campPosition = FindValidCampPosition(); + if (campPosition != Vector3.zero) + { + float strength = CalculateCampStrength(campPosition.z, isResourceCamp: false); + Debug.Log($"[MapGenerator] Spawning additional camp {i + 1}, position: {campPosition}, strength: {strength:F2}"); + SpawnCreepCamp(campPosition, strength); + _creepCampPositions.Add(campPosition); + additionalSpawned++; + } + } + + Debug.Log($"[MapGenerator] Spawned {totalCampsSpawned} resource-based camps and {additionalSpawned} additional camps. Total: {totalCampsSpawned + additionalSpawned}"); + } + + private void LoadCreepPrefabs() + { + Debug.Log($"[MapGenerator] LoadCreepPrefabs called, current count: {_creepPrefabs.Count}"); + + if (_creepPrefabs.Count > 0) + { + Debug.Log($"[MapGenerator] Skipping load, already have {_creepPrefabs.Count} prefabs"); + return; + } + +#if UNITY_EDITOR + string[] prefabGuids = UnityEditor.AssetDatabase.FindAssets("t:Prefab", new[] { "Assets/Prefabs/Creep" }); + Debug.Log($"[MapGenerator] Found {prefabGuids.Length} prefabs in Assets/Prefabs/Creep/"); + _creepPrefabs.Clear(); + + foreach (string guid in prefabGuids) + { + string assetPath = UnityEditor.AssetDatabase.GUIDToAssetPath(guid); + GameObject prefab = UnityEditor.AssetDatabase.LoadAssetAtPath(assetPath); + + if (prefab != null && prefab.GetComponent() != null) + { + _creepPrefabs.Add(prefab); + Debug.Log($"[MapGenerator] Added creep prefab: {prefab.name}"); + } + } +#else + Debug.LogWarning("[MapGenerator] Creep prefabs not loaded in build. Please assign creep prefabs manually in Inspector."); +#endif + + if (_creepPrefabs.Count > 0) + { + Debug.Log($"[MapGenerator] Loaded {_creepPrefabs.Count} creep prefabs from Assets/Prefabs/Creep/"); + } + else + { + Debug.LogWarning("[MapGenerator] No creep prefabs loaded!"); + } + } + + private Vector3 FindValidCampPosition() + { + int maxAttempts = 200; + + for (int attempt = 0; attempt < maxAttempts; attempt++) + { + Vector3 candidatePosition = GetRandomPositionInPlayableArea(); + + if (IsValidCreepCampPosition(candidatePosition)) + { + return candidatePosition; + } + } + + return Vector3.zero; + } + + private bool IsValidCreepCampPosition(Vector3 position) + { + if (Vector2.Distance(new Vector2(position.x, position.z), _corePosition) < minDistanceFromCoreCamps) + { + return false; + } + + if (Vector2.Distance(new Vector2(position.x, position.z), _barracksPosition) < minDistanceFromBarracksCamps) + { + return false; + } + + if (Vector2.Distance(new Vector2(position.x, position.z), _initialResourcePosition) < minDistanceFromInitialResource) + { + return false; + } + + foreach (var campPos in _creepCampPositions) + { + if (Vector3.Distance(position, campPos) < minDistanceBetweenCamps) + { + return false; + } + } + + if (position.x < -playableAreaWidth / 2f || position.x > playableAreaWidth / 2f) + { + return false; + } + + if (position.z < startZ || position.z > endZ) + { + return false; + } + + return true; + } + + private Vector3 FindValidCampPositionForResource(Vector2 resourcePosition) + { + Vector3 bestPosition = Vector3.zero; + float bestDistance = float.MaxValue; + int maxAttempts = 50; + + Debug.Log($"[MapGenerator] FindValidCampPositionForResource: Resource at {resourcePosition}, bounds: X:[{-playableAreaWidth/2f}, {playableAreaWidth/2f}], Z:[{startZ}, {endZ}]"); + + for (int attempt = 0; attempt < maxAttempts; attempt++) + { + float angle = Random.Range(0f, 360f); + float distance = Random.Range(8f, 20f); + Vector3 candidatePosition = new Vector3( + resourcePosition.x + Mathf.Cos(angle * Mathf.Deg2Rad) * distance, + 1f, + resourcePosition.y + Mathf.Sin(angle * Mathf.Deg2Rad) * distance + ); + + if (IsValidCreepCampPosition(candidatePosition)) + { + if (Vector3.Distance(candidatePosition, new Vector3(resourcePosition.x, 0, resourcePosition.y)) < bestDistance) + { + bestDistance = Vector3.Distance(candidatePosition, new Vector3(resourcePosition.x, 0, resourcePosition.y)); + bestPosition = candidatePosition; + } + } + } + + if (bestPosition == Vector3.zero) + { + Debug.LogWarning($"[MapGenerator] Failed to find camp position for resource at {resourcePosition} after {maxAttempts} attempts"); + } + + return bestPosition; + } + + private float CalculateCampStrength(float zPosition, bool isResourceCamp = false) + { + float normalizedZ = (zPosition - startZ) / (endZ - startZ); + float strengthMultiplier = baseCampStrength + (normalizedZ * (strengthIncreasePerZ100 * (endZ - startZ) / 100f)); + + if (isResourceCamp) + { + strengthMultiplier *= resourceCampStrengthBonus; + } + + return strengthMultiplier; + } + + private void SpawnCreepCamp(Vector3 position, float strength) + { + GameObject campObj = Instantiate(creepCampPrefab, position, Quaternion.identity); + + CreepCamp creepCamp = campObj.GetComponent(); + if (creepCamp == null) + { + Debug.LogError($"[MapGenerator] Creep camp prefab doesn't have CreepCamp component!"); + Destroy(campObj); + return; + } + + creepCamp.InitializeCamp(position.z, strength); + creepCamp.SetCreepPrefabs(_creepPrefabs); + Debug.Log($"[MapGenerator] Camp initialized with {_creepPrefabs.Count} creep prefabs"); + + NetworkObject networkObj = campObj.GetComponent(); + if (networkObj == null) + { + networkObj = campObj.AddComponent(); + } + + networkObj.Spawn(); + + if (groupUnderParent && _objectsParent != null) + { + campObj.transform.SetParent(_objectsParent); + } + + if (campObj.GetComponent() == null) + { + var visibility = campObj.AddComponent(); + visibility.showInExploredAreas = false; + visibility.updateInterval = 0.2f; + } + } + + #endregion + #region Public Methods public float GetTotalProduction() @@ -758,6 +1019,15 @@ namespace Northbound Gizmos.color = Color.blue; Gizmos.DrawWireSphere(new Vector3(_initialResourcePosition.x, 0, _initialResourcePosition.y), 5f); } + + if (creepCampPrefab != null) + { + Gizmos.color = Color.red; + foreach (var campPos in _creepCampPositions) + { + Gizmos.DrawWireSphere(campPos, 8f); + } + } #endif } diff --git a/DataTools/generate_csharp_classes.py b/DataTools/generate_csharp_classes.py index 80761e2..bc2f2bb 100644 --- a/DataTools/generate_csharp_classes.py +++ b/DataTools/generate_csharp_classes.py @@ -82,7 +82,7 @@ def generate_class(schema_name, schema): lines.append("namespace Northbound.Data") lines.append("{") lines.append(f' [CreateAssetMenu(fileName = "{class_name}", menuName = "Northbound/{schema_name} Data")]') - lines.append(f" public class {class_name} : ScriptableObject") + lines.append(f" public partial class {class_name} : ScriptableObject") lines.append(" {") # 공통 필드 diff --git a/GameData/.Creep_schema.json b/GameData/.Creep_schema.json new file mode 100644 index 0000000..1ea5acf --- /dev/null +++ b/GameData/.Creep_schema.json @@ -0,0 +1,68 @@ +[ + { + "name": "id", + "type": "int", + "condition": null, + "description": "고유 ID" + }, + { + "name": "memo", + "type": "string", + "condition": null, + "description": "기획 메모" + }, + { + "name": "move_speed", + "type": "float", + "condition": null, + "description": "이동 속도" + }, + { + "name": "max_hp", + "type": "int", + "condition": null, + "description": "체력" + }, + { + "name": "atk_range", + "type": "int", + "condition": null, + "description": "사정 거리" + }, + { + "name": "atk_damage", + "type": "int", + "condition": null, + "description": "데미지" + }, + { + "name": "atk_interval_sec", + "type": "float", + "condition": null, + "description": "공격 주기" + }, + { + "name": "cost", + "type": "int", + "condition": null, + "description": "몬스터 난이도 점수" + }, + { + "name": "weight", + "type": "float", + "condition": null, + "description": "등장 가중치" + }, + { + "name": "model_path", + "type": "string", + "condition": null, + "description": "사용할 모델의 경로" + }, + { + "name": "animation_controller_path", + "type": "string", + "condition": null, + "description": "사용할 애니메이션 컨트롤러의 경로" + } +] \ No newline at end of file diff --git a/GameData/.Tower_schema.json b/GameData/.Tower_schema.json index 878b8b4..094debc 100644 --- a/GameData/.Tower_schema.json +++ b/GameData/.Tower_schema.json @@ -11,6 +11,12 @@ "condition": null, "description": "기획 메모" }, + { + "name": "building_name", + "type": "string", + "condition": null, + "description": "건물 이름" + }, { "name": "mana", "type": "int", diff --git a/GameData/Creep.csv b/GameData/Creep.csv new file mode 100644 index 0000000..23e1682 --- /dev/null +++ b/GameData/Creep.csv @@ -0,0 +1,2 @@ +id,memo,move_speed,max_hp,atk_range,atk_damage,atk_interval_sec,cost,weight,model_path,animation_controller_path +1,기본1,5.0,100,3,20,1.5,1,1.0,Assets/Models/PlantWarrior.fbx,Assets/Animations/MonsterAnimationController.controller diff --git a/GameData/Player.csv b/GameData/Player.csv index 40bb5a8..e9b1d26 100644 --- a/GameData/Player.csv +++ b/GameData/Player.csv @@ -1,2 +1,2 @@ -id,memo,move_speed,vision_radius,capacity,manpower,max_hp,atk_range,atk_damage,atk_interval_sec,prefab_path +id,memo,move_speed,vision_radius,capacity,manpower,max_hp,atk_range,atk_damage,atk_interval_sec,prefab_path 1,,5,10,50,10,100,3,100,1,Assets/Prefabs/Player/Player diff --git a/GameData/Tower.csv b/GameData/Tower.csv index bd79f2b..92a9235 100644 --- a/GameData/Tower.csv +++ b/GameData/Tower.csv @@ -1,3 +1,3 @@ -id,memo,mana,manpower,size_x,size_y,size_z,max_hp,atk_range,atk_damage,atk_interval_sec,model_path -1,타워,25,10,4,10,4,50,10,5,2,Assets/Models/building_tower_B_blue.fbx -2,벽,5,5,8,4,3,30,0,0,0,Assets/Models/wall_straight.fbx +id,memo,building_name,mana,manpower,size_x,size_y,size_z,max_hp,atk_range,atk_damage,atk_interval_sec,model_path +1,타워,,25,10,4,10,4,50,10,5,2,Assets/Models/building_tower_B_blue.fbx +2,벽,,5,5,8,4,3,30,0,0,0,Assets/Models/wall_straight.fbx