Refactor Entity spawn

This commit is contained in:
Samir Badi 2025-11-27 12:19:48 -05:00
parent 7175548e67
commit 75119a5510
46 changed files with 525 additions and 231 deletions

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a37d91f7155dad14a9e9a2e5c50c9e67
guid: ebc7015247ecf204d9497288213b9513
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -0,0 +1,79 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &5439311404955432371
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5187891437386525604, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_Name
value: AIEntity
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 5187891437386525604, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
insertIndex: -1
addedObject: {fileID: -2439176753553472379}
m_SourcePrefab: {fileID: 100100000, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
--- !u!1 &901642561250106903 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 5187891437386525604, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
m_PrefabInstance: {fileID: 5439311404955432371}
m_PrefabAsset: {fileID: 0}
--- !u!114 &-2439176753553472379
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 901642561250106903}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5e760319f9324fe896ee84eacad61e2b, type: 3}
m_Name:
m_EditorClassIdentifier:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: fa26d7cdbf173f243b5247f94743d6dc
guid: b9dcf43e40292684a91afec135d66362
PrefabImporter:
externalObjects: {}
userData:

View File

@ -0,0 +1,79 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &5439311404955432371
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5187891437386525604, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
propertyPath: m_Name
value: PlayerEntity
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 5187891437386525604, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
insertIndex: -1
addedObject: {fileID: -7990606747838050484}
m_SourcePrefab: {fileID: 100100000, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
--- !u!1 &901642561250106903 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 5187891437386525604, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3}
m_PrefabInstance: {fileID: 5439311404955432371}
m_PrefabAsset: {fileID: 0}
--- !u!114 &-7990606747838050484
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 901642561250106903}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 27b78ede8ae04ba889029b8c75136bca, type: 3}
m_Name:
m_EditorClassIdentifier:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4bcc57c2df33eef4f90639808b9388c2
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,6 +1,6 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2524050652412672907
--- !u!1 &5187891437386525604
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@ -8,22 +8,21 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3129035878156639630}
- component: {fileID: 3354258396458769265}
- component: {fileID: 522593612081797045}
m_Layer: 0
m_Name: CharacterObject
m_Name: _EntityPrefab
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3129035878156639630
--- !u!4 &522593612081797045
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2524050652412672907}
m_GameObject: {fileID: 5187891437386525604}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
@ -32,15 +31,3 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &3354258396458769265
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2524050652412672907}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0f9d5c017974107acb0bb6e6e117cf8, type: 3}
m_Name:
m_EditorClassIdentifier:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d08db87d041c1744abb1b94b454c8cb6
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -277,6 +277,37 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: c7726a6ea1f8ea2409bb7e95bd89fff1, type: 3}
--- !u!1 &221641347
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 221641348}
m_Layer: 0
m_Name: SpawningPosition (4)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &221641348
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 221641347}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 3, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1095701397}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &241099713
GameObject:
m_ObjectHideFlags: 0
@ -725,7 +756,7 @@ Transform:
m_GameObject: {fileID: 617865562}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalPosition: {x: 0, y: -0.5, z: 0}
m_LocalScale: {x: 20, y: 1, z: 20}
m_ConstrainProportionsScale: 0
m_Children: []
@ -854,6 +885,37 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &838201966
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 838201967}
m_Layer: 0
m_Name: SpawningPosition (3)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &838201967
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 838201966}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 1, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1095701397}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1063375176
GameObject:
m_ObjectHideFlags: 0
@ -916,6 +978,41 @@ Transform:
m_Children: []
m_Father: {fileID: 241099714}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1095701396
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1095701397}
m_Layer: 0
m_Name: SpawningPositions
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1095701397
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1095701396}
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: 1670126725}
- {fileID: 1257198775}
- {fileID: 838201967}
- {fileID: 221641348}
m_Father: {fileID: 1786723715}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1197839770
GameObject:
m_ObjectHideFlags: 0
@ -947,6 +1044,37 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1257198774
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1257198775}
m_Layer: 0
m_Name: SpawningPosition (2)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1257198775
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1257198774}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -1, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1095701397}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1346566915
GameObject:
m_ObjectHideFlags: 0
@ -1009,6 +1137,37 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1670126724
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1670126725}
m_Layer: 0
m_Name: SpawningPosition (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1670126725
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1670126724}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -3, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1095701397}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1786723713
GameObject:
m_ObjectHideFlags: 0
@ -1018,35 +1177,14 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 1786723715}
- component: {fileID: 1786723714}
- component: {fileID: 1786723716}
m_Layer: 0
m_Name: MapManager
m_Name: GameManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1786723714
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1786723713}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e2c07e2ea440472a8e65c55a9ba005b3, type: 3}
m_Name:
m_EditorClassIdentifier:
characterList: {fileID: 11400000, guid: 1c7c20b63697f2845a5a5c2b32254770, type: 2}
characterPrefab: {fileID: 3354258396458769265, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3}
spawnPoints:
- {fileID: 1074654351}
- {fileID: 1941532538}
- {fileID: 404278099}
- {fileID: 332114629}
delayBeforeFirstSpawn: 1
delayBetweenSpawn: 0.6
--- !u!4 &1786723715
Transform:
m_ObjectHideFlags: 0
@ -1059,9 +1197,30 @@ Transform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Children:
- {fileID: 1095701397}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1786723716
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1786723713}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a08f275ee4964c31a339dd725df70431, type: 3}
m_Name:
m_EditorClassIdentifier:
playerPrefab: {fileID: -7990606747838050484, guid: 4bcc57c2df33eef4f90639808b9388c2, type: 3}
aiPrefab: {fileID: -2439176753553472379, guid: b9dcf43e40292684a91afec135d66362, type: 3}
entityList: {fileID: 11400000, guid: 1c7c20b63697f2845a5a5c2b32254770, type: 2}
spawnPositions:
- {fileID: 1670126725}
- {fileID: 1257198775}
- {fileID: 838201967}
- {fileID: 221641348}
--- !u!1 &1868741663
GameObject:
m_ObjectHideFlags: 0
@ -1156,63 +1315,6 @@ Transform:
m_Children: []
m_Father: {fileID: 241099714}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &7266953330162516684
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 2524050652412672907, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3}
propertyPath: m_Name
value: CharacterObject
objectReference: {fileID: 0}
- target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
@ -1229,4 +1331,3 @@ SceneRoots:
- {fileID: 88031185}
- {fileID: 171304467}
- {fileID: 1888508550}
- {fileID: 7266953330162516684}

View File

@ -1,11 +0,0 @@
using System.Collections.Generic;
using UnityEngine;
namespace MedievalParty.Core
{
[CreateAssetMenu(menuName = "ScriptableObjects/Characters/List", fileName = "Character")]
public class CharacterListSO: ScriptableObject
{
public List<CharacterSO> Characters;
}
}

View File

@ -1,12 +0,0 @@
using UnityEngine;
namespace MedievalParty.Core
{
public class CharacterObject: MonoBehaviour
{
public void SetCharacter(CharacterSO character)
{
Instantiate(character.visual, transform);
}
}
}

View File

@ -1,10 +0,0 @@
using UnityEngine;
namespace MedievalParty.Core
{
[CreateAssetMenu(menuName = "ScriptableObjects/Characters/Info", fileName = "Character")]
public class CharacterSO: ScriptableObject
{
public GameObject visual;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 63f3c439952a4a9c838bbb0d4fac1acc
timeCreated: 1764260237

View File

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using MedievalParty.Entity;
using MedievalParty.Entity.AI;
using MedievalParty.Entity.Player;
using UnityEngine;
namespace MedievalParty.Core.Game
{
public class GameManager_SpawningEntityState: IState
{
private readonly PlayerObject _playerPrefab;
private readonly AIObject _AIPrefab;
private readonly List<Transform> _spawningPositions;
private readonly EntityListSO _entityList;
private readonly Action _onSpawnCompleted;
public GameManager_SpawningEntityState(PlayerObject playerPrefab, AIObject aiPrefab, List<Transform> spawningPositions, EntityListSO entityList, Action onSpawnCompleted)
{
_playerPrefab = playerPrefab;
_AIPrefab = aiPrefab;
_spawningPositions = spawningPositions;
_entityList = entityList;
_onSpawnCompleted = onSpawnCompleted;
}
public void OnEnter()
{
CreateEntity(_playerPrefab, _spawningPositions[0].position, _entityList.Characters[0]);
for (int i = 1; i < _spawningPositions.Count; i++)
CreateEntity(_AIPrefab, _spawningPositions[i].position, _entityList.Characters[i]);
_onSpawnCompleted();
}
public void OnExit() { }
public void OnUpdate() { }
private void CreateEntity(EntityObject prefab, Vector3 spawn, EntitySO entity)
{
EntityObject obj = GameObject.Instantiate(prefab, spawn, Quaternion.identity);
obj.SetCharacter(entity);
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 602473e47fcfafd4cb52793f4747e538

View File

@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using MedievalParty.Core.Game;
using MedievalParty.Entity;
using MedievalParty.Entity.AI;
using MedievalParty.Entity.Player;
using UnityEngine;
using UnityEngine.Serialization;
namespace MedievalParty.Core
{
public class GameManager: StateBehaviour
{
public static GameManager Instance { get; private set; }
[Header("Spawn")]
[SerializeField] private PlayerObject playerPrefab;
[SerializeField] private AIObject aiPrefab;
[SerializeField] private EntityListSO entityList;
[SerializeField] private List<Transform> spawnPositions;
private void Awake()
{
if (Instance)
{
Debug.LogWarning($"{typeof(GameManager)} already exist! {transform}");
Destroy(gameObject);
return;
}
Instance = this;
}
protected override void Start()
{
base.Start();
GameManager_SpawningEntityState spawningEntity = new GameManager_SpawningEntityState(playerPrefab, aiPrefab, spawnPositions, entityList, ChangeState);
ChangeState(spawningEntity);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: a08f275ee4964c31a339dd725df70431
timeCreated: 1764259980

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 4735949433c945c8803757603e376e49
timeCreated: 1764259209

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8902e1f13d7949318d1f6ecb43b7ae11
timeCreated: 1764259681

View File

@ -0,0 +1,9 @@
using MedievalParty.Core;
namespace MedievalParty.Entity.AI
{
public class AIObject: EntityObject
{
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 5e760319f9324fe896ee84eacad61e2b
timeCreated: 1764259743

View File

@ -0,0 +1,11 @@
using System.Collections.Generic;
using UnityEngine;
namespace MedievalParty.Entity
{
[CreateAssetMenu(menuName = "ScriptableObjects/Entities/List", fileName = "Character")]
public class EntityListSO: ScriptableObject
{
public List<EntitySO> Characters;
}
}

View File

@ -0,0 +1,12 @@
using UnityEngine;
namespace MedievalParty.Entity
{
public abstract class EntityObject: MonoBehaviour
{
public void SetCharacter(EntitySO entity)
{
Instantiate(entity.visual, transform);
}
}
}

View File

@ -0,0 +1,10 @@
using UnityEngine;
namespace MedievalParty.Entity
{
[CreateAssetMenu(menuName = "ScriptableObjects/Entities/Info", fileName = "Entity")]
public class EntitySO: ScriptableObject
{
public GameObject visual;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 651336f7d4134bd2b74fe8aff4fbf0e4
timeCreated: 1764259658

View File

@ -0,0 +1,9 @@
using MedievalParty.Core;
namespace MedievalParty.Entity.Player
{
public class PlayerObject: EntityObject
{
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 27b78ede8ae04ba889029b8c75136bca
timeCreated: 1764259766

View File

@ -1,31 +0,0 @@
using System.Collections.Generic;
using MedievalParty.Core;
using MedievalParty.Map.States;
using UnityEngine;
namespace MedievalParty.Map
{
public class MapManager: StateBehaviour
{
[Header("Characters")]
[SerializeField] private CharacterListSO characterList;
[SerializeField] private CharacterObject characterPrefab;
[Header("Spawn")]
[SerializeField] private List<Transform> spawnPoints;
[SerializeField] private float delayBeforeFirstSpawn = 1f;
[SerializeField] private float delayBetweenSpawn = .6f;
protected override void Start()
{
base.Start();
MapManager_SpawnState spawnState =
new MapManager_SpawnState(characterList, characterPrefab, spawnPoints, delayBeforeFirstSpawn, delayBetweenSpawn);
spawnState.onSpawnOver += (_, _) => ChangeState();
ChangeState(spawnState);
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: e2c07e2ea440472a8e65c55a9ba005b3
timeCreated: 1759432414

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 2dd8bd760a7040bfa6d661420f71de39
timeCreated: 1759433080

View File

@ -1,55 +0,0 @@
using System;
using System.Collections.Generic;
using MedievalParty.Core;
using UnityEngine;
namespace MedievalParty.Map.States
{
public class MapManager_SpawnState: IState
{
public event EventHandler onSpawnOver;
private CharacterListSO _characterList;
private readonly CharacterObject _characterPrefab;
private readonly List<Transform> _spawnPoints;
private readonly float _delayBeforeFirstSpawn;
private readonly float _delayBetweenSpawn;
private float _delay;
private int _index;
public MapManager_SpawnState(CharacterListSO characterList, CharacterObject characterPrefab, List<Transform> spawnPoints, float delayBeforeFirstSpawn, float delayBetweenSpawn)
{
_characterList = characterList;
_characterPrefab = characterPrefab;
_spawnPoints = spawnPoints;
_delayBeforeFirstSpawn = delayBeforeFirstSpawn;
_delayBetweenSpawn = delayBetweenSpawn;
}
public void OnEnter()
{
_delay = _delayBeforeFirstSpawn;
_index = 0;
}
public void OnExit() { }
public void OnUpdate()
{
_delay -= Time.deltaTime;
if (_delay <= 0)
{
CharacterObject obj = GameObject.Instantiate(_characterPrefab, _spawnPoints[_index].position, Quaternion.identity);
obj.SetCharacter(_characterList.Characters[_index]);
_delay = _delayBetweenSpawn;
_index ++;
if(_index >= _characterList.Characters.Count)
onSpawnOver?.Invoke(this, EventArgs.Empty);
}
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 1584604e3d7644b288bca00e76b8d0d1
timeCreated: 1759433169