diff --git a/.gitattributes b/.gitattributes index 7f9492298..9ee6a94f2 100644 --- a/.gitattributes +++ b/.gitattributes @@ -10,20 +10,20 @@ *.uss text # --- Unity YAML 형식 에셋 (텍스트 기반) --- # 병합 품질 향상을 위해 Unity Smart Merge 드라이버 사용 -*.meta text merge=unityyamlmerge eol=lf -*.unity text merge=unityyamlmerge eol=lf -*.prefab text merge=unityyamlmerge eol=lf -*.asset filter=lfs diff=lfs merge=lfs -text -*.mat text merge=unityyamlmerge eol=lf -*.anim text merge=unityyamlmerge eol=lf -*.controller text merge=unityyamlmerge eol=lf -*.overrideController text merge=unityyamlmerge eol=lf -*.mask text merge=unityyamlmerge eol=lf -*.lighting text merge=unityyamlmerge eol=lf -*.renderTexture text merge=unityyamlmerge eol=lf -*.timeline text merge=unityyamlmerge eol=lf -*.playable text merge=unityyamlmerge eol=lf -*.spriteatlasv2 text merge=unityyamlmerge eol=lf +*.meta text merge=unityyamlmerge eol=lf -diff +*.unity text merge=unityyamlmerge eol=lf -diff +*.prefab text merge=unityyamlmerge eol=lf -diff +*.asset filter=lfs diff=lfs merge=lfs -text -diff +*.mat text merge=unityyamlmerge eol=lf -diff +*.anim text merge=unityyamlmerge eol=lf -diff +*.controller text merge=unityyamlmerge eol=lf -diff +*.overrideController text merge=unityyamlmerge eol=lf -diff +*.mask text merge=unityyamlmerge eol=lf -diff +*.lighting text merge=unityyamlmerge eol=lf -diff +*.renderTexture text merge=unityyamlmerge eol=lf -diff +*.timeline text merge=unityyamlmerge eol=lf -diff +*.playable text merge=unityyamlmerge eol=lf -diff +*.spriteatlasv2 text merge=unityyamlmerge eol=lf -diff # 참고: 각자 로컬 Git에 merge.unityyamlmerge.driver를 등록해야 실제로 동작합니다. # --- Git LFS 관리 대상 바이너리 파일들 --- # 이미지 diff --git a/Assets/_DDD/_Addressables/AI/Customer/Subtree/CustomerDefault.asset b/Assets/_DDD/_Addressables/AI/Customer/Subtree/CustomerDefault.asset index 82b1dc889..60c7d1530 100644 --- a/Assets/_DDD/_Addressables/AI/Customer/Subtree/CustomerDefault.asset +++ b/Assets/_DDD/_Addressables/AI/Customer/Subtree/CustomerDefault.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8cf20b556c79f13fe62788fd710d11e330f8ff35845fdb1205afdbe21bdf3530 -size 65015 +oid sha256:61af29ad3709aee08733b30c715f6f318e7f99be67a7a7486eb4cfd72556e972 +size 66395 diff --git a/Assets/_DDD/_Addressables/AI/Customer/Subtree/OrderSubtree.asset b/Assets/_DDD/_Addressables/AI/Customer/Subtree/OrderSubtree.asset index 6ff001db6..3d590a8bc 100644 --- a/Assets/_DDD/_Addressables/AI/Customer/Subtree/OrderSubtree.asset +++ b/Assets/_DDD/_Addressables/AI/Customer/Subtree/OrderSubtree.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:28c1a3c2113f824ca9b3493aa71a73bffa3040160b830e2fde428b5c7bbe1610 -size 16553 +oid sha256:c056ea00663888d9d498dac759d78c1cd3442253b080a0bfddac6eee22b77924 +size 22107 diff --git a/Assets/_DDD/_Addressables/Prefabs/CustomerNpc.prefab b/Assets/_DDD/_Addressables/Prefabs/CustomerNpc.prefab index cab81ba4e..bdc58f52b 100644 --- a/Assets/_DDD/_Addressables/Prefabs/CustomerNpc.prefab +++ b/Assets/_DDD/_Addressables/Prefabs/CustomerNpc.prefab @@ -18,7 +18,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: m_Data.m_UniqueID - value: -154127738 + value: -363672009 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: m_Data.m_TaskData.Array.size @@ -30,7 +30,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: m_Data.m_SharedVariableData.Array.size - value: 3 + value: 0 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: m_Data.m_TaskData.Array.data[0].m_Version @@ -74,8 +74,8 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: m_Data.m_SharedVariableData.Array.data[0].m_ObjectType - value: 'Opsive.GraphDesigner.Runtime.Variables.SharedVariable`1[[System.String, - mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' + value: 'Opsive.GraphDesigner.Runtime.Variables.SharedVariable`1[[UnityEngine.GameObject, + UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]' objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: m_Data.m_SharedVariableData.Array.data[1].m_ObjectType @@ -426,11 +426,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: m_Data.m_SharedVariableData.Array.data[0].m_Values.Array.size - value: 15 + value: 29 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: m_Data.m_SharedVariableData.Array.data[1].m_Values.Array.size - value: 19 + value: 29 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: m_Data.m_SharedVariableData.Array.data[2].m_Values.Array.size @@ -558,75 +558,75 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[2]' - value: 115 - objectReference: {fileID: 0} - - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} - propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[3]' - value: 116 - objectReference: {fileID: 0} - - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} - propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[4]' - value: 111 - objectReference: {fileID: 0} - - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} - propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[5]' - value: 109 - objectReference: {fileID: 0} - - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} - propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[6]' - value: 101 - objectReference: {fileID: 0} - - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} - propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[7]' value: 114 objectReference: {fileID: 0} + - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} + propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[3]' + value: 114 + objectReference: {fileID: 0} + - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} + propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[4]' + value: 101 + objectReference: {fileID: 0} + - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} + propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[5]' + value: 110 + objectReference: {fileID: 0} + - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} + propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[6]' + value: 116 + objectReference: {fileID: 0} + - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} + propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[7]' + value: 73 + objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[8]' - value: 68 + value: 110 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[9]' - value: 97 + value: 116 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[0]' - value: 83 + value: 67 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[1]' - value: 101 + value: 117 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[2]' - value: 108 + value: 114 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[3]' - value: 102 + value: 114 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[4]' - value: 71 - objectReference: {fileID: 0} - - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} - propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[5]' - value: 97 - objectReference: {fileID: 0} - - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} - propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[6]' - value: 109 - objectReference: {fileID: 0} - - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} - propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[7]' value: 101 objectReference: {fileID: 0} + - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} + propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[5]' + value: 110 + objectReference: {fileID: 0} + - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} + propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[6]' + value: 116 + objectReference: {fileID: 0} + - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} + propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[7]' + value: 73 + objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[8]' - value: 79 + value: 110 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[9]' - value: 98 + value: 116 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[2].m_Values.Array.data[0]' @@ -742,23 +742,23 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[10]' - value: 116 + value: 101 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[11]' - value: 97 + value: 114 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[12]' - value: 73 + value: 97 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[13]' - value: 100 + value: 99 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[14]' - value: 2 + value: 116 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_Values.Array.data[15]' @@ -818,39 +818,39 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[10]' - value: 106 - objectReference: {fileID: 0} - - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} - propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[11]' value: 101 objectReference: {fileID: 0} + - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} + propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[11]' + value: 114 + objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[12]' - value: 99 + value: 97 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[13]' - value: 116 + value: 99 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[14]' - value: 2 + value: 116 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[15]' - value: 255 + value: 105 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[16]' - value: 255 + value: 111 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[17]' - value: 255 + value: 110 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[18]' - value: 255 + value: 84 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_Values.Array.data[19]' @@ -1374,27 +1374,27 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_ValuePositions.Array.data[1]' - value: 14 + value: 24 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_ValuePositions.Array.data[2]' - value: 14 + value: 24 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_ValuePositions.Array.data[3]' - value: 15 + value: 25 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_ValuePositions.Array.data[1]' - value: 14 + value: 24 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_ValuePositions.Array.data[2]' - value: 14 + value: 24 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_ValuePositions.Array.data[3]' - value: 15 + value: 25 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[2].m_ValuePositions.Array.data[1]' @@ -1422,7 +1422,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[0].m_LongValueHashes.Array.data[3]' - value: 2962117259711222017 + value: 3253260240476711 objectReference: {fileID: 0} - target: {fileID: 3854744934792897056, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} propertyPath: 'm_Data.m_SharedVariableData.Array.data[1].m_LongValueHashes.Array.data[0]' @@ -1782,9 +1782,6 @@ PrefabInstance: - targetCorrespondingSourceObject: {fileID: 7462519206451630147, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} insertIndex: -1 addedObject: {fileID: 3825874317044733320} - - targetCorrespondingSourceObject: {fileID: 7462519206451630147, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} - insertIndex: -1 - addedObject: {fileID: -2762894235068769830} m_SourcePrefab: {fileID: 100100000, guid: ceeea618d8ee23642a0e56b3f963448c, type: 3} --- !u!1 &4266090516809920735 stripped GameObject: @@ -1827,41 +1824,3 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: af69e82818254bfa9cabb2dbf9430850, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!114 &-2762894235068769830 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4266090516809920735} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0b02b4aaf7aa44843b836f6e31da7d39, type: 3} - m_Name: - m_EditorClassIdentifier: - m_SharedVariableData: - - m_ObjectType: 'Opsive.GraphDesigner.Runtime.Variables.SharedVariable`1[[System.String, - mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' - m_ValueHashes: - m_LongValueHashes: 0d00eb254f8d1b29baa620a07799d549a996976a4a64278901112428f48d1b29 - m_ValuePositions: 000000000e0000000e0000000f000000 - m_Values: 437573746f6d657244617461496403 - m_UnityObjects: [] - m_Version: 3.4 - - m_ObjectType: 'Opsive.GraphDesigner.Runtime.Variables.SharedVariable`1[[UnityEngine.GameObject, - UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]' - m_ValueHashes: - m_LongValueHashes: 0d00eb254f8d1b29baa620a07799d549a996976a4a64278927dafeacd28e0b00 - m_ValuePositions: 000000000e0000000e0000000f000000 - m_Values: 53656c6647616d654f626a65637403ffffffff - m_UnityObjects: [] - m_Version: 3.4 - - m_ObjectType: 'Opsive.GraphDesigner.Runtime.Variables.SharedVariable`1[[UnityEngine.GameObject, - UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]' - m_ValueHashes: - m_LongValueHashes: 0d00eb254f8d1b29baa620a07799d549a996976a4a64278927dafeacd28e0b00 - m_ValuePositions: 00000000180000001800000019000000 - m_Values: 43757272656e74496e746572616374696f6e54617267657403ffffffff - m_UnityObjects: [] - m_Version: 3.4 - m_UniqueID: -846296488 diff --git a/Assets/_DDD/_Scripts/AI/Common/IAISharedBlackboard.cs b/Assets/_DDD/_Scripts/AI/Common/IAISharedBlackboard.cs index 8136be741..b21a58bd7 100644 --- a/Assets/_DDD/_Scripts/AI/Common/IAISharedBlackboard.cs +++ b/Assets/_DDD/_Scripts/AI/Common/IAISharedBlackboard.cs @@ -9,7 +9,9 @@ namespace DDD /// public interface IAISharedBlackboard { - void SetBlackboardGameObject(string key, GameObject inGameObject); - GameObject GetBlackboardGameObject(string key); + + void SetBlackboardValue(string key, T inValue); + + T GetBlackboardValue(string key); } } diff --git a/Assets/_DDD/_Scripts/Restaurant/Character/AI/Common/Actions/LookAtInteractionTarget.cs b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Common/Actions/LookAtInteractionTarget.cs index 68058dfd2..4805bfbbe 100644 --- a/Assets/_DDD/_Scripts/Restaurant/Character/AI/Common/Actions/LookAtInteractionTarget.cs +++ b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Common/Actions/LookAtInteractionTarget.cs @@ -37,7 +37,7 @@ public override void OnStart() _isLooking = false; var blackboard = gameObject.GetComponent(); - _cachedTarget = blackboard.GetBlackboardGameObject(nameof(RestaurantCustomerBlackboardKey.CurrentInteractionTarget)); + _cachedTarget = blackboard.GetBlackboardValue(nameof(RestaurantCustomerBlackboardKey.CurrentInteractionTarget)); } public override TaskStatus OnUpdate() diff --git a/Assets/_DDD/_Scripts/Restaurant/Character/AI/Common/Actions/MoveToInteractionTarget.cs b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Common/Actions/MoveToInteractionTarget.cs index 1c37ad0f0..90f804fed 100644 --- a/Assets/_DDD/_Scripts/Restaurant/Character/AI/Common/Actions/MoveToInteractionTarget.cs +++ b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Common/Actions/MoveToInteractionTarget.cs @@ -41,7 +41,7 @@ public override void OnStart() _isMoving = false; var blackboard = gameObject.GetComponent(); - _target = blackboard.GetBlackboardGameObject(nameof(RestaurantCustomerBlackboardKey.CurrentInteractionTarget)); + _target = blackboard.GetBlackboardValue(nameof(RestaurantCustomerBlackboardKey.CurrentInteractionTarget)); } public override TaskStatus OnUpdate() diff --git a/Assets/_DDD/_Scripts/Restaurant/Character/AI/Common/Decorator/TimeLimiter.cs b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Common/Decorator/TimeLimiter.cs index 15c13cd29..7f6700017 100644 --- a/Assets/_DDD/_Scripts/Restaurant/Character/AI/Common/Decorator/TimeLimiter.cs +++ b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Common/Decorator/TimeLimiter.cs @@ -3,6 +3,7 @@ using Opsive.BehaviorDesigner.Runtime.Tasks; using Opsive.BehaviorDesigner.Runtime.Tasks.Decorators; using Opsive.GraphDesigner.Runtime; +using Opsive.GraphDesigner.Runtime.Variables; using Opsive.Shared.Utility; using Unity.Burst; using Unity.Entities; @@ -140,7 +141,9 @@ public struct TimeLimiterComponent : IBufferElementData public TaskStatus TimeoutStatus; } - public struct TimeLimiterTag : IComponentData, IEnableableComponent { } + public struct TimeLimiterTag : IComponentData, IEnableableComponent + { + } [DisableAutoCreation] public partial struct TimeLimiterTaskSystem : ISystem @@ -148,18 +151,19 @@ public partial struct TimeLimiterTaskSystem : ISystem [BurstCompile] private void OnUpdate(ref SystemState state) { - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW().WithAll().Build(); + var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW() + .WithAllRW().WithAll().Build(); state.Dependency = new TimeLimiterJob() { CurrentTime = (float)SystemAPI.Time.ElapsedTime }.ScheduleParallel(query, state.Dependency); } - + [BurstCompile] private partial struct TimeLimiterJob : IJobEntity { public float CurrentTime; - + [BurstCompile] public void Execute(ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, @@ -188,21 +192,24 @@ public void Execute(ref DynamicBuffer branchComponents, branchComponents[taskComponent.BranchIndex] = branchComponent; continue; } + if (taskComponent.Status != TaskStatus.Running) { continue; } - - if (timeLimiterComponent.StartTime >= 0f && - CurrentTime - timeLimiterComponent.StartTime >= timeLimiterComponent.TimeLimit) { + + if (timeLimiterComponent.StartTime >= 0f && + CurrentTime - timeLimiterComponent.StartTime >= timeLimiterComponent.TimeLimit) + { // 시간 초과 taskComponent.Status = timeLimiterComponent.TimeoutStatus; taskComponents[taskComponent.Index] = taskComponent; // 자식 태스크가 실행 중이면 중단 childTaskComponent = taskComponents[taskComponent.Index + 1]; - if (childTaskComponent.Status == TaskStatus.Running || - childTaskComponent.Status == TaskStatus.Queued) { + if (childTaskComponent.Status == TaskStatus.Running || + childTaskComponent.Status == TaskStatus.Queued) + { childTaskComponent.Status = timeLimiterComponent.TimeoutStatus; taskComponents[taskComponent.Index + 1] = childTaskComponent; } @@ -211,14 +218,15 @@ public void Execute(ref DynamicBuffer branchComponents, branchComponents[taskComponent.BranchIndex] = branchComponent; continue; } - + childTaskComponent = taskComponents[taskComponent.Index + 1]; - if (childTaskComponent.Status == TaskStatus.Queued || - childTaskComponent.Status == TaskStatus.Running) { + if (childTaskComponent.Status == TaskStatus.Queued || + childTaskComponent.Status == TaskStatus.Running) + { // The child should keep running. continue; } - + taskComponent.Status = childTaskComponent.Status; taskComponents[taskComponent.Index] = taskComponent; @@ -228,4 +236,94 @@ public void Execute(ref DynamicBuffer branchComponents, } } } + + [NodeDescription("자식 태스크의 실행 시간을 제한합니다 (GameObject 워크플로우)")] + public class SharedTimeLimiter : DecoratorNode + { + [Tooltip("최대 실행 시간(초)")] + [SerializeField] protected SharedVariable _timeLimit = 30f; + + [Tooltip("시간 초과 시 반환할 상태")] + [SerializeField] protected TaskStatus _timeoutStatus = TaskStatus.Failure; + + [Tooltip("하단 블랙보드 키에 현재 시간을 저장할 지")] + [SerializeField] protected bool _isBlackboardWriteEnabled = false; + [SerializeField] protected string _blackboardKey = "CurrentTime"; + + public SharedVariable TimeLimit + { + get => _timeLimit; + set => _timeLimit = value; + } + + public TaskStatus TimeoutStatus + { + get => _timeoutStatus; + set => _timeoutStatus = value; + } + + protected float _startTime; + private float _pauseTime = -1f; + + public override void OnStart() + { + base.OnStart(); + _startTime = Time.time; + } + + public override TaskStatus OnUpdate() + { + var taskComponents = m_BehaviorTree.World.EntityManager.GetBuffer(m_BehaviorTree.Entity); + ref var child = ref taskComponents.ElementAt(Index + 1); + + if (Time.time - _startTime >= _timeLimit.Value) + { + if (child.Status == TaskStatus.Running || child.Status == TaskStatus.Queued) + { + child.Status = _timeoutStatus; + taskComponents[Index + 1] = child; + } + + return _timeoutStatus; + } + + if (child.Status == TaskStatus.Success || child.Status == TaskStatus.Failure) + { + return child.Status; + } + + return TaskStatus.Running; + } + + public override void OnBehaviorTreeStopped(bool paused) + { + base.OnBehaviorTreeStopped(paused); + if (paused) _pauseTime = Time.time; + } + + public override void OnBehaviorTreeStarted() + { + base.OnBehaviorTreeStarted(); + if (_pauseTime >= 0f) + { + _startTime += (Time.time - _pauseTime); + _pauseTime = -1f; + } + } + + public override MemberVisibility GetSaveReflectionType(int index) => MemberVisibility.None; + + public override object Save(World world, Entity entity) + { + // [제한 시간, 경과 시간] 저장 + return new object[] { _timeLimit.Value, Time.time - _startTime }; + } + + public override void Load(object saveData, World world, Entity entity) + { + var data = (object[])saveData; + _timeLimit.Value = (float)data[0]; + _startTime = Time.time - (float)data[1]; + } + } } \ No newline at end of file diff --git a/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Actions/StartRestaurantOrder.cs b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Actions/StartRestaurantOrder.cs index f294c5c79..ba29130bd 100644 --- a/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Actions/StartRestaurantOrder.cs +++ b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Actions/StartRestaurantOrder.cs @@ -23,7 +23,7 @@ public override void OnStart() public override TaskStatus OnUpdate() { var blackboard = gameObject.GetComponent(); - var target = blackboard?.GetBlackboardGameObject(nameof(RestaurantCustomerBlackboardKey.CurrentInteractionTarget)); + var target = blackboard?.GetBlackboardValue(nameof(RestaurantCustomerBlackboardKey.CurrentInteractionTarget)); IInteractable currentInteractable = target?.GetComponent(); if (_targetOrderType == RestaurantOrderType.Wait) { @@ -34,7 +34,7 @@ public override TaskStatus OnUpdate() return TaskStatus.Failure; } var customerBlackboard = gameObject.GetComponent(); - customerBlackboard?.SetBlackboardGameObject(nameof(RestaurantCustomerBlackboardKey.CurrentInteractionTarget), currentInteractable.GetInteractableGameObject()); + customerBlackboard?.SetBlackboardValue(nameof(RestaurantCustomerBlackboardKey.CurrentInteractionTarget), currentInteractable.GetInteractableGameObject()); } // Check order type of the current interactable @@ -71,7 +71,7 @@ public override TaskStatus OnUpdate() if (_targetOrderType == RestaurantOrderType.Busy) { var customerBlackboard = gameObject.GetComponent(); - customerBlackboard?.SetBlackboardGameObject(nameof(RestaurantCustomerBlackboardKey.CurrentInteractionTarget), null); + customerBlackboard?.SetBlackboardValue(nameof(RestaurantCustomerBlackboardKey.CurrentInteractionTarget), null); } return TaskStatus.Success; diff --git a/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Actions/WaitForPlayerInteraction.cs b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Actions/WaitForPlayerInteraction.cs index c661a508d..934bb7159 100644 --- a/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Actions/WaitForPlayerInteraction.cs +++ b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Actions/WaitForPlayerInteraction.cs @@ -18,7 +18,7 @@ public override void OnStart() GameObject interactionTarget = null; if (!gameObject.TryGetComponent(out var sharedBlackboard)) return; interactionTarget = - sharedBlackboard.GetBlackboardGameObject( + sharedBlackboard.GetBlackboardValue( nameof(RestaurantCustomerBlackboardKey.CurrentInteractionTarget)); if (interactionTarget == null) diff --git a/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/CustomerBlackboardComponent.cs b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/CustomerBlackboardComponent.cs index ac9b3b539..ed6398a68 100644 --- a/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/CustomerBlackboardComponent.cs +++ b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/CustomerBlackboardComponent.cs @@ -7,36 +7,30 @@ namespace DDD public class CustomerBlackboardComponent : MonoBehaviour, ICustomerBlackboard, IAISharedBlackboard { private BehaviorTree _behaviorTree; - //private GameObjectSharedVariables _sharedVariables; public void InitializeWithBehaviorTree(BehaviorTree inBehaviorTree) { - //_sharedVariables = GetComponent(); _behaviorTree = inBehaviorTree; - if (!_behaviorTree) return; - //_sharedVariables.SetVariableValue(nameof(RestaurantCustomerBlackboardKey.SelfGameObject), gameObject); - _behaviorTree.SetVariableValue(nameof(RestaurantCustomerBlackboardKey.SelfGameObject), gameObject, SharedVariable.SharingScope.GameObject); + SetBlackboardValue(nameof(RestaurantCustomerBlackboardKey.SelfGameObject), gameObject); } public void SetCustomerData(string inCustomerDataId) { - if (!_behaviorTree) return; - //_sharedVariables.SetVariableValue(nameof(RestaurantCustomerBlackboardKey.SelfGameObject), gameObject); - _behaviorTree.SetVariableValue(nameof(RestaurantCustomerBlackboardKey.CustomerDataId), inCustomerDataId, SharedVariable.SharingScope.GameObject); - } - - public void SetBlackboardGameObject(string key, GameObject inGameObject) - { - if (!_behaviorTree) return; - //_sharedVariables.SetVariableValue(nameof(RestaurantCustomerBlackboardKey.SelfGameObject), gameObject); - _behaviorTree.SetVariableValue(key, inGameObject, SharedVariable.SharingScope.GameObject); + SetBlackboardValue(nameof(RestaurantCustomerBlackboardKey.CustomerDataId), inCustomerDataId); } - public GameObject GetBlackboardGameObject(string key) + public void SetBlackboardValue(string key, T inValue) { - if (!_behaviorTree) return null; - //return _sharedVariables.GetVariable(key).Value; - return _behaviorTree.GetVariable(key, SharedVariable.SharingScope.GameObject)?.Value; + if (!_behaviorTree) return; + _behaviorTree.SetVariableValue(key, inValue); + } + + public T GetBlackboardValue(string key) + { + if (!_behaviorTree) return default; + SharedVariable blackboardValue = _behaviorTree.GetVariable(key); + + return blackboardValue != null ? blackboardValue.Value : default; } } } \ No newline at end of file diff --git a/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Decorator.meta b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Decorator.meta new file mode 100644 index 000000000..31757848f --- /dev/null +++ b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Decorator.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: dd35b9ad54934727805aa8a9e232cffd +timeCreated: 1756440681 \ No newline at end of file diff --git a/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Decorator/CustomerTimeLimiter.cs b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Decorator/CustomerTimeLimiter.cs new file mode 100644 index 000000000..f3e211edb --- /dev/null +++ b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Decorator/CustomerTimeLimiter.cs @@ -0,0 +1,29 @@ +using Opsive.BehaviorDesigner.Runtime.Tasks; +using UnityEngine; + +namespace DDD.Restaurant +{ + public class CustomerTimeLimiter : SharedTimeLimiter + { + private IAISharedBlackboard _blackboard; + public override void OnStart() + { + base.OnStart(); + if (!_isBlackboardWriteEnabled) return; + if (!gameObject.TryGetComponent(out _blackboard)) + { + Debug.LogError($"[{GetType().Name}] 블랙보드를 찾을 수 없습니다. 게임오브젝트 해시코드: {gameObject.GetHashCode()}"); + } + } + + public override TaskStatus OnUpdate() + { + if (_isBlackboardWriteEnabled && _blackboard != null) + { + _blackboard.SetBlackboardValue(_blackboardKey, Time.time - _startTime); + } + + return base.OnUpdate(); + } + } +} \ No newline at end of file diff --git a/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Decorator/CustomerTimeLimiter.cs.meta b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Decorator/CustomerTimeLimiter.cs.meta new file mode 100644 index 000000000..9f8884e00 --- /dev/null +++ b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/Decorator/CustomerTimeLimiter.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 546f038ee64e401fb67a4ba7d8717b7f +timeCreated: 1756440694 \ No newline at end of file diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index ed8485fa0..b1d747c7b 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f86abe14bf9fc4c7c93dfa96efd110ef0f56c3fb96a952c57e06a723fc87c352 +oid sha256:5d69f9ac4352f59df16943fd905dd7351328f295b2a8e4f74e8346f7bd4dc1bc size 1075