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..26d33033c 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:5193e6649c5835cd58152452f8f166e0e9678c87e98b437b80bdb35c5f173369 +size 20321 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/Restaurant/Character/AI/Common/Decorator/TimeLimiter.cs b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Common/Decorator/TimeLimiter.cs index 15c13cd29..4adb569c6 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,90 @@ public void Execute(ref DynamicBuffer branchComponents, } } } + + [NodeDescription("자식 태스크의 실행 시간을 제한합니다 (GameObject 워크플로우)")] + public class SharedTimeLimiter : DecoratorNode + { + [Tooltip("최대 실행 시간(초)")] + [SerializeField] private SharedVariable m_TimeLimit = 30f; + + [Tooltip("시간 초과 시 반환할 상태")] + [SerializeField] private TaskStatus m_TimeoutStatus = TaskStatus.Failure; + + public SharedVariable TimeLimit + { + get => m_TimeLimit; + set => m_TimeLimit = value; + } + + public TaskStatus TimeoutStatus + { + get => m_TimeoutStatus; + set => m_TimeoutStatus = value; + } + + private float m_StartTime; + private float m_PauseTime = -1f; + + public override void OnStart() + { + base.OnStart(); + m_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 - m_StartTime >= m_TimeLimit.Value) + { + if (child.Status == TaskStatus.Running || child.Status == TaskStatus.Queued) + { + child.Status = m_TimeoutStatus; + taskComponents[Index + 1] = child; + } + + return m_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) m_PauseTime = Time.time; + } + + public override void OnBehaviorTreeStarted() + { + base.OnBehaviorTreeStarted(); + if (m_PauseTime >= 0f) + { + m_StartTime += (Time.time - m_PauseTime); + m_PauseTime = -1f; + } + } + + public override MemberVisibility GetSaveReflectionType(int index) => MemberVisibility.None; + + public override object Save(World world, Entity entity) + { + // [제한 시간, 경과 시간] 저장 + return new object[] { m_TimeLimit.Value, Time.time - m_StartTime }; + } + + public override void Load(object saveData, World world, Entity entity) + { + var data = (object[])saveData; + m_TimeLimit.Value = (float)data[0]; + m_StartTime = Time.time - (float)data[1]; + } + } } \ No newline at end of file diff --git a/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/CustomerBlackboardComponent.cs b/Assets/_DDD/_Scripts/Restaurant/Character/AI/Customer/CustomerBlackboardComponent.cs index ac9b3b539..af5437e41 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); + _behaviorTree.SetVariableValue(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); + _behaviorTree.SetVariableValue(nameof(RestaurantCustomerBlackboardKey.CustomerDataId), inCustomerDataId); } public void SetBlackboardGameObject(string key, GameObject inGameObject) { if (!_behaviorTree) return; - //_sharedVariables.SetVariableValue(nameof(RestaurantCustomerBlackboardKey.SelfGameObject), gameObject); - _behaviorTree.SetVariableValue(key, inGameObject, SharedVariable.SharingScope.GameObject); + _behaviorTree.SetVariableValue(key, inGameObject); } public GameObject GetBlackboardGameObject(string key) { if (!_behaviorTree) return null; - //return _sharedVariables.GetVariable(key).Value; - return _behaviorTree.GetVariable(key, SharedVariable.SharingScope.GameObject)?.Value; + return _behaviorTree.GetVariable(key)?.Value; } } } \ No newline at end of file