From 0082c0b727b379352658c315cd2ffda8f4a76327 Mon Sep 17 00:00:00 2001 From: Joywayer Date: Wed, 27 May 2026 16:28:40 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=20bd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com.opsive.behaviordesigner/Editor.meta | 8 - .../Editor/Icons.meta | 8 - .../Editor/Icons/BehaviorDesignerIcon.png | Bin 3412 -> 0 bytes .../Icons/BehaviorDesignerIcon.png.meta | 104 - .../Editor/Icons/DarkActiveStackedTask.png | Bin 1477 -> 0 bytes .../Icons/DarkActiveStackedTask.png.meta | 127 -- .../Editor/Icons/DarkCollapsedSlot.png | Bin 1012 -> 0 bytes .../Editor/Icons/DarkCollapsedSlot.png.meta | 140 -- .../Icons/DarkConditionalAbortBothIcon.png | Bin 1315 -> 0 bytes .../DarkConditionalAbortBothIcon.png.meta | 140 -- .../DarkConditionalAbortLowerPriorityIcon.png | Bin 1252 -> 0 bytes ...ConditionalAbortLowerPriorityIcon.png.meta | 140 -- .../Icons/DarkConditionalAbortSelfIcon.png | Bin 1256 -> 0 bytes .../DarkConditionalAbortSelfIcon.png.meta | 140 -- .../Editor/Icons/DarkExecutionFailure.png | Bin 374 -> 0 bytes .../Icons/DarkExecutionFailure.png.meta | 127 -- .../Icons/DarkExecutionFailureReevaluate.png | Bin 1397 -> 0 bytes .../DarkExecutionFailureReevaluate.png.meta | 127 -- .../Editor/Icons/DarkExecutionSuccess.png | Bin 332 -> 0 bytes .../Icons/DarkExecutionSuccess.png.meta | 127 -- .../Icons/DarkExecutionSuccessReevaluate.png | Bin 1374 -> 0 bytes .../DarkExecutionSuccessReevaluate.png.meta | 127 -- .../Editor/Icons/LightActiveStackedTask.png | Bin 1516 -> 0 bytes .../Icons/LightActiveStackedTask.png.meta | 127 -- .../Editor/Icons/LightCollapsedSlot.png | Bin 1007 -> 0 bytes .../Editor/Icons/LightCollapsedSlot.png.meta | 140 -- .../Icons/LightConditionalAbortBothIcon.png | Bin 1250 -> 0 bytes .../LightConditionalAbortBothIcon.png.meta | 140 -- ...LightConditionalAbortLowerPriorityIcon.png | Bin 1224 -> 0 bytes ...ConditionalAbortLowerPriorityIcon.png.meta | 140 -- .../Icons/LightConditionalAbortSelfIcon.png | Bin 1234 -> 0 bytes .../LightConditionalAbortSelfIcon.png.meta | 140 -- .../Editor/Icons/LightExecutionFailure.png | Bin 368 -> 0 bytes .../Icons/LightExecutionFailure.png.meta | 140 -- .../Icons/LightExecutionFailureReevaluate.png | Bin 1413 -> 0 bytes .../LightExecutionFailureReevaluate.png.meta | 140 -- .../Editor/Icons/LightExecutionSuccess.png | Bin 302 -> 0 bytes .../Icons/LightExecutionSuccess.png.meta | 140 -- .../Icons/LightExecutionSuccessReevaluate.png | Bin 1392 -> 0 bytes .../LightExecutionSuccessReevaluate.png.meta | 140 -- .../Editor/Icons/Tasks.meta | 8 - .../Editor/Icons/Tasks/DarkActionIcon.png | Bin 1403 -> 0 bytes .../Icons/Tasks/DarkActionIcon.png.meta | 140 -- .../Editor/Icons/Tasks/DarkCompositeIcon.png | Bin 1064 -> 0 bytes .../Icons/Tasks/DarkCompositeIcon.png.meta | 140 -- .../Tasks/DarkConditionalEvaluatorIcon.png | Bin 2214 -> 0 bytes .../DarkConditionalEvaluatorIcon.png.meta | 140 -- .../Icons/Tasks/DarkConditionalIcon.png | Bin 1075 -> 0 bytes .../Icons/Tasks/DarkConditionalIcon.png.meta | 140 -- .../Editor/Icons/Tasks/DarkCooldownIcon.png | Bin 2077 -> 0 bytes .../Icons/Tasks/DarkCooldownIcon.png.meta | 140 -- .../Editor/Icons/Tasks/DarkDecoratorIcon.png | Bin 1229 -> 0 bytes .../Icons/Tasks/DarkDecoratorIcon.png.meta | 140 -- .../Editor/Icons/Tasks/DarkEventIcon.png | Bin 1504 -> 0 bytes .../Editor/Icons/Tasks/DarkEventIcon.png.meta | 140 -- .../Icons/Tasks/DarkHasReceivedEventIcon.png | Bin 1173 -> 0 bytes .../Tasks/DarkHasReceivedEventIcon.png.meta | 140 -- .../Editor/Icons/Tasks/DarkIdleIcon.png | Bin 1656 -> 0 bytes .../Editor/Icons/Tasks/DarkIdleIcon.png.meta | 140 -- .../Editor/Icons/Tasks/DarkInverterIcon.png | Bin 1091 -> 0 bytes .../Icons/Tasks/DarkInverterIcon.png.meta | 140 -- .../Editor/Icons/Tasks/DarkIteratorIcon.png | Bin 2210 -> 0 bytes .../Icons/Tasks/DarkIteratorIcon.png.meta | 140 -- .../Editor/Icons/Tasks/DarkLogIcon.png | Bin 1202 -> 0 bytes .../Editor/Icons/Tasks/DarkLogIcon.png.meta | 140 -- .../Icons/Tasks/DarkOnInterruptIcon.png | Bin 1146 -> 0 bytes .../Icons/Tasks/DarkOnInterruptIcon.png.meta | 140 -- .../Icons/Tasks/DarkOnPhysicsCallbackIcon.png | Bin 2410 -> 0 bytes .../Tasks/DarkOnPhysicsCallbackIcon.png.meta | 140 -- .../Editor/Icons/Tasks/DarkParallelIcon.png | Bin 1258 -> 0 bytes .../Icons/Tasks/DarkParallelIcon.png.meta | 140 -- .../Icons/Tasks/DarkParallelSelectorIcon.png | Bin 1433 -> 0 bytes .../Tasks/DarkParallelSelectorIcon.png.meta | 140 -- .../Tasks/DarkPerformInterruptionIcon.png | Bin 1363 -> 0 bytes .../DarkPerformInterruptionIcon.png.meta | 140 -- .../Icons/Tasks/DarkPrioritySelectorIcon.png | Bin 1287 -> 0 bytes .../Tasks/DarkPrioritySelectorIcon.png.meta | 140 -- .../Icons/Tasks/DarkRandomProbabilityIcon.png | Bin 1264 -> 0 bytes .../Tasks/DarkRandomProbabilityIcon.png.meta | 140 -- .../Icons/Tasks/DarkRandomSelectorIcon.png | Bin 1346 -> 0 bytes .../Tasks/DarkRandomSelectorIcon.png.meta | 140 -- .../Icons/Tasks/DarkRandomSequenceIcon.png | Bin 1359 -> 0 bytes .../Tasks/DarkRandomSequenceIcon.png.meta | 140 -- .../Editor/Icons/Tasks/DarkRepeaterIcon.png | Bin 2170 -> 0 bytes .../Icons/Tasks/DarkRepeaterIcon.png.meta | 140 -- .../Icons/Tasks/DarkReturnFailureIcon.png | Bin 1558 -> 0 bytes .../Tasks/DarkReturnFailureIcon.png.meta | 140 -- .../Icons/Tasks/DarkReturnSuccessIcon.png | Bin 1468 -> 0 bytes .../Tasks/DarkReturnSuccessIcon.png.meta | 140 -- .../Editor/Icons/Tasks/DarkSelectorIcon.png | Bin 1598 -> 0 bytes .../Icons/Tasks/DarkSelectorIcon.png.meta | 140 -- .../Editor/Icons/Tasks/DarkSendEventIcon.png | Bin 1108 -> 0 bytes .../Icons/Tasks/DarkSendEventIcon.png.meta | 140 -- .../Editor/Icons/Tasks/DarkSequenceIcon.png | Bin 1207 -> 0 bytes .../Icons/Tasks/DarkSequenceIcon.png.meta | 140 -- .../Icons/Tasks/DarkStackedActionIcon.png | Bin 1231 -> 0 bytes .../Tasks/DarkStackedActionIcon.png.meta | 140 -- .../Tasks/DarkStackedConditionalIcon.png | Bin 1289 -> 0 bytes .../Tasks/DarkStackedConditionalIcon.png.meta | 140 -- .../Editor/Icons/Tasks/DarkStartIcon.png | Bin 3147 -> 0 bytes .../Editor/Icons/Tasks/DarkStartIcon.png.meta | 140 -- .../Icons/Tasks/DarkUntilFailureIcon.png | Bin 2406 -> 0 bytes .../Icons/Tasks/DarkUntilFailureIcon.png.meta | 140 -- .../Icons/Tasks/DarkUntilSuccessIcon.png | Bin 2310 -> 0 bytes .../Icons/Tasks/DarkUntilSuccessIcon.png.meta | 140 -- .../Icons/Tasks/DarkUtilitySelectorIcon.png | Bin 594 -> 0 bytes .../Tasks/DarkUtilitySelectorIcon.png.meta | 140 -- .../Editor/Icons/Tasks/DarkWaitIcon.png | Bin 1852 -> 0 bytes .../Editor/Icons/Tasks/DarkWaitIcon.png.meta | 140 -- .../Editor/Icons/Tasks/LightActionIcon.png | Bin 1404 -> 0 bytes .../Icons/Tasks/LightActionIcon.png.meta | 140 -- .../Editor/Icons/Tasks/LightCompositeIcon.png | Bin 1061 -> 0 bytes .../Icons/Tasks/LightCompositeIcon.png.meta | 140 -- .../Icons/Tasks/LightConditionalEvaluator.png | Bin 2020 -> 0 bytes .../Tasks/LightConditionalEvaluator.png.meta | 140 -- .../Icons/Tasks/LightConditionalIcon.png | Bin 1052 -> 0 bytes .../Icons/Tasks/LightConditionalIcon.png.meta | 140 -- .../Editor/Icons/Tasks/LightCooldownIcon.png | Bin 2188 -> 0 bytes .../Icons/Tasks/LightCooldownIcon.png.meta | 140 -- .../Editor/Icons/Tasks/LightDecoratorIcon.png | Bin 1199 -> 0 bytes .../Icons/Tasks/LightDecoratorIcon.png.meta | 140 -- .../Editor/Icons/Tasks/LightEventIcon.png | Bin 1505 -> 0 bytes .../Icons/Tasks/LightEventIcon.png.meta | 140 -- .../Icons/Tasks/LightHasReceivedEventIcon.png | Bin 1158 -> 0 bytes .../Tasks/LightHasReceivedEventIcon.png.meta | 140 -- .../Editor/Icons/Tasks/LightIdleIcon.png | Bin 1631 -> 0 bytes .../Editor/Icons/Tasks/LightIdleIcon.png.meta | 140 -- .../Editor/Icons/Tasks/LightInverterIcon.png | Bin 1430 -> 0 bytes .../Icons/Tasks/LightInverterIcon.png.meta | 140 -- .../Editor/Icons/Tasks/LightIteratorIcon.png | Bin 1980 -> 0 bytes .../Icons/Tasks/LightIteratorIcon.png.meta | 140 -- .../Editor/Icons/Tasks/LightLogIcon.png | Bin 1189 -> 0 bytes .../Editor/Icons/Tasks/LightLogIcon.png.meta | 140 -- .../Icons/Tasks/LightOnInterruptIcon.png | Bin 1231 -> 0 bytes .../Icons/Tasks/LightOnInterruptIcon.png.meta | 140 -- .../Tasks/LightOnPhysicsCallbackIcon.png | Bin 2438 -> 0 bytes .../Tasks/LightOnPhysicsCallbackIcon.png.meta | 140 -- .../Editor/Icons/Tasks/LightParallelIcon.png | Bin 1179 -> 0 bytes .../Icons/Tasks/LightParallelIcon.png.meta | 140 -- .../Icons/Tasks/LightParallelSelectorIcon.png | Bin 1376 -> 0 bytes .../Tasks/LightParallelSelectorIcon.png.meta | 140 -- .../Tasks/LightPerformInterruptionIcon.png | Bin 1334 -> 0 bytes .../LightPerformInterruptionIcon.png.meta | 140 -- .../Icons/Tasks/LightPrioritySelectorIcon.png | Bin 1269 -> 0 bytes .../Tasks/LightPrioritySelectorIcon.png.meta | 140 -- .../Tasks/LightRandomProbabilityIcon.png | Bin 1282 -> 0 bytes .../Tasks/LightRandomProbabilityIcon.png.meta | 140 -- .../Icons/Tasks/LightRandomSelectorIcon.png | Bin 1346 -> 0 bytes .../Tasks/LightRandomSelectorIcon.png.meta | 140 -- .../Icons/Tasks/LightRandomSequenceIcon.png | Bin 1296 -> 0 bytes .../Tasks/LightRandomSequenceIcon.png.meta | 140 -- .../Editor/Icons/Tasks/LightRepeaterIcon.png | Bin 2287 -> 0 bytes .../Icons/Tasks/LightRepeaterIcon.png.meta | 140 -- .../Icons/Tasks/LightReturnFailureIcon.png | Bin 1662 -> 0 bytes .../Tasks/LightReturnFailureIcon.png.meta | 140 -- .../Icons/Tasks/LightReturnSuccessIcon.png | Bin 1517 -> 0 bytes .../Tasks/LightReturnSuccessIcon.png.meta | 140 -- .../Editor/Icons/Tasks/LightSelectorIcon.png | Bin 1695 -> 0 bytes .../Icons/Tasks/LightSelectorIcon.png.meta | 140 -- .../Editor/Icons/Tasks/LightSendEventIcon.png | Bin 1111 -> 0 bytes .../Icons/Tasks/LightSendEventIcon.png.meta | 140 -- .../Editor/Icons/Tasks/LightSequenceIcon.png | Bin 1154 -> 0 bytes .../Icons/Tasks/LightSequenceIcon.png.meta | 140 -- .../Icons/Tasks/LightStackedActionIcon.png | Bin 1165 -> 0 bytes .../Tasks/LightStackedActionIcon.png.meta | 140 -- .../Tasks/LightStackedConditionalIcon.png | Bin 1277 -> 0 bytes .../LightStackedConditionalIcon.png.meta | 140 -- .../Editor/Icons/Tasks/LightStartIcon.png | Bin 1210 -> 0 bytes .../Icons/Tasks/LightStartIcon.png.meta | 140 -- .../Icons/Tasks/LightUntilFailureIcon.png | Bin 2536 -> 0 bytes .../Tasks/LightUntilFailureIcon.png.meta | 140 -- .../Icons/Tasks/LightUntilSuccessIcon.png | Bin 2436 -> 0 bytes .../Tasks/LightUntilSuccessIcon.png.meta | 140 -- .../Icons/Tasks/LightUtilitySelectorIcon.png | Bin 623 -> 0 bytes .../Tasks/LightUtilitySelectorIcon.png.meta | 140 -- .../Editor/Icons/Tasks/LightWaitIcon.png | Bin 2338 -> 0 bytes .../Editor/Icons/Tasks/LightWaitIcon.png.meta | 140 -- .../Editor/Managers.meta | 8 - .../Editor/Managers/AddOnsManager.cs | 18 - .../Editor/Managers/AddOnsManager.cs.meta | 11 - .../Editor/Managers/AssetInfo.cs | 19 - .../Editor/Managers/AssetInfo.cs.meta | 11 - .../Editor/Managers/BehaviorMainWindow.cs | 68 - .../Managers/BehaviorMainWindow.cs.meta | 12 - .../Editor/Managers/Images.meta | 8 - .../Editor/Managers/Images/Editor.png | Bin 6697 -> 0 bytes .../Editor/Managers/Images/Editor.png.meta | 140 -- .../Editor/Managers/Images/Repository.png | Bin 5030 -> 0 bytes .../Managers/Images/Repository.png.meta | 140 -- .../Editor/Managers/IntegrationsManager.cs | 18 - .../Managers/IntegrationsManager.cs.meta | 11 - ...ve.BehaviorDesigner.Editor.Managers.asmdef | 29 - ...haviorDesigner.Editor.Managers.asmdef.meta | 7 - .../Editor/Managers/SamplesManager.cs | 24 - .../Editor/Managers/SamplesManager.cs.meta | 11 - .../Editor/Managers/Startup.cs | 72 - .../Editor/Managers/Startup.cs.meta | 11 - .../Editor/Managers/WelcomeScreenManager.cs | 181 -- .../Managers/WelcomeScreenManager.cs.meta | 11 - .../Editor/NodeViews.meta | 8 - .../Editor/NodeViews/EventNodeViewControl.cs | 118 - .../NodeViews/EventNodeViewControl.cs.meta | 11 - ...rDesigner.Editor.Controls.NodeViews.asmdef | 32 - ...gner.Editor.Controls.NodeViews.asmdef.meta | 7 - .../PriorityEvaluatorNodeViewControl.cs | 95 - .../PriorityEvaluatorNodeViewControl.cs.meta | 11 - .../NodeViews/StackedTaskNodeViewControl.cs | 134 -- .../StackedTaskNodeViewControl.cs.meta | 11 - .../Editor/NodeViews/TaskNodeViewControl.cs | 288 --- .../NodeViews/TaskNodeViewControl.cs.meta | 11 - .../UtilityEvaluatorNodeViewControl.cs | 95 - .../UtilityEvaluatorNodeViewControl.cs.meta | 11 - .../Editor/NodeViews/WaitNodeViewControl.cs | 111 - .../NodeViews/WaitNodeViewControl.cs.meta | 11 - .../Editor/Opsive.BehaviorDesigner.Editor.dll | Bin 56320 -> 0 bytes .../Opsive.BehaviorDesigner.Editor.dll.meta | 70 - .../Editor/Styles.meta | 8 - .../Editor/Styles/TaskStyles.uss | 29 - .../Editor/Styles/TaskStyles.uss.meta | 11 - .../com.opsive.behaviordesigner/Runtime.meta | 8 - .../Runtime/BehaviorTree.cs | 1983 ----------------- .../Runtime/BehaviorTree.cs.meta | 11 - .../Runtime/BehaviorTreeData.cs | 1674 -------------- .../Runtime/BehaviorTreeData.cs.meta | 11 - .../Runtime/BehaviorTreeDataStructures.cs | 117 - .../BehaviorTreeDataStructures.cs.meta | 11 - .../Runtime/Components.meta | 8 - .../Runtime/Components/BakedBehaviorTree.cs | 120 - .../Components/BakedBehaviorTree.cs.meta | 11 - .../Components/BehaviorTreeComponents.cs | 261 --- .../Components/BehaviorTreeComponents.cs.meta | 11 - .../Runtime/Groups.meta | 8 - .../Groups/BeforeTraversalSystemGroup.cs | 46 - .../Groups/BeforeTraversalSystemGroup.cs.meta | 11 - .../Runtime/Groups/BehaviorTreeSystemGroup.cs | 80 - .../Groups/BehaviorTreeSystemGroup.cs.meta | 11 - .../Runtime/Groups/TaskSystemGroup.cs | 41 - .../Runtime/Groups/TaskSystemGroup.cs.meta | 11 - .../Runtime/Groups/TraversalSystemGroup.cs | 76 - .../Groups/TraversalSystemGroup.cs.meta | 11 - .../Opsive.BehaviorDesigner.Runtime.asmdef | 29 - ...psive.BehaviorDesigner.Runtime.asmdef.meta | 7 - .../Runtime/Subtree.cs | 298 --- .../Runtime/Subtree.cs.meta | 11 - .../Runtime/Systems.meta | 8 - .../Runtime/Systems/BeforeTraversalSystems.cs | 412 ---- .../Systems/BeforeTraversalSystems.cs.meta | 11 - .../Runtime/Systems/CleanupSystem.cs | 176 -- .../Runtime/Systems/CleanupSystem.cs.meta | 11 - .../Runtime/Systems/TaskObjectSystem.cs | 217 -- .../Runtime/Systems/TaskObjectSystem.cs.meta | 11 - .../Runtime/Systems/TraversalSystems.cs | 617 ----- .../Runtime/Systems/TraversalSystems.cs.meta | 11 - .../Runtime/Tasks.meta | 8 - .../Runtime/Tasks/Actions.meta | 8 - .../Runtime/Tasks/Actions/Action.cs | 19 - .../Runtime/Tasks/Actions/Action.cs.meta | 11 - .../Runtime/Tasks/Actions/ActionNode.cs | 31 - .../Runtime/Tasks/Actions/ActionNode.cs.meta | 11 - .../Runtime/Tasks/Actions/Conversions.meta | 8 - .../Actions/Conversions/ConvertBoolToFloat.cs | 33 - .../Conversions/ConvertBoolToFloat.cs.meta | 11 - .../Actions/Conversions/ConvertBoolToInt.cs | 33 - .../Conversions/ConvertBoolToInt.cs.meta | 11 - .../Conversions/ConvertBoolToString.cs | 33 - .../Conversions/ConvertBoolToString.cs.meta | 11 - .../Actions/Conversions/ConvertFloatToBool.cs | 33 - .../Conversions/ConvertFloatToBool.cs.meta | 11 - .../Actions/Conversions/ConvertFloatToInt.cs | 33 - .../Conversions/ConvertFloatToInt.cs.meta | 11 - .../Conversions/ConvertFloatToString.cs | 33 - .../Conversions/ConvertFloatToString.cs.meta | 11 - .../ConvertGameObjectToTransform.cs | 37 - .../ConvertGameObjectToTransform.cs.meta | 11 - .../Actions/Conversions/ConvertIntToBool.cs | 33 - .../Conversions/ConvertIntToBool.cs.meta | 11 - .../Actions/Conversions/ConvertIntToFloat.cs | 33 - .../Conversions/ConvertIntToFloat.cs.meta | 11 - .../Actions/Conversions/ConvertIntToString.cs | 33 - .../Conversions/ConvertIntToString.cs.meta | 11 - .../Conversions/ConvertStringToBool.cs | 36 - .../Conversions/ConvertStringToBool.cs.meta | 11 - .../Conversions/ConvertStringToFloat.cs | 36 - .../Conversions/ConvertStringToFloat.cs.meta | 11 - .../Actions/Conversions/ConvertStringToInt.cs | 36 - .../Conversions/ConvertStringToInt.cs.meta | 11 - .../ConvertTransformToGameObject.cs | 37 - .../ConvertTransformToGameObject.cs.meta | 11 - .../Runtime/Tasks/Actions/IList.meta | 8 - .../Actions/IList/AddGameObjectToArray.cs | 45 - .../IList/AddGameObjectToArray.cs.meta | 11 - .../Actions/IList/AddGameObjectToList.cs | 37 - .../Actions/IList/AddGameObjectToList.cs.meta | 11 - .../IList/RandomGameObjectFromArray.cs | 49 - .../IList/RandomGameObjectFromArray.cs.meta | 11 - .../Actions/IList/RandomGameObjectFromList.cs | 50 - .../IList/RandomGameObjectFromList.cs.meta | 11 - .../IList/RemoveGameObjectFromArray.cs | 57 - .../IList/RemoveGameObjectFromArray.cs.meta | 11 - .../Actions/IList/RemoveGameObjectFromList.cs | 31 - .../IList/RemoveGameObjectFromList.cs.meta | 11 - .../IList/SelectGameObjectFromArray.cs | 39 - .../IList/SelectGameObjectFromArray.cs.meta | 11 - .../Actions/IList/SelectGameObjectFromList.cs | 40 - .../IList/SelectGameObjectFromList.cs.meta | 11 - .../Runtime/Tasks/Actions/Idle.cs | 96 - .../Runtime/Tasks/Actions/Idle.cs.meta | 11 - .../Runtime/Tasks/Actions/Log.cs | 34 - .../Runtime/Tasks/Actions/Log.cs.meta | 11 - .../Runtime/Tasks/Actions/LogValue.cs | 38 - .../Runtime/Tasks/Actions/LogValue.cs.meta | 11 - .../Runtime/Tasks/Actions/Math.meta | 8 - .../Runtime/Tasks/Actions/Math/BoolFlip.cs | 31 - .../Tasks/Actions/Math/BoolFlip.cs.meta | 11 - .../Tasks/Actions/Math/BoolOperator.cs | 61 - .../Tasks/Actions/Math/BoolOperator.cs.meta | 11 - .../Tasks/Actions/Math/FloatOperator.cs | 73 - .../Tasks/Actions/Math/FloatOperator.cs.meta | 11 - .../Runtime/Tasks/Actions/Math/IntOperator.cs | 73 - .../Tasks/Actions/Math/IntOperator.cs.meta | 11 - .../Runtime/Tasks/Actions/Math/RandomBool.cs | 45 - .../Tasks/Actions/Math/RandomBool.cs.meta | 11 - .../Runtime/Tasks/Actions/Math/RandomFloat.cs | 49 - .../Tasks/Actions/Math/RandomFloat.cs.meta | 11 - .../Tasks/Actions/Math/RandomInteger.cs | 49 - .../Tasks/Actions/Math/RandomInteger.cs.meta | 11 - .../Runtime/Tasks/Actions/Math/SetBool.cs | 33 - .../Tasks/Actions/Math/SetBool.cs.meta | 11 - .../Runtime/Tasks/Actions/Math/SetFloat.cs | 33 - .../Tasks/Actions/Math/SetFloat.cs.meta | 11 - .../Runtime/Tasks/Actions/Math/SetInt.cs | 32 - .../Runtime/Tasks/Actions/Math/SetInt.cs.meta | 11 - .../Runtime/Tasks/Actions/Math/SetString.cs | 33 - .../Tasks/Actions/Math/SetString.cs.meta | 11 - .../Runtime/Tasks/Actions/Math/SetVector2.cs | 33 - .../Tasks/Actions/Math/SetVector2.cs.meta | 11 - .../Runtime/Tasks/Actions/Math/SetVector3.cs | 33 - .../Tasks/Actions/Math/SetVector3.cs.meta | 11 - .../Tasks/Actions/PerformInterruption.cs | 160 -- .../Tasks/Actions/PerformInterruption.cs.meta | 11 - .../Tasks/Actions/RestartBehaviorTree.cs | 60 - .../Tasks/Actions/RestartBehaviorTree.cs.meta | 11 - .../Runtime/Tasks/Actions/ReturnStatus.cs | 121 - .../Tasks/Actions/ReturnStatus.cs.meta | 11 - .../Runtime/Tasks/Actions/SendEvent.cs | 81 - .../Runtime/Tasks/Actions/SendEvent.cs.meta | 11 - .../Runtime/Tasks/Actions/SetSubtree.cs | 68 - .../Runtime/Tasks/Actions/SetSubtree.cs.meta | 11 - .../Runtime/Tasks/Actions/StackedAction.cs | 20 - .../Tasks/Actions/StackedAction.cs.meta | 11 - .../Tasks/Actions/StartBehaviorTree.cs | 58 - .../Tasks/Actions/StartBehaviorTree.cs.meta | 11 - .../Runtime/Tasks/Actions/StopBehaviorTree.cs | 32 - .../Tasks/Actions/StopBehaviorTree.cs.meta | 11 - .../Runtime/Tasks/Actions/SubtreeReference.cs | 50 - .../Tasks/Actions/SubtreeReference.cs.meta | 11 - .../Tasks/Actions/SubtreeReferenceSelector.cs | 42 - .../Actions/SubtreeReferenceSelector.cs.meta | 11 - .../Tasks/Actions/TargetBehaviorTreeAction.cs | 71 - .../Actions/TargetBehaviorTreeAction.cs.meta | 11 - .../Tasks/Actions/TargetGameObjectAction.cs | 54 - .../Actions/TargetGameObjectAction.cs.meta | 11 - .../Runtime/Tasks/Actions/UnityObjects.meta | 8 - .../Tasks/Actions/UnityObjects/SetEnabled.cs | 36 - .../Actions/UnityObjects/SetEnabled.cs.meta | 11 - .../Actions/UnityObjects/SetGameObject.cs | 33 - .../UnityObjects/SetGameObject.cs.meta | 11 - .../UnityObjects/WaitForAnimatorState.cs | 58 - .../UnityObjects/WaitForAnimatorState.cs.meta | 11 - .../Runtime/Tasks/Actions/Wait.cs | 383 ---- .../Runtime/Tasks/Actions/Wait.cs.meta | 11 - .../Runtime/Tasks/Composites.meta | 8 - .../Runtime/Tasks/Composites/CompositeNode.cs | 35 - .../Tasks/Composites/CompositeNode.cs.meta | 11 - .../Runtime/Tasks/Composites/Parallel.cs | 225 -- .../Runtime/Tasks/Composites/Parallel.cs.meta | 11 - .../Tasks/Composites/ParallelSelector.cs | 219 -- .../Tasks/Composites/ParallelSelector.cs.meta | 11 - .../Tasks/Composites/PrioritySelector.cs | 331 --- .../Tasks/Composites/PrioritySelector.cs.meta | 11 - .../Tasks/Composites/RandomSelector.cs | 324 --- .../Tasks/Composites/RandomSelector.cs.meta | 11 - .../Tasks/Composites/RandomSequence.cs | 324 --- .../Tasks/Composites/RandomSequence.cs.meta | 11 - .../Runtime/Tasks/Composites/Selector.cs | 258 --- .../Runtime/Tasks/Composites/Selector.cs.meta | 11 - .../Runtime/Tasks/Composites/Sequence.cs | 257 --- .../Runtime/Tasks/Composites/Sequence.cs.meta | 11 - .../Tasks/Composites/UtilitySelector.cs | 361 --- .../Tasks/Composites/UtilitySelector.cs.meta | 11 - .../Runtime/Tasks/ConditionalAbortType.cs | 28 - .../Tasks/ConditionalAbortType.cs.meta | 11 - .../Runtime/Tasks/Conditionals.meta | 8 - .../Runtime/Tasks/Conditionals/Conditional.cs | 25 - .../Tasks/Conditionals/Conditional.cs.meta | 11 - .../Tasks/Conditionals/ConditionalNode.cs | 37 - .../Conditionals/ConditionalNode.cs.meta | 11 - .../Tasks/Conditionals/HasReceivedEvent.cs | 262 --- .../Conditionals/HasReceivedEvent.cs.meta | 11 - .../Runtime/Tasks/Conditionals/HasValue.cs | 38 - .../Tasks/Conditionals/HasValue.cs.meta | 11 - .../Conditionals/IsBehaviorTreeActive.cs | 29 - .../Conditionals/IsBehaviorTreeActive.cs.meta | 11 - .../Runtime/Tasks/Conditionals/Math.meta | 8 - .../Tasks/Conditionals/Math/BoolComparison.cs | 32 - .../Conditionals/Math/BoolComparison.cs.meta | 11 - .../Conditionals/Math/FloatComparison.cs | 60 - .../Conditionals/Math/FloatComparison.cs.meta | 11 - .../Conditionals/Math/GameObjectComparison.cs | 32 - .../Math/GameObjectComparison.cs.meta | 11 - .../Tasks/Conditionals/Math/IntComparison.cs | 61 - .../Conditionals/Math/IntComparison.cs.meta | 11 - .../Conditionals/Math/Vector2Comparison.cs | 32 - .../Math/Vector2Comparison.cs.meta | 11 - .../Conditionals/Math/Vector3Comparison.cs | 32 - .../Math/Vector3Comparison.cs.meta | 11 - .../Runtime/Tasks/Conditionals/Physics.meta | 8 - .../Physics/HasEnteredCollision.cs | 61 - .../Physics/HasEnteredCollision.cs.meta | 11 - .../Physics/HasEnteredCollision2D.cs | 61 - .../Physics/HasEnteredCollision2D.cs.meta | 11 - .../Conditionals/Physics/HasEnteredTrigger.cs | 60 - .../Physics/HasEnteredTrigger.cs.meta | 11 - .../Physics/HasEnteredTrigger2D.cs | 61 - .../Physics/HasEnteredTrigger2D.cs.meta | 11 - .../Physics/HasExitedCollision.cs | 61 - .../Physics/HasExitedCollision.cs.meta | 11 - .../Physics/HasExitedCollision2D.cs | 61 - .../Physics/HasExitedCollision2D.cs.meta | 11 - .../Conditionals/Physics/HasExitedTrigger.cs | 61 - .../Physics/HasExitedTrigger.cs.meta | 11 - .../Physics/HasExitedTrigger2D.cs | 61 - .../Physics/HasExitedTrigger2D.cs.meta | 11 - .../Tasks/Conditionals/RandomProbability.cs | 229 -- .../Conditionals/RandomProbability.cs.meta | 11 - .../Tasks/Conditionals/StackedConditional.cs | 49 - .../Conditionals/StackedConditional.cs.meta | 11 - .../TargetBehaviorTreeConditional.cs | 71 - .../TargetBehaviorTreeConditional.cs.meta | 11 - .../TargetGameObjectConditional.cs | 53 - .../TargetGameObjectConditional.cs.meta | 11 - .../Runtime/Tasks/Decorators.meta | 8 - .../Tasks/Decorators/ConditionalEvaluator.cs | 176 -- .../Decorators/ConditionalEvaluator.cs.meta | 11 - .../Runtime/Tasks/Decorators/Cooldown.cs | 226 -- .../Runtime/Tasks/Decorators/Cooldown.cs.meta | 11 - .../Runtime/Tasks/Decorators/DecoratorNode.cs | 35 - .../Tasks/Decorators/DecoratorNode.cs.meta | 11 - .../Runtime/Tasks/Decorators/Inverter.cs | 126 -- .../Runtime/Tasks/Decorators/Inverter.cs.meta | 11 - .../Runtime/Tasks/Decorators/Iterator.cs | 109 - .../Runtime/Tasks/Decorators/Iterator.cs.meta | 11 - .../Tasks/Decorators/PriorityEvaluator.cs | 113 - .../Decorators/PriorityEvaluator.cs.meta | 11 - .../Decorators/PriorityVariableEvaluator.cs | 29 - .../PriorityVariableEvaluator.cs.meta | 11 - .../Runtime/Tasks/Decorators/Repeater.cs | 304 --- .../Runtime/Tasks/Decorators/Repeater.cs.meta | 11 - .../Runtime/Tasks/Decorators/ReturnFailure.cs | 125 -- .../Tasks/Decorators/ReturnFailure.cs.meta | 11 - .../Runtime/Tasks/Decorators/ReturnSuccess.cs | 125 -- .../Tasks/Decorators/ReturnSuccess.cs.meta | 11 - .../Runtime/Tasks/Decorators/UntilFailure.cs | 135 -- .../Tasks/Decorators/UntilFailure.cs.meta | 11 - .../Runtime/Tasks/Decorators/UntilSuccess.cs | 135 -- .../Tasks/Decorators/UntilSuccess.cs.meta | 11 - .../Tasks/Decorators/UtilityCurveEvaluator.cs | 65 - .../Decorators/UtilityCurveEvaluator.cs.meta | 11 - .../Tasks/Decorators/UtilityEvaluator.cs | 130 -- .../Tasks/Decorators/UtilityEvaluator.cs.meta | 11 - .../Decorators/UtilityVariableEvaluator.cs | 29 - .../UtilityVariableEvaluator.cs.meta | 11 - .../Runtime/Tasks/ECSTask.cs | 132 -- .../Runtime/Tasks/ECSTask.cs.meta | 11 - .../Runtime/Tasks/Events.meta | 8 - .../Runtime/Tasks/Events/EventNode.cs | 35 - .../Runtime/Tasks/Events/EventNode.cs.meta | 11 - .../Runtime/Tasks/Events/OnCollisionEnter.cs | 60 - .../Tasks/Events/OnCollisionEnter.cs.meta | 11 - .../Tasks/Events/OnCollisionEnter2D.cs | 60 - .../Tasks/Events/OnCollisionEnter2D.cs.meta | 11 - .../Runtime/Tasks/Events/OnCollisionExit.cs | 60 - .../Tasks/Events/OnCollisionExit.cs.meta | 11 - .../Runtime/Tasks/Events/OnCollisionExit2D.cs | 60 - .../Tasks/Events/OnCollisionExit2D.cs.meta | 11 - .../Runtime/Tasks/Events/OnInterrupt.cs | 130 -- .../Runtime/Tasks/Events/OnInterrupt.cs.meta | 11 - .../Runtime/Tasks/Events/OnReceivedEvent.cs | 167 -- .../Tasks/Events/OnReceivedEvent.cs.meta | 11 - .../Runtime/Tasks/Events/OnTriggerEnter.cs | 60 - .../Tasks/Events/OnTriggerEnter.cs.meta | 11 - .../Runtime/Tasks/Events/OnTriggerEnter2D.cs | 60 - .../Tasks/Events/OnTriggerEnter2D.cs.meta | 11 - .../Runtime/Tasks/Events/OnTriggerExit.cs | 60 - .../Tasks/Events/OnTriggerExit.cs.meta | 11 - .../Runtime/Tasks/Events/OnTriggerExit2D.cs | 60 - .../Tasks/Events/OnTriggerExit2D.cs.meta | 11 - .../Runtime/Tasks/Events/Start.cs | 24 - .../Runtime/Tasks/Events/Start.cs.meta | 11 - .../Runtime/Tasks/ISubtreeReference.cs | 34 - .../Runtime/Tasks/ISubtreeReference.cs.meta | 11 - .../Runtime/Tasks/PlaceholderTasks.cs | 71 - .../Runtime/Tasks/PlaceholderTasks.cs.meta | 11 - .../Runtime/Tasks/StackedTask.cs | 407 ---- .../Runtime/Tasks/StackedTask.cs.meta | 11 - .../Runtime/Tasks/Task.cs | 371 --- .../Runtime/Tasks/Task.cs.meta | 11 - .../Runtime/Tasks/TaskCoroutine.cs | 63 - .../Runtime/Tasks/TaskCoroutine.cs.meta | 11 - .../Runtime/Tasks/TaskDelegateBase.cs | 1259 ----------- .../Runtime/Tasks/TaskDelegateBase.cs.meta | 11 - .../Runtime/Tasks/TaskInterfaces.cs | 204 -- .../Runtime/Tasks/TaskInterfaces.cs.meta | 11 - .../Runtime/Tasks/TaskStatus.cs | 19 - .../Runtime/Tasks/TaskStatus.cs.meta | 11 - .../Runtime/Tasks/Templates.meta | 8 - .../Runtime/Tasks/Templates/ECSNodes.cs | 541 ----- .../Runtime/Tasks/Templates/ECSNodes.cs.meta | 11 - .../Tasks/Templates/GameObjectNodes.cs | 242 -- .../Tasks/Templates/GameObjectNodes.cs.meta | 11 - .../Runtime/Tasks/UnknownTasks.cs | 107 - .../Runtime/Tasks/UnknownTasks.cs.meta | 11 - .../Runtime/Utility.meta | 8 - .../Runtime/Utility/ComponentUtility.cs | 162 -- .../Runtime/Utility/ComponentUtility.cs.meta | 11 - .../Runtime/Utility/SaveManager.cs | 651 ------ .../Runtime/Utility/SaveManager.cs.meta | 11 - .../Runtime/Utility/TraversalUtility.cs | 108 - .../Runtime/Utility/TraversalUtility.cs.meta | 11 - .../Runtime/Utility/Types.cs | 42 - .../Runtime/Utility/Types.cs.meta | 11 - .../com.opsive.behaviordesigner/package.json | 25 - .../package.json.meta | 7 - Packages/packages-lock.json | 89 +- zeling_v2.sln | 18 - 535 files changed, 10 insertions(+), 35957 deletions(-) delete mode 100644 Packages/com.opsive.behaviordesigner/Editor.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/BehaviorDesignerIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/BehaviorDesignerIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkActiveStackedTask.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkActiveStackedTask.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkCollapsedSlot.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkCollapsedSlot.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkConditionalAbortBothIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkConditionalAbortBothIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkConditionalAbortLowerPriorityIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkConditionalAbortLowerPriorityIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkConditionalAbortSelfIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkConditionalAbortSelfIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkExecutionFailure.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkExecutionFailure.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkExecutionFailureReevaluate.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkExecutionFailureReevaluate.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkExecutionSuccess.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkExecutionSuccess.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkExecutionSuccessReevaluate.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/DarkExecutionSuccessReevaluate.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightActiveStackedTask.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightActiveStackedTask.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightCollapsedSlot.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightCollapsedSlot.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightConditionalAbortBothIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightConditionalAbortBothIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightConditionalAbortLowerPriorityIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightConditionalAbortLowerPriorityIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightConditionalAbortSelfIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightConditionalAbortSelfIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionFailure.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionFailure.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionFailureReevaluate.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionFailureReevaluate.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionSuccess.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionSuccess.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionSuccessReevaluate.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionSuccessReevaluate.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkActionIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkActionIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkCompositeIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkCompositeIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkConditionalEvaluatorIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkConditionalEvaluatorIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkConditionalIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkConditionalIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkCooldownIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkCooldownIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkDecoratorIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkDecoratorIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkEventIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkEventIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkHasReceivedEventIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkHasReceivedEventIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkIdleIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkIdleIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkInverterIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkInverterIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkIteratorIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkIteratorIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkLogIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkLogIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkOnInterruptIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkOnInterruptIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkOnPhysicsCallbackIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkOnPhysicsCallbackIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkParallelIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkParallelIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkParallelSelectorIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkParallelSelectorIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkPerformInterruptionIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkPerformInterruptionIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkPrioritySelectorIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkPrioritySelectorIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkRandomProbabilityIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkRandomProbabilityIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkRandomSelectorIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkRandomSelectorIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkRandomSequenceIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkRandomSequenceIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkRepeaterIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkRepeaterIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkReturnFailureIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkReturnFailureIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkReturnSuccessIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkReturnSuccessIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkSelectorIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkSelectorIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkSendEventIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkSendEventIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkSequenceIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkSequenceIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkStackedActionIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkStackedActionIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkStackedConditionalIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkStackedConditionalIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkStartIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkStartIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkUntilFailureIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkUntilFailureIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkUntilSuccessIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkUntilSuccessIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkUtilitySelectorIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkUtilitySelectorIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkWaitIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkWaitIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightActionIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightActionIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightCompositeIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightCompositeIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightConditionalEvaluator.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightConditionalEvaluator.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightConditionalIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightConditionalIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightCooldownIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightCooldownIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightDecoratorIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightDecoratorIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightEventIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightEventIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightHasReceivedEventIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightHasReceivedEventIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightIdleIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightIdleIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightInverterIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightInverterIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightIteratorIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightIteratorIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightLogIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightLogIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightOnInterruptIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightOnInterruptIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightOnPhysicsCallbackIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightOnPhysicsCallbackIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightParallelIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightParallelIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightParallelSelectorIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightParallelSelectorIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightPerformInterruptionIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightPerformInterruptionIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightPrioritySelectorIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightPrioritySelectorIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRandomProbabilityIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRandomProbabilityIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRandomSelectorIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRandomSelectorIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRandomSequenceIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRandomSequenceIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRepeaterIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRepeaterIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightReturnFailureIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightReturnFailureIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightReturnSuccessIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightReturnSuccessIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSelectorIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSelectorIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSendEventIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSendEventIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSequenceIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSequenceIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightStackedActionIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightStackedActionIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightStackedConditionalIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightStackedConditionalIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightStartIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightStartIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUntilFailureIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUntilFailureIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUntilSuccessIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUntilSuccessIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUtilitySelectorIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUtilitySelectorIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightWaitIcon.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightWaitIcon.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/AddOnsManager.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/AddOnsManager.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/AssetInfo.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/AssetInfo.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/BehaviorMainWindow.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/BehaviorMainWindow.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/Images.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/Images/Editor.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/Images/Editor.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/Images/Repository.png delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/Images/Repository.png.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/IntegrationsManager.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/IntegrationsManager.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/Opsive.BehaviorDesigner.Editor.Managers.asmdef delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/Opsive.BehaviorDesigner.Editor.Managers.asmdef.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/SamplesManager.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/SamplesManager.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/Startup.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/Startup.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/WelcomeScreenManager.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Managers/WelcomeScreenManager.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/NodeViews.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/NodeViews/EventNodeViewControl.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/NodeViews/EventNodeViewControl.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/NodeViews/Opsive.BehaviorDesigner.Editor.Controls.NodeViews.asmdef delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/NodeViews/Opsive.BehaviorDesigner.Editor.Controls.NodeViews.asmdef.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/NodeViews/PriorityEvaluatorNodeViewControl.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/NodeViews/PriorityEvaluatorNodeViewControl.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/NodeViews/StackedTaskNodeViewControl.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/NodeViews/StackedTaskNodeViewControl.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/NodeViews/TaskNodeViewControl.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/NodeViews/TaskNodeViewControl.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/NodeViews/UtilityEvaluatorNodeViewControl.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/NodeViews/UtilityEvaluatorNodeViewControl.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/NodeViews/WaitNodeViewControl.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/NodeViews/WaitNodeViewControl.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Opsive.BehaviorDesigner.Editor.dll delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Opsive.BehaviorDesigner.Editor.dll.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Styles.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Styles/TaskStyles.uss delete mode 100644 Packages/com.opsive.behaviordesigner/Editor/Styles/TaskStyles.uss.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/BehaviorTree.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/BehaviorTree.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/BehaviorTreeData.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/BehaviorTreeData.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/BehaviorTreeDataStructures.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/BehaviorTreeDataStructures.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Components.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Components/BakedBehaviorTree.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Components/BakedBehaviorTree.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Components/BehaviorTreeComponents.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Components/BehaviorTreeComponents.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Groups.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Groups/BeforeTraversalSystemGroup.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Groups/BeforeTraversalSystemGroup.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Groups/BehaviorTreeSystemGroup.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Groups/BehaviorTreeSystemGroup.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Groups/TaskSystemGroup.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Groups/TaskSystemGroup.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Groups/TraversalSystemGroup.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Groups/TraversalSystemGroup.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Opsive.BehaviorDesigner.Runtime.asmdef delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Opsive.BehaviorDesigner.Runtime.asmdef.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Subtree.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Subtree.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Systems.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Systems/BeforeTraversalSystems.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Systems/BeforeTraversalSystems.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Systems/CleanupSystem.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Systems/CleanupSystem.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Systems/TaskObjectSystem.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Systems/TaskObjectSystem.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Systems/TraversalSystems.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Systems/TraversalSystems.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Action.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Action.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/ActionNode.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/ActionNode.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToFloat.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToFloat.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToInt.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToInt.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToString.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToString.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToBool.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToBool.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToInt.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToInt.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToString.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToString.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertGameObjectToTransform.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertGameObjectToTransform.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToBool.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToBool.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToFloat.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToFloat.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToString.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToString.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToBool.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToBool.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToFloat.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToFloat.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToInt.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToInt.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertTransformToGameObject.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertTransformToGameObject.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/AddGameObjectToArray.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/AddGameObjectToArray.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/AddGameObjectToList.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/AddGameObjectToList.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RandomGameObjectFromArray.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RandomGameObjectFromArray.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RandomGameObjectFromList.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RandomGameObjectFromList.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RemoveGameObjectFromArray.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RemoveGameObjectFromArray.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RemoveGameObjectFromList.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RemoveGameObjectFromList.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/SelectGameObjectFromArray.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/SelectGameObjectFromArray.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/SelectGameObjectFromList.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/SelectGameObjectFromList.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Idle.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Idle.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Log.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Log.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/LogValue.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/LogValue.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/BoolFlip.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/BoolFlip.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/BoolOperator.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/BoolOperator.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/FloatOperator.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/FloatOperator.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/IntOperator.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/IntOperator.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomBool.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomBool.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomFloat.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomFloat.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomInteger.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomInteger.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetBool.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetBool.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetFloat.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetFloat.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetInt.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetInt.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetString.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetString.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetVector2.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetVector2.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetVector3.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetVector3.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/PerformInterruption.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/PerformInterruption.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/RestartBehaviorTree.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/RestartBehaviorTree.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/ReturnStatus.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/ReturnStatus.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SendEvent.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SendEvent.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SetSubtree.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SetSubtree.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StackedAction.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StackedAction.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StartBehaviorTree.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StartBehaviorTree.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StopBehaviorTree.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StopBehaviorTree.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SubtreeReference.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SubtreeReference.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SubtreeReferenceSelector.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SubtreeReferenceSelector.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/TargetBehaviorTreeAction.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/TargetBehaviorTreeAction.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/TargetGameObjectAction.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/TargetGameObjectAction.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/SetEnabled.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/SetEnabled.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/SetGameObject.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/SetGameObject.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/WaitForAnimatorState.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/WaitForAnimatorState.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Wait.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Wait.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/CompositeNode.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/CompositeNode.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Parallel.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Parallel.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/ParallelSelector.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/ParallelSelector.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/PrioritySelector.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/PrioritySelector.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/RandomSelector.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/RandomSelector.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/RandomSequence.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/RandomSequence.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Selector.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Selector.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Sequence.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Sequence.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/UtilitySelector.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/UtilitySelector.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/ConditionalAbortType.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/ConditionalAbortType.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Conditional.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Conditional.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/ConditionalNode.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/ConditionalNode.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/HasReceivedEvent.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/HasReceivedEvent.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/HasValue.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/HasValue.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/IsBehaviorTreeActive.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/IsBehaviorTreeActive.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/BoolComparison.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/BoolComparison.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/FloatComparison.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/FloatComparison.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/GameObjectComparison.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/GameObjectComparison.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/IntComparison.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/IntComparison.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/Vector2Comparison.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/Vector2Comparison.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/Vector3Comparison.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/Vector3Comparison.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredCollision.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredCollision.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredCollision2D.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredCollision2D.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredTrigger.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredTrigger.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredTrigger2D.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredTrigger2D.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedCollision.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedCollision.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedCollision2D.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedCollision2D.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedTrigger.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedTrigger.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedTrigger2D.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedTrigger2D.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/RandomProbability.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/RandomProbability.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/StackedConditional.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/StackedConditional.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/TargetBehaviorTreeConditional.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/TargetBehaviorTreeConditional.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/TargetGameObjectConditional.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/TargetGameObjectConditional.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ConditionalEvaluator.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ConditionalEvaluator.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Cooldown.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Cooldown.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/DecoratorNode.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/DecoratorNode.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Inverter.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Inverter.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Iterator.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Iterator.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/PriorityEvaluator.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/PriorityEvaluator.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/PriorityVariableEvaluator.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/PriorityVariableEvaluator.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Repeater.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Repeater.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ReturnFailure.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ReturnFailure.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ReturnSuccess.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ReturnSuccess.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UntilFailure.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UntilFailure.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UntilSuccess.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UntilSuccess.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityCurveEvaluator.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityCurveEvaluator.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityEvaluator.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityEvaluator.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityVariableEvaluator.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityVariableEvaluator.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/ECSTask.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/ECSTask.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/EventNode.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/EventNode.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionEnter.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionEnter.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionEnter2D.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionEnter2D.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionExit.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionExit.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionExit2D.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionExit2D.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnInterrupt.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnInterrupt.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnReceivedEvent.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnReceivedEvent.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerEnter.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerEnter.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerEnter2D.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerEnter2D.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerExit.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerExit.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerExit2D.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerExit2D.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/Start.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/Start.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/ISubtreeReference.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/ISubtreeReference.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/PlaceholderTasks.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/PlaceholderTasks.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/StackedTask.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/StackedTask.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Task.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Task.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskCoroutine.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskCoroutine.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskDelegateBase.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskDelegateBase.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskInterfaces.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskInterfaces.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskStatus.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskStatus.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates/ECSNodes.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates/ECSNodes.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates/GameObjectNodes.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates/GameObjectNodes.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/UnknownTasks.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Tasks/UnknownTasks.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Utility.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Utility/ComponentUtility.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Utility/ComponentUtility.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Utility/SaveManager.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Utility/SaveManager.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Utility/TraversalUtility.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Utility/TraversalUtility.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Utility/Types.cs delete mode 100644 Packages/com.opsive.behaviordesigner/Runtime/Utility/Types.cs.meta delete mode 100644 Packages/com.opsive.behaviordesigner/package.json delete mode 100644 Packages/com.opsive.behaviordesigner/package.json.meta diff --git a/Packages/com.opsive.behaviordesigner/Editor.meta b/Packages/com.opsive.behaviordesigner/Editor.meta deleted file mode 100644 index 7082ed2..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 26ac373dcc50b57419e903b8853f3593 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons.meta deleted file mode 100644 index b0c1dbb..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 142d426ab319c944c8627c59dc5d9f06 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/BehaviorDesignerIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/BehaviorDesignerIcon.png deleted file mode 100644 index 61c3f9fe831e65ee67b63e7a86895e8ddae3f455..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3412 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 ATmS$7 diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkCollapsedSlot.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkCollapsedSlot.png.meta deleted file mode 100644 index a9deaa1..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkCollapsedSlot.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 98eddd8dea34cc1429daaebbc435b3b7 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkConditionalAbortBothIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkConditionalAbortBothIcon.png deleted file mode 100644 index c25b3f0f53befc978f4bd9064c5b293877d8ee12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1315 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{1|(OCFP#RYBuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFe_z-M3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWv2L<~p`n7AnVzAE zshOFfj)IYap^?4;5Si&3npl~dSs9rtK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo?xx^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal@=Hr> zm4GgVcpgi&u1T;Y}Gc(1?+0Dej&CJ!v!qU>h(9qS*$)e0A^2?!QvjxH#(u+90EigL0Y1`&iTCB^h0!;J{ z?sxor!PI04pUag9Z*?SR zbW7_k-hY#WTVwNI%|ARQ?7p^>OB8Bk-2dlq=DdHn^xUV-@0Xo;QpogHb_=KXk0jwQ zFW6Ujp4wjc&Dvq|3hjMr)&Y(e3tXb+Bp>|${=%l6%Y|+@F=ng?s&LXZNYny-jzi^nQ`ERO>MD*P61=?~NU#BX*>_2+&cih5Gi{l0> zPOdoZ)cEOTa2W6Ru}7Gw1K*0pwxm9vX?5yDPu$x3 eOegoTNHD~iOn>CEc>8BivE}LN=d#Wzp$P!I=Gn>s diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkConditionalAbortBothIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkConditionalAbortBothIcon.png.meta deleted file mode 100644 index 7cdb027..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkConditionalAbortBothIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 1c01950cc0f1c994cb5ff3576969ebbf -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkConditionalAbortLowerPriorityIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkConditionalAbortLowerPriorityIcon.png deleted file mode 100644 index ba5d9c432dd23c2e09d3e7c7e8db09be9d69d760..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1252 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{1|(OCFP#RYBuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFe_z-M3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWv2L<~p`n7AnVzAE zshOFfj)IYap^?4;5Si&3npl~dSs9rtK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo?xx^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal@=Hr> zm4GgVcpgi&u1T;Y}Gc(1?+0xb7$jQmc!qU>h(9qS*(#6=&(aGG{+}O#* z&C=Wurq?AuximL5uLPzy1)F! zZ>HFK9dQt8Q1AY6IbyBc0XOM`$BY=O1q1gqnC(8=Rnd4h&cUT+>nA25!He7~bJYbL z`4uv+q-~VkZ@#DTY?9NFyG{iU9;;41GriI{UnnBGH$QTku25fs@U(}*aS!DD4ja^% znnpcX%2Cca-5~zcJL@;fep#NO6{_D0bT>D#&uBB9`KPj`U3D|LWo+_U@>rMaV@ z!rEGW_ixjM{41P$4sM&~J9ESO*IMlhUcN2~d9h^4RAK%S2k-8B=WA{gU%SkYv<=-k zW%9gZO#xY@MaN4tj{( zJaZG%Q-e|yQz{EjrrIztFe_z-M3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWv2L<~p`n7AnVzAE zshOFfj)IYap^?4;5Si&3npl~dSs9rtK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo?xx^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal@=Hr> zm4GgVcpgi&u1T;Y}Gc(1?+1Sj@+1b*h(9qS*(agoo(!$cz%*4RR z*x1Arrq?AuximL5uLPzy1)&$H9EV;|Qpha;+U$~Alv$RV;#QQOs{r=0RVHq?nBg=J zsy79A{;uunK zYswURFJ?!PW9mXI(z%aVSxlF%J(`y&t0Q82AWYgoV2{J3b3sCiX7d~t3w>bP-THtt z$b(N|Ws+cV4Z)m$a)12S#-kUSq?Vp{Wy)rd2?UTplEsZ6-TNf~wonN47!qb$H zC=z&jA;UanTL){=d#WOgHieGnTnF5l;ui|sTI6?QyRKZ-TVvlzDdImT+uwD5%k^HO z%kpvUnIEUkF7q|&i!FF~!+3A(^-umca0mMt{Bzl#3eG;WU++cF z+ho=+9hL8z{BG_Ga`?<#RqXgaLM=VWOhZ)J>BQO-T=$c!rnNF_w{NQ`|@>S z72kh`+gHBNTsec?Ou_cv>Ge#j8->13+V|)Ayz`U1zfbucC9}J+uBK6_o{5Lyc6{nJ TNtG1=pt8r))z4*}Q$iB})swe& diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkConditionalAbortSelfIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkConditionalAbortSelfIcon.png.meta deleted file mode 100644 index 695343b..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkConditionalAbortSelfIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: ff3ba64f23e708645b24cc7509b5ebe5 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkExecutionFailure.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkExecutionFailure.png deleted file mode 100644 index 223d6fca552e9b7bb86fde155fc7e597fa788777..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)lrKnzPL|@K9=vo2 zL?nS{pm(z|=UDJ~D14@_-vI|;G0vW7$kg?pz#cdmXJ-Hv!H>Y3|Mp^>wGHrte_VmV zI6JEZJfv9i1P@t(LHmJcIKY1D`o0kkumg@7ScLhaM1Y4Z+HdHkR#E_;fk8zRdTtev z%Y9Eu;l|lj#cxX_z!mr^frBs8N{N&QcvA2W$qPIyXpkh~qM$;Og#+k~$=8i>fZrTk z6!=nlPw0;@{?bUHV1vIEm#NjkD+Y!U+;;;R(rToIL~l0W{UK UlcO0n=>Px#07*qoM6N<$f@`Cpd;kCd diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkExecutionFailure.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkExecutionFailure.png.meta deleted file mode 100644 index c9ffe3a..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkExecutionFailure.png.meta +++ /dev/null @@ -1,127 +0,0 @@ -fileFormatVersion: 2 -guid: 8d159db7a8da43e41a50a77e43cfd6ba -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkExecutionFailureReevaluate.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/DarkExecutionFailureReevaluate.png deleted file mode 100644 index 6df0aceac6eb6ae5b2e61ddcc5c6119e87910c94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1397 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 diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/LightActiveStackedTask.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/LightActiveStackedTask.png.meta deleted file mode 100644 index 26004b2..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/LightActiveStackedTask.png.meta +++ /dev/null @@ -1,127 +0,0 @@ -fileFormatVersion: 2 -guid: e57f179ee476f274dbe537179e67bf04 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/LightCollapsedSlot.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/LightCollapsedSlot.png deleted file mode 100644 index d8b6a632739800e30aed137473c7e0572c468a96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1007 zcmaJ=O=#3W6pk*66e@@yC<j)G*a~YM9X>VNrfN~6z zV%=(u)QroDg+0zpFkI{fl+7@?@i;K86+}QCExW$T{(Sw01+J~K^I1bMf;@8EnP!M8 z&DpBeT(M-E9lr!}u|fqrL`)EStA3=!D%;josGYcZ7PKK`MP>Jrsu?Aa#~}h)ZZvHP z5CTc!U?wX`@B$D8DDnb*r8LYaSxFHug3iOzXraBNl(j-97Tu|=Lr9?Te529e8lxNz zmw715a-t!MX^Kck8$L1Pv>y$16*LrCp&Jkv`yf#?>v)Z*EX{Q92wu>W^`lOiXuu=H3U3w*~qBdELztpeH&E2yW7ayc{ z?oZq}eY{( zJaZG%Q-e|yQz{EjrrIztFe_z-M3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWv2L<~p`n7AnVzAE zshOFfj)IYap^?4;5Si&3npl~dSs9rtK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo?xx^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal@=Hr> zm4GgVcpgi&u1T;Y}Gc(1?)x^lc(A3b`!qU>h(9qS*$-uzK#nsT!$i&3S z$<)#Wrq?AuximL5uLPzy1)KJ+jcR3spKb(;y7}esfQ7MN7*{R&!NkS4ujzci zt`*(UfB64ss<(ep+xYbW`^mFApGE<^g?(L-L zpzFE?%wfLg_$*m-KRobK3OQuWHUEHIgxc?z=tMtn?ngUjig;c>sLOFcz~rFx4@LbL zX(RU{^C^!Hb-CVp9DU+piEaGVr6K#$a^^ifqGbEz>(tr$%aSy&n2F!_Hd`us^s{( zJaZG%Q-e|yQz{EjrrIztFe_z-M3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWv2L<~p`n7AnVzAE zshOFfj)IYap^?4;5Si&3npl~dSs9rtK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo?xx^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal@=Hr> zm4GgVcpgi&u1T;Y}Gc(1?#l^_f#N5@%!qU>h(9qS*!ra->&DF@v$i>pd z$js6Rrq?AuximL5uLPzy1)0;zv6SY+?wxf}?Qlo;|!B zUl&+NcT8@m&}C*k(30{XYenPhh8uhxmJ4dES4hZ*_!?|tOiXO#y}={exNCx7N4kTl zEZd{`4u2$1@wJ_5ymF@fRbyjSNwZ_yGsoDCj2*@we`pD3X?VPqHn9`|ivDuEIaxx3 zxuDrma4Dmxji1BidL`aAcM(%Y_7fMP1Nt->kM>v?7-g_5yUjIWVe|qfSCL%;DGAIv zi+(lyP!?$3bgjf@)-vbAUxlM4IT;G1X=qfcIGd(82=7uh`B?05Gkamt|AjkW@#--j zeAqJO`^MDZln{( zJaZG%Q-e|yQz{EjrrIztFe_z-M3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWv2L<~p`n7AnVzAE zshOFfj)IYap^?4;5Si&3npl~dSs9rtK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo?xx^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal@=Hr> zm4GgVcpgi&u1T;Y}Gc(1?#mwB&$l2Av!qU>h(9qS*!qCXo*}&1+$eUB2MjsThND&Pa0;V1i6P|2=9C*S{%>$Eakt zaVzQ1|Nr*PJT0xPT?{Lg6uvPgnXdT2t8kCy$mFoKQUBW-ISz0bi)17iOqj)e&%6%+WhPkxH+%npkg3`=V{Bv&z}%Bvr` z5F8LSH^F5h!;J-B^qt!7HEh!DG`PaxbzeEfOeTM^Eh_BE-6Rv)ZjBDJ?kIq+IX?o(+d2U%i^K}MI zRhz7-9fkr+9S%;?{qL-stYUa`;v7Fo58Yo<4I#FSUwa*bP0l+XkK!>F4d diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/LightConditionalAbortSelfIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/LightConditionalAbortSelfIcon.png.meta deleted file mode 100644 index a0c53a7..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/LightConditionalAbortSelfIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 5d44e66bacdbe51408dd30e519c2b318 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionFailure.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionFailure.png deleted file mode 100644 index b8b9e2349b97bc57c7397943904e093afd7f1eab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmV-$0gwKPP)=Eo5JewUuBmbaR~n9yQb+L7RHmf#F&HWzL6t_O$`k<) zmH{v1capsCd0<%-G23J>zzpmr_&WpHCTjr;+)eN+fXd)E;4A*to8a95e2$L?u$bUi zRe-06B`0{w0W3OxIKu(#HraEL6b^6!ZW`Dd^-W0wp0ew>p}tolfUm%!vVxhv4yfh1 zCsMcx{!sZ_i6j<(OW+XOv{TZ`3%n@!hvW@j6%0s<@TQTHF#4HTd~zG zDc9CvtZnkAJ};#>yGm_30( z8n}+Y0pf->mrDbV@_}l?g%Vf0^hNMIh2?T4c%NT5NkT8YAaN#m5AX}dv$TGUJJ|XF O00003$g6vzMP&3m(SI@6Y!?k&);NfD${n3e=+2oR7$3?fT} z#9$1FH6}(>AQ4oSu(f~?5rYI&2t~0PX$@@!%NBwa1k^4-hb{~=Ez@=8b>5r%t{rC5_xy0Pe@Gb z5ucsZOhmq5Lrtn&wChD_a`rU<&3#&W3eeDdxG0C!-5bOHs!3o@cfWJNW`&TJBui5r z4XmavT`9j}(Z4XwW8S*^AQ1%z1P3ZljaEv_XR5zm9RvWnAxWx`l-Mn#q`0`hCje1O zVD)!wn)AMi_sEZv4NgFG(XP+M5o29Xj6ykI`kY*}KcC%hk;JT#vNU5#wQ*TNH4(K( zbQI^`vSwM}M1`%-r!{(@R+T>kzy$z8sM7N9#>j>H@>!!>GAy3uG_GFxg=zU)6$3zZ za^Z$)f$z`R5MjZawWB!ax=_W+g`eZ(&koLIjUGuqe_BJ-x^2ZoBu5GXfZeN4XU(oO zA;qrpj&6x}_#U6t)+YsTU9|&nivXZrI-kdG-i;EUAK794aOYE@03Z$>=>)Kka~`dp zFN+Ue|1Di>b|-1~J@Hy=TfBPZ>?if5=YK&`Ht z@I=ebnpEGWwFUB5pXP;+h;we{oW}!zARpK=N^^N7-H0I`WUj zYM)*h6x#+#w6MA+QQp3LZs6>XnvjsixUd#h;FH}k|4r6!jOLEcvc|x2;4PLt)1puOBbcb=}>SNM4 zM{C%WR94%VrZqh<3kdvMBv({~8xhIokM|Ty)3a|w)IoE)r4Tf0c)RKKm0wHa9G(b` z22BI+RUvT3H~?@};gOd_L;=IXrDufXSf$^~$R2xHnv~ZT84m!QF%D6HAlPD?0D!yN zk|Tq9OTLMfcWhg%H9gda`<0T48UB5nhdlx1T#ud}8<`{sFzX)zfcBt$23UdHNNHUJP(;@WhXsdu0wXszA)z_+It^=x`SBOL7CzAjbklJ#UUw+WJC^50}N zKy$Tb_zOQuc$8TeIDTTecCXD20F)5z(dW-OVm236F(qeC zkbuj=hFFOSzYr>AVA1S ztc)oxy+A}yyp%}mT=8<6cDH3d_xcmaZuZ1hUN}HRS_sTJr_KelCusLP`OpBe8X74s z`dmy&dBZ>ny54v-irsC<tLaK?Mb%xR{-^=LVI817$B}_xFcDf<0#WBCi^UmR`HLJ0?6ZFW%({J9 TP=hq_00000NkvXXu0mjfb$pDI diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionFailureReevaluate.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionFailureReevaluate.png.meta deleted file mode 100644 index 1704f31..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionFailureReevaluate.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 5a6d713911c8ec3488639e2934329033 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionSuccess.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionSuccess.png deleted file mode 100644 index c257f7c7de3b63387bcec81a218afbd8f563c8a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Eu!3HE}2mdz#QY^(zo*^7SP{WbZ0pvgRba4#v z=sbF9FK@GffWt%gRXr07H42Y%^-SQk;hr6EX_u0!s&asl)2s$3hR5@bcV61`u6EMg z!i!g8E7`RYE}h!)xw0(r52uZt``)l+J6Sde&tHE1l!+(fv>!Ha-}VLn{3YD|fC~_rSImIJX*kEqDrC-ytHE|8l!wjCTelF{r5}E*l6LF6K diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionSuccess.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionSuccess.png.meta deleted file mode 100644 index c22a2cb..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionSuccess.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: cf3f27e8ca1f20f4680890e078c7613a -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionSuccessReevaluate.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/LightExecutionSuccessReevaluate.png deleted file mode 100644 index a7c2d05a9e57ae5df7c732c0850a8df60ef3f1bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1392 zcmV-$1&{iPP)iuaT^SUfRULvrl?#n z#zA7hgc~kR^oB%?iC%DFh%nTI&4nn@#1KRxq7z%p76;6MY=a%z9ZHYu+I~Ivd%Tb> zqYT1@|I6ojpWpkw|Gdxh0{?@i=LV`nakqVOjDK1I5%Hn8%laTTRHWwh1sqfGsccNr ziI!N2{<$f}m=u&IN*%6KZnM+MSl2`La=tWzi z(%3Zam+qI1g&n$@!k2unt~hpvF_v8tJnX-^Y9#n;vn$+N2ml6gSw<^bqI%Kh$>icG zj`5aYeB2yPO{vql_(GjQEJ4eP;~f@ljps2dMuU!ZPIpJ^Y|^c?6|71uH*M)}u($U! z#%A+wWcua)r~Cd1Tr$tc=29Mvg`6t^JPIE2U0LmLpKgt&Jj%MFmWi68Z5Jv{8$-a} ze47+KDWk z(vF7yD4vN7mPJw?TQuz}meRrEiP_#-0A8MmbZ2k0)$yDPWrl{Ip9Wnl##k&AcNymr zGv#%bmfy^p$_D^c05rfMa86f8Z7dT|n$;D)P37<0dlo1F1f%KiPS@$( z0CbEoi81CUA`S18MyxVrp%Y7n8Dp7efqJ7uHixUD%{AAn1AvU2lmW;@BwiXm*8J_@ zkyU&=Gg}4#YTmHW1w_OH5E)}qK6H9+(CTn^?3s$(&;x+2pl)`9{lGcKScHhUU}C}^ zO?wKs9HjvOIXOKKRot5SZu{kt;|Dy^ySBwpceuaU`5)8(0L7Y`P-E%7?s8+j|Do?P zA&0D-22Ugt0OTl505BSIuI-!YYD#7!kTQWi?(kpT<;Dj8XwYfC?mpA*m4=J}P^hj5 z)-P-8UT%IduX$u*j02}u8YTfiN(V{+fM-g#QMAtjz;txL;Ba-c-|_xf`RC-9d%e<- z2>=XYNnpKg*Vnbh+w(h8Natc^o)f|GoEQXvSSDCOM69xKW3axoz1ys=3ITvWK4QA& zI(aad7%Kz-tzh=Aw(RIyW7`?d_y6kXC#9)eTo5=-fGamN+*NWa#M1t%p79eF0H`)^ z39hrf*`*h(0RWgEHfmnyt1jHu)o9-z$%hgV^F(hq%9MpxFyG@E?fWAdrRh#qPGKV4 z+e}0p0Iad?4A&IB)T!dNJ^&CDDsQQNedpGyqtSdQ09+jYpgfZH)+sn8v_f$|2LQ`W zFI*NB>Qpr4t3EgI_GTht0I<2@NYqlW;;f)h|E?3PXLrH^9=3;*)32wpl10U9eeX70 zJk1!B7r;csI&ZesN7BAl5J9O>xm5~X&%x)tYA&6VtN?5|Ia86NtjNG1 zDAa!&Rra6S)_$=tz?S^;x^C@L$I||$teoCRB&(KM!@$6CieW*a={;P3VT>`Bmw$?g y2%q;gSIHz>3AC^Q$2hO3&`unx{~?hNoY%j!K4|Yu-sge<0000{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR^Z`oay)D~1LXFv#>P5)1SV^$hfLb3y(Bt1d1HN<}yWtLoyA%7Rq=pw#00 z(xPNwe55JEGy}s9zeOO0K-XCL7i9t?B{9b(Ke;qFHLt|e#a0O@qnDDIVr5`v;bd;& zY~<=ylcOS(cjOR+OKs01jWPOf2@hnOT^cxf;1xI#~i; zZfI!XYU$)+Xkg^*>|$YL=;Epb)tf?2nCSx@qYp|PNQng|1WbV-COqi_Iq=Mrng`4= zMZm1_%i(l8;{&*FvFpO@kD%s>uHtBnQ5=4>55iu z-f8o&{3lo3l!>C54gc2iJ?(pVuT5r_?_tm5i@c8fU*0VpcJIS<24)7vb>0oSk2ZRM OibGFVKbLh*2~7YFdHJCL diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkActionIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkActionIcon.png.meta deleted file mode 100644 index 160edf0..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkActionIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 3bbdfa553da4d554e9d74f8d88915aac -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkCompositeIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkCompositeIcon.png deleted file mode 100644 index a7bd863899362f5d25d4e22a93ec76cca39f49ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1064 zcmaJ=Pe>F|93C}HL`6DCDa2!>QgCN>R(IT)oMhcub+HxQU2qd2$C;-)tTS(%dA6g6 zk}xC?I&>@w>`)YTs8dGSr6BMU^p7YyMG->mp-Ttrjqa`;+J>2VfB3%d_j|wJ_b!hN z57gH-*HRQ!9~+btWbE+1nriYtx;$P%h9fwd#z{1dbBYbAu!g1}h#ATZOh83jn0pC( zD5{FqQ)!%zpB7bQFp7s^T*D%4it6cgEk(^j45r|WZc6lz$D1_JHHjVz#{F?C0yFyH zq79Ra!zpz!s|p(3dkXZpA`vhkR)A~FnvUp7^scT*=H50-gIx&DO7vb*>G%kUARB@p z)9F+F90z!w;ktr6&vk%+p9`>l^71~eOAPX2pc@n(nnbg;X)z)97h;i>L}xIzM3&9v za!jt1LG}#G34-8h1Oh&S@Hq=6R$QOyv=$X)=%}`CVI7&kQ>VJeFvZ>E00xt0ZeW zg))(Xv94mV9OL(nR0PK3|A!hz3GLtn+|T!)!cJ&yTR zbA`#O*e*^~%oiI&vkh$K-Iz{jmK$ zT)PAsFDWPN+XwSID|xVyRkoNlu(G=R+c$CG*3Dq5Z9UkXZ0bHkRaMs=_D?=rs;D~8 z-D?oO4qV8$AA7X110`R6$ZCK7Zv4so==vLBOZs@#+5GhL%bj1s=R?w~lWSL!@nLZvtMS_R<`(bn#-hXW{l3YI Fe*h#YR$~AF diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkCompositeIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkCompositeIcon.png.meta deleted file mode 100644 index d863e46..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkCompositeIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 3afb3814c40717440b175b6fde4e73c2 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkConditionalEvaluatorIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkConditionalEvaluatorIcon.png deleted file mode 100644 index 82b4a389dad010ef94e32e69088669fa428556fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2214 zcmaJ@X;@Qd8V&oREK)#C9SBh=U`Pm%KmrLyLLdVHWVcW;Bo~M=xiPtr1W^!BOI<3O z%IL6^f=k0PfFO-n1O$1gN(8ll5EjKUh$!NWETWwoD|UX2bDw*^?K$VX@Atmv$ITB9 z4Ky=Fnj#PgGiDGy0-iD2&)5(i?ef0Vfv5FQKpYeaCPPxT7(mdtU=o003fL(?1iMm3m-7aS9GkB9XKj?(VKI!c`&{LTs6Ec=^s}Rh(5{+B_GNJ7Yrw3i*R_XoAyd8Ko;x&Lj{75 zXbBVn{F(3n6qZEEMF1`Wkbr4o4&1opjoMHmvcDK$L!dYc1ox~|F+3H7KuIbnLitA$ zQBJWuAs3WNoZsVFEHYClf!IP0z@$^qumYCHW*4RvhA=lBa z2fd-KqwiMKTSpbWmAq3DpvEV61U<)RghPw(ep1J_Y*5e3TSlAtS1qm$yz*_{S2F)< z@c^~-#pD}GnB(cXo2P7caBgQRv!L|!FT1&YE-p)>qf^vbrvYc|Y72{a8ylM#xm?vU zR#xV~-?giiUTYMUV}iOp89Sw+`ApR=_Q+}reuM{vAp`>!eCF%vXDx4VAJ$G(h%~_kPCXq0<0n9la@5+~Nvs$IketuwHDluDC zY*m|Q@7PhIx2l!Qs%yUl?XRA#*Wz;33>+5b(qfdfcw{AQ;Ew(z= zx6S0$`u-?~bms+iI7TzMzeY{Ig88ED?c2BU=aF*5sz;kV2unStcGW3ufn#1Zo#|KZ zJ7av)?}ULMCe6Eqoly$M&*h7<}R4V;FDg5aC6DLl@ zzC<4=*_-|ZO|(5qdgoUV1dXdrk}VQjaswOvo2wkGcaM!f8TP-+8pW?cn~105XMRhx z%II)9ye}i;(YjNXrO(s8ZX7DNKP+7ve5Wf`C2K;pyR|D4Tgz9QG(fZl#pN9$pRPjR z+k^9W20CiKNUW2+!yNn9MvX=jtgNi;|4yM;=1-4DxkT&res+i|Ok!wIvMr1Zudgl4 z%|l}j>vxRgJ6P@niSom($=2e!%Rj6QyLj((QIa?2FNvx{s_(3gW@q&;*2h$Q6V{x! z<)qh4$j(rCvHtvDyBuy@RYs<;Y)#Q6|8OxVS0vmta$m0PUi>MDb3w8+Z@o9$w716k z+58)v{O6G^fAdcL=33#4e$&-mOSJaL1tMqkQvdfH+-ha=|c?z$7&iJvaQ=Z0JRAi4OHX;{lYHDPB z{9JC5j1_ z6QXoCu0Zx+4WG~VF~=P>nQ)!Ga1imC#dZBF`DYC6O1|A3QLeFKs*F32ZmPec7;&?H zwwE@L!K~^WiaxG-9-OH=a;B$gc8Q;6R?Vxt^ zn_?^Yid{G)uE6>=@<^ax>AeOPVa~1pX+CoP`|OID9S`l_%61IJ{?dh7hE3r0QD|Nh)@af34Nsq`={)LeOb73s{hYKOQ!cuYF$y09i8a{tMa zN|&Zz$iw~pfx!owM!hGJv&bNYbxLVW7;W&%)G6x!>i#K5PqwWiZhu=-<#Cn0ZCBCQ bwC-vIGrV+P5ffjm{c~Ujgwkua?aKKNHk_Ws diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkConditionalEvaluatorIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkConditionalEvaluatorIcon.png.meta deleted file mode 100644 index 614b9f4..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkConditionalEvaluatorIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 63d6a403c13816a49b58d1de830ca51e -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkConditionalIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkConditionalIcon.png deleted file mode 100644 index 8e1ce40b97fb19f493fe0626f01d99269e7723e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1075 zcmaJ=PfXKL9PVOJLqJKqs0q*%LuO>{x{cy0lgxFKAw#mwfS|_GzOe?{SK5awTqMMp zcu*mp2zpcx1dJLIA_oY64w$Hk7ZYMkzyk+S@WR2E;484#IzvXCH%;%L1P$77ZK9X^QvWp~;fcsPN=ttbIgC?gtx2+FVnkWp3a1aTnBeLYK{ zmLLvLO0pHT#u|AEsGn;>fIEM1hk03tg;r=kU@jp-SRROA5FQXO;0^bklZ z_5B7&^fx7?{w~QcQ+4ObT8qa5DnKG>sok2%TLEfEm&bE^o1w@Z2|+q5y?6-93V; z=VUc=uS~dLj3w#}OS|nOWr4BS|DmdyLz^fL_VfLxu$k=B0TTx%>@_6ZxKxE5O6Nlc z5D_$z5O!y)*qnw4nrWz$p#(=dTNF)(8T0fGJ{IGnnu$bB0#PAAVFg-IWZoB!_`|^( z@7Yk$%d+7}kgW-a+|d3_Ns?9FloDD|p9Ls_o8&-LZy+E!3?99aN{atp{21FGcC zk$EM5E^J=CJ+7QT7f)U;gOg$G#{Sjl>=t&9JVnO)IyT(^3kE3Wa+Wz9u;_=bt z?~jjBj?G6!FbQs|V{;4Gabw%6NN$JGb*#OEP#aphs@gfhA6o*ip^ zQ!?1rzIM4`$=U!;{qA@{N aA8-(_N2xF0KHmOqU*l-FNtn2BbMOy57G-?^ diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkConditionalIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkConditionalIcon.png.meta deleted file mode 100644 index 8f0891c..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkConditionalIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: dea5c23eac9d12c4cbd380cc879816ea -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkCooldownIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkCooldownIcon.png deleted file mode 100644 index 6705cadfe3dda3f18c72f19c5fcfb0ec365de3ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2077 zcmbVNc~}#78je5|F%Y>$cre6*U?Ir_a+VZwmOK!ofItgYVlt2j$;4z>VgyA2ITS=i zYizMq5h=)_cyN@fD^(FKfg%(aVY?{GrPWv$+3HSE-2KC+e{`Oi`5p7U@Av+`Go|mz(5qrJV_oM2gixRm=Z`q5SwfWT7?QhqfmiCT9sIm0>Zd0V6t4v!ar_l$K&Ku z7Cx3DB8gO7P$m!2slg~+c(g>9B4J4JK_BA+wM>LS0m5ROR*|aIFtsfF0xuJpo3@E~ z+=2<5!ot516(@?oaUnH`qY(W4BqRX9QKI9>6TJ0>tXOy%46B$#VtRTyA>E$V-0D(kQC`{*Cu-3ql z;QwU2*IE<3T?G;&K@F6qmLT~^TDu5FV)y5cOooUW<_5JKNs2g?2T9Ttpb{4HSa{?M zK`NIrNmM$A7QiL*c?=TY9{@O9I>6!3X=DnOO{WR`7dhUCr2qmRHGo8-a~XU9;0xFQ zNx-JjC~OXe#1(Kji&&vj1B;asaM7cg+JTk&aO#tszM+W1vtL zA|a0*tsS1$$A>t4y6W0bU#LeYmwG%;_dYZ`!nQNodGN6=ut$ESyRLHOg_4KL=!lj4 zTtjYU9w8d5Up2BX{|UR`p;t)j&s(MItB*b!uDy~rzw3EXSpO`uK|_ss*l~d2-=cXC zG?6j!(P;XQc2>DpRqJDbp6+`4RNCFF(Z|l6i4k$WPR~K6enslH=zwgSR>dJb)6M2! zX{m7#a`LB!z0d`^8%9QI90SdM-n|@m{nTi7@|b&N(Vf|jj;!n5-FC_=@jJ1HBdQ0g z9K*UgKbgG0t%svp8HhgHd0IB}D%8~-b+*IN>BVRLLiCtNqjkj}QLe=i*D*HLx1&13 z>K)E4IsEUJ>Jn^W=X2guyP%F0_1N+A!Nk|p)d}YF_5(F@9WJCi5yvNQsLlQkmX_r> z);Kx5q~62eT)b(la`J24u9yUi!&3$0J26M?RM}JEDw~<%a?9D78ONHMn&QisFQ2Cu zzIwIuvs1L)y4s(*CYxdk$4;DZ57lTiO@mXJgMED$a*l$+`yUNG3w3ZhRa{&=68D?n zm{VA*yx|u&8I1A1cE;0gMnAmc)>{44vpJ{h^mcFMNKvBlkDuk3|iUft!kwzlssWUt{HH<7Uauvo{4QEC1Ye4kvmMQ5h! zYF%#WzUF{TWShC7XW0%)yQ^*J8Ik>?E>P}e0L8UIH18PRJQT(X^XVCLjeo73Fk1dS zB>;OfV!*sYH>A9>&uBDmEp$_^{!)7O;Gfc{~RBe9xN+kX~Tuy2?y*p zWJuSvpc^|jKA|t|-2Q#l-V)Z1a#6FT3vI5q$m{qmi-x9j*OJLyA;zLoeks)uxQ$sh zkRNYWKxmBkuDqh+sOQU=jZ2aZ7pMNUdu&~wzfD0dxyZioZjST%f#caHh0e-7!h2Po z=bIAha)%MA7niI`7Uwo#Yu2^9uu zul?|$$M2rSBCo5nz2z@G-Tu(uJnk{gOuj)NElWjTwB@uM`apM{ee&Y|&As`ovkcmi zoICZ6D(vqcHXXY?QnAs^!Lh3L8}wIs7;B8>?6Mb~n3{rTIr25XzPb@;HKqM(t7;%_lO9drs3!^tXwV7<-*^;&guASgdb;pVRQci}i`C zANcG)@pP|fZ2b(VLa#y{3)`H!d?F>?^ureN!+Euw#6AB7ho3}$ diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkCooldownIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkCooldownIcon.png.meta deleted file mode 100644 index 6883c95..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkCooldownIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: b5459f67bc5033e49ad7a763cdb885bb -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkDecoratorIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkDecoratorIcon.png deleted file mode 100644 index 6cb948491749d96cd00ff4e71c7d22ddf35d791d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1229 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 Vtk~|4=U;)!Tu)a&mvv4FO#o1SKuG`q diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkEventIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkEventIcon.png.meta deleted file mode 100644 index 407f125..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkEventIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 9041375773f69454792084ab67820b7e -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkHasReceivedEventIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkHasReceivedEventIcon.png deleted file mode 100644 index 51a5e0ff583cba21302c2ac106afd8365bc730b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1173 zcmaJ5u%n#|1elHc$5|NUPM zw6?4*EvYCW2%mA2D?yNwg3@QVG@urUG4^PAgkGJ zcR(XSOsBL&2kMYE2ny6`*}>2m-NbByXl%-uveE+(nFQUM5u{%KcAX+MHAuDlBvvxR zAf>JAw?JEeOG4@IQ35K}w1#ZV2v|S|NG3CSuVD+BAeGY<@ZPy*C^82@JwfWTsSc@? z3_}Z$K6;f$VL6WEd77*D@jO>YdRflPu=wRYT)p7q1#bg6`A|5TrFIE%F*+FwpMq2h zAyZ(ObUIC^SJBYwX1G8g;AnWg9*pqVSp&%#k6|y(D~P~WEX_n3G)PBLPQpGEq_ES^ zDd^^utYJ@<2^WmX$R@+ltdmk6C`sRk>iQJgMse`P?>B|*MAigM9N4hWQgGwCmO7zK zA#4E|K`Q}aZ@!AHDTtt*f+iVmP>Rh!d@B*av5xfaT@zoqw`mIdYtXl*y6*~-~$6syM@PkCfvV?AY8Lz zVknV$^z!)TvLSL#wM&$k&Y2~XQSC-xv*sWE6lq_`nixc~fj>Qg?*SE`W zNACSnUY#mFQvIU#P}p|g9+ui4*DiGH$5#6%o~M5Gj%SYqvS;nz}_JhTjSr>=?8rtdFxOquv(ci+UviY5n`*L~RqKb*Tqq$@r d4(@ogVw8C2N-n-4oWw;Th*+dWJlEX0`xEJyhl>CJ diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkHasReceivedEventIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkHasReceivedEventIcon.png.meta deleted file mode 100644 index 7dc8849..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkHasReceivedEventIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: e6fc90c130121da4f9067b5e15b02975 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkIdleIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkIdleIcon.png deleted file mode 100644 index 500afefccdf0c10e4c3e702233f22388d3a22456..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1656 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~NxV8o3!bIvbf<8k#s88oIhUx|o?e8Cp8K896x_ zxR@Hi^t$9Hm*%GCmB93-AoQBy)C)=qxdlL*T~doO%TiO^it=+6z+Se>#O)SioaRCG zrr>sq2~NHGK*#8VA{Hs4VM4&v17gCHEsz6G_^Elo)LsNk*8j3k+-6{4dgJNh7*cWT z%}mb>5l4}><;gLNG`bA6njSeOUb*A*Wziz>;tvn{*lZ+>Eme4)EqdUX9OI|Na!_|> z2A|r3q&Q6p-glnb9QLZ&EP09yb^>$c#x4Z^}8!Pqsjf(l8=it9%}oCOwTU; z*Isl#qLJ%exNW@zx9NHFumyI17_K?6Dz2PukUn`HNBo1?PFMFkB`-A&d(f1BNG@XK zYs(GdY!7T~!q#ltc>ExbMyvS;k$s1>Zr(dp+5T)+oKo5zxxBA25xmQ<{Eb?ad*P)} z_CKqzf4gMu4i^8&`TilBhi&hnZwvBnux-7-{629Li`xGU_RF%Aw%)3ko@mhHoBp)r z72Dcth7v``zV!d*DLa)bRg>JJ^g}MDS+jtn??By;7rWnE-)TErz{+>}SkC*lxocHL zC9@KkWm7F)`JB_Yfh5aI;XY&0|tqa`t z@cH34AHr6tb>>cfpt#d#zSxr3+G}}}eE$hmu*fWUb?GVJi;_vR{B|}@)w?_UzB%8c zPj;)aV&_dfz!kA(M|D{3)m`TGO@aaLS9$Ce4szY%(r+nFYE%nYUOg*yviQMi2ez!p zO$yHPzs#64yC&{e4JL}_CE79*CwU0aOLS5&tTI3&kcxLRE_$3|%Di%V2u73({U}V_y W^Yo6mlr#50b%Cd=pUXO@geCx*1$>DB diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkIdleIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkIdleIcon.png.meta deleted file mode 100644 index bc6fbee..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkIdleIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: fc4d1b83384913b4abfbd8455db6df5b -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkInverterIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkInverterIcon.png deleted file mode 100644 index c9c95a904614ced1eeccf8cd5207b97536ebf2aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1091 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 YY`CVJY1}vPoAR$Az%PW-;F}=*4^eiAX8-^I diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkIteratorIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkIteratorIcon.png.meta deleted file mode 100644 index 6f7c8a0..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkIteratorIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 3c1366e1dc8fe0b46b4a6c8724194cdd -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkLogIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkLogIcon.png deleted file mode 100644 index 1a2254ca9d4e033d3e1bca91cd16c0920255ea72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1202 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~NwKn7NslTUZ!cI6E2|8oIhUnz=Z+nL9cgTe_LM znVFiv^t$9Hm*%GCmB93-AoLpH)C)=qxdlL*T~doO%TiO^it=+6z+Se>#OW4uH=O1{ z^`_uv@Ox6)yhC3J-7}Y#o978H@ zy@|BuYc}9ft=VO`sgOZp*VgovS5}w2dwFZ=D+Xm|^91eID-(k_6dD%V|%}_2Cv?+_kYK zHNk(KKdvqO;q>cDS>OEmhfVYpy!Kd0nq|ea)veUrsO)vcyT(Fg^8Ku6?ipFRMKbr3 z+T2%mY&{}$^Ux=uhWeJnFN9tQX;>9V#4^P``roxKZC8CSPyWsqQR{k_IR5!5xlFf0 z*!AK`w`(CWqVvDTEHXcCUU495ZmL92wSQ$YlYJ_KL<8fG{S5Ui5)1}ziIyvbqx(Rm Nh^MQc%Q~loCIBr$n~MMd diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkLogIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkLogIcon.png.meta deleted file mode 100644 index 7e7619c..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkLogIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: c97bee71424b3e247a161d1279643506 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkOnInterruptIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkOnInterruptIcon.png deleted file mode 100644 index e80fbf42db9ca6ef5876833c1acbbc057e1f9ca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1146 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~Nvfn46ebn7W!-I9s|J8oIh!m>Ie{xmub!8Ce(` zIk{NC^t$9Hm*%GCmB93-AoQB!)C)=qxdlL*T~doO%TiO^it=+6z+Se>#O)RnoaRCG zrr>sqDNeomK*#8VA{Hs4VM4&v17gCHEsz6G_^Elo)LsNk*3Rec0)ScKou`XqNX4x; z*Y|QAG7w>X5O%~-yK`6lb`9qh?R?bK51x%&<7Csw^C)2QjM-)ddNNjD z+Vx-NUY-{9T50(!(V3zLS%iHI4!#Zhf1g`pX$;?N#psmwIriltp;N`)1PDLrSTjL& zlbc*@E@!iC7$j`t2 z?NhV+&R+QVN3iI_fmsK8ZEO6WG+hla-`l>Pk-2>C&FBML*~R3xw!7YbaNTSBhYZf( w^8VdMycwP0$^4(IXCyRnsv!uA*;U*I4AviQ^c{rTeuGK_Pgg&ebxsLQ06VsTvH$=8 diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkOnInterruptIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkOnInterruptIcon.png.meta deleted file mode 100644 index cd95ec4..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkOnInterruptIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 10ed9753a0870c84889dc42a7de397a8 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkOnPhysicsCallbackIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkOnPhysicsCallbackIcon.png deleted file mode 100644 index 9a04dacc72e63a5191624bd74ec6a33a9c8ccc20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2410 zcmaJ@dpK148lIlYgQ)G2Tq@JJBsEv8$rz(y+^V65Ew;omvxdps_RM02WVbU&F+`D6 za_J(D&{pKM)lh15l_aT5Bt)?zp>jq$?eoX!tlRJMyzl$Hzwi70SgBilJax5AwGjw} zuD2JBp&r-GzM2~9?@HM(^VEY0>>ddF3D~d%6hR0oOArnry?I~+#DG9n?60>VG6FFl z#qke>1L>PdOaTuA&SEf9o>0w3AjmFKA;^q^U}QKH!Qnfj-qkmtkQ|mXYMTQcM;E$5 zksPl$5#$%=U5(AQ(hSd0f7jBy~o8)g`Itv)fn{@+$<6az_1a zDv-Vf=_U|CNC%7^nu){XkpO_f+dBXNejSp4!xOML^#h>s_9O>@L?9x+T_|-l5sOV? z&^*4yQm>p*kuWSIVX+d41S7G-2t*NByrZMztOkLARwK~jSUwC&(R{JRoB|CJGesOB z%n|UBvx;E2AR2Z?sh$3P1fKA_EMNRBP3nYUrJxXt$KYm0=8RG+U^pBW32-3d9Rc-?w|B+k-96S*sp}m*s8pgI(caFH zNSNc&1k7k2#E0j&tbe$~A980~fhSZ)ra>Z348-yf33$k_M<#K8?8W|vdf&LLAA525 zAs4GQgPkqxe-(OeOWi%Q)9-DoUVLwSh_CK;k-Dv|$5)+3AQnFNrcwQ+oo#us+@IYI zZ-fSSGHlUBuFq@^1(e#OYX3O9z+yku$f|I!X852!#~){EmcB^eVP5*$&V74=L-qr; zX1J*g?Y-{TH!d>L!`W1H7?tyQ1urZco^Gy~c>etLuB~xdSjqFQJjd5}k2${1kM({K zY2TV}>Dby*lJVj|a&q#_qe_KB(V_F<;6c|soNJ^JpoP_RNg8tTI)XM_6r=!D993DR zhUMgBWwTDGEqQIp6+U*DdVc`pq283p>=Ud@&vnm zP`2=`mL5OM8e3eE{Aaew+QU`ip1;7{?P!+fBSlTXXR%G(h9j%U>(Z81y!@;UTEE(s zl%Mo0U`8V2f;n3-{+6~Ij|oh=jhGusaVr`CjRX|;WY_I_MsAh7yf>DLijW%K)1AlL zVc-+d?!kzNpK?{b*^^)vE5DjlGf;E4 zbmtQLW@diz&FRJ?qbQXf`;_d|;w(RJo2?XnnJ{exJun&3a^FR^QMFPvangj6k_j6m zL}p#1Y3%Urx4qcaXcI@4Rq1uEEB3XDwo04CldOv_V1YI;`^+`#^a=yH0R^(lJ2Z9T zzLv#-%!$=nJu-8U1HQscr7?$sjPCW*9>cIekrQoXJ^<8eqOz5I%BGK9r^=5~&uC3- zy<}VwwtC6KnQbbflG8rTo-z(n28N{Z4m{Wmuxyt;-Oo*Y#}0G5vFv3TA74Mo%Xwo6 z-1MseHWg;iPikC)jj0Lpc@amV$6sL`_g%dK!fuS=nt3s<)AwhwN#d6l4)NNc_3mDZ*gGvp~0W@F-JMtzT|{F?Qf?Q&m? zrCEB6F3x}r+4S<-Q#zMlJT88=q4KKxrVHgJWntxpPTW-<6Di!wi@9auX`w?e3!7G! zGrvb#9kgcn_P~b_%FfCQyWEthsUv?z$#P2zewUB-ms?SXub&>omDU|gJVVFcdAvC3 zY*Y5p=E`%PZfL)dvFgK{r!v}>H>J>bG$bF$1}nT68RoCEYGSeq7kAg+)j}PY#v9um zZDzc)&MD~qO zcdy3#P2b!I{4TK2hE>xw@wH%7uuPm()89X8>oAmRQSds3@Q9szkK|dRBcDodTehJD zMbkNN(Hc|6Q@m{_`Wgz_z%h5Y#!DIGKf@M=#T=-B%=)d1z`w?%srtjL#=QuRUInE1aoW=PyR zgi#}nJJW0mDf!~godr(agcDH)CRWK=&j?<5eTRgWcEt3you9@6gZIos?7wotfmtvfHv9ME?e0UXa1Go0 EA51#^7XSbN diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkOnPhysicsCallbackIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkOnPhysicsCallbackIcon.png.meta deleted file mode 100644 index 19a69ee..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkOnPhysicsCallbackIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 06864c37115f11445b04701c616d0e14 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkParallelIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkParallelIcon.png deleted file mode 100644 index 52387d94cbf0e2eb97f3dcb4b4706bd9ca7c6bde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1258 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~Nw~8k?J27`nJvI6DGE-PO&)(cHkr(#*iv&C$)x z$G&eP`1g19yq1P3sUQklVEdbi=l3J8mmYU*Ll%J~r_OewbZnrq$G!Lpb z1-DzAaq86vIz}H9u}BdO69T3l5EGtkfgE_kPt60S_99@iR=@gSJp%({oTrOpNX4x; zGdFr2aS(A;PgIp)65ABorLZGD@#*q6{5O6x9y@gGl-q`)`a}2fZkn|&BIFKo9eJ=*_eQ{U>tABleQd@XSh5A0Edxx?7O`%5dPpL(UcRAt z17mu^{>|-MuT@vhtKSx#p>Q$wnC(JYy+so2|-WcCGg2#X_AI+1>9?35cAgd41|v zxmnJOZyuf_WbM;wzq!Sv{k2XZdtbS2Vw+BG{J*88mfQFh!wfdFEN9sahG4p-Lnn|= zV^(BSWYVTcChI%1Rd2}}>`FNQxoUHZrNykm#`!!NGn&}f$uqJsEbsXELO_gN095*T My85}Sb4q9e0M<>k1poj5 diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkParallelIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkParallelIcon.png.meta deleted file mode 100644 index 2fb6686..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkParallelIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: f612c025389b22640b1b6df88f4502e7 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkParallelSelectorIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkParallelSelectorIcon.png deleted file mode 100644 index 95c7490cdaa670bc93e6aaeb7bc174ad362de5af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1433 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 a2N>r0C%oP=eK|X*nDcb?b6Mw<&;$Te1@>|P diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkPerformInterruptionIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkPerformInterruptionIcon.png.meta deleted file mode 100644 index 7da0c1f..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkPerformInterruptionIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 7c0aba0d8377aac48966d8e3f817a2a8 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkPrioritySelectorIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkPrioritySelectorIcon.png deleted file mode 100644 index 93f5c62b608d14371ba7d281b92ffc8b4c3586dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1287 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~NvfnYtOcnV6Ya8X7wr8oIhU8W#O)R%oaRCG zrr>sqF;2buK*#8VA{Hs4VM4&v17gCHEsz6G_^Elo)LsNk)(2-j{?5R_SncWJ7*cWT zO~l>aCI^Waz3UCSKin#|u<9~;O%U3^qT}d2LFk-VMVq+p!*$F%Zl0bs;q3NJ$4>uy z@m+N`Z(YMF8I@N=#4eal$&JX+{B`?<9rm|x#8(Q#bgBjxtlU;c;oq?aF!OLvPe4gK;> zI98s+_jFY9mV0tmUb8L!9SmXkVg9VO?BAsm8_u;g&P~rMPre$kHpzrXejcOtl&gWC z7D~SR9rtJXS>D46n{+mB-7{-K^O|F``R_AEC$7p>c_OgLj$3;9o1d!M%zT+4LbL~+^HKY<(KOnKV$Z!J;~juH%(%X8-cpgU1AP5Ys_{rYXL zm$rFb_Rze$Fy!P}z75{;Znc?->fw<|!gExv=rwtzWq+A=jmP@L;X=C-1*fQ6Gc)G; z-u^8Rv*^O6yv26O@@WTnW-uBju>CpKP|qsCV9hk;mdKI;Vst00kn* AzW@LL diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkPrioritySelectorIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkPrioritySelectorIcon.png.meta deleted file mode 100644 index 4c00f53..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkPrioritySelectorIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: cea0f2b6cee06a742bb35dcc40202e8e -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkRandomProbabilityIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkRandomProbabilityIcon.png deleted file mode 100644 index 7a518bf78d350a510535e0c3f706c258ccc1f3ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1264 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 diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkRepeaterIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkRepeaterIcon.png.meta deleted file mode 100644 index b47ad69..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkRepeaterIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: ceb6f3e7f67cde640b28b2a15ec13ffe -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkReturnFailureIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkReturnFailureIcon.png deleted file mode 100644 index 3b86ce3a1ba925d5a31b8e4a7809e772323370eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1558 zcmbVMdrT8|96yGFqBs>cDvNp^W}>5yySCTITG{m;(qRjfDj+_3v@`hGs& z_wC5Gu85CIjspN7-kd?$#5pbePKy!03+mQHiPJoR%olRmVj)2D41l@VA_g>j=@Q1q z(5}jj7a0QpL>GJP`9i*BrQXSUWpr3Z7W8r=8UPIGL5_BoG6Gn{lz4nb=;04t5a@9k zp**!kVc~Gb?a8R(ncOO?-C0%Y)VZMa<)9&`7YV$KK!ZVVna{5e8liDsy|@k^%OP-F zL?|^v6Gr7*vO%2X8Bi@#N}UQA22oT7tJEk8r-6t9M&t@{pi)?+SEG7F15Q4WsEv0O z>um%zsY~1$A-5oKdbvCh2*?6T8OxW*VVzDF=0FgsC?WM%`UE;C_4!jG3Yc>GFU9I{o}mSnx3g?nqyn96W$UG z@2Oy16wi9W@%ZXJFVIgaREQQM5S>zslcMz)s>Lu$iz^V6qO@upn#8*PPt4?^G4gP6 z{HItVM`8trm(NRI+&pg{#wT_RFSbVD(bZM}c!e?(m_7LGNN-nW&pVQsfy|a=iJ66W zY^m*AGgicENY3_E#ywDY?dLA@{!im(VHkJy!sWKw;ei21W?N?a$2Z@-zTwQ09f`?( zmj7kj zyiy)=k6p5>nyCHO5A8=*&7C&on)WnxV0K}>VaZd;#`^B}+%4a}v5R_Gx0^e118TP| zJ=W2&>*UVvn!nFgM<)(Sn^!)lGqr7MYFyPsojTm!&@f-BBckA*+IB`E86M=HboBd< zPm6wB6=GtK7LH18Cezn`ueckvJ|SjSOl{I3>zk_P?G@+Oq^yJ*>gVjdVBJ=8tYox4 z;aN)4ne^LSZ^q)em8Y*fgt{wevh@0i4M};cQWosFo3qb!P#vpk2HJ)T&&L+|P3Z>Z z%%r_jL(2!>m!&YZaHS|n$t-qv_zdsO$#0Pa!bj`FQ&eIIlmD@ zZ>!0!llEnw(EaeE>Wl(OL2+m?GFrT_eBEaL(IT?CuyG=>j=aI#Em6SnzS!lxnw+xm NpV~}XiB6Ma>pz2)H;@1T diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkReturnFailureIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkReturnFailureIcon.png.meta deleted file mode 100644 index 81b783a..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkReturnFailureIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 667a475ceee05824188a36b24ec8d392 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkReturnSuccessIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkReturnSuccessIcon.png deleted file mode 100644 index b76cec74c0ded88ba0e95360e7369aaf9e366adc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1468 zcmbVMZA=qq96y90A-uSWlNp4|;oL;pdue-IPb!vP3k|{;G^5~*9PI%Y+Piu^Y$0(% zWdkAV91iD9=5SeNqEjSJ6aqsSVN?0Nc7MyILQrriZ?VeO?CrEobShcDjMD3L0W<`qrg>egt%8%`60VFFbjZD~uMn8G z>yQFXHkR!&aOHevwZ!FD=U8mj6*jFMN!tpidTBu5WYH*Vb}noXB@WgoRSFx1<1k4oakYjd@no35a011^AQiZp){r!j0xvxX&?ebS z={&}?qzmkHNVzP#XcYB$JW7vBDN1E1uGMP&90Z{N5(;;fAhTYD;7$xMFr3>a@h+Jc z1=!EXmWY+I4gr=fy5MwWXD<^A?xjG1kfC1Ih2lyKbvpfiEl9iNJnmmJo+<6NRJk}b zk8_Kak`3geG%)}Mv3tHEzaX%NeqG{0QdkEg+A5u#Ae$K-0&bLc-cDmAm7bzD5JpCe z8C5u*ZlLh=bSj0=ka{Y`qzZ663rmogN@c)s%AhsjxY3l3;|2<2FcU+l^eJjQfHezl znH6kYKravUE@83fVrhfKv9c&xM9~qbfZTFX7Tx8d3pV7F@M{IUU>7~^P5$&OddqMU zzlXD%B+&^k#Fyruq2Gw92};ipS`}q50_*i8rPrG%14fW06QwaAOIZ8=i5UuvLH)(? zpJE9dfeQ35mrEaPmYatYK*va+HA2V@Ne~n?XJ+&k@6U517jpWx#jc#+tf+mlHTb}4 zbIL^dt*n{p@tKcFvAZCdLk59Vi^@UFpIOIf|{ttHNU*pWGB0>3J*bykc7U zXhq1(lly=E-ZRS&-#&Ua|N0S4MfllXFrG#@+InK6>c4)FdWtVXR>icfA6Ab=^v@%; zU873=%c2d(vL-iD(5{%KfwEsNML&4-_|@6^b!XHbdi@QdqZ!)L5V}`&e0yeVuJ=~! zaD0E-h#2wye)jU1gG|Wy^vDOAd2}wdbL`%|$k6?x$+c@s%KH1-lRGR)-E|+yJbQhr zeaD%bcfPrJ@|_6P1^GVOzcI43B)DzI7jIq}!NwJxA=mm&U1^}de>?88<9i-9Ue1_l zZwuQsSu$i^dvx;AcZYlhzcvjX_p0jTBrpAj8tGh#O6N$bS zALqMZ`|GqNDeAYdn);S^Ip2}Oge{+Mt~sxLy0fmOaVn=1?mBjLFm$Ev@6iK}v*r9t z`UIG?+xlao8mA)D_6z1M!w8$JI4h$lgXU)IkNf=pQ?oILIhS7S`v>~(8q)v( diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkReturnSuccessIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkReturnSuccessIcon.png.meta deleted file mode 100644 index f11e8a6..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkReturnSuccessIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 66f47acff1d46f848bc8c22b221ee1d0 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkSelectorIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkSelectorIcon.png deleted file mode 100644 index da25d92cffa902f276cd55dd52100eee918d5fd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1598 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2c=CsU^h>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR^Z`oay)D~1LXFv#>P5)1SV^$hfLb3y(Bt1d1HN<}yWtLoyA%7Rq=pw#00 z(xPNwe55JEGy}s9zeOO0K-XCL7i9t?B{9b(Ke;qFHLt|e#a0O@qnDDIVr5`v;bd;& zY~<=M zGh=5n16L;_R|A+{&%EN2#JuEGn7x@md!c$w@ana4E=o--$uA1Y&(DFSfPjqrlKkR~ z`~n5%U^4}c@XWlF{PJQ=Q1n22>ylcOS(cjOR+OKs01jWPOf2@h8kiVaIJy{F8e2HK z0$uNDX5r}QX5nmLWaj2(Vd|^|)tf?2nCSx@qYp|PNQng|1WbV-COqi_Iq=Mrng`4= zMZm1F`|K-S1_q`)PZ!6Kid%1H+ImPQN*sT$JpDnqkf=zDfMSORS8J2U%8o_N%}TMZ zyFzsMwmEN&m67#YsC#8$cXB2>>;Ax!0zsF9evd9_UbrNpsHHf4#uvSR{Pz@X@5y}B zD(^4g|Kp)o{@(U~wf(&6dFDwA0|eep_B>>3?7u<%hVYvWKi@r4TXsQXbKix=w0&VB zuH~%9AAfvSV|SllvA^I3lT-s!(F1-9=G_VG{L6m*ty2{0ydkD{tF|y@^UY~4N`}i< zz0%;zK9y0#7GK=xkYFj+eN!x_ns0f~%H;_%ec3$EQ!lVhJ8g^b)RIfo4j_{rYynCebZ*0E33Wz z?qPz#j`Nk7GkoEq%ZJrZ_DvYRhje*9UZwKZmu@SaDUeC>zluT-^{P2g>@ z-1}Qsgex~#=nnfg2jk~=7@xf>_Iml0;RZwRoMJa76P|S|IP#d{9aNv+Q4+3p)NGue zwsPssdrj#NW(6Hp{OBYRU6HRb&Eu+S)pzErv;3Z`SRMQ5zpCl-1M}zi-l}v5Oq2F6 zNP5q|s)_gaxdrjh#3Q98SV|v=tdahz6?$;8j#h}s-!hhY4e?jRVzna-Iz=N^n)n-f z*=&(mn-`WiK`6)c$#XH$ZJ(QZWyEC~M8DlVWBoaQot{i2 zAIu;Aa4L!-n|~aFIuXPlqB4h~pdbjcDS{w~;0qDmKm~7RJN;n|H|IY1zVDoK&$&mM zo9ar7mlYEPQ7YF;v1T#? z9YFGQz^D0HmJ|eguP-AHnNmSg;Q2tKw_8~j{!YQP zXJjomcTM=hn5=3uEbaGF$^&Du|3gi42JNCa_!I9xh22EA4VXA^VV9%f!X;OEu52;l z02M(e0pYIvEjFhhf^G`hWTZtP*R>j!4m0lhX?!du%9e{%O9QeLqObyO7`n)Fd^B3i z@tY%Ij%A~@VUA~mLNFZQ1OA$@6v%TWsCAjZLV2$Khbt81daYpE*s}y2V-L`49cYr% zDT_woSONw0a$LP|ER_Yh3=W3z3j0@~^GCRQyyZ;W;>}Fs0}FS%gWLMWOYj{(i3hS2 zPGq0IA1^K5N0t=562yVY>iwCvC36>+U%&NrHe4V}z5O5Mj^xw9t;2&AqjMHD`myYp Kq$@Q$`+fl*400m? diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkSendEventIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkSendEventIcon.png.meta deleted file mode 100644 index 37f0045..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkSendEventIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: bde76446ddfbd234488e8d591bc75e2f -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkSequenceIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkSequenceIcon.png deleted file mode 100644 index ee09a93e7394c7144a9da7d39296670898f7420b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1207 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~Nw~nHrg!IU74$8X7wq8oIhUI$Joox*0l}yIL3- zJDIw`^t$9Hm*%GCmB93-AoRN6)C)=qxdlL*T~doO%TiO^it=+6z+Se>#O)SGoaRCG zrr>sq6HdMQK*#8VA{Hs4VM4&v17gCHEsz6G_^Elo)LsNk*39w++Zh-bwLM)NLn>~) znXxhJP=H8VakHv``R=xJoU*@oYCHBdK2Y8wYh~dvy^l|?mht79X6JNAfh7}kFPuv| zG2sr2;zxdsBLO+v=RBx?&|Lk1@4o8yIfr|-x(;Oo&u}~4bVy{GL93=uB3JN?Lz5O? z-r^w9w%4L>Yv!z9ckGTArf{fx7RkF_+<0 z#W`DngDrEGU)J?SJ^2Pq?-j%^x9gt%bulVDI-KX&1KymYynI(KgsT2!aQ>iLc4_LN z%6a)4bl8u-S%2{2jt#lD=TDfIY@zahmBYX2#c-#KEc?L9{hn2VK{nmzevlY*HmE4^ MboFyt=akR{0F3gVeE{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~NwK8dzGIx;U9yI6DGE-PO&)(Zt-<#Kg?Z*wx6w z!qEt(*Cju>G&eP`1g19yq1OzjUQklVEdbi=l3J8mmYU*Ll%J~r_OewbZnqfYG!Lpb z1-DyFaO%|uIz}H9u}BdO69T3l5EGtkfgE_kPt60S_99@i{u8yrh=GC8+0(@_q~g|_ zX^vip9VFb0T}AGsO>C7@P_%v@xV!kFXvs^?l7%>ol*D?`o{Ia(K2td1^VujP2< z_wLUJDWAZZYCm*WZ(!%&z^!e}ZGBE^&LQ0|IchbpA6oQDn6eFi=N#M>+WNnE`i3(`Zw{EvIbgVF>()bGt1Y^e9`C3>{j-5l=3w#C4|9TdzPP3I zC!&Kddwa{{JqHpmGQBtcx?yo_(w0}}yU%}qJzs2YbA)`|ocBVLA3xo4=h&B5GWwGC mZtNAD-Z1YybUnG8ftlf%^8(olpOj6YBF59z&t;ucLK6Uio3Z2o diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkStackedActionIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkStackedActionIcon.png.meta deleted file mode 100644 index cfbdbf9..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkStackedActionIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: dacf20a036b1f5e41886d84ac4a47779 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkStackedConditionalIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkStackedConditionalIcon.png deleted file mode 100644 index a9df3146bd9993800672077d95c301ce2e474897..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1289 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 diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkStartIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkStartIcon.png.meta deleted file mode 100644 index 38313f0..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkStartIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 8c35407905159694e8b83df15d3b039b -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkUntilFailureIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkUntilFailureIcon.png deleted file mode 100644 index 8a1da43906f9e41b4fdeda82a91270d7001ca78d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2406 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 diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkUntilSuccessIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkUntilSuccessIcon.png.meta deleted file mode 100644 index 9b3eff7..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkUntilSuccessIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: f2e750025a5812640919385b75319d6f -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkUtilitySelectorIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkUtilitySelectorIcon.png deleted file mode 100644 index 8a7a0deb3ef74f23c8e1899cd20925947756bf78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 zcmV-Y0_fW9g~_690gM5hhU` zs*bQhPqdd*B~*IUergh7Cffm38FSPhO(V>7m82`KeGAIx;Dkv~f>|NEa?2O!r%kcM zE9&i~i$pc2iv2rjieM&}SA1?3onml?6HEdI_}oRst%dk=K?!RCyIVIAeZJ0LU=&*L z1glw{Id&J6F#I^EqATKu?E@PHA)E*yswQFi+`|Qr>iAdqc<;lo~wiyI$!8^MIU+b=f7uf799aq@QHWO(X(mi7C9ed2MhbDv9gz&}_T^&n! zdF9;_7|~qT*eW^)#y|!ye|ob7c2^~641FY$|N7TQ0aK(?_JoC4g$})n)%_yp+aRH} z6O5A_Ep}|Wsu@mmQ~WHe?9sZil9fo^S>*g)VlT`>`V8Z21c`lxQ^{ay3IG5A diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkUtilitySelectorIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkUtilitySelectorIcon.png.meta deleted file mode 100644 index 1b4d07e..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkUtilitySelectorIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 9d36cd363c3e08246a6e9eaf5ad99d69 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkWaitIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkWaitIcon.png deleted file mode 100644 index 6ad623f082756ffb736a9d24c0c01b8e1ba81241..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1852 zcmbVNX;2eq7!E;Dgjl4Yf>>f0L=ci}ASVf!WCH{UHxh7ALb8EKl8u{1B9s{qsG{iT z4~wXHAn1s4i2{~#qzGz?A|7~aR1mRtP_eWfP`gpE{o(kdJG=WG`##U}e(y0`92*@* znC&(jhrZhtA;8n8c}zgsCA4 zB_|#XozlWqJW>{l>NpfiZf-6)H-HQynG}G{W?MLDG=I#(U%y_9$_)Nmz2`Io2&6$Y z^@;0s5G5Yc!#Ri?%ZJi)8jQv6>p~Vo%o|P&qQa6QQ-iQPM+0e5F~}ofU&soTfhWqX2B?|&w_PCVFH7=G+Cup zz`1%KOL{(?7K9MhI!F=nN4JWDD4s=K#PGu>~MNr3r-~iw1xq z(iB$le_}?#oS|5X<3GhRy@gevW%{}FvBl@+fwWl1AXsZCtw)=&j#G<4exl*-%QA^N zD$e=BBL|c8%=y5%3oE-8%qVv83a+qoGHnY#8o!Si$9LOtqq-uPxo>Nw-x(J*C=CxZ z;?wAY>dhsN^U_Mv9X;qJAH?q^wWT8yEn^Q)iVqBy28}&?kpF(PEx#{lIC^R6uddyS zqiybfWl<50^LvMnFwH1w_g|ASvwtYZ&y2bNPKMUG7xL!)ytuEStUcN;ctzU8-r?KL zf}Zo}n?L6C=?rS{IOuvCe`Pbp9CUHFhk02`r{1LQ+4uCgnN{SlAu>H^FTQ7^qpSUr z&76Y)ox!iUPtR`hHlMx~m%+`lA{=}F&Kzv8qM06)ikfHi+RokfX!ey2UEkxw_}@;b zl^thS&HC|g1EF{5<0N)=Z!M?LfWtOMF#&h?JlmvMb8&OsT)e4Zk>ftWnx;&o;0- zalTrKH=3OvST7Qn|Tf=ADGJByT%=}t`oA? zuBy2$y0WsaX0v?zyJr;xJG&$YhMfp*1-)(yM?6mzGH-42daHhtX_uz*usJ@`b+|8n zk?}Xz=Y*b=j+*i#eu77}Hk8bX8^%bZedKG6Pm>_*6~2jQwPHCh;@W8HtH7o{yfb$& z`=_1e;(6k8tH(F~UU)d7a&FDOp*7wqX*ET>!N|^R15NGa z?#nJWEUK#4BE_rfo!|QCN4=W&`nvbrSuyUKYF}{QN+kYc@d>B9Vpmc^%? zdaV=60*l*b!bVTsmhFB|lk-My(C&AS(D3yYk!E4{ct~3RgU25>y=w}=JK$DScQ^Pi R;N)BWXJSz_SSv{1^bf=y+d=>U diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkWaitIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkWaitIcon.png.meta deleted file mode 100644 index cebcd00..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/DarkWaitIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: b4b59e888607422409f1efa599af34ae -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightActionIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightActionIcon.png deleted file mode 100644 index 7e4184b60747e4237d21982d875afaa1335baeec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1404 zcmbVMeM}o=94;Rr8wNkZ+{WkILAyDMfxi^~(MPdB~9HDyf3^N?}HT3MYxiUY;(hTXjUkayqvpAs&W>S9zLLEVm9hXAS9y|3UhuW#CYnVgw(=1E@(j) z&U}L+9BV-<^-hg5WQRU(UyA@MT1woWmU@qgMe}zf<_IYh1fawqk$^uak`W8K!b{5Y z*fxeDD<)FC1zmNj%2|fkc>yANwN~ZP0DusL8tC){0h9=?0XU|SZ$brhq@Eyg1G09Z zvYNnpNf%YHrX{Z|s85nYB!-2}L9S6&?d$3Tx9Fzr>zo=P`B{hW6X3*Jj znlfoF3^xdXl#JCi{Qi(a^p#?^LgM zn`Lm+_3~diw9=6a3}n-=EWbc|({9XOzg^ZE2X(nA~d-_p&X7+y1MMLk+cwvzrU9xa)$_ljF=?9dzc7Gk4q3 zhmbHxqNhkmh#;uIhae)5qO9m83=AO%sa}G>EQ~pk62*IY+YR70{`$dIw!{`T)9|CX6ERb)7V zVThutX(c;|2U9(~gjAPkV_cT16E;PKx-4Ck#vlg6a759<^yZ@_8Yps@9`L2yDLn>9 zmF_76_D}U@rKvF~DAQe?AY}1GK!sQYmO8GPycMR4x;&ZN+YAkg5Ih#9x04!7^??{N zAn>_7PRY%(!0&glUZ3C3wgb-1a*Uh2ekbeYeSV(n06Py&q8W0I&j^W~SY#EZM={oU zhA9*Zu7byfj1h(n27|T+$2keYX-;Zbw49phC@Bcglnh133eteBC=R1M4$~yl?IWmq zSynT5%0vprSfb9bF1LN85-^qeKU7uAXcK4PZodB%HnWpDWHQi1c|#(N%Q@^&Iv+Ej zh>?*+XuMR#zEOmcIf`@;>-U4>1Bxc2f_b8dPo?;zW@1s3U{VOvM8TyfG9Qb26A@3q z8;C_XmW?L@(Lf{-^>z5XZXq7vU6{eaEgPg-F&~ z`|>tjHw_NP)5lhCE&kqGJlxe*vm|uiKec|KC(_sQna$o@$lc*z9z~Y@8_GZUwM9YZpD#)J@Gvezx`sN_1D6l`m(ZhTBfaX6@Y12lmBH#(Rak I(V_Ey0P}2HEdT%j diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightCompositeIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightCompositeIcon.png.meta deleted file mode 100644 index 93ff04b..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightCompositeIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 7fb12c74939f50b41b1679eb8f9e79ab -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightConditionalEvaluator.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightConditionalEvaluator.png deleted file mode 100644 index 28b0af74f4417da451bd9375a3b79f1c98449c17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2020 zcmaJ?c~}#78V&*yE{`=>T8@qpU2sD}AcV|74#BFiR%=C5jzUVyqHB?Qq7q?CC81c0Rez*S3? za3(BOl&JI(Qh5=K0Ww&r(y+<*JHI3Y zDg~RI6U~d@p~-N8Ds6)n&f35i$u|_qK?ON}B@kzXZ~--pNdcp}SfhiCZ1M|T2%kH* zX=LC91S?{be@jZt69CDG76ziJQQ`6kIvrp#sdPp(lS!ulkrDJrS_J+w!|4ntnh8b5 z052ah9!;yrhcY>-FJs{=Hn{-9P>4n|7z|WH6cy1bX>5Kvg*2%Rh6jLD@z^N#eAte}_jA#1W5!C1_S&i;xnec+qj8c?Fr$#uBGy~-E{y$W$ zeudUynegxV{!d|@s1${1nXnEi(aQ10Dtt!n= zNILi3VU_t~Ti4tB!V69A+yz|Nv_#gLuvzFP%w5P?5dPl6kj%v6q}LMzY<7?F#a{aekzm!gjL z=coSgBjVxd>G@nwUwrubwQGU>pW7w|LN-fWC*4m0+b-32zc#V(=|gRq&(Tq6-oYUV z+q|T8{;^sKGtDJAfk7NePaBO9cm!8yQP*ofTWAx+tXiL7tXe`0sw@l=`%H&z45{PJ z=}TDZeb0AnTal&2Z79-{Si@=YD<2wxQgq&-uFDR1S>+#&MJ~v2sg;BgA8Rj!23d&LN%fn442-QZrR;a}Fe*gfv)jD} z#my%VGQ7>)gu5F>ISKwT*WZmcmb4XbXdhTZz(WNOkjV6UId zoNH^k1AGuTMmZQ)E#dS(+Rcey<*izHRcK@}X?9E%p%Z`YHG8i*?@fHpK>- zzIdPFlb!Q6b9+E&{z^qwfqVaw))il6MS*CXzsGWyZAnXAc&U~Nt5>X0W@;XCbe+lb z``01u*vX^E)~|`KN-rEgi#)RE#XUUI53fyxm2_O%DxP#?ua@uoZr)(p5A056MmM{B zXZmICUzO|TE2|x*?#0z@k|zw$r#9E?#+Bw}(w2i!ZEZP0gx$SIkIbq2EW2WUSL(jI z2Ev>1XM5@^7|oqZIaT_8eMSDCx_#qLZ@Fo61^ZOh!OM5V=Xt)<*P5O+T7da) zscM_nQjQA;YVT0q;oIvPpZ)VA-$Q$rudNksb(NP#2nC`v((YsY=>E5e@=HGDJr@=| z*9};InONQ~GTzZXb)YrE^<~6&Z@p!I^7o5*cDho&+Pe0_Gt=0v-p=v(sPOg^tJm87 zE~oij9j>X@JFKL8zCmEm1L#NsBWRLky*Q_9d;h9C)>hW}+~5 zmO*d8qJXoU)5L!~3<@E(eA>M}_*l!v=|!WZ0c-krp&B3{k5;EY;MmVh{YG$WVLI5+ zWA9QM_2xrXH%(kk;mHDW8Fen*C1U8O1`r|-@^96;^V_C^uMF`nHkV)JF4*s=vVm5^ zP{?5Dqn6aELCmtZSUKwdEhmaS`QCB%?OzhFxSMm7Xag_i#5a1W5$nBGBMlXlzkHQn9X_D<>1^@=>XJrQ<&^DUUHOn}oioWh z^tFcB`yggsx-dmNW n^k7o={w2E~u0w%7#APnw+yl5X)@*p>ymz@Ne9osylJfrmI1(jA diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightConditionalEvaluator.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightConditionalEvaluator.png.meta deleted file mode 100644 index ad355f7..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightConditionalEvaluator.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 3d3c18273075b3f40b6c921943f33964 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightConditionalIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightConditionalIcon.png deleted file mode 100644 index 9cf68ab0de0487ce098b09d4edad173bcddef528..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1052 zcmaJ=U1-x#7|jrdZtWga&?#ul9(1xMO}k`kT%B#xx`G+AEvy?1mL<1q*peHQJKOGM z-4J09!lw8$VZONsQ4xF*M0^wxggrP=6dWQdlQ{%M(4jZo+WBA&N$wBlobS8eckXmg z_epo%zB+;+-0?0kfyWl-+g^+R2hR1^;Gq#k(amg)>h< z2SIG3v{V|UrBi|eby{{XbY3?xn;<$m^QNqf07MRfVa*6qUmiZDNKFk=y`1Eg%m~P8 zUE>x=j(4Y&@ew7UQk}=ij=X>cbbw?sua6qGkPlKNT>;OXZH6LC5Hu2`Hj+w9J!Ax0 zfaGYuNAa>O$@4VZ%JDqgLi)U{kMZJ{_pq%3#|yqTa`T~ZG)v702{E=A3$KDy79mq$ zm|QML=lnFZh8Z>x2sj!(p9dp6cELb$-ecHJWd#w~ilv!Ig9hm+%0qAr1u2~A#u0S0 zB5T;2Wx@qx^0LXWwAVRO87N8rhw6F-ZKDL(%J-kbcB)_kCIM_XW+}LFnIA*l`uDZqbRpmNX&`lg!1eSIds4)xbWa-F) zRyCK_SXI4Eu39}8Z&faXlVP03{?+L67Iu#_t=JYXD#ix}cDsdb{o(zt7x+rd#Kll5 z|LXJH>AE86I>8CgRwr%@WWFu-0)A=dvinzk;r63X_pbNNHDB@d5w5l7rH{4L*YC-z zZ*KKB?#}QNamjao8WBwcQ`dgZPhKS2Z=OH)gl=pYelYg#;QF4KhPRW4 z=L-wQLZ&$ToY|eU_x{KR??m0(Tx$a>%P;E(i@z^O#TsJ$(0;8DUSXa48jp61cf*5I Fe*kQdSA_ro diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightConditionalIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightConditionalIcon.png.meta deleted file mode 100644 index 0b2e4c2..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightConditionalIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 2963cf3eb0c036449829254b2074c4c3 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightCooldownIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightCooldownIcon.png deleted file mode 100644 index e668755894c81883660a89520cd176c9f2f12173..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2188 zcmbVOc~ld39uF0QQr(JJL_tVH5ojSN3CXMhbCv)Rl28&4#2fyMOrl$Nt{T{I2ik^S$4jg2=Vs zEOJ=kfI^`b@k2NwWcIVZ^U=uHJ#W1YGA)O>QdkVd!D%ubh+--sIf&t_W$~a0lqu6w zE`qC3sCjX!C@CxzgaZmljgwhra0ay&L8DNsgAH1lA_;^saxh+{VPKzjbYU?nB?Bv= z2nYf#8%$7zWavO~#@Z-FMv{WA#0CdpRvQ3>Kn=n&j6t2O(E|ns_AM`ftgXj*Eat5U zoW#JsGfFCm#IPY9h@s%f{t5z-h@nz(!~hDFO7z2!2t*Q|fIL)xVgNv)0;E99`+-HY z>6CGRh{JoY3)wNS2{5b$@c6W}G+Y`P2kGMRL^_>r zSLjq)SOsY?Rz{f|N`)C%#L{;zsI>yY2V#x>eV~w#;SDk^o`@sh)oQC>Z>9CH2>jiQ zk4o#K(zPI71nQwwodU^6oaY=EiQOM7vI-*B01-MBk`!4o2U4V}K@H63FtErCPN`A? z1S*Xc7{DfRIdlS-OeC_{G$M;d3nWpfOj;n1Jjd}dY#^D;WwF?F8k^1~61hAUm&c7O(kDP#3|maa z_()V5C6uQ3wWjBtw;WKX+5#$hI!KLq8(%>65&c|30Ex!rkmzI@o692-nN%8+$)m9e zBr4(rg^hiWRsKIQ!z0Gvt;O*_#WHthvoq_NXO`q)_7F?Y6yk0?c{Tq zQHCK)nL0r%arx=0Aokj-?Ea|XT^ADvMKO{|^hu28s85a4pvb2>XK@+!e)RIxmB2}+ z{o$UXU8ga_+xx0=q>I+q3&ZNi?a%M{+m7feCHZiJb4RF8l2g)tc=m_PhLM<3!_&T^ z@6GeNP6oEoe>tc>@S?LKWME)GPA%hJChbo(iYL;^r^FEvyInjymN{RV4eGFsHZCPB z%e^Q+YrcFrT-I`X(0K93nf-CU+SNJ)n8@Z0T40FteN7ER?C~cP)Q$Jk ztfBBBli2JcoxYq!%P)4#YG^-cl60?VwDB9inY8Uwi|zIj-_SzSC9|Tj!fxzdrv5B* zir<{yn%kYW*{&lm`CwD7x7zK@rw_aL?YJ3ax1ofQk~RNKFbl0*iiB4~B zFKXx~H=bTwBA{S_OPEC7N%DF$zUT5@FMTQg>6)m9O ziTtT5#O;)DuLSa#j9iU(*=IHyKM_hK-aZyi0&BOHI1$--_t3WMUzPKFN;p?L;@3Nc zM#sb))3EB+)hO20Kx3?`QC-}J(e33^wenHdLHcmomnx z4p^blBgO06bL$F*4rTPtCd7vdy|3_{h`P{tE`hURZuH`haHXHv7Sj>q^ diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightCooldownIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightCooldownIcon.png.meta deleted file mode 100644 index 7ebfeb3..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightCooldownIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 480c79a18119d2a488b5d984211463f1 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightDecoratorIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightDecoratorIcon.png deleted file mode 100644 index 4641a4e98789dd34b5ed07b44fb37b37e000d6df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1199 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~NvfnwgtB8yg#1I6E2}8oIh!7@3&4x>y<;J3AUW znpwEP^t$9Hm*%GCmB93-AoLpH)C)=qxdlL*T~doO%TiO^it=+6z+Se>#OW3zH=O1{ z^`_uv@OxETl(ytg87?nL;978H@ zy_tERx5+@@m~O|ztD+SNjA0i9=Nz0Fb5Js-k+tFlm)*|=E53UCYFM(7on_~%a!+S3 zug{NvyyIWcW7s`GCyFJFVcxB2$>t|M&)GdiR3|i4(}U>%1Dinuqt5b6UpGv(y*BsM zwRN*Lsyvt#I8A<%YT}N+tWA6eoSXWTwyj<-%zE_O^-H%}-JF!?y*gR9>%*IwyLGl6 zIJNnmU2D7afl~hm$L8_yD|_=yJ+j8poW+7m*E`0U+3)$44c|PQy1XCVwBP95)1H5( z^p&(6pWfQc^D=j(yrYx%9k90Abx$g9|K-22_Inl|K4|8k+G|_6SY%~lQ?5e)+Pt+J ziZ?ojTbxTRQJxv{;8NgC6Hlk^vqDeK_FgSe^E}LDFUI&MPoI&EVL!iTj{)COGf)xY M>FVdQ&MBb@0Q&8n0RR91 diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightDecoratorIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightDecoratorIcon.png.meta deleted file mode 100644 index cb4250c..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightDecoratorIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 1ee7d6a0873e3d942b556d3093d8173f -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightEventIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightEventIcon.png deleted file mode 100644 index 4988c53c611eaf3bf4d87273236aa8153e903d5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1505 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~NxVxH-8vyP7*&8k#s68oIhUnwXnfn3$M38kn0I zyPBE9^t$9Hm*%GCmB93-AoRN6)C)=qxdlL*T~doO%TiO^it=+6z+Se>#O)SGoaRCG zrr>sq6HdMQK*#8VA{Hs4VM4&v17gCHEsz6G_^Elo)LsNk)+>LjEMZ_^3iWhx45_&F zX69M%kU)_G_q%mAxH_@y3SQC~<&x0S==8s7M@YcS<_y8U)Fx^7f|th~1UluFQyl|e zN3pT3joP9qrOGNEq%>>xofEIiA95UDeeQ+L^HTXe-1h6<_wD(4cINMMJHPkIvowk? zFFVv7>D?mya0mDNE8;6dvU=7DuafzAyJ2RH-TZsPi7CbxD_5s|K5v%>kjW^19xy5*=A-%w}ckQfp-g_-^-ZD<#cw)tS4v0zo6leeQ+q8mf`qdk= zRxVk3YMRi)*#=sRmb=`!?Y@g~*@G_8o9!QrP8~{oc5lxvJN>Qu&UU?7qWW99imOIC zRrnv%_J^~jtl19-?Obz`TmZ- zF643k;@wvHtQ~Bxu6~uT;IUK}v-hZ9w40gx_nw>-`I9ka>08w%nq9JATXZ{`@8)Bz zv+@tcbPk(+@s`y4uV%7ji)U{7L+6y;&nD#RSx(nb+Owo=m7mGeOR!D< zQ}e_vp&nvi*ZpWP^Kd)$Mkq|(KG0={x2L%Ef^)AX%iF(c{3ggBK VDOmHZFBVkjdb;|#taD0e0sxt_InDq8 diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightEventIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightEventIcon.png.meta deleted file mode 100644 index 0b8eb5b..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightEventIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: b1382ad24c668174c9a6e0bd00f229e3 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightHasReceivedEventIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightHasReceivedEventIcon.png deleted file mode 100644 index c71ebf470648befb9a39b2cf1b87bae9193834e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1158 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~Nw~8yPzrxS2UxI6E2{8oIh!7@C?n8<<--n;RLr zSy(v2^t$9Hm*%GCmB93-AoM!n)C)=qxdlL*T~doO%TiO^it=+6z+Se>#O)RfoaRCG zrr>sqB~HEiK*#8VA{Hs4VM4&v17gCHEsz6G_^Elo)LsNk)?XdpnF6!KFHaZ8kcwMx zW+d`88*sF?zR|h&-)8Tb+4eD;bZw``fXP8zrd>66c^40SAzJ;;=>DuXsmW0maJ(?Ce<52J- z=Cz?SmWjkJ4{#Himz=F>FQaLHR+Ha8a&~~{(eCO!0T0Zxn-{niHKw^ocnW8=rE#x$ zVDMy~oD9S2LT)bBvZlWc*XCXG_|1OrCxblyAAY--1FT^5_@hVygNA%(x$*LZo1l`x M)78&qol`;+0L|cqZU6uP diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightHasReceivedEventIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightHasReceivedEventIcon.png.meta deleted file mode 100644 index 984ae17..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightHasReceivedEventIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 69959064b54a0cb4cb077dbb6967a3e1 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightIdleIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightIdleIcon.png deleted file mode 100644 index 7ec001850c28a09a7841f96493148cbf8bd520b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1631 zcmaJ>c~BE)9F02l2%rKg5)s!GQ6kA^0|}B6nUF(b4F$px9RFaGEXjh&hU`KDt<$N4 zN+4sQ;{jg93LcdaQ7i}o4xm*OEpkYicv5kuv{)@ri$%IY!2VIXv%B9h@4esgz4>g> zQJdZ93_6WQbCX9(VyQ9E`OTk8{e5$`&7uZxQmP`AcnWDj%qUHy#nmVvHy}DR7DcpK z>9^1@8f^}U#i>Y@Vyi%d8`y{w!?qes6q`m13%8mOO&Ur9YE*|Ah2YD&Mi9WXLNJl1 z;3!ODRF6ewn^9$URGcO|O%tjG!#4q8RskhoKuH9!8g>{7fmH}j=nAO0a~lGI2?&`c z1m7p6QbYq{+>8P|b`VR$fnk8pXT!lfJ|7MQxEz=Zaj2Kif`bJ-zJMD7Og4C9<7OQMhlYkaHMm?BgOjKkEYQ{2At;~!YfQga?*vz?zXVjbIYG=+xG9wqFl7XBD`>%tZ z+M?X!oKD-8T1*=sHBxRjQ?@?Es%Fq=vpeJxQJl5+*J4FvylBY}FE1TZ@7`JH&0?OZ zKC>e}A>Zz(avLqlSyp`S$?htn5_>N5TQGVN^75`albMvC14erE#x1V6={WGCS6TbK z`ge00U7E{EUkvOM9{zGwP`2)_kmz?1ck7|T+s}8YQ`d?Lc@-BDYkHPO_16Ihwv2UM z__{5{^HGx~NwRFbaeD;o=}Aecu&m;S@P;@;l2A?$UsQjRCT7`g=EXnVJajJ5yF-fk za#O*J>i9Pc$L5ZH^sGp)@l;-460@3logTC9U_Q6Iv;A?~+XZdaSL60`T3t_ef|W5x z`(LM}OP8M@q)Xpz+tWDc@l8v~avm|{V{cixcXQbg&&`r2Yu~Ub*L!`>-$y!*w8JeLYc_rFXaiQE%F?g^jU|()#dgSN!tz-U!Hp8<$ z8(SHdMj8fE+kD1!?EpW2VWo7t^i`s|v4`pVEW)iE^R;XX{P|c^gQIlN_28XcLd|f0 zdd>v&TQK zEOH%L*H-#M=l9iR|HC!(H1AQ*#^_9s-Jh=2)YT)3uHJ&ne{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR^Z`oay)D~1LXFv#>P5)1SV^$hfLb3y(Bt1d1HN<}yWtLoyA%7Rq=pw#00 z(xPNwe55JEGy}s9zeOO0K-XCL7i9t?B{9b(Ke;qFHLt|e#a0O@qnDDIVr5`v;bd;& zY~<=ylcOS(cjOR+OKs01jWPOf2@h8kiVaIJy{F8e2HK z0$uNDX5r}QX5nmLWaj2(Vd|^|)tf?2nCSx@qYp|PNQng|1WbV-COqi_Iq=Mrng`4= zMZm1F|37Oc0|VnRPZ!6Kid%1H8hRggkZ2R0y^USbX}aEBt2Ex5tlWNjva1$P^ZP4! zF0XKX{Q`>+c6avauaq(zfAMq4F6r{z>pknpdxZ|&>6aEx(l27ypYr`d#jlTd?^dss zI=*qz@{Nn1NKi;__Z)Md*Q{56sx}CIKAo9YmUuGy8SJ3`|VmcR-3tg#4*M3g7czyfzRGaqkii*tgZt&0 z%Nf6mNi;q-Js^1PgEG@Ur`gvY=q!`2>wMG5-O9B8?TUoU57!v9$j?)M7VtD?YYRtS z-_N5Htsi7K>;Gn$-y?nDcvpG9WGX5~D;3Mwf*UHx3vIVCg!0ESx%{Qv*} diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightInverterIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightInverterIcon.png.meta deleted file mode 100644 index 27cc51c..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightInverterIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 8d991ea2b725c214c85580d5647c578c -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightIteratorIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightIteratorIcon.png deleted file mode 100644 index 2e7feaad05902525efffca73885e1c3f72b22199..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1980 zcmaJ?X;c&E8V*KNHfaR}l!{}jZ8T&h3xrTj2$3y-NrZ?{$ue0A$%JGukxP*R_JT-l z(F>JROR5}E3lu~RxFSmx3rH0(3YJQ#Vi8NxiyXDki51%)mpf->zU4g6^S!g)eu^tXSG807DlpXh)L%iu5xEP|AiSdCZ$O9as@Iiw{@?HHn2t4G)<6nni{FO{c)Fdzd}8eItXx3d?qfJPC5 zO`r?N0(~f`)`VvoKv8ClSe}_G4^m*)zYnm@EJQ#H!cxGjP16}!<`C>lT^2I8Z3A}o+ zNHl{&$rAGTuVNvq5Ud)8^(+#}WHJ#=0Yu24B2j{Zg6tYpDgi+dj5~C&)J)JB-X?uNBblXo5`{>%mox_y2>w4*t9^|& z!b0%xeE+AgQM^MBl7yfU$}q^0#wp*ihtjh`4WJZ;3}OgMn>)ogH3UOOHKYeZMGOF! zpwTHHlX2}!yg3N=P7X%!La>MeQKM0?!k7V}fdM=^m&y;MP{R0J4wuiTazpua zP9U8_R>fkx9;%_cvUas8=T0Ih(2O2cnK?UCcX@Qp|vo!PP5-_jcE3RVx zTxj!hNk}pzdt?96=(#P#J@)Bq+ainC#s_tX+YN}Vuc>a-pim3R5j>9Ae7pC6CS1J9 z^YW1BMzpB@BP+S4*UP1ZTQcRkWb3LHTy9;pBeuZns-ycc%jVsCEY!O3y#KDkC)T}4 zQG9glNPBZ6p`mUvPk3W?WQp5eCUoFb)5OmgngV{iF#BcD(?R34qcK$?rz2j67H)BQ z4Chu>u8ytpdE>;}ZkL_#E8{~loK{H|{lQ@u+`Xy&$ybfp3G4Qv`v%|J09VBlTtQv(b4_k{`;KcbG^K7 zdv|(QbTwdYrBNHyv@_!=9tHj91f|ug)DnD8+xbgz_VmlAn(qM0MI?n%BT3}l#CAFfN-qVqrOcz=vP)f7sE`&Z~x9o(HdJ zyPg|#jdE&h8nG?=^xD#UL05ji75TlPVatEINbLAfEVxXh|dY%WY;f8mOAF2HbJV*q;>~HiN1oaJSx@boBK_XsG3V&(PcBxK-5P#Y!twl_ zfA8Bw+exuc*D<^gG{t3pyiFJ>@pZ&=H!eS;$zjxFSbq3V)MvA9!(-mlN-buFKa>RG zn~FAt6Tqi$>qc79yZXk^qsOW1m&sNK@{_EXIDJv$r_4ln(j`#vqO+_h#;=N7?EfMv zY2%`vmPvh&QgN4*wq^6!!_1=Ys4C@o1~-Z6yJb3W;tu644?n=A$`HGw^Iv7T(o^x> zok!Q?)H@Vh@?0w9Renewcz}y4@9vICpEywAeP=;^wx2q7WoA=bMtx)gN0MJrd@ep| z+v$=Qz3FuR-7Nahw%`?e_O(`x?F=R~s@8qsQS44RS%zm{m`c7X-`(CLRX?c9(Q$-`xBl9XA3+;g&C_?p1t054;V1kEtP%a4;62prRJz_ci+S% z(}z8o$-@N8EG=?8e&68C-aKpCamzlE%5Xx_i}T2;gg0}coQiXN&x?-z`;Q-L?A(7v yRTubqmPk9j*jyv{4vn=95k_YuuB=Nt7x|!QlaZUBo2+N;_i02}46l}(lKUr6eISnj diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightIteratorIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightIteratorIcon.png.meta deleted file mode 100644 index 9f5d737..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightIteratorIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 5b924a7ff18f0544aaa585af94ac536c -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightLogIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightLogIcon.png deleted file mode 100644 index 1bdbb22b9ca44eb01f35982dad817460e2d3cf51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1189 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~NwKxLO*RxSAPTI6E2|8oIhUxj8$#nmL*oI2jo` z85=vo^t$9Hm*%GCmB93-AoQBx)C)=qxdlL*T~doO%TiO^it=+6z+Se>#O)SCoaRCG zrr>sq5l+4OK*#8VA{Hs4VM4&v17gCHEsz6G_^Elo)LsNk)>W0NUJMM3lAbP(Ar-gY zL^^UEa^QJ$>y`DFOX4r0x$2IpzjEF4bf1!cwMn!Bm@_TmT+Kpni>jSn+K0f?#>Zh_|iw$cNPnL2yx7B-1tnM_t@#x#6 zhW{>y=LpRa%CX9t5!@7{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~NxVxtO^+nwyzhI9s|H8oIh!SQwjFxSAU}I=MKy z8kt(c^t$9Hm*%GCmB93-AoN<`)C)=qxdlL*T~doO%TiO^it=+6z+Se>#O)SSoaRCG zrr>sq8BV?WK*#8VA{Hs4VM4&v17gCHEsz6G_^Elo)LsNk)^C%YqZt?&ojqL~Ln>~) zxv@8^#X*4K!Ci@Zg9UF?&o14x$xrr^oY}tS2htI$6QVxJJhalS?Mo2!Snq4Fe8$a$ zLlc!|&bYf_}%r>UZ4$GhMEPMMsQws_ZPs;W|^yixd*+@rS&nug5M zzSgx<_~(kP(c56QhHpdInyd|FYrHWnF;1}NI+iV}d zTZ2oRqiOA>Ll?K{YNgwr5B~pgvdT$SHPy0X+DEvH-dVOB@cHAzspzu5dfw%FPO!h! l3>rCoAYP2q`4QW|$Z&@t-AD19b3Let@pScbS?83{1OWSgs>c8T diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightOnInterruptIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightOnInterruptIcon.png.meta deleted file mode 100644 index 2fe4cd1..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightOnInterruptIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 98f584ca47ddad64d9878314395ce160 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightOnPhysicsCallbackIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightOnPhysicsCallbackIcon.png deleted file mode 100644 index 74f52177a1c4d266d9aa1d21047aa5db0c86ffdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2438 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 Wf{TBNW=HFSiVIIyKbLh*2~7Z|T#N(& diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightParallelIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightParallelIcon.png.meta deleted file mode 100644 index f74f54f..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightParallelIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 8a4a401bcfb527a48a08351efaf92e14 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightParallelSelectorIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightParallelSelectorIcon.png deleted file mode 100644 index 1cc2f62a538fc0ec9083a0fe4e8c7c715bfe5ac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1376 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~NxV7?`@5xVaiy8kzt@-PO&>$k@@%#lXeX%*4#t z+0huL*Cju>G&eP`1g19yq1OnfUQklVEdbi=l3J8mmYU*Ll%J~r_OewbPPe$Y;WQ7b zHwCv_3~=hz2RcR{6tPGV4HE*U9uO0rY=Inj!cWZuruHIWvfkR^%*(*Qc*WDjF{I+w zn+QYi!wwR@E&?p==kmB_wm!1oV6XU-^KHQQvhXEyTb)YF3^xbM9yxiiVYQ@@X{>6Lm+7Vh>SY?YC&-Qo#7v3_B3+5%H!RQmsI!GWR71VrD7eW z6;}ekUHp7OS6Dl7xnLrD+lDf0*&}=rN*p>7+x? z(>wh{Mdv*?(E8>abG*fldzq!kU&ggo?b#0>+TP4KywzCg)H}m{!PjN@iqh{+sNWuG mnR9<_BqXe(4|@F&O<<7TdrxZ7{7V->WuB+2pUXO@geCyhzVq_{ diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightParallelSelectorIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightParallelSelectorIcon.png.meta deleted file mode 100644 index a7bd3f8..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightParallelSelectorIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 108591b5d7a6bd94383d16a62cb3b4a7 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightPerformInterruptionIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightPerformInterruptionIcon.png deleted file mode 100644 index 5e577d945cf9b8f85b91c85e0ea044c3f3e355bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1334 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 diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRandomProbabilityIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRandomProbabilityIcon.png.meta deleted file mode 100644 index 016c1eb..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRandomProbabilityIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 6c5770241610a4c4aae4ac3af0ac8bf8 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRandomSelectorIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRandomSelectorIcon.png deleted file mode 100644 index d147a58af30375037bd5023abe7352f3a90a7f12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1346 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~Nv<8=1PAxtSYV8kzt@-PO&>z`(@O(!|`!!p+p! z!o>`x*Cju>G&eP`1g19yq1ObbUQklVEdbi=l3J8mmYU*Ll%J~r_OewbZnqfXG!Lpb z1-Dy_aO%|uIz}H9u}BdO69T3l5EGtkfgE_kPt60S_99@i?u|`e#K6F~&C|s(q~g|_ z84q)t4Fp;jzG5nAaZ6&fa*}B55pZh|Ji%e$WaA{Es3V{W(ad zkM*lc8gx0YEt$(OcfD@sW8saGY7sfUhlQ**F-E*HKCb&c_4s@JmC?R$>aH%4zO44I z{D#biS^PQ7V*mF(<9fc!Wzn^Wr-vJC&$hTo{k$=~Y6B9P@No<%|!qVFk_4v@j zkflv$Bf^vxcGhd`4muLbrftm@{qV+>h{F~W&z#e4{<>n$Jj1$$Gc>ugc(vk}6;Aqc zbBXqGoz{bQUzYI+hv?sXxaccO&Z3ny?UL$0xqYstp3gg<@WJLX_YrU3yOGn*TRJUj z6!p&WZJoMo9zUD^=KqfC)z3xhZ!kz?TFo4`^g@to(BCbN{ZG3LZcBRQ?Kz+$b=jf5 zmtS+j#hE7;nay4Ce&3%xm$ikojg~5LJGL&{EF|&v&>W?O>76&McqgBaH$A+2rFg*i z*h3$7?zkv2uPU$fdQ4(m3Cr7JyEl-q<@+(8`9GHdgX8h7LTpQ&azUkmdKI;Vst E057-YV*mgE diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRandomSelectorIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRandomSelectorIcon.png.meta deleted file mode 100644 index b15f82b..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRandomSelectorIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 7638e4bc5a1f4cd488801902387ec5ea -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRandomSequenceIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRandomSequenceIcon.png deleted file mode 100644 index 7af07e3555dd675ded1556a31efeb3091764c04a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1296 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 diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRepeaterIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRepeaterIcon.png.meta deleted file mode 100644 index 5831f6a..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightRepeaterIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: bb415ca6de87c3d49ab9a94fe8a6fca8 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightReturnFailureIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightReturnFailureIcon.png deleted file mode 100644 index 4575c17b16fe00b86c009668c05022ac8894f35b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1662 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2c=CsU^h>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR^Z`oay)D~1LXFv#>P5)1SV^$hfLb3y(Bt1d1HN<}yWtLoyA%7Rq=pw#00 z(xPNwe55JEGy}s9zeOO0K-XCL7i9t?B{9b(Ke;qFHLt|e#a0O@qnDDIVr5`v;bd;& zY~<=xAZ!`CVki~X(!CPo&HE=HEd7S66f z*E^b7I6AsnI2#z5xw%=G0^JVLn?g>Q=>r|34@w+Ji3KJEOo1RKJm~{D@XV8%2h1@= zz^rjDC1@1`1JgQB7srr_TW@Zh?-mM_Vfe7T&;F!*z&)1mjvLAC0ZTZnZe9{dg7t|7ot@UzB_#r!_M z>L&xuS%QZSDJgiQ$LLMxK6v&_@L8e#j*Dw2@ct6s7p};}{_J7G?A9$&YgcU1VD)LL z)A~@IH=FOH*Z-B5bhg;CY^+~AU7&kf>(Z-#RLlhyHlBX3Z5c7^uGC4JUG+=%9$DF~ zYVqFiNVH&Tj9|e-hh-CjkBKsN9}RNM7CltgQsLgzc4(nR1jp&zS=C`Hdi1BC<`Us+ zo|GV@b8fTuLYv-jv8sm&R&&?+s0lNN8u;XiG(Pq0=6=`u`fHWJRIkvs!w+S%9^`F5 zedy`rCQ+B$Z_7efUu}9?^wZRI!{wJb2esl)=xjH?Al1v3&;6umC!5{;_j9Cf&HTUF>+5}4P>tZ}>gTe~DWM4fB+YWK diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightReturnFailureIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightReturnFailureIcon.png.meta deleted file mode 100644 index f309e99..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightReturnFailureIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 7d32c9b05505df24a94069606f3b823d -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightReturnSuccessIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightReturnSuccessIcon.png deleted file mode 100644 index 5e53fef34cdeb9c05f0c74bc7a0886e08671a448..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1517 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 I()9d)0Mt>0ga7~l diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSelectorIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSelectorIcon.png.meta deleted file mode 100644 index 3ebbf28..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSelectorIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: de3acf0e386a26246b8bc999b1ef8e32 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSendEventIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSendEventIcon.png deleted file mode 100644 index c54939866c9eeb6bc9e7122765b1766637c18a9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1111 zcmaJ=T}TvB7#+#97A=U9G?HN~DsXppR(IST++y9?t))g}-EfnB9B1yjgU;M>=Gu-L z_=7zdsQ6$IQBefZOPEj)WxhlpRu4Tyg<3}CLs<~`8r@M>duSVG=KgTb`Of{m?+(`0 z9xZf~I0%9$j2`1-cr3TSEqVA~I?$Mdhhh{?pn8}@Y0&^gP=?KbjH+S_hyhXVY@Y_z z1hI)y;t7-xPH+-bU80R~S*niN1W|p&(nYBiAhH>>C|ZE}`FM&V6*)jPcm=nhhd@d> z)@6YDuG+ZN)hhXA>d0ZT+TyT)3Xn)zYMW+qR)AX31A1_obtrf9FUxtV$hC*U(F{4s#rVitEW8R(DTH*6 zrqk)PD_!A&MhngO{eD}+<8fky)9locXgM{rETg~!Q!*4CDNrMAMX?!npa6xPt{y?v z*JU+xEloIKv?b~^<8s?a$^Zr7|4>z3N1G@HHvIlm*o=4TfQ|tZb{G;aT(Zm#rE?(z zhzJ^S2-`AQtV=-z%@owhP(4c?Y)~{Arp-euctPNznu$bB0#QCdVFj0>$egz-SjATH zL0>57VVH2l9}2NymiPMH6+R~H_hz^}lsZ(Pp$u2v;MQd2+O44KI5H0m&wE(?cC&>`JI!K<+(+ProPQZ ziH}p4Mi##^k?5VuMSglq_u13SuYT-3<0+ZH@@;f~u%>L{#q8DLfv49Wl%1jmw@LNN z5_(00>@Yd^vg-18~?-wh+hgR!`nU_a|fg@My+MQ{VRI4ZS(Ud|&*-)yCgT_EnFD LYx#RMP5plW>|Aoj diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSendEventIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSendEventIcon.png.meta deleted file mode 100644 index b99ba8a..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSendEventIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 6d03b96c0f79bee4ab2e14fc82aa0031 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSequenceIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSequenceIcon.png deleted file mode 100644 index 10d6b645c15c6059158fdfae7751c4fc82bab79e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1154 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~Nw~JGq${o0+*-8X7wq8oIh!I2xH)m{ z+1wDO*Cju>G&eP`1g19yq1P3sUQklVEdbi=l3J8mmYU*Ll%J~r_OewbZnrq$G!Lpb z1-DzAaq86vIz}H9u}BdO69T3l5EGtkfgE_kPt60S_99@i)={7F2bd+kdAc};RNQ)V zVqz|47P87E=jIP&xSb(=&t{UKhzE|Jico;DfqtVW>Bf%>FVdQ&MBb@ E0C~rSU;qFB diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSequenceIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSequenceIcon.png.meta deleted file mode 100644 index 04c5327..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightSequenceIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 4a7b39d8e0d056a4a9d8eb390b4bc9b8 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightStackedActionIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightStackedActionIcon.png deleted file mode 100644 index 219a93337a74d3fe4aca93ea9427e784ed676f9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1165 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~NwKnmL)e8krebI6DGE-PO&)$=TS+&Bff&)X~Dp z#oP&|*Cju>G&eP`1g19yq1OuxqMbWR5mq%zZD(k^8{b`_SJToIMAamKILm@WLvA%}k;~GqLUN8b|rf zdnYU9eBPj%{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~Nv)XC7&(7?#V(ZtZy z(!dm^*Cju>G&eP`1g19yq1ObbUQklVEdbi=l3J8mmYU*Ll%J~r_OewbZnpsK$K@7? z-W1$!F~X@=ALtl;P{bldG)xGXdO%EgvITPB2|qOtnA(eg$@d0(mBBIc7gHFf$g5YKEalibzSr{m^6)=cXclvzykO$<%EVpm zx3BuK-&os}nX}NZJ-Tdor66OW_S@u`CT}_zTwL;b^hWWL|%HobM8}lz} zx_;DQhS=8yQ(HRKHke%%n)#Ns#_bAE@0q9db#*U0mdH+x^Y+^LKqz$QUiLei z_|7vFD*oc171Xk7TEw@xLgq>ejSG#U6LRua^YN!&R8$DM)OX~<##a^hw|lunt80N!i?G$OIKgp00i_>zopr0Bl9R$p8QV diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightStackedConditionalIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightStackedConditionalIcon.png.meta deleted file mode 100644 index 395cc88..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightStackedConditionalIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 86fbf527a2c761e45bc4a47cf4894902 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightStartIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightStartIcon.png deleted file mode 100644 index 6ca4b8a9832860f819c1d89cdc727e15f836d738..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1210 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~Nv<8XB8gni{)WI9oa!8oIhUI+`0e8<`uMx;Z#O)SmoaRCG zrr>sq3r@ZIK*#8VA{Hs4VM4&v17gCHEsz6G_^Elo)LsNk*6x8<)fpHV^*mi1Ln>}1 z{rUgj{%`=3505iXk5$E$gNym(N)74`IIVFqH8o9B_}VVkx1;p6n6j?Zj7*PK1F3|? zlm701@hBldY*`inO!%}}77 zxlmf*{IayEes2Zb*6mDbsE`tnZ&edr#o+eEPh-QgMWO3UtOceseiT*N_A zzE>+qeOR->r&ayzM+ff~Plr34N7l1>S4)WB;6L)Z;m47L>;sRrIo)mxfqeO4MRWVD z9W1=k9wEFB|2u27G+zBEpYipK#RR@InYmLWK?>YuZT86U2qZAP2=|<^pu+kcs5J3( L^>bP0l+XkK_IsKN diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightStartIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightStartIcon.png.meta deleted file mode 100644 index 58c1d78..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightStartIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: df820d6e71423194188c7dcb1c1ae2e2 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUntilFailureIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUntilFailureIcon.png deleted file mode 100644 index 7c96e466400546bc5416253347668e18b306230e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2536 zcmbVOc|25m8y|`oM6yM%rct4o)vTe$j6uyHiOEu?nZaP@jG3_~qUBm!Y%LRA8O7Ct z&?J>^bt74-D?)~%<&(5XE^gg3mEQM{KKGCJe9k$)?fd;c&+qv?&-t7TZ%;Qps5uk@ zf#`X-(|o|zPW5PMf^W+`0cv2gMC!_tZU#c7acnUULg4~CcrXtEJB;VUV{;RtTX>ET z$h=U#FH6c|GRPc2fMBaIh*7UhP9#qX+rbOt3!UKOjo08XKGzBEk7J^k zA}TMO@17{;ZBF#`XN~}Y8nZLeT7IP zo#5Y`Vllm8R6xvw;SgAR4hoHi;qeHx0}hWz+rcm>GzN(RZ@fL)fsDhGF$CE63l3Tn zb3@5KH2Qa2;K&IcE|rSNNMu}G93l>j0K{QPG>Jq~X<#t+Ai`dfAe6G>?S&GnIRzR| z!V&XDQa&JrsTA2efEcM09Q5?t76c+D^M|ld@;y*s$dK`D5fY6+Aq4`}zP_R*QXk%b z-S{b5;+r7iA$@ofAV$mq&m+`ojts``-wmmNpf_YMF&{h>b`%ZZ#0YposRzvo4z3`$ zd@dP=%SbONH2TJ#|LH6ma6gBvDHDzhu zsZ*zlX9C6ADJdx{iA0t*6pC4V$*f7&=>6GTFn57Fx zOoJmMBO{p1d!rXn9lAb8Z0Av(Z$}YQilz>kuIa6VX_S5Vz4N)AGE`)-E?*Y%%plO( z+M22~kzUf5U51k8k2MXVD{oy`roXX~=H=xTl$`vx=B`Fg$o>}Q_TjRX3>T%L$iOia zv#-BQ?IMT?4jxG6a5%ZYXtlcKTV0VX5h%`AhiqY>XMS^kjV_+dxmcbsYG?hlsA;IY zynHq_bz{dS`>AdF=v6mJ&C8pQcV})HOMX(Smy?-!@Ss7*X=m#aD>HsD%BNMgy>nm8 zXL%hWofWm>v3u2J1f7;frBeObjvZA%ejvpV43=g+?JvJ7++Q<=wGI%Z}r~f@`vnvUM1m4xLVAFQt z_(hQsqP^Q~t;=ope$0m%Wt+FQ?=a3=O`%IyvqrO6^&g5MZ(`RB3=Ax)QS7;U!;@a> zbtJnNpj4GIHw7b#O1x2i&+^M(Z;y(e8L&FW_N1Qef!B$14;&~lfaYdrFHIZ2v~>cb zLpZ5XKd|E0UVDY&Oko)`HzQ+-5%l(hiN3MPgjOrjzc$0yC!0RwDHvjeFZX^Bg}~Lj)28}uvp>z zD$isZHpxL$ym@wIz0qk`zxCLS<|jv1h|L@L`FA=x)@7dX{LjP%Wlm>(V*mOmpJY}TylYY|fXn$_zjYZ2$nGmJB0#r>8JHu5JE6ARzg zpdK_T7a}SQE6$vGLG$!%FPbg1t@wOBq-R^~QRw38fG*$Pnwkru&o&7h5 zO-V&P^F&QT{qtted+&6V3+`^g0+tIDgYw5&I}s6k&PI7gq%;aRuJg1PBY_6oRN8P-bo)9<(fR44v@D%Tl9(x z7VVHHDGoFQ2HaEZL}dM{@n`GM8$!E0tS9Dhe7eW;ZF{=gYxGO*UDNsm1vzjbr&epK6awk51SllD75~7F1Q) nB{YBWueH@_Gm$A%=9@vzF6m1C;@*|0`uFm1^`xD12}%10v^Ohi diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUntilFailureIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUntilFailureIcon.png.meta deleted file mode 100644 index a633251..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUntilFailureIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 3d29cc3223984f44291c0e423a0aa6c6 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUntilSuccessIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUntilSuccessIcon.png deleted file mode 100644 index 66f1c9dfc2f479ce13fe7576da423b9c0408bd73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2436 zcmbVOc{r4N8=f#^M4P4XX&TuZvlz2!a>gv07-UP9G8;3P#VlqxvS%3LoEBv)sgF*J zXrdyOENS^ti9#-P5XVWUPMfryGb(-GA6@5<@4epl{Vnfv-}m!-mg{=+1N^*=L6#r@ z0ANhpL=M!B>*t@v`r5ZmPWU42uv$t9lLiT6q;iIs10b@6Ob(dFXT)*>ISh7k;tkFQ z06;f}7aS%Hqx<4nLcS|w-o{nI7irM|zy?o+h{1~INWn}_EKfjyJZou%fO%{JWUD(J zP8X3lT;8S>F()X+FPN1Q&%&`Go*Tg%6nHHGpCe^}75oH&1g{`KKJ((W^Z9KU1pL`V z8c%?HaVm@+0452=9I(5q845m;fB|x;EemMePM5liv7D&DZN*gkmf+2z-T;VW2fBsybttHYx z&VSwbuC*jMS;T<_awI~Tn5E4}jO_wg8@qoNnm5#XgZCHnv`JwkkcBK6pCgdc$OMS? ziz}PQ#>3HAFAR!=q>yoNiW>sqMZzMyys#LgJDP~aP~8?dzK5lvs1!7XgvF9@6a<1o z#Zo9(3Y_Xr#^Ep+G#b5tr3oZbhJeLc(B)}$zhW`}h{cn{9EMaV4i*X%7AhcsE0hW) zT%ia|3POV&xAFvRpL0!M;xps_YBeeDe#i zJMt0g>06shxaLtu@~CcodBxb#+p3joJj{Lb5utiT`;IQqtlmO@@c^L#-OaFy2akn`0 z{oL7v#yx4<>0%(r^9I-|^7;{=(Ix-KBbcmVRRr1V`Qs|H$hEt>0kHSKBAy!=8J}DK zNZ;mkMdgLAAQ!{4H>p73BH@e4W$RVw8x7IduS|KjDKDlB$wn;hL2LExTPhubI@6Zc z0X>XWA%$N3EtV%;S|~GddcEW6MvjNai~>w9qo&`R5=RX3_0bYqSQd-P@FO)fvD6$eF8>okxcO5eSSJa(Mla0Q82`4KfjtMRl z6%|41`-cu5YOyhxLR;mimIeYWuI5nVBCKDA-{nE0ib{Mo#Q=K-*p==a+=H)&i`@d9Y~l0YCtROd`pI2PEolwroV;a99! z(K$ADBqKf?1@!mz9Z)Kj7|o-^H}zbVS-Jexe{=_C4$P%qu8_%Ohu(fn`{k%lVPPTL z)}ni&PwMx`aBJ>Jj)&T~742V?U)UM;%qL zfaadus(5J6$>lyJ|K9g*ZfA{nj}+_=`QqRydsso^jo8Xx8%tvaX~yuM*Wh zlo}fP;Ep=W4T-d`@S92m4V;b)SQYs(-gjnlNi9K#>EztBNw@K>L?ZD<0c|Tx1?Pv9 zcaM^Fi*FjA)oc2p+xaT!vN9Xh6j|rjGJLtJY-xXAUusS^X|P7l-G`#)oD~> zw_|WZq}*72zTT>CdReXR{rmTq{_vbxOOibRBywD?Yx0cFl$}`?jopdf@1)!5bQU?-jxW$&V%PIu32o z+mCD@L^|*Ku)E!N_Drdd{Y|sFF^xEP^BZCFv*#;!7&Ki~JG{2Z>KK-6;?e9qvquf-hf@>6%IE0gb`8Vp=xwIi)93ZgA||?tiD%S1o6Gmw5j+-M)?bt1 z-_|%;T9jOq{bYRu_oH9`(2xt>!viQ!_bSaE^0mSZZQkq5{N4Dk#cA;HzC8mf6=+Ln pXiVhuzwXyEcMqypekca$0wxN&XFkR*PMZHOqEY=pn3 diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUntilSuccessIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUntilSuccessIcon.png.meta deleted file mode 100644 index 348a83a..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUntilSuccessIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 4e9ac4f2dd8bfe741a5f889efb1ade67 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUtilitySelectorIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUtilitySelectorIcon.png deleted file mode 100644 index 172e817e78740a2f50b327f0adf3c3ed9e6ba07b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 623 zcmV-#0+9WQP)CRK-*})PC@ZFq6FpRXL`pUwtFYbR(IrbnR23TskLAf?~`H zt3Ph}0R6-lOFW_8oVrLxg%BVPnFx%9$tv*-jLr#rzUpoihkF5H?)f6ggkA)q*S z6Vd1EJOTsPf=5`*s?4#4Q^N3L?-E@pzSusnkrTqPBqXXxSbnZ{!GkLPm3+Ll;bT+6 zTgBBYbwZeY*oJ>I#YcsYle!5f60t~;aAdOT=?doM_yAv44%jC(nckWPc1ShfnVHx^ zhp^b&t~3Rwm@S^KE*OgilPPpF2-t#mb}>fls)T3Q>?{md*p+T3(om$k$J{%#m|^!- zK3)~VYfE%REZ}9Otoo)R4fgGv%93cj+faKv9?RB4>y9Z?-Jsuv6-!`um4im#Mk4vE ze{mErMmnW$2}x{(4y}q6{UYaEBcat3jFTK8cBs0lDNb`^{LJaSb0te)Zp@Lov&iYS z#GaUi#2H4Z1c`lxQ^?wb-^+(DrkRO15l-NP;2<~%J|8~<3;-;hxX^xXp85a)002ov JPDHLkV1mNQ8fO3i diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUtilitySelectorIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUtilitySelectorIcon.png.meta deleted file mode 100644 index b3afa10..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightUtilitySelectorIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: db3d0b77c7f9e0b4f9157aa03178836a -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightWaitIcon.png b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightWaitIcon.png deleted file mode 100644 index 772fbb4989044b2614b61b4adb809fabf084e504..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2338 zcmbVOdsI?+9;eJ|G^aAh%yJ~k)$svb5CoDjo{B}dNJwQF!c_?25?m83jY>;xGJIyK z(_?j;G!wDLu{vg!noXOI+i1Bpl|4+;w8pZghjXcH_m9r}vG?5jdwxHk@B5sa8L=YN z$-&(Lg+e*;!q`G&_P2f0ry}FmX{#q8(>$0Xfg_R zCy%2E+1!u1kR2VPfMG2Shf7LI!X^>1kS-nvP^nZK2Z0cPNCfDO8dz!w(C8OUFt92y&td~?q6bQEFCC?A)N?<5+*7jLIJ^$UIA&*tVlB2 zCrYW2LrMB?Z0Y&nEgRG+H-U1l4pO7v$Csx3jD9YeLLzerY$}tASPlRb4i#|*Phhdw z6av8JU_N5y|4+9*u9b((K%wk~JT^mQ z=owtKc6l_%rNPnB@n@{R0YL#uV(K%XYcyvY9cm$XVqrhn1tte@?J$J ztu$LtD;?YC~8?S1dZy1M$bv?)pp@+VK8Y%sZmY_nMKSPG?Ry!p;>_TIhc<~ln!33d()ZQ6XL zrKLs1*6Q_n2MsVB7*E)5pj%g6S51=?9iOJs$z-zNuI_GQli3$D-_7k(os*N(gXHAo z%cswrc|{h5vi}uF6s%Twb44>>Yq{K=^6@6N=7N>X@UGw8dT*Y|%X43aUZHq&XKtaM z(MTd+`eVDvU%KonkiDEjB9W*V%#le4x2}(m?`wXW%5&Z6_~6m=uk= zL&H0uIU3{ZTY*Y7+F3I8qu*Rt;@y5L*}uQOc05HW?EEz+Cnv~iwKlZ&rkpQc7Pjzs z`Y8<#hnwpWQ6_X^bk7W&YPqs5)Es`TlznSkCZiSVcp8|cs;Q}o^7t~;qyFDLJ?>E= z5j^*ohc_0@$=JM zxwi#;{zh_f6{yvYfNg1cd3gt0kN-z>zi9k&;+M*J zLA^|{Cs-kCstp(Bn?U`nBzx=00f8N9-KE@;DGBQa94|AN~IWXXR`-if! z`*z3X?{d|2aAJ1k1WePk%{ttGirWUQ-*u>}DqzLP-K?xE$DyGiPo9G+W9pE_w3FU- znJqRC7hR=0My*`=>n0eE&Ue|hhx?DjjT>vs^mVdSzq;u7)34O$s;jG`p0#W%d$3Fl zPa5_qBIQ0gcg$k3XhWUvj*gB}Mq;Y!hV_H%y+AN{*`!eOd4rsDZaaX%yROi$oBv~cWANrY+vh~4tn7OWkqGB9eXy{ z`>>{QZ`xQ3^JE8)j~jos=&sk{jvF_Qi5Gi{!_SsJwA=D%y&3;od!xYl4~~O<$w~T= z>9X$GZfh3Lh@Mem?!ZO*SL;`kUoT`d82d)*FS z<~uTFc*oQWxFh#0ZSoD*`&tuI(b3)ueEeO1Ud7uLQ6*lo!vk07^*5!%!#P00QODLy zyEUfJfc|wD0C*Z$96=eW+1{l-1StGV4zzpp7gcvZo|bd!3!KX3QfB+~SNJcFEYs92 z83+psL93d}(!P34)rNDeN7I&@vqPtYg0_vn*NP>Qm(Ct83mJ{wjgJXtFOMo0M!zB^ zI(o~G<>lb=!pe#hCr%U_jYbIQJm2W_V%{F-40j~`hZkDKmCti;X`tNanyR|GvGBOK zhm~-FrG0Ecqn9fyCA0S0CecrMXls3aecz$iDKW;3hKkE=Z9sN*_PZ=?eCiKb&Tr4` zTD!8Qil*8s^S7jTc6QEDtJPbBHw06kbfw)dYw3r{=fh{mzL^wyD6#g&7HMp3uN5~0 zp7Gp7SeFdl7Q0 irgmgJt)Ou06gSj`W~Ss+UeR0IUki`3f_;Lye*2$U{Kj|y diff --git a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightWaitIcon.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightWaitIcon.png.meta deleted file mode 100644 index 68a4b26..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Icons/Tasks/LightWaitIcon.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: e1cb9cb566a90fb4489bf31465b99747 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers.meta b/Packages/com.opsive.behaviordesigner/Editor/Managers.meta deleted file mode 100644 index 12434e6..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: fa7ae1b2addcf87409cb38b62daefec5 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/AddOnsManager.cs b/Packages/com.opsive.behaviordesigner/Editor/Managers/AddOnsManager.cs deleted file mode 100644 index d2f9cd8..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/AddOnsManager.cs +++ /dev/null @@ -1,18 +0,0 @@ -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Editor.Managers -{ - using Opsive.Shared.Editor.Managers; - - /// - /// Draws a list of all of the available add-ons. - /// - [OrderedEditorItem("Add-Ons", 12)] - public class AddOnsManager : Opsive.Shared.Editor.Managers.AddOnsManager - { - protected override string AddOnsURL => "https://opsive.com/asset/BehaviorDesigner/AddOnsList.txt"; - } -} \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/AddOnsManager.cs.meta b/Packages/com.opsive.behaviordesigner/Editor/Managers/AddOnsManager.cs.meta deleted file mode 100644 index 4a6f743..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/AddOnsManager.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: cdcf33bfa5dc24248a6152f89300f0c2 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/AssetInfo.cs b/Packages/com.opsive.behaviordesigner/Editor/Managers/AssetInfo.cs deleted file mode 100644 index 91f6250..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/AssetInfo.cs +++ /dev/null @@ -1,19 +0,0 @@ -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Editor.Managers -{ - /// - /// Static class defining information about the asset. - /// - public static class AssetInfo - { - public static string Version { get => "2.1.12"; } - - public static string Name { get => "Behavior Designer Pro"; } - - public static string PackageName => "com.opsive.behaviordesigner"; - } -} \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/AssetInfo.cs.meta b/Packages/com.opsive.behaviordesigner/Editor/Managers/AssetInfo.cs.meta deleted file mode 100644 index 47c4fd4..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/AssetInfo.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: fa07a5b0e063044478181a6a40bf038e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/BehaviorMainWindow.cs b/Packages/com.opsive.behaviordesigner/Editor/Managers/BehaviorMainWindow.cs deleted file mode 100644 index 39a3728..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/BehaviorMainWindow.cs +++ /dev/null @@ -1,68 +0,0 @@ -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Editor.Managers -{ - using Opsive.Shared.Editor.Managers; - using UnityEditor; - using UnityEngine; - - /// - /// The MainManagerWindow is an editor window which contains all of the sub managers. This window draws the high level menu options and draws - /// the selected sub manager. - /// - [InitializeOnLoad] - public class BehaviorMainWindow : MainManagerWindow - { - protected override string AssetName => AssetInfo.Name; - protected override string AssetVersion => AssetInfo.Version; - protected override string UpdateCheckURL => string.Format("https://opsive.com/asset/UpdateCheck.php?asset=BehaviorDesigner&type={0}&version={1}&unityversion={2}&devplatform={3}&targetplatform={4}", - AssetInfo.Name.Replace(" ", ""), AssetInfo.Version, Application.unityVersion, Application.platform, EditorUserBuildSettings.activeBuildTarget); - protected override string LatestVersionKey => "Opsive.BehaviorDesigner.Editor.LatestVersion"; - protected override string LastUpdateCheckKey => "Opsive.BehaviorDesigner.Editor.LastUpdateCheck"; - protected override string ManagerNamespace => "Opsive.BehaviorDesigner.Editor"; - - /// - /// Initializes the Main Manager. - /// - [MenuItem("Tools/Opsive/Behavior Designer/Welcome", false, 30)] - public static MainManagerWindow ShowWindow() - { - var window = EditorWindow.GetWindow(false, "Behavior Window"); - window.minSize = new Vector2(680, 670); - return window; - } - - /// - /// Initializes the Main Manager and shows the Samples Manager. - /// - [MenuItem("Tools/Opsive/Behavior Designer/Samples", false, 31)] - public static void ShowSamplesManagerWindow() - { - var window = ShowWindow(); - window.Open(typeof(SamplesManager)); - } - - /// - /// Initializes the Main Manager and shows the Integrations Manager. - /// - [MenuItem("Tools/Opsive/Behavior Designer/Integrations", false, 32)] - public static void ShowIntegrationsManagerWindow() - { - var window = ShowWindow(); - window.Open(typeof(IntegrationsManager)); - } - - /// - /// Initializes the Main Manager and shows the Add-Ons Manager. - /// - [MenuItem("Tools/Opsive/Behavior Designer/Add-Ons", false, 33)] - public static void ShowAddOnsManagerWindow() - { - var window = ShowWindow(); - window.Open(typeof(AddOnsManager)); - } - } -} \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/BehaviorMainWindow.cs.meta b/Packages/com.opsive.behaviordesigner/Editor/Managers/BehaviorMainWindow.cs.meta deleted file mode 100644 index b7bc7df..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/BehaviorMainWindow.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 7eb87493a412def42ab4459e90b63fad -timeCreated: 1500568651 -licenseType: Store -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/Images.meta b/Packages/com.opsive.behaviordesigner/Editor/Managers/Images.meta deleted file mode 100644 index 39f8df3..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/Images.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 95d69bf54d5801d408dfe7e5f6aa0436 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/Images/Editor.png b/Packages/com.opsive.behaviordesigner/Editor/Managers/Images/Editor.png deleted file mode 100644 index cd8ace6e87c107e2af9d3e2ed9a024a99df944c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6697 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 Znp&`2OUwNT_^&@_dRj*CQce4?{{aOHI&uI2 diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/Images/Repository.png.meta b/Packages/com.opsive.behaviordesigner/Editor/Managers/Images/Repository.png.meta deleted file mode 100644 index 7e95041..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/Images/Repository.png.meta +++ /dev/null @@ -1,140 +0,0 @@ -fileFormatVersion: 2 -guid: 020153b61b65cf34f82ccc9b186cb700 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 12 - 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: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 2 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 3 - 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: 3 - buildTarget: WebGL - 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: 3 - 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 - - serializedVersion: 3 - buildTarget: Server - 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: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/IntegrationsManager.cs b/Packages/com.opsive.behaviordesigner/Editor/Managers/IntegrationsManager.cs deleted file mode 100644 index ae5c8be..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/IntegrationsManager.cs +++ /dev/null @@ -1,18 +0,0 @@ -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Editor.Managers -{ - using Opsive.Shared.Editor.Managers; - - /// - /// Draws a list of all of the available integrations. - /// - [OrderedEditorItem("Integrations", 11)] - public class IntegrationsManager : Opsive.Shared.Editor.Managers.IntegrationsManager - { - protected override string IntegrationsURL => "https://opsive.com/asset/BehaviorDesigner/IntegrationsList.txt"; - } -} \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/IntegrationsManager.cs.meta b/Packages/com.opsive.behaviordesigner/Editor/Managers/IntegrationsManager.cs.meta deleted file mode 100644 index 8968dc8..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/IntegrationsManager.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 722bac958cec61240b407653551d0dfc -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/Opsive.BehaviorDesigner.Editor.Managers.asmdef b/Packages/com.opsive.behaviordesigner/Editor/Managers/Opsive.BehaviorDesigner.Editor.Managers.asmdef deleted file mode 100644 index 25e125a..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/Opsive.BehaviorDesigner.Editor.Managers.asmdef +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "Opsive.BehaviorDesigner.Editor.Managers", - "rootNamespace": "Opsive.BehaviorDesigner.Editor.Managers", - "references": [ - "GUID:734d92eba21c94caba915361bd5ac177", - "GUID:e0cd26848372d4e5c891c569017e11f1", - "GUID:bbb15c76beca87041af309d0035105a2", - "GUID:27cb7fd045e5bb44f8c617ce69325b1d", - "GUID:97a55b351d7460f4f87d2ad07066bf4e", - "GUID:cf0567158f87e3c4c9be32bb870ec7b9" - ], - "includePlatforms": [ - "Editor" - ], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [ - { - "name": "com.unity.entities", - "expression": "1.3.5", - "define": "UNITY_ENTITIES" - } - ], - "noEngineReferences": false -} \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/Opsive.BehaviorDesigner.Editor.Managers.asmdef.meta b/Packages/com.opsive.behaviordesigner/Editor/Managers/Opsive.BehaviorDesigner.Editor.Managers.asmdef.meta deleted file mode 100644 index fbb053a..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/Opsive.BehaviorDesigner.Editor.Managers.asmdef.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: d923cf8fc4ca8464bb84bcfbec68a2ff -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/SamplesManager.cs b/Packages/com.opsive.behaviordesigner/Editor/Managers/SamplesManager.cs deleted file mode 100644 index 03d8e2a..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/SamplesManager.cs +++ /dev/null @@ -1,24 +0,0 @@ -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Editor.Managers -{ - using Opsive.Shared.Editor.Managers; - - /// - /// Draws a list of all of the available samples. - /// - [OrderedEditorItem("Samples", 10)] - public class SamplesManager :Manager - { - public override void BuildVisualElements() - { - ManagerUtility.ShowControlBox("Import Samples", "Imports the sample scenes. These scenes use the universal render pipeline.", null, "Import Samples", () => - { - ManagerUtility.ImportSample(AssetInfo.PackageName); - }, m_ManagerContentContainer, true); - } - } -} \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/SamplesManager.cs.meta b/Packages/com.opsive.behaviordesigner/Editor/Managers/SamplesManager.cs.meta deleted file mode 100644 index 8ce200a..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/SamplesManager.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3790a505de4b60244afbd23f13ead000 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/Startup.cs b/Packages/com.opsive.behaviordesigner/Editor/Managers/Startup.cs deleted file mode 100644 index fa5197e..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/Startup.cs +++ /dev/null @@ -1,72 +0,0 @@ -#if !OPSIVE_IMPORT_DEBUG -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Editor.Managers -{ - using Opsive.Shared.Editor.Import; - using System.IO; - using UnityEditor; - using UnityEngine; - - /// - /// Shows the welcome screen and check for minimum installed packages. - /// - [InitializeOnLoad] - public class Startup - { - private const string c_ImportStatusPath = "Assets/Opsive/ImportStatus.asset"; - - /// - /// Perform editor checks as soon as the scripts are done compiling. - /// - static Startup() - { - EditorApplication.update += EditorStartup; - } - - /// - /// Show the editor window if it hasn't been shown before. - /// - private static void EditorStartup() - { - if (EditorApplication.isCompiling) { - return; - } - - EditorApplication.update -= EditorStartup; - AssetDatabase.Refresh(); - ImportStatus importStatus = null; - var importStatusAssets = AssetDatabase.FindAssets("t:ImportStatus"); - if (importStatusAssets != null && importStatusAssets.Length > 0) { - for (int i = 0; i < importStatusAssets.Length; ++i) { - var path = AssetDatabase.GUIDToAssetPath(importStatusAssets[i]); - if (string.IsNullOrEmpty(path)) { - path = importStatusAssets[i]; - } - importStatus = AssetDatabase.LoadAssetAtPath(path, typeof(ImportStatus)) as ImportStatus; - if (importStatus != null) { - break; - } - } - } - if (importStatus == null) { - // The import status hasn't been created yet. Create it in the same location as the Opsive folder. - importStatus = ScriptableObject.CreateInstance(); - Directory.CreateDirectory(Path.GetDirectoryName(c_ImportStatusPath)); - AssetDatabase.CreateAsset(importStatus, c_ImportStatusPath); - AssetDatabase.Refresh(); - } - - if (!importStatus.BehaviorWindowShown) { - var window = BehaviorMainWindow.ShowWindow(); - window.Open(typeof(WelcomeScreenManager)); - importStatus.BehaviorWindowShown = true; - EditorUtility.SetDirty(importStatus); - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/Startup.cs.meta b/Packages/com.opsive.behaviordesigner/Editor/Managers/Startup.cs.meta deleted file mode 100644 index 2137502..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/Startup.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9075c8a032fa68945bf2d25260aa36ee -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/WelcomeScreenManager.cs b/Packages/com.opsive.behaviordesigner/Editor/Managers/WelcomeScreenManager.cs deleted file mode 100644 index 59d712d..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/WelcomeScreenManager.cs +++ /dev/null @@ -1,181 +0,0 @@ -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Editor.Managers -{ - using Opsive.Shared.Editor.Managers; - using UnityEditor; - using UnityEngine.UIElements; - - /// - /// Shows a starting window with useful links. - /// - [OrderedEditorItem("Welcome", 0)] - public class WelcomeScreenManager : Opsive.Shared.Editor.Managers.WelcomeScreenManager - { - private const string c_GraphDesignerSymbol = "GRAPH_DESIGNER"; - private const string c_EditorTextureGUID = "d52eae9187aad5b41aff6dd60e49247a"; - private const string c_RepositoryTextureGUID = "020153b61b65cf34f82ccc9b186cb700"; - - private VisualElement m_EntityHelpBoxContainer; - - /// - /// The name of the asset. - /// - protected override string AssetName => AssetInfo.Name; - - /// - /// The version of the asset. - /// - protected override string AssetVersion => AssetInfo.Version; - - /// - /// Should the large documentation image be added? - /// - protected override bool AddLargeDocumentationImage => false; - - /// - /// Returns the URL for the documentation page. - /// - /// The URL for the documentation page. - protected override string GetDocumentationURL() - { - return "https://opsive.com/support/documentation/behavior-designer-pro/"; - } - - /// - /// Returns the URL for the videos page. - /// - /// The URL for the videos page. - protected override string GetVideosURL() - { - return "https://opsive.com/videos?pid=28276"; - } - - /// - /// Returns the URL for the asset page. - /// - /// The URL for the asset page. - protected override string GetAssetURL() - { - return "https://assetstore.unity.com/packages/slug/298743"; - } - - /// - /// Checks to ensure the required packages are installed. - /// - /// The parent VisualElement. - protected override void AddHeader(VisualElement parent) - { - EditorApplication.update += CheckForEntities; - -#if !UNITY_ENTITIES - m_EntityHelpBoxContainer = ManagerUtility.AddHelpBox(parent, "Behavior Designer requires the Entities package. Press the button below to install.", HelpBoxMessageType.Error, "Install", (HelpBox helpbox, Button actionButton) => - { - helpbox.text = "Installing the entities package. Unity will reimport after the package has been installed.\n\n" + - "Restart Unity if you receive compiler errors after Unity has reimported.\n\n" + - "Behavior Designer can be access from the Tools/Opsive/Behavior Designer/Editor menu."; - helpbox.messageType = HelpBoxMessageType.Info; - actionButton.SetEnabled(false); - m_WelcomeLabel.style.display = DisplayStyle.None; - - UnityEditor.PackageManager.Client.Add("com.unity.entities"); - }); - m_WelcomeLabel.style.display = DisplayStyle.None; -#else - base.AddHeader(parent); -#endif - } - - /// - /// Checks for the Entity package installation. - /// - private void CheckForEntities() - { -#if !GRAPH_DESIGNER && UNITY_ENTITIES - AddSymbol(c_GraphDesignerSymbol); - EditorApplication.update -= CheckForEntities; - - if (m_EntityHelpBoxContainer != null) { - m_EntityHelpBoxContainer.style.display = DisplayStyle.None; - m_WelcomeLabel.style.display = DisplayStyle.Flex; - } -#elif GRAPH_DESIGNER - if (m_EntityHelpBoxContainer != null) { - m_EntityHelpBoxContainer.style.display = DisplayStyle.None; - m_WelcomeLabel.style.display = DisplayStyle.Flex; - } -#endif - } - - /// - /// Adds the specified symbol to the compiler definitions. - /// - /// The symbol to add. - private static void AddSymbol(string symbol) - { - // Set on all available build targets. - var buildTargets = System.Enum.GetValues(typeof(BuildTarget)) as BuildTarget[]; - foreach (var buildTarget in buildTargets) { - if (buildTarget is BuildTarget.NoTarget) { - continue; - } - - var buildTargetGroup = BuildPipeline.GetBuildTargetGroup(buildTarget); - if (!BuildPipeline.IsBuildTargetSupported(buildTargetGroup, buildTarget)) { - continue; - } - -#if UNITY_2023_1_OR_NEWER - var namedBuildTarget = UnityEditor.Build.NamedBuildTarget.FromBuildTargetGroup(buildTargetGroup); - var symbols = PlayerSettings.GetScriptingDefineSymbols(namedBuildTarget); -#else - var symbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(buildTargetGroup); -#endif - if (symbols.Contains(symbol)) { - continue; - } - symbols += (";" + symbol); -#if UNITY_2023_1_OR_NEWER - PlayerSettings.SetScriptingDefineSymbols(namedBuildTarget, symbols); -#else - PlayerSettings.SetScriptingDefineSymbolsForGroup(buildTargetGroup, symbols); -#endif - } - } - - /// - /// Adds the resource images to the parent element. - /// - /// The parent that the images should be added to. - protected override void AddImages(VisualElement parent) - { - AddLargeImage(parent, c_EditorTextureGUID, () => { -#if GRAPH_DESIGNER - BehaviorDesignerWindow.ShowWindow(); -#else - UnityEngine.Debug.LogError("Error: Unable to open the Behavior Designer window. Ensure the Entities package has been installed."); -#endif - }); - - // Documentation and Videos. - AddImageRow(parent, c_SmallDocumentationTextureGUID, GetDocumentationURL(), - c_VideosTextureGUID, GetVideosURL()); - - // Repository and Downloads. - AddImageRow(parent, c_RepositoryTextureGUID, "https://opsive.com/assets/behavior-designer-pro-subscription", - c_DownloadsTextureGUID, IntegrationsManager.GetDownloadsLink()); - - // Forum and Discord. - AddImageRow(parent, c_ForumTextureGUID, "https://opsive.com/forum/", - c_DiscordTextureGUID, "https://discord.gg/QX6VFgc"); - // Review and Showcase. - AddImageRow(parent, c_ReviewTextureGUID, GetAssetURL(), - c_ShowcaseTextureGUID, "https://opsive.com/showcase/"); - // Professional Services. - AddImageRow(parent, c_ProfessionalServicesTextureGUID, "https://opsive.com", string.Empty, string.Empty); - } - } -} \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Editor/Managers/WelcomeScreenManager.cs.meta b/Packages/com.opsive.behaviordesigner/Editor/Managers/WelcomeScreenManager.cs.meta deleted file mode 100644 index 8d9eeb6..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/Managers/WelcomeScreenManager.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5b1cb06d692d68543b5f50cb2c132e42 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/NodeViews.meta b/Packages/com.opsive.behaviordesigner/Editor/NodeViews.meta deleted file mode 100644 index fd7436f..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/NodeViews.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ef9baff9776e9c84fb838d40b31cff61 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/EventNodeViewControl.cs b/Packages/com.opsive.behaviordesigner/Editor/NodeViews/EventNodeViewControl.cs deleted file mode 100644 index e3c60db..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/EventNodeViewControl.cs +++ /dev/null @@ -1,118 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Editor.Controls.NodeViews -{ - using Opsive.Shared.Editor.UIElements.Controls; - using Opsive.BehaviorDesigner.Runtime; - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Tasks; - using Opsive.GraphDesigner.Editor; - using Opsive.GraphDesigner.Editor.Controls.NodeViews; - using Opsive.GraphDesigner.Editor.Elements; - using Opsive.GraphDesigner.Editor.Events; - using Opsive.GraphDesigner.Runtime; - using Unity.Entities; - using UnityEngine.UIElements; - using UnityEngine; - using UnityEditor; - - /// - /// Adds UI elements within the event node. - /// - [ControlType(typeof(IEventNode))] - public class EventNodeViewControl : NodeViewBase - { - private const string c_DarkSuccessIconGUID = "240eed9b6e6dc004f94216f1e9fcc390"; - private const string c_LightSuccessIconGUID = "cf3f27e8ca1f20f4680890e078c7613a"; - private const string c_DarkFailureIconGUID = "8d159db7a8da43e41a50a77e43cfd6ba"; - private const string c_LightFailureIconGUID = "c3622912d9f7bcd41a54a95add672423"; - - private IEventNode m_Node; - private GraphWindow m_GraphWindow; - private BehaviorTree m_BehaviorTree; - private EventNode m_EventNode; - - private Image m_ExecutionStatusIcon; - private Texture m_SuccessIcon; - private Texture m_FailureIcon; - - /// - /// Addes the UIElements for the specified runtime node to the editor Node within the graph. - /// - /// A reference to the GraphWindow. - /// The parent UIElement that should contain the node UIElements. - /// The node that the control represents. - public override void AddNodeView(GraphWindow graphWindow, VisualElement parent, object node) - { - graphWindow.rootVisualElement.styleSheets.Add(Shared.Editor.Utility.EditorUtility.LoadAsset("9c6834c10d404ac4b95be745f4411f96")); // TaskStyles.uss - - m_Node = node as IEventNode; - m_GraphWindow = graphWindow; - m_BehaviorTree = m_GraphWindow.Graph as BehaviorTree; - m_EventNode = parent.GetFirstAncestorOfType(); - - // AddNodeView can be called multiple times. Ensure there is only one execution status image. - var previousExecutionStatus = m_EventNode.Q("event-execution-status"); - if (previousExecutionStatus != null) { - previousExecutionStatus.parent.Remove(previousExecutionStatus); - } - m_ExecutionStatusIcon = new Image(); - m_ExecutionStatusIcon.name = "event-execution-status"; - parent.parent.Add(m_ExecutionStatusIcon); // The execution status icon should be placed behind every node element. - m_ExecutionStatusIcon.SendToBack(); - - m_SuccessIcon = Shared.Editor.Utility.EditorUtility.LoadAsset(EditorGUIUtility.isProSkin ? c_DarkSuccessIconGUID : c_LightSuccessIconGUID); - m_FailureIcon = Shared.Editor.Utility.EditorUtility.LoadAsset(EditorGUIUtility.isProSkin ? c_DarkFailureIconGUID : c_LightFailureIconGUID); - - m_ExecutionStatusIcon.RegisterCallback(c => - { - GraphEventHandler.RegisterEvent(GraphEventType.WindowUpdate, UpdateNode); - }); - m_ExecutionStatusIcon.RegisterCallback(c => - { - GraphEventHandler.UnregisterEvent(GraphEventType.WindowUpdate, UpdateNode); - }); - } - - /// - /// Updates the node with the current execution status icon. - /// - private void UpdateNode() - { - if (m_BehaviorTree == null || m_BehaviorTree.Entity == Entity.Null || m_Node.ConnectedIndex == ushort.MaxValue || !m_BehaviorTree.World.EntityManager.Exists(m_BehaviorTree.Entity)) { - return; - } - - var connectedNode = m_GraphWindow.Graph.LogicNodes[m_Node.ConnectedIndex]; - // The tree may not be initialized. - if (connectedNode.RuntimeIndex == ushort.MaxValue) { - return; - } - var taskComponents = m_BehaviorTree.World.EntityManager.GetBuffer(m_BehaviorTree.Entity); - var taskComponent = taskComponents[connectedNode.RuntimeIndex]; - if (taskComponent.Status == TaskStatus.Success) { - m_ExecutionStatusIcon.image = m_SuccessIcon; - } else if (taskComponent.Status == TaskStatus.Failure) { - m_ExecutionStatusIcon.image = m_FailureIcon; - } else if (m_ExecutionStatusIcon.image != null) { - m_ExecutionStatusIcon.image = null; - } - - if (m_ExecutionStatusIcon.image != null) { - m_ExecutionStatusIcon.style.width = m_ExecutionStatusIcon.image.width; - } - - if (taskComponent.Status == TaskStatus.Running || taskComponent.Status == TaskStatus.Queued) { - m_EventNode.SetColorState(ColorState.Active, 0); - } else { - var nodeIndex = m_GraphWindow.GraphEditor.GetNodeIndex(m_Node); - m_EventNode.SetColorState(m_GraphWindow.Graph.IsNodeEnabled(false, nodeIndex) ? ColorState.Default : ColorState.Disabled, 0.5f); - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/EventNodeViewControl.cs.meta b/Packages/com.opsive.behaviordesigner/Editor/NodeViews/EventNodeViewControl.cs.meta deleted file mode 100644 index 1cbbe55..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/EventNodeViewControl.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6c90fafbcac7a174c9d9b765d9065ef0 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/Opsive.BehaviorDesigner.Editor.Controls.NodeViews.asmdef b/Packages/com.opsive.behaviordesigner/Editor/NodeViews/Opsive.BehaviorDesigner.Editor.Controls.NodeViews.asmdef deleted file mode 100644 index dba7113..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/Opsive.BehaviorDesigner.Editor.Controls.NodeViews.asmdef +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "Opsive.BehaviorDesigner.Editor.Controls.NodeViews", - "rootNamespace": "", - "references": [ - "GUID:734d92eba21c94caba915361bd5ac177", - "GUID:d8b63aba1907145bea998dd612889d6b", - "GUID:e0cd26848372d4e5c891c569017e11f1", - "GUID:bbb15c76beca87041af309d0035105a2", - "GUID:27cb7fd045e5bb44f8c617ce69325b1d", - "GUID:f9fbcd65fc33f6847b0f124cf7e891b6", - "GUID:97a55b351d7460f4f87d2ad07066bf4e", - "GUID:cf0567158f87e3c4c9be32bb870ec7b9", - "GUID:e9319bc8ab9315745bdf80aeffa01d6d" - ], - "includePlatforms": [ - "Editor" - ], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [ - { - "name": "com.unity.entities", - "expression": "1.3.5", - "define": "UNITY_ENTITIES" - } - ], - "noEngineReferences": false -} \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/Opsive.BehaviorDesigner.Editor.Controls.NodeViews.asmdef.meta b/Packages/com.opsive.behaviordesigner/Editor/NodeViews/Opsive.BehaviorDesigner.Editor.Controls.NodeViews.asmdef.meta deleted file mode 100644 index fcb9f7f..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/Opsive.BehaviorDesigner.Editor.Controls.NodeViews.asmdef.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 98e4b74cf0784f4458e03260557a6cc4 -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/PriorityEvaluatorNodeViewControl.cs b/Packages/com.opsive.behaviordesigner/Editor/NodeViews/PriorityEvaluatorNodeViewControl.cs deleted file mode 100644 index 95000b2..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/PriorityEvaluatorNodeViewControl.cs +++ /dev/null @@ -1,95 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Editor.Controls.NodeViews -{ - using Opsive.GraphDesigner.Editor; - using Opsive.GraphDesigner.Editor.Events; - using Opsive.GraphDesigner.Runtime; - using Opsive.BehaviorDesigner.Runtime; - using Opsive.BehaviorDesigner.Runtime.Systems; - using Opsive.BehaviorDesigner.Runtime.Tasks.Decorators; - using Opsive.Shared.Editor.UIElements.Controls; - using Unity.Entities; - using UnityEngine; - using UnityEngine.UIElements; - - /// - /// Implements TypeControlBase for the PriorityEvaluator type. - /// - [ControlType(typeof(PriorityEvaluator))] - public class PriorityEvaluatorNodeViewControl : TaskNodeViewControl - { - private BehaviorTree m_BehaviorTree; - private ILogicNode m_Node; - private ushort m_PriorityEvaluatorComponentIndex = ushort.MaxValue; - - private Label m_PriorityValueLabel; - - /// - /// Addes the UIElements for the specified runtime node to the editor Node within the graph. - /// - /// A reference to the GraphWindow. - /// The parent UIElement that should contain the node UIElements. - /// The node that the control represents. - public override void AddNodeView(GraphWindow graphWindow, VisualElement parent, object node) - { - base.AddNodeView(graphWindow, parent, node); - - if (!Application.isPlaying) { - return; - } - - m_BehaviorTree = graphWindow.Graph as BehaviorTree; - m_Node = node as ILogicNode; - - parent.RegisterCallback(c => - { - GraphEventHandler.RegisterEvent(GraphEventType.WindowUpdate, UpdateUtilityValue); - }); - parent.RegisterCallback(c => - { - GraphEventHandler.UnregisterEvent(GraphEventType.WindowUpdate, UpdateUtilityValue); - }); - - m_PriorityValueLabel = new Label(); - m_PriorityValueLabel.style.alignSelf = Align.Center; - parent.Add(m_PriorityValueLabel); - } - - /// - /// Updates the utility value. - /// - private void UpdateUtilityValue() - { - if (m_BehaviorTree == null || m_BehaviorTree.Entity == Entity.Null || m_Node.RuntimeIndex == ushort.MaxValue) { - return; - } - - var taskObjectComponents = m_BehaviorTree.World.EntityManager.GetBuffer(m_BehaviorTree.Entity); - if (m_PriorityEvaluatorComponentIndex == ushort.MaxValue) { - // Find the corresponding index of the TaskObject. - for (int i = 0; i < taskObjectComponents.Length; ++i) { - if (taskObjectComponents[i].Index == m_Node.RuntimeIndex) { - m_PriorityEvaluatorComponentIndex = (ushort)i; - break; - } - } - - if (m_PriorityEvaluatorComponentIndex == ushort.MaxValue) { - return; - } - } - - var priorityEvaluator = m_BehaviorTree.GetTask(taskObjectComponents[m_PriorityEvaluatorComponentIndex].Index) as PriorityEvaluator; - if (priorityEvaluator == null) { - return; - } - m_PriorityValueLabel.text = "Value: " + priorityEvaluator.GetPriorityValue(); - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/PriorityEvaluatorNodeViewControl.cs.meta b/Packages/com.opsive.behaviordesigner/Editor/NodeViews/PriorityEvaluatorNodeViewControl.cs.meta deleted file mode 100644 index fd08bbd..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/PriorityEvaluatorNodeViewControl.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a9387930721f1dd42909d2053f5063ef -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/StackedTaskNodeViewControl.cs b/Packages/com.opsive.behaviordesigner/Editor/NodeViews/StackedTaskNodeViewControl.cs deleted file mode 100644 index dc778f0..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/StackedTaskNodeViewControl.cs +++ /dev/null @@ -1,134 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Editor.Controls.NodeViews -{ - using Opsive.GraphDesigner.Editor; - using Opsive.BehaviorDesigner.Runtime.Tasks; - using Opsive.Shared.Editor.UIElements.Controls; - using UnityEngine.UIElements; - using UnityEditor; - using UnityEngine; - - /// - /// Implements TypeControlBase for the StackedTask type. - /// - [ControlType(typeof(StackedTask))] - public class StackedTaskNodeViewControl : TaskNodeViewControl - { - private const float c_ActiveIconRotationSpeed = 30; - - /// - /// Displays information about the nested task within the Stacked Task. - /// - private class TaskView : VisualElement - { - private const string c_DarkActiveIconGUID = "1230b934cbd748345b13125468a34720"; - private const string c_LightActiveIconGUID = "e57f179ee476f274dbe537179e67bf04"; - - private int m_Index; - private Image m_ActiveImage; - private float m_CurrentRotation; - - /// - /// TaskView constructor. - /// - /// The index of the task. - /// A reference to the task. - public TaskView(int index, Task task) - { - m_Index = index; - - var horizontalLayout = new VisualElement(); - horizontalLayout.AddToClassList("horizontal-layout"); - horizontalLayout.style.height = 18; - var label = new Label(task.ToString()); - label.style.flexGrow = 1; - horizontalLayout.Add(label); - m_ActiveImage = new Image(); - m_ActiveImage.image = Shared.Editor.Utility.EditorUtility.LoadAsset(EditorGUIUtility.isProSkin ? c_DarkActiveIconGUID : c_LightActiveIconGUID); - m_ActiveImage.style.width = 16; - m_ActiveImage.style.height = 16; - m_ActiveImage.style.display = DisplayStyle.None; - horizontalLayout.Add(m_ActiveImage); - - Add(horizontalLayout); - } - - /// - /// Updates the status of the task. - /// - /// The index that is active. - public void UpdateStatus(int activeIndex) - { - m_ActiveImage.style.display = (m_Index == activeIndex ? DisplayStyle.Flex : DisplayStyle.None); - if (m_Index == activeIndex) { - if (Application.isPlaying) { - m_CurrentRotation += c_ActiveIconRotationSpeed; - m_ActiveImage.style.rotate = new Rotate(Angle.Degrees(m_CurrentRotation)); - } - } else { - m_CurrentRotation = 0f; - m_ActiveImage.style.rotate = new Rotate(Angle.Degrees(0f)); - } - } - } - - private StackedTask m_StackedTask; - private TaskView[] m_TaskViews; - - /// - /// Addes the UIElements for the specified runtime node to the editor Node within the graph. - /// - /// A reference to the GraphWindow. - /// The parent UIElement that should contain the node UIElements. - /// The node that the control represents. - public override void AddNodeView(GraphWindow graphWindow, VisualElement parent, object node) - { - base.AddNodeView(graphWindow, parent, node); - - m_StackedTask = node as StackedTask; - if (m_StackedTask.Tasks == null) { - return; - } - - var tasks = m_StackedTask.Tasks; - m_TaskViews = new TaskView[tasks.Length]; - for (int i = 0; i < tasks.Length; ++i) { - var task = m_StackedTask.Tasks[i]; - // The task no longer exists. Replace it. - if (task == null) { - tasks[i] = new UnknownTask(); - m_StackedTask.Tasks = tasks; - } - m_TaskViews[i] = new TaskView(i, m_StackedTask.Tasks[i]); - parent.Add(m_TaskViews[i]); - } - } - - /// - /// Internal method which updates the node with the current execution status. - /// - /// The status of the task. - protected override TaskStatus UpdateNodeInternal() - { - var activeIndex = -1; - TaskStatus status; - if ((status = base.UpdateNodeInternal()) == TaskStatus.Running && m_StackedTask.Tasks.Length > 1) { - activeIndex = m_StackedTask.ActiveIndex; - for (int i = 0; i < m_TaskViews.Length; ++i) { - m_TaskViews[i].UpdateStatus(activeIndex); - } - } else { - for (int i = 0; i < m_TaskViews.Length; ++i) { - m_TaskViews[i].UpdateStatus(activeIndex); - } - } - return status; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/StackedTaskNodeViewControl.cs.meta b/Packages/com.opsive.behaviordesigner/Editor/NodeViews/StackedTaskNodeViewControl.cs.meta deleted file mode 100644 index 9d011c5..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/StackedTaskNodeViewControl.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 40ae380983a04824fb14ea4a89343e87 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/TaskNodeViewControl.cs b/Packages/com.opsive.behaviordesigner/Editor/NodeViews/TaskNodeViewControl.cs deleted file mode 100644 index 8b14d13..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/TaskNodeViewControl.cs +++ /dev/null @@ -1,288 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Editor.Controls.NodeViews -{ - using Opsive.Shared.Editor.UIElements.Controls; - using Opsive.BehaviorDesigner.Runtime; - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Tasks; - using Opsive.GraphDesigner.Editor; - using Opsive.GraphDesigner.Editor.Controls.NodeViews; - using Opsive.GraphDesigner.Editor.Elements; - using Opsive.GraphDesigner.Editor.Events; - using Opsive.GraphDesigner.Runtime; - using Unity.Entities; - using UnityEngine.UIElements; - using UnityEngine; - using UnityEditor; - - /// - /// Adds UI elements within the task node. - /// - [ControlType(typeof(IAction))] - [ControlType(typeof(IConditional))] - [ControlType(typeof(IComposite))] - [ControlType(typeof(IDecorator))] - public class TaskNodeViewControl : NodeViewBase - { - private const string c_DarkConditionalAbortLowerPriorityIconGUID = "ba6528926e3f4f7438d3b9737f595ec6"; - private const string c_LightConditionalAbortLowerPriorityIconGUID = "20be04a2e46cb9d40b601dccdfbe153b"; - private const string c_DarkConditionalAbortSelfIconGUID = "ff3ba64f23e708645b24cc7509b5ebe5"; - private const string c_LightConditionalAbortSelfIconGUID = "5d44e66bacdbe51408dd30e519c2b318"; - private const string c_DarkConditionalAbortBothIconGUID = "1c01950cc0f1c994cb5ff3576969ebbf"; - private const string c_LightConditionalAbortBothIconGUID = "90b22fc04519bdb44b4d83665e86381d"; - - private const string c_DarkSuccessIconGUID = "240eed9b6e6dc004f94216f1e9fcc390"; - private const string c_LightSuccessIconGUID = "cf3f27e8ca1f20f4680890e078c7613a"; - private const string c_DarkSuccessReevaluateIconGUID = "0a5037ce131729b4fa0ffa9e1e13d387"; - private const string c_LightSuccessReevaluateIconGUID = "bba6bdc3af0aac44dadd1ca3a8485b05"; - private const string c_DarkFailureIconGUID = "8d159db7a8da43e41a50a77e43cfd6ba"; - private const string c_LightFailureIconGUID = "c3622912d9f7bcd41a54a95add672423"; - private const string c_DarkFailureReevaluateIconGUID = "26de8afeb313fd84291f98e68db44df7"; - private const string c_LightFailureReevaluateIconGUID = "5a6d713911c8ec3488639e2934329033"; - - private ILogicNode m_Node; - private GraphWindow m_GraphWindow; - private BehaviorTree m_BehaviorTree; - - private Image m_ExecutionStatusIcon; - private Image m_ConditionalAbortIcon; - private LogicNode m_LogicNode; - - private Texture m_SuccessIcon; - private Texture m_SuccessReevaluateIcon; - private Texture m_FailureIcon; - private Texture m_FailureReevaluateIcon; - - /// - /// Addes the UIElements for the specified runtime node to the editor Node within the graph. - /// - /// A reference to the GraphWindow. - /// The parent UIElement that should contain the node UIElements. - /// The node that the control represents. - public override void AddNodeView(GraphWindow graphWindow, VisualElement parent, object node) - { - graphWindow.rootVisualElement.styleSheets.Add(Shared.Editor.Utility.EditorUtility.LoadAsset("9c6834c10d404ac4b95be745f4411f96")); // TaskStyles.uss - - m_Node = node as ILogicNode; - m_GraphWindow = graphWindow; - m_BehaviorTree = m_GraphWindow.Graph as BehaviorTree; - m_LogicNode = parent.GetFirstAncestorOfType(); - - if (node is IConditionalAbortParent conditionalAbortParent) { - m_ConditionalAbortIcon = new Image(); - m_ConditionalAbortIcon.name = "conditional-abort-icon"; - parent.parent.Add(m_ConditionalAbortIcon); - SetConditionalAbortIcon(conditionalAbortParent); - - m_ConditionalAbortIcon.RegisterCallback(c => - { - GraphEventHandler.RegisterEvent(GraphEventType.NodeValueUpdated, UpdateNodeValue); - }); - m_ConditionalAbortIcon.RegisterCallback(c => - { - GraphEventHandler.UnregisterEvent(GraphEventType.NodeValueUpdated, UpdateNodeValue); - }); - } - - // Subtree references can click into its references. - if (m_Node is ISubtreeReference) { - m_LogicNode.RegisterCallback(OnSubtreeRferenceMouseDown); - } - - // AddNodeView can be called multiple times. Ensure there is only one execution status image. - var previousExecutionStatus = m_LogicNode.Q("execution-status"); - if (previousExecutionStatus != null) { - previousExecutionStatus.parent.Remove(previousExecutionStatus); - } - m_ExecutionStatusIcon = new Image(); - m_ExecutionStatusIcon.name = "execution-status"; - parent.parent.Add(m_ExecutionStatusIcon); // The execution status icon should be placed behind every node element. - m_ExecutionStatusIcon.SendToBack(); - - m_SuccessIcon = Shared.Editor.Utility.EditorUtility.LoadAsset(EditorGUIUtility.isProSkin ? c_DarkSuccessIconGUID : c_LightSuccessIconGUID); - m_SuccessReevaluateIcon = Shared.Editor.Utility.EditorUtility.LoadAsset(EditorGUIUtility.isProSkin ? c_DarkSuccessReevaluateIconGUID : c_LightSuccessReevaluateIconGUID); - m_FailureIcon = Shared.Editor.Utility.EditorUtility.LoadAsset(EditorGUIUtility.isProSkin ? c_DarkFailureIconGUID : c_LightFailureIconGUID); - m_FailureReevaluateIcon = Shared.Editor.Utility.EditorUtility.LoadAsset(EditorGUIUtility.isProSkin ? c_DarkFailureReevaluateIconGUID : c_LightFailureReevaluateIconGUID); - - m_ExecutionStatusIcon.RegisterCallback(c => - { - GraphEventHandler.RegisterEvent(GraphEventType.WindowUpdate, UpdateNode); - m_GraphWindow.OnSelectionChange += OnSelectionChange; - }); - m_ExecutionStatusIcon.RegisterCallback(c => - { - GraphEventHandler.UnregisterEvent(GraphEventType.WindowUpdate, UpdateNode); - m_GraphWindow.OnSelectionChange -= OnSelectionChange; - }); - OnSelectionChange(Selection.activeObject); - } - - /// - /// Sets the conditional abort icon. - /// - /// The conditional abort node. - private void SetConditionalAbortIcon(IConditionalAbortParent conditionalAbortParent) - { - if (conditionalAbortParent.AbortType == ConditionalAbortType.LowerPriority) { - m_ConditionalAbortIcon.image = Shared.Editor.Utility.EditorUtility.LoadAsset(EditorGUIUtility.isProSkin ? c_DarkConditionalAbortLowerPriorityIconGUID : c_LightConditionalAbortLowerPriorityIconGUID); - } else if (conditionalAbortParent.AbortType == ConditionalAbortType.Self) { - m_ConditionalAbortIcon.image = Shared.Editor.Utility.EditorUtility.LoadAsset(EditorGUIUtility.isProSkin ? c_DarkConditionalAbortSelfIconGUID : c_LightConditionalAbortSelfIconGUID); - } else if (conditionalAbortParent.AbortType == ConditionalAbortType.Both) { - m_ConditionalAbortIcon.image = Shared.Editor.Utility.EditorUtility.LoadAsset(EditorGUIUtility.isProSkin ? c_DarkConditionalAbortBothIconGUID : c_LightConditionalAbortBothIconGUID); - } else { - m_ConditionalAbortIcon.image = null; - } - } - - /// - /// A value has been updated for the specified node. - /// - /// The node that has been updated. - private void UpdateNodeValue(object node) - { - if (node != m_Node) { - return; - } - - SetConditionalAbortIcon(node as IConditionalAbortParent); - } - - /// - /// Updates the node with the current execution status. - /// - private void UpdateNode() - { - UpdateNodeInternal(); - } - - /// - /// Internal method which updates the node with the current execution status. - /// - /// The status of the task. - protected virtual TaskStatus UpdateNodeInternal() - { - if (m_BehaviorTree == null || m_BehaviorTree.Entity == Entity.Null || m_Node.RuntimeIndex == ushort.MaxValue || !m_BehaviorTree.World.EntityManager.Exists(m_BehaviorTree.Entity)) { - // The task is no longer active. Reset the status while keeping the previous execution state. - m_LogicNode.SetColorState(m_GraphWindow.GraphEditor.IsNodeHierarchyEnabled(m_Node) ? ColorState.Default : ColorState.Disabled, 0.5f); - if (m_ExecutionStatusIcon.image != null) { - if (m_ExecutionStatusIcon.image == m_SuccessReevaluateIcon) { - m_ExecutionStatusIcon.image = m_SuccessIcon; - } else if (m_ExecutionStatusIcon.image == m_FailureReevaluateIcon) { - m_ExecutionStatusIcon.image = m_FailureIcon; - } - m_ExecutionStatusIcon.style.width = m_ExecutionStatusIcon.image.width; - } - return TaskStatus.Inactive; - } - - var taskComponents = m_BehaviorTree.World.EntityManager.GetBuffer(m_BehaviorTree.Entity); - var taskComponent = taskComponents[m_Node.RuntimeIndex]; - if (taskComponent.Status == TaskStatus.Success) { - if (taskComponent.Reevaluate) { - m_ExecutionStatusIcon.image = m_SuccessReevaluateIcon; - } else { - m_ExecutionStatusIcon.image = m_SuccessIcon; - } - } else if (taskComponent.Status == TaskStatus.Failure) { - if (taskComponent.Reevaluate) { - m_ExecutionStatusIcon.image = m_FailureReevaluateIcon; - } else { - m_ExecutionStatusIcon.image = m_FailureIcon; - } - } else if (m_ExecutionStatusIcon.image != null) { - m_ExecutionStatusIcon.image = null; - } - - if (m_ExecutionStatusIcon.image != null) { - m_ExecutionStatusIcon.style.width = m_ExecutionStatusIcon.image.width; - } - - if (taskComponent.Status == TaskStatus.Running || taskComponent.Status == TaskStatus.Queued) { - m_LogicNode.SetColorState(ColorState.Active, 0); - } else { - m_LogicNode.SetColorState(m_GraphWindow.GraphEditor.IsNodeHierarchyEnabled(m_Node) ? ColorState.Default : ColorState.Disabled, 0.5f); - } - return taskComponent.Status; - } - - /// - /// Enables or disables the NodeView. - /// - /// True if the NodeView is enabled. - public override void SetEnabled(bool enable) - { - if (m_ConditionalAbortIcon != null) { - m_ConditionalAbortIcon.SetEnabled(enable); - } - } - - /// - /// The mouse has been pressed. - /// - /// The event that triggered the press. - private void OnSubtreeRferenceMouseDown(MouseDownEvent evt) - { - if (evt.clickCount != 2) { - return; - } - - var subtreeReference = m_Node as ISubtreeReference; - if (subtreeReference.Subtrees == null) { - return; - } - - for (int i = 0; i < subtreeReference.Subtrees.Length; ++i) { - var subtree = subtreeReference.Subtrees[i]; - if (subtree == null) { - continue; - } - - Selection.activeObject = subtree; - } - } - - /// - /// The GraphWindow selection has changed. - /// - /// The new selection. - private void OnSelectionChange(UnityEngine.Object selection) - { - if (!Application.isPlaying || m_BehaviorTree == null || m_BehaviorTree.Entity == Entity.Null || !m_BehaviorTree.enabled || !m_BehaviorTree.Baked) { - return; - } - - // The behavior tree was baked. Ensure the BehaviorTree component is pointing to the correct Entity. - var worlds = World.All; - var foundEntity = false; - for (int i = 0; i < worlds.Count; ++i) { - var defaultEntities = worlds[i].EntityManager.GetAllEntities(Unity.Collections.Allocator.Temp); - if (defaultEntities != null) { - var originalGuid = m_BehaviorTree.World.EntityManager.GetComponentData(m_BehaviorTree.Entity); - - foreach (var defaultEntity in defaultEntities) { - if (worlds[i].EntityManager.HasComponent(defaultEntity)) { - var entityGuid = worlds[i].EntityManager.GetComponentData(defaultEntity); - if (originalGuid.OriginatingId == entityGuid.OriginatingId) { - m_BehaviorTree.World = worlds[i]; - m_BehaviorTree.Entity = defaultEntity; - foundEntity = true; - break; - } - } - } - defaultEntities.Dispose(); - if (foundEntity) { - m_BehaviorTree.Baked = false; - break; - } - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/TaskNodeViewControl.cs.meta b/Packages/com.opsive.behaviordesigner/Editor/NodeViews/TaskNodeViewControl.cs.meta deleted file mode 100644 index 0057d33..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/TaskNodeViewControl.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 34ab799a714c2db4ab2d69566510bfc4 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/UtilityEvaluatorNodeViewControl.cs b/Packages/com.opsive.behaviordesigner/Editor/NodeViews/UtilityEvaluatorNodeViewControl.cs deleted file mode 100644 index 67fda65..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/UtilityEvaluatorNodeViewControl.cs +++ /dev/null @@ -1,95 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Editor.Controls.NodeViews -{ - using Opsive.GraphDesigner.Editor; - using Opsive.GraphDesigner.Editor.Events; - using Opsive.GraphDesigner.Runtime; - using Opsive.BehaviorDesigner.Runtime; - using Opsive.BehaviorDesigner.Runtime.Systems; - using Opsive.BehaviorDesigner.Runtime.Tasks.Decorators; - using Opsive.Shared.Editor.UIElements.Controls; - using Unity.Entities; - using UnityEngine; - using UnityEngine.UIElements; - - /// - /// Implements TypeControlBase for the UtilityEvaluator type. - /// - [ControlType(typeof(UtilityEvaluator))] - public class UtilityEvaluatorNodeViewControl : TaskNodeViewControl - { - private BehaviorTree m_BehaviorTree; - private ILogicNode m_Node; - private ushort m_UtilityEvaluatorComponentIndex = ushort.MaxValue; - - private Label m_UtilityValueLabel; - - /// - /// Addes the UIElements for the specified runtime node to the editor Node within the graph. - /// - /// A reference to the GraphWindow. - /// The parent UIElement that should contain the node UIElements. - /// The node that the control represents. - public override void AddNodeView(GraphWindow graphWindow, VisualElement parent, object node) - { - base.AddNodeView(graphWindow, parent, node); - - if (!Application.isPlaying) { - return; - } - - m_BehaviorTree = graphWindow.Graph as BehaviorTree; - m_Node = node as ILogicNode; - - parent.RegisterCallback(c => - { - GraphEventHandler.RegisterEvent(GraphEventType.WindowUpdate, UpdateUtilityValue); - }); - parent.RegisterCallback(c => - { - GraphEventHandler.UnregisterEvent(GraphEventType.WindowUpdate, UpdateUtilityValue); - }); - - m_UtilityValueLabel = new Label(); - m_UtilityValueLabel.style.alignSelf = Align.Center; - parent.Add(m_UtilityValueLabel); - } - - /// - /// Updates the utility value. - /// - private void UpdateUtilityValue() - { - if (m_BehaviorTree == null || m_BehaviorTree.Entity == Entity.Null || m_Node.RuntimeIndex == ushort.MaxValue) { - return; - } - - var taskObjectComponents = m_BehaviorTree.World.EntityManager.GetBuffer(m_BehaviorTree.Entity); - if (m_UtilityEvaluatorComponentIndex == ushort.MaxValue) { - // Find the corresponding index of the TaskObject. - for (int i = 0; i < taskObjectComponents.Length; ++i) { - if (taskObjectComponents[i].Index == m_Node.RuntimeIndex) { - m_UtilityEvaluatorComponentIndex = (ushort)i; - break; - } - } - - if (m_UtilityEvaluatorComponentIndex == ushort.MaxValue) { - return; - } - } - - var utilityEvaluator = m_BehaviorTree.GetTask(taskObjectComponents[m_UtilityEvaluatorComponentIndex].Index) as UtilityEvaluator; - if (utilityEvaluator == null) { - return; - } - m_UtilityValueLabel.text = "Value: " + System.Math.Round(utilityEvaluator.GetUtilityValue(), 3); - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/UtilityEvaluatorNodeViewControl.cs.meta b/Packages/com.opsive.behaviordesigner/Editor/NodeViews/UtilityEvaluatorNodeViewControl.cs.meta deleted file mode 100644 index ecb0e9e..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/UtilityEvaluatorNodeViewControl.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a1a209242018ecc418ad24f5427f88f1 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/WaitNodeViewControl.cs b/Packages/com.opsive.behaviordesigner/Editor/NodeViews/WaitNodeViewControl.cs deleted file mode 100644 index 39e3c31..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/WaitNodeViewControl.cs +++ /dev/null @@ -1,111 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Editor.Controls.NodeViews -{ - using Opsive.BehaviorDesigner.Runtime; - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Tasks.Actions; - using Opsive.GraphDesigner.Editor; - using Opsive.GraphDesigner.Editor.Events; - using Opsive.GraphDesigner.Runtime; - using Opsive.Shared.Editor.UIElements.Controls; - using Unity.Entities; - using UnityEngine; - using UnityEngine.UIElements; - - /// - /// Implements TypeControlBase for the Wait type. - /// - [ControlType(typeof(Wait))] - public class WaitNodeViewControl : TaskNodeViewControl - { - private BehaviorTree m_BehaviorTree; - private ILogicNode m_Node; - private ushort m_WaitComponentIndex = ushort.MaxValue; - private ProgressBar m_ProgressBar; - - /// - /// Addes the UIElements for the specified runtime node to the editor Node within the graph. - /// - /// A reference to the GraphWindow. - /// The parent UIElement that should contain the node UIElements. - /// The node that the control represents. - public override void AddNodeView(GraphWindow graphWindow, VisualElement parent, object node) - { - base.AddNodeView(graphWindow, parent, node); - - if (!Application.isPlaying) { - return; - } - - m_BehaviorTree = graphWindow.Graph as BehaviorTree; - m_Node = node as ILogicNode; - - parent.RegisterCallback(c => - { - GraphEventHandler.RegisterEvent(GraphEventType.WindowUpdate, UpdateWaitProgress); - }); - parent.RegisterCallback(c => - { - GraphEventHandler.UnregisterEvent(GraphEventType.WindowUpdate, UpdateWaitProgress); - }); - - m_ProgressBar = new ProgressBar(); - parent.Add(m_ProgressBar); - } - - /// - /// Updates the wait progress bar. - /// - private void UpdateWaitProgress() - { - if (m_BehaviorTree == null || m_BehaviorTree.Entity == Entity.Null || m_Node.RuntimeIndex == ushort.MaxValue) { - m_ProgressBar.style.display = DisplayStyle.None; - return; - } - - var waitComponents = m_BehaviorTree.World.EntityManager.GetBuffer(m_BehaviorTree.Entity); - if (m_WaitComponentIndex == ushort.MaxValue) { - // Find the corresponding index of the WaitComponent. - for (int i = 0; i < waitComponents.Length; ++i) { - if (waitComponents[i].Index == m_Node.RuntimeIndex) { - m_WaitComponentIndex = (ushort)i; - break; - } - } - - if (m_WaitComponentIndex == ushort.MaxValue) { - return; - } - } - - var waitComponent = waitComponents[m_WaitComponentIndex]; - if (waitComponent.PauseTime != 0) { - return; - } - m_ProgressBar.highValue = (float)waitComponent.WaitDuration; - - var taskComponents = m_BehaviorTree.World.EntityManager.GetBuffer(m_BehaviorTree.Entity); - var elapsed = -1f; - if (taskComponents[m_Node.RuntimeIndex].Status == Runtime.Tasks.TaskStatus.Running) { - elapsed = Mathf.Clamp(Time.time - (float)waitComponent.StartTime, 0, (float)waitComponent.WaitDuration); - m_ProgressBar.value = elapsed; - } else if (taskComponents[m_Node.RuntimeIndex].Status == Runtime.Tasks.TaskStatus.Success) { - elapsed = (float)waitComponent.WaitDuration; - m_ProgressBar.value = elapsed; - } else if (taskComponents[m_Node.RuntimeIndex].Status == Runtime.Tasks.TaskStatus.Inactive) { - m_ProgressBar.value = 0; - } - - m_ProgressBar.title = (elapsed >= 0 ? System.Math.Round(elapsed, 2).ToString() + "/" : string.Empty) + System.Math.Round(waitComponent.WaitDuration, 2).ToString() + "s"; - if (m_ProgressBar.style.display == DisplayStyle.None) { - m_ProgressBar.style.display = DisplayStyle.Flex; - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/WaitNodeViewControl.cs.meta b/Packages/com.opsive.behaviordesigner/Editor/NodeViews/WaitNodeViewControl.cs.meta deleted file mode 100644 index 12da59d..0000000 --- a/Packages/com.opsive.behaviordesigner/Editor/NodeViews/WaitNodeViewControl.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: c971440ad87a6904daefedbbbd9b5cd4 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Editor/Opsive.BehaviorDesigner.Editor.dll b/Packages/com.opsive.behaviordesigner/Editor/Opsive.BehaviorDesigner.Editor.dll deleted file mode 100644 index 87e3cef3da66fb18d5962e9bb5bb38e4726cac79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56320 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≫!!;}J~`Y~*M`w>wo&PXMRlVTWp1PIJf9p94Cr zcr@YF=fjHQ)`uG1_7NPSK5wPHs*nxZfIZ1WLVu8Q(m3O#cr*zx(WL06!Ci3^;n z^(eQUCHnZnJH*qOnY?1>sE5go%zK$N9WPc$@$~RCq2u5OqVsJZ)&-m*q5JHsG3^YY z(-lKag}y3;^9qZ>9PSSKVmaMDmDxhY;2WbC@LcNS3%_g(U+h?n;_UE$7plc71DVBm z`h<`$&|U(hz0^mMSq1>BihP3xCw|KTx`(S~YrObtquFTjM@x^SO#BLK9TtE53Trza zyq0)9I%Xc^kzN5#m#=`B;>VXGbIg2@3s$0_X+M|1@2mo#;yaTrffUQQkA>5Kjhgwz zU|r}!9t$Np4^F9O4X*S)W^+2TiH$NoWS_xo%=|`Q1#t2ze8yLS@ooisHP_Q^yx)fu zY)iW#17zj#TMWWf`*fAjM%bu}!!C<0$DMfXiW$2I^b-)Mx`(l!_6kE8d~*fYIM*P} zu%hIinAlD?+776;J#xiC8M}{5F;wBW9Rl!H-m4^It!lQw2Dl^XEfCZV=iB&FoVlOJ zMA?_dzcHiQK8h7oMaa5*d&YZrrtw`G!mzP!Re-p#nfv{3Y6K3@3Nk%osQwT?_T#J#7kiyx=-M&*Qg_HHP&j z+l<2;CX>Li-EA613~wfavG33%ydJ-G=c{548Q0LAgLqdDSP0xP7}Li(x0-T=UPEg2 zRW__qJ?bN_=QAUAW>AlMbr>NnEqx>1dA}CqcY*x-;-J+=IGEB#P{p&^FLIy%2&dN+ z9c8>+mv$~KDPL1uKUKu_GZ1Sky8*g#S2Bg!C>U=!V_WCGqFvrkDfc@W%RKh`N}6Ig zXvo)@R0MJjq;lsg&a3EjuCMvRJ{H2>!^tMJ2+KSd#T@#nv({;(6@#R7=4{XugG5|Z zaEOPp2pr>;2+g>veGbTQy)lEqCoL=iC9-RaoM9?>V{&wgYrC!sE4HQH5vl8rUR3Hb zus5Rtj;1*dm9dcCtJYbTfV-1rf}%nl@tnnw&xEdpPBB{Vpp$xkH{q;xeo2U~g;dvY zqf>F#?JfTo1mi{gAIRNScmjjEpCj$rXA!4%6Qq8|V_wg=oahof@x4Ntv0*6RH?X6?6n7$) z9|GeUn>J9*dFt;E%viOl3x0_*fUku;&RE*d->H^=8ph$AX-8ra3>AKOWga^%ZvAWc z@cf16q9^ge%n>|v$L>}97G&q&k>=lO;os?y@)qam;vpXXwP1I^|4gc{C`>ZxB1!Kr zf1;*>zJ;p5l)agZ(z#_*r!QmZmoG@5EhdE~+=_ z=5po}ZFnyQVwHL zNkNQSlr~iyij~us%C^;R2()4BOu7y_nM@xr3n;A$omQ8krsV#qI|5(F42aUx>C@^U zGc;z>H;|T7Z}M5lc~1k&c_-3JY8U=*Pvur#4=k#mOg}1PeSRJ~H0k$=Cg}VZGdX>+ zn$uIzFOwD}IBk^H*EAohiPGlssp$2uB5ZY^NQ=hG_d!dasbbB15q+tn1%e5O8S|9j ze+%74=?9{{k4wH)O263nYgp+ub*#OcQcoj2qwHzuu(h1+WGd{$q|*%6=cdHt80BAP z4#CDAOmpjZgPTc@qrXwQO*nsDIKL?4I9kr*IJNF~Rrk`*F|Qk_KgKpQSjGLlv-WpY zv+1&QEq>@GP`wA*TbKS_RRirZdBm>=w>J7=<_cUXzo_a^%{kg4i+@q(hiE-TE2{QP ztE8o{uE}(ZSlzFhHbAReF?J?B1HFv|_^&Wbro^m682uZgtn&(sNA@@I+mK%>WAS0Z z-<9Ih+hC>VXsxh{6g`ls#Vk8GgZutH8HKORWNjq1*;8iImoqH$St%at-ICsgIc3s~ zWjyZBWS*UxqHn|gP1*=MoJ>zoVHr-UTLj%6ZR(tE(n_6Y>xDs{zbnIO;BU?Rq^6y& zPIKR%EI%hRn__4MH})ZCIbDa|l~a53hWd~mg?m~+PtJH8-)H@98PBOdX4)aoIj|7+ zQ{OWoh=Hqe}eVNwneY5FX;-y1xqKKH zmA}$_5)yt$yA+r^C4ZjI`3EFFQz-SudqJ}%#=SnC{2!}g`G1|_UcXg)Ir4iUze%y? zdZZuH-h)*2_dK2RcN*E6`K)#pD9;zgwWIY93AFmp$kq zfewXVHNRG_(faAAMsC@80zDPJKl+TO(KfH_KGYi&2ti}&Tjg*{m`C{QIJCX_D4@k2 z^zVQ!bf9-NHwJ=qi9lbYy){2957G?|q}Tow(6yL<9N|S`ua$@B0S9`a>bK=#THC0~ zw#5ItJSq{FD`%XVF{g=Mjabuu8;BFH=nOSa`vahp9OxI}gYYB^9q3E(w*jqmpl=DZ z-hoyN^lk^5AA3eCqnraZ*1lB^f8;=eLb=bS6zDPsdaPEjD5EO{Vts}IeYBY+J3tE~ zlCGHDoHPX|+HH zsH$O6#U%RjTrN96M`~79)KV31`T)Im^16yTy4iuQYCON9p8o7W1whm3r@TD{<)aPT zDjH}rZ#L0FZNturM!Hg<1N6F;uV|*_67Rnnc&Xw>Jwv?$T}3ZdTv{=UDi^AHuT|`? zm`#lWT}7`|TwReRoSF#F*D9{7XrUGyX>kjO8*i>?rPU7fuc2Ei+UWZNT}2-WUs^F2 zFTE7yTg`V>w9}6q==Z@J^?CH>5-vMHEz?Y#FYjEYpeO3CtC&xB^2P#XFVp_s@GBKd=rIQ> zFMp+CDgDNQs?A?kETbE+rQ-IUo(XSAE!gc4-B|NP`ffm%DTrP-epj)Ao)YLO{BX62 z(}M(WWSkkd%CXj`!uK^D3>2YNlNhQM%BSdO({2y0qSX%cFZH(vPow!8n9BjW50PaT zz0ZMa5FB*TqK&F-UF1&{r_-EG3c4(!CC;QDIZ!SVPpqM9&sJsE#M6oO)On7A*djO4 z8iAB&INOtxB|DooOW7gX*U*qSn{E(D$+?-n>_9B%mJ%-K(q)^u1=O38Nt{cIFJMUd ztn+B2K+0#GM^|sd{6#^+aFZ9}DFMJ`r&qsM7g|~CP1GGH7 zAkkgIvyU#>!DXuTKDt&Q)k0qh-{B`)lX}r>>z!WHYZBU zc2mwNdx5qkc9+z%=~Abx8LOU6H#^Yx1CK^++O>;YKS)#cN27yu#DPAi_a!c-&pOaw z^ua`)zT!Y97=4KX{n&x}jlslFNqfWeXQ%9|v^OzK_5G@ao6+80`l18KOyU~q7w7==^>E_-CH=dW zo{};ihexB=QsXe!J4oEW>q;oEr%tDgHE}(i?xVb+g!0BQ(1l*TS1L-&K1jEFTwba8 zU`f53=%-HEU4d6BZX#=slI#uoa^mI^$`4VqQ^t~gh|Y8%?!&)&Wjsb7re3Fv$LKKq z)PZ=6Zt?2z7~STTtugi{KI)ZSi?Z8GTEBxrdzEA++Pj1J=bc!CUkH3XafJFE=q>H* zi96}T4m86E&?o3q4s@aM?ZhWbc-~F(`E>-i+@vEuqH7)Kx4KF9lu+J7gZmWaZN~G7 zd+1FEdcZIdsSjSN%Dyhpj|Ea|z`Z40?xo*2lrcIzP+InBg87Op5&e~lPt$4#stoK+ z+(&OZ&{OF9{Utmfp!t`ndLPq&n0TP1>_NKFDKnv^2kCYPy3Kf{;&b#<2VxCAR8sF@ zsvlK6SrZS_e4OpEmRO$;(=!gl`usfoS|HWiM@qOnLVt27AJT3QK0@&;6qh0WmBbg3 z4IrxJ^uH5{ght0=oWD20>Dje7rloVLId4>Q`l;!RxiijrPBl7!ym7=XOL<%WeVp%k7GqQ|8$r!Dt$kqG!4;x zDF;8d0PPlfmHO-Y^Ot}|qwCNYo$!43g6(jRr)A{!+#p zf)5I%Npqxke$I*>TTbwK6@k4*hoSQTc09#&i{$Zz4U}?!(Qb-Mj|fKPvlvH>ZUV+D z75#867o$c;wen3FcYiCYRN2NqPJ`G*Xfg`;dkbjApqb@-CjC4{)1>o(3DINNO@v9u zF2c1p)l)TIUkoz-VzCn?gR-LEi0!G;@#!w`)UZe7x{Cgv!6<3>%6KVxidL;tL0VK& zsZ{m-kJ3j)&v?zTc_o!<{dh9?OI7~jB+LBINc+#wD4wig*Z%!^)r-?b=8Z^UCz7s{ zSgXNe=g-#OzOi))}wd{Zy`1DF5ppo>9rGS0ws*OL()f( zrl>o>n2RMYzXtiK^b*nl{RL?wPRDrn90z3=S^6|<4KPgqI=wY>4^7tt^_L_4e&R}` zPa_6+on8limi`95m@-#CFLot$>Mzf{1*N+ijv$TK-%ZyDhZ~XJM^(c4Zn`4%6i%le zO}~hBX#1p}QMZ16^BYLNRe@Mudo&#kbnCyXhy@;`>l5j~H?ZSw49udxM;0LcTk>?I zug_eIQkHF<9-Y+_xLEQp=_l3h2{cN67QKJ^LFB(1yc+34Gp`G@0N+I~>t{6Hg1U8) z`vda@^Sb_U>QlZXG+)&_13#Gb zBYl$bhWWBSH}DvGaSi>t?jU-4I-e(r_Fm>*8_Pv|vkX2PS*H(7zra{6rK{k*^dxWD0X;|cn1#%d)1glU!Qgm8on>i>7x|~16`=~U&fZebICW114bWo z+ZDJZcrdV0Bw42qrCGK=PF)k+sH6>q%!7fK^(`3X*Y(#bo(SAw^fX+9Q>b__AAHbY z8+gQcW%}j8eSw>1Tp4`A*j#l(@Wue|IJ@ZeX`cw*5%_NKv%v6f?m1&~!_&dLjZcKX zZ5#*$6VC=8q*u-Ff|6~oi+u~(V<6V_ z)8P56Phy(?LfyNfHD)Aue?y%a2)?(W$vhBvE#6}G()|r51M{hwtAM!^7S%7cW(7A} z=i_Ipn8QcFf4_OR(NKB4*%@TalHd(fZo${GInTCzzj>vX|Gs&x5+}0j|3h}5c95apZQL)G|TvMd*;g3xb&)N^oVU=w;uLrb-nO0( z4rex8i2QV%0zV^iuA{G2;>;Xlng_QJ)$Ir8zk$Pn;6j=81Jgei=?c6)^RCD*HJ)X6 z2W#MO9}NC*=KYc9g~N~Nyu=HUfPQV&jp4s&*H#@2SlY6we~qk@zT8N^uMI|7W2tBt z{k0lz!03B8J9!4PJ{x_Io@rVZeIyv2*%h@k_H3_Ubh6Rk2SqO?FY0q%7e;>=EJfh*n*epxVHL6<7tNv?XvSY+y^^2gz^89t@rk z{9)_~jji`N?GsbJ49$GG@z=4gz%3Pjh`p}GD*qgtFSWX;cX}$mPWw)CZTuU-GlJQ8 zxBi~$j`+oa_rSN$)jm*tY8*bn?1*=1XH+kb2h2y)YvYTg?s7>ZW?S<>yicT>gwjU3 z82K*h(|(@31NbYTlj-JVcq2E<{O-)pfzN+de<9u#cnc%GS~zSBoR|1r{BDh{{cepd zb{0K0^I%|0@C~z}tT({(s~5iO>cC?%cghhXZY&GqZBn`%-%+BUl$BEp{SN6IGRrG* zsFN;l!#xPgYQuY^$w;SAr?m`kiWXJ=9QW3iT7)YJOD#RHfnKPr51dS^tQpAnBrimM zuhkQnLBC3JdJwiYgBq$i{ZjSEk#0*piS&=DpCi3Ft!p!AVa*JrMt~ey;sidrJ%JOZ0X6hxKRlqxvuODr1__VyrQGjS=IR(GuJk+#5U`d?a|2 zSs&UKx;S(o^#0JtLMMkm5q>EAboe{rm%>*^UXJ`BQW0&BemnY$=%(1GV$a8p#hT)C z;~$QHI{tY4$+%V)DNB~sl)bBLRT=+!qmJm)Kx!flQ#nQOeh(vvn5`1yoCKyC82pI~ z{0*W>>TXEoFR{=0i}_omL$N;~ojvW3NPit>{1frNA^nb|`z7rV8vHg5V)r41k@U@4 z6PO2^xYikyis>Zb?@vEF4x>stLNTk@hah@lV$Z^VX@%d|CXs505MxNI(HFkKhg(DF z2d*BWC%7n#9^qad-ihN+BfwViJF|!)ryyN{ze=IuT_Nsb;VtfTr02kjH98k>IyJnX z#UDwccjH&OG}t^YCE@Rjw<5g=zelCvjl*0>aTWNVLXXl>x-4*0;E_PHw$vChnuEUx zwwoKwi_IhEGv*)6Na**WKZVwZ4~M@PUKqJ3@>Jy6$foGl=+3AeJr;d;Y+{ zkA>n};<@+_;;+WDWpm1m{d^YS|JQ-tHMX7Jzcb2qVQ)6}-y!T4$Nt+;KNf>gijK$C zqJ^>lPMLsi-vn(m3tg#vL)gKL{a2eAiy^vV0vx_=JMJG|Z{Z)0X%#e44O>p(ZFw4_ zUjtj7gz=w@&lK2mEv#TFY`PAgY53IRGaWY30LmHoG~&~QPcuF<@yVd}EPQ6;GYum> z3xBnw6`y7FH`+n>;3R5PzmMLJ&*$|Q=|1B{`m+%U+!H7Z^ara0{}L<abxo*qCIgU zy{F~6!DB^#Zg*~A$SoMF4k&5vcqPr72zlZ}NQ}hT z?f@}XVxT;URdK1rz)dXiT(+j|r@OxZ{J_w>c4!rrI&Uj7 zUf%^8I|L^($ynq`j4U-1KO^L!<5DF8H?b1iY31-h&xP%7ciU-spLDf5zYo~6(QiB7 zPRmMq0d7kEc_s1#DwV3FcmkEZc*vde7V}<<0l~Eu*Xl&(^e3g-BnhqZd`BQPbhtYU=%^-iK-8&55LK}0J3=QXV z?aQfepfJ=u(38V;*fj&E^}&|&Jv;ZE17BqC?HbDMUNeBJvb6Jf1snDiK-AW?221>= zLN33&d#IbBrmlg)pbWMkV9}+B9l4>cD|-823{t+k&|~NO`?f*m9^$gD!rI|&{e3;; z@Gs7pLffj`KrW9WMYmz7dkDaC&v9a}6*GpZ6 zv+Q0>P^NPsPX#WTo8jiW2MgngiUsxn-0Xmw*UH6myQ}iugP6~7>HU3|qWal(U#|$h zY8V;FBc6pk3I(#uP&s=q`l_;Pwp|47D!(e{Wb(PfaKDq^&Q6L}V&tTSz0hdyQhOL6 z$j{6T?X-Idj-4Nctr!j&cBMrZP=b49h2d=*^SRvm-1b~P2OFWT4a3`pN-(Z3++Yvq zK_FuSgD5y~sl!~eCzsD-wShOYcl7nJ@@e?SiUx9fz5M#&fuX+LxsCeT&}rr?5-n39P6R zcq)L0p}=8=4BA=Hq>PnhdbWD8oVX1Kxv@KsT7Jy>q8AYwW~v;9fKUboj!jR%v-)}@ zN>XvEpa%1~JzmY_x$WI>N=)yFDn-3YY{`S;^1i&R5BmgxFmy1NA5y@Y!9w4jT$}jL z<+(!N4otE(XN<@xbnSUuIi}b)jFEp_sGkwssSQ17MiiuSY+g{l12`eELnNeUcJInL z>kZq3Fo8Q{qtEqv7}2E%ZOnHMz!AZLl;T+-LWJJ?+>M830lQ#jSS!3)FZ62$)a)vq z3{tcW!Kv49S3yEo4;BS_5GMByUX29dYze%=6?+iUV5k0@7aN^j6$Hc(hl!J=hP?sH^DWi#TtoLi8@fjnH7tz-qg@*OQvo=Pn+` z3{gW~M03@?{#;&c5)JrjEYEEl-mybM9=Gpw8WvlgUtO~NIr=Gb!{{v=E)3bbi>QsZ z-9OYfSVUm4DcL9%OOz~PH0yKy-IqwNP%K|Fux2nfu!J>TL^?|h?`DcfXKph?Fxl4E z4_8|(<vA2ptT(s#9Uqm zLOG~jckc_s8@G}0%G`<`V)s^rGaQiftR}>zUS182pu3g~BXnhNEub%|gR7SaPx%*S z!Lga^U?8{f^P_y;*N?_()uUo~?AUU73^on+59jgVaa`TKEvItW=O~~TX1|ZSaokl& zMSpF*AmPB=@6ymRpUSxMajzyU9usl9)tDVSQx|3t-T2y%U!^>>ONOVb8PD~)Wh{d0 z$Jk4{_=)DMS5^{{xdIeQ=C?;%99b77dUSz)*02lk9>~oj|`$$C++KwjV}5I1pYE^o`=4ynbDmi5CY)5Hg*-dMYlr;M-* zc#hXOR;58V!&{MDp4Q|!<(0}^d~CsZG9uRR+Yaw3G#p#(f#s_`NS>rE@pCT5)q4rD zt29#Nxga}L{6)-e-}z+`UusK5e2$k>F}GznNRWx781;+=-4;~K?u6wN4zFjl*6w4! zifx-(Ih0k)+{S{K!{Go{&eir_JiP@ND4uKsJ@Ea!fUd~rkx_b(Y?rs)meW0G3*~a; zg_KVl>3H748%f^#ddE{Pc@a_EhZS)XZc)@UeuuT7q*bSeTI?M_nVsq(rVKiuVl<~% z?Kf2c<}%hSIlbaJ%?o=$VhWXWg6ZXb-8%;C0#3;a-icGem9oTo+f*Cau*%X@X!9>f zUX^iMuYX*NXV{8MdisZZb4&XBWv&)Dl5=uA6?WzJ;k2r^;Q1i6ABP+&+J!aj>FdcA z#9&Ho+govDz8tSi#l~uz?XY2mDTdx5Q$cw6Ko;Fqun)~5Pk`ReXKh8cG9!ziTfv9+ z^YNj%RmWyUQBF-})rG~orw?-X_VH%fj~Va-%)%4c*;{ipZgCxjkGQOd1#By^uwwVB z-c*i7F2(xZvvVw#2gbp%8874AEN@JCS!LFI>{Nncs&UA|M95XSA&1RB*LiOZ|Hq^5 zt-l`G@y6Xp$x?R}%Z%DdFizIO@pVZ30Hb??jFf;xyc-EbBNvj z`=$XmkaK-)DYpq5Ji9Nqw}7()KHOh2M2^Cc!@R@Z2d^Wy_hE~LcTT+J~r`<7~YIF6ljUD`~CZR&yHRV*wY%alM<*shcAt zhfYg+FT$ZDA0?9tj6GZCu(1fRQNR~69q>-5>L3Ok{3dx#$0SZUyLSe8t#nTD;RcIX z_pDt^nQZ6eT|q*1$d#o^UyEw+Djv!+j7BrFN{PI3L8-&+NX$hry9o9?BcQ(IpGprAsV08@)g2Y=2OR#-X1{O?`+oS9k zFZ|H(`aUQLHXtTFq%wRG>S!5uYwulxH>Mab5UFEP=ZN0HIWK1Tq(LSX&aS%m<$5`e zp-qFm*f(?J#vVtC#UBae90{^l6WBRGaBeIJYWG$lR}In*jyawDSSRVASzPs=#D|bY z(1Fzw;Q(x~m`V0t>86w2jn_ZDxl2S?mE+m&(F0=7HTDf%P z_+0Nih&||vi{Z<0!YAHz0PkQFbY_kZli=%|mlN*t>x7e=hUArni!ELF+!c8Y(O5I` zBIhx5P7_Xm;THM_%*DB@unY4Pb@R@obV0?}zwcMrbfX5)AKmjf;!zk>#l!$}O%A^g_|cn5!}eg8E} z@F)nnfQ!FtXizHb0p^5vWOo9t825r1);=(QXZo?tw?S05b^HP#+Vl%wKTdo)c`e$> z;rc3f1{W)+2Pw<_Pt={d3U#{Czn!=&J616?^)&Q@xpw2z1DbuH>O#&&E0jD7&t8=K zaMO!8#jOW5`@o;oE43!ALhe%hgcS}qQF9rd{rKRQ1tJ@z=evkvZVrR-t}e8-9d!oq zfwx8-rnkX!A@bW$GlzP+gklFU+)6!u+-eSu@{b?lZ=BnJ3#iMz7($+N1=OfV%}Y>^ z%L+`}xqa)+nipk|^#?otU{ntJJHy)$+bwa_iCxSHYixq_DRt8XOH(KdI zt#{zrQ!j0@?XXT2Pp-{5#fNjOchv{KhLubD$8A8i{kOOS%WC9Gidns=pwuypHz;-& zY!KY#VHq%2&>g7nItTx-u%K#ks16N+&c=5nl-cqGRg*xb$u4$J6PK!PyN;Ioz=Pb1ly6HkFrjD+L4=s|K_3W zL|~Y*8|680=tL`AcL8wBjsNQfW-c(>Q12vAGWA^0Z9~aP;Krp~G7nFhu@k*zr*|oy z>_obuk5+uTVK}yEIFQ~=Tk%^*u6EBt85;yec&XvhpyXKdge$DzTI>#a(&HyNk_>ME z$8BhZH3AM5%)xcGsMDlqSPFK2=ZFaoV2NVWQ-c#w9V-@!DPzlhb*CyhSVwEXZ6)fnGZ>cowEwyl$gnx)W%Y39bg2?oOSiFk zK+~+)J}8PO22T-XqH2}t7k{Jtgi;*)YqkFLJ3M$I+AtWN!~TI1-&W1Sj>VH0#{|Rw zu2R`I`G(M))M}kntA?7ILyr34-E>Tl4gVV+gHR%yDw`;4A&=hp_%8e3@Kn5bs<5;) zO${v@E^Bz)gh_4(j*Y$*AsUb0UJ6*Oy^SK<4v`Gs3=#AE zgOV%@_mkr)r~hS3pnnfaa_Q%u_Eg5&<>-w^jI43i``}k1SAJvKiA%0K^Q>2! z&R)KNjQT(ztk+W@h>T@%T3Kz@>w$7DY}RW4G$tw6Ljf%u(koY2&aG@R>jRZdR%@)f z^1yoo)s?3NDwhO7i=U891T+oU>jHJ;71ogv1x57#Yw!Giv*f{_jLwX5~Qn-T2g zGEC*FX)|wgltBP)%oxdxbN?I%Qb(=rG7ThRfmW-g*APl%El=rzhUEBA&T6jKZLLxb zuVSpnC4&0QE@KjMy!ylAd)%Lg~ZMbP5`xlU`oEj^F$R#sfoP-vR z+AosQ!pUsdh(fru+~*IGVza(7sf)&z%bmuA;m%9a`p$^bxbI_@{u&kuFa)Mprnj<; zjpgRjD5|3(xw<7U6|&D+;iO?pwt!lJ#ZV_I1IC($4TTr#Qken*Ff`#hTN3#EDF`DP zNm^c?x6ONeG@>PzsHOa9A!;e^F!b;R%sSiSTNlQlKV*Ap6F8il1&G!TwHMTkLftZ~ z6}H9h54yT@w$#an1ynzoMGFnhR%}tKUTQ?zK*M?|UGg6nwd}=A5Ep%&OK4-*V+$_1 zY?MclXdM%)yV{`LD5z*(k!cDEN!y@Sbp8ls2Hl0i$Qo0&s>p&HyB5}x8Qzyf99|Sg zwYYjh?LX>O347^;h7ENiUTD8sWjzyimix5bKvQ#=Nir|(@d_o6ExBYtn`eYgUl6Km zaP69K-ENAGw6~%W2H%jYws%G$?kJfjg_9615T+y7!t$kqYI`?U=`c$1Wc9inRM_p2 zhi$LeAiy%VG-vQEIFUMdvP41YOMpR|VSW%WZJTJLWdnI6n+aGs6Lxga-pUtU`;fSz z!=OLVv)8$E8eZP2Cf5o!S51B^I_{KZ(!&0@xG6p&TXdtY>5|{Mbbzl69mH9+ym{6|Yl)5`7WjaEAl6eZU zH(OQ^k`xTPvopTE$QPq>mhxo!klK*5RMnEW&S*jwEk&u-CC)4Sc^M3VXNEY>cp~54 zN>^SSx5vi>k+q;EgE8FKV9Dm036n+m6`i8a${ zl^a(T_6N!$H1$`?9NyGD&E!+kUL9V$PJ^v(KMH8(+-HMcRkwST52{`B0mTbthHGEV ziC>WqoLC}<`I!BbJMC&rvo1a1 znvFUpjJhZf4KHF8fsMAZ)2aZe1d<| zsF&F0ZveMqOesckb5ayJX|JXz;;o4tCG(`3OxTLPH!gsBh9RAE%}9qOo!W>jlZ3{a zgcZY#e+xw5(%CQ4PAN_gjEI)#52zf85>iy9s)?-f(wyHHRHWtSmJO4b7h_iUJ?~)- zf)7+~#0}#v2ylpddMc)?qrqx8?_d<@dLOz{5sNtMlJlZ#)pRql3$Eg3kB-|dV_n)P zF?2p9gM>-y*x`Ue5yBkPOu}x5Wpgn{jj@V?<1# z-Y{9fR|sC^4T}jSD3Xz}M0O(V4HDwK;?k`y-3e?NYaRB?m)%+BzwU@o+jn<)-L1CY z7d*-Y^7s0SgM`C>;yKlACJO`~F1g~8H?klt8~d=lJ1+f8wo#A}MF#a;ai*8tZt2>kdzksbA4s5>hhi!c^1Pba z%?JeLVMJs^r|Ag)%vowxBW{OWDjfG$CpBUVE;F>%k&>0EO5BS$n7m4ARIZi;B5|1l!O!7`wvAPvXg?B83>vFguhZ$3p z={zmTVUrvh6gn)4F*)occbfM%$s}imvRhIwmb{mjV69k94{CPF&0mosZ^}fVej=L@ z!ZL8(upAD`VZBbndbM*D2LO19kGP;E<7%j+enKtCR9?f^yJ3y94(SmqVisp&G^Wlq z2Rb+Hru*VNHa)|Ch3i}CJ$b$q<19H>G2QeM`B-0))<^BMLr^X4Sjz;F)u%h%NfHb~m5V4`fCOV>GPz;s2RDiPCTam(x|6vO zw~`qT-04i~ue#-n0dYG%5T%=2p5NP{bSfdjI^n8?nq>81TCP{HZ7E4tWhr_1Uh4vD zajEr|wwLlD?J-Bd9$#B9e(8{06{z*Ye>r6Lf0GXxX%bO>3m3w2s1>%T3XmKo$&|!% zJ3>)@LPox@8Z{f9;%EG?O-`^Hd0dy%jUG8U`Ru72<>VQ2?EWLi?YW>Scfp<7?pJzk z@BC65cNY0?_dlOX4PLw0p?0P6vZOA~e&yGm0{Zj`o;?20=#laGl-@ue-@kr_?-6-m z>0@&KJK36y`1Fyn(;PmeM$9cVlkDpfpPr=hmR#@|sjRC#;%AStpmRd&F12=yWgQeu zUdaW?3#(hK$8X7u5DmsF)E$hUlr?a_5ZiUvjb;d}R@~;&Z#w(f01wUK~OSaZ&En&QjOlDWY z;TP@QTUxoTb63V%Awxcw0rv7o2IiIiKLGC%@P58Jc-eZ~ZP{8OpIt-A{Ss)GR|jpG z0iNpMTSi+$kS_r8{7N8~t@T@46t;$#UIo)jD`E1sur#I*+*7%R=-vR`YyTcPzp`uc z{{tHZTy z?c>@BN&}-mpM3XML2m!!h8zzy2`YDazpJP8An{Kh?}vF0{)PANgW!n+dk;Ku^!)Mn z_MY7Liz~mrUElK8KS{X{<1Jej_srpMQRx5tb>J&|9@+J1kcsEp9r1{m_r9?I3)}X6 z_3+RiHVk|pQFdMzB^`Hi_kaFqS-Bu!0rJVc$Bymi_Rc_e;~F2=yVkYN- - /// Container for managing behavior tree logic. - /// - public class BehaviorTree : MonoBehaviour, IGraph, IGraphComponent, ISharedVariableContainer - { - [Tooltip("The name of the behavior tree.")] - [SerializeField] [Delayed] private string m_GraphName = "Behavior Tree"; - [Tooltip("A user specified ID for the graph.")] - [SerializeField] [Delayed] private int m_Index; - [Tooltip("The graph data.")] - [SerializeField] private BehaviorTreeData m_Data = new BehaviorTreeData(); - [Tooltip("Should the behavior tree start when the component is enabled?")] - [SerializeField] private bool m_StartWhenEnabled = true; - [Tooltip("Should the behavior tree pause when the tree is disabled?")] - [SerializeField] private bool m_PauseWhenDisabled; - [Tooltip("Specifies when the behavior tree should be updated.")] - [SerializeField] private UpdateMode m_UpdateMode; - [Tooltip("Specifies how many tasks should be updated during a single tick.")] - [SerializeField] private EvaluationType m_EvaluationType; - [Tooltip("The maximum number of tasks that can run if the evaluation type is set to EvaluationType.Count.")] - [SerializeField] [Range(1, ushort.MaxValue)] private int m_MaxEvaluationCount = 1; - [Tooltip("A reference to the subtree.")] - [SerializeField] private Subtree m_Subtree; - - private GameObject m_GameObject; - private World m_World; - private Entity m_Entity; - private Dictionary m_NodeIndexByRuntimeIndex = new Dictionary(); - private static Dictionary s_BehaviorTreeByEntity = new Dictionary(); - private static EventNodeComparer s_EventNodeComparer = new EventNodeComparer(); - private bool m_SubtreeOverride; - - public string Name { get => m_GraphName; set => m_GraphName = value; } - public int Index { get => m_Index; set => m_Index = value; } - public int UniqueID { get => m_Data.UniqueID; } - public UnityEngine.Object Parent { get { - if (this == null) { return null; } - return Application.isPlaying && m_GameObject != null ? m_GameObject : gameObject; - } } - private BehaviorTreeData Data { get => !Application.isPlaying && m_Subtree != null ? m_Subtree.Data : m_Data; } - public bool StartWhenEnabled { get => m_StartWhenEnabled; set => m_StartWhenEnabled = value; } - public bool PauseWhenDisabled { get => m_PauseWhenDisabled; set => m_PauseWhenDisabled = value; } - public UpdateMode UpdateMode { get => m_UpdateMode; set => m_UpdateMode = value; } - public EvaluationType EvaluationType { get => m_EvaluationType; set => m_EvaluationType = value; } - public int MaxEvaluationCount { get => m_MaxEvaluationCount; set => m_MaxEvaluationCount = Mathf.Max(1, Mathf.Min(ushort.MaxValue, value)); } - public IGraph Subgraph - { - get => m_Subtree; - set - { - if (m_Subtree == (Subtree)value) { - return; - } - - var active = IsActive(); - ClearTree(); - m_Subtree = value as Subtree; - m_SubtreeOverride = false; - InheritSubtree(false); - if (active && !IsPaused()) { - StartBehavior(); - } -#if UNITY_EDITOR - // Generate a new ID so the graph reloads. - if (Application.isPlaying) { - m_Data.RuntimeUniqueID = Guid.NewGuid().GetHashCode(); - } -#endif - } - } - - public ILogicNode[] LogicNodes { get => Data.LogicNodes; set => Data.LogicNodes = value as ITreeLogicNode[]; } - public ITreeLogicNode[] TreeLogicNodes { get => Data.LogicNodes; set => Data.LogicNodes = value; } - public IEventNode[] EventNodes { get => Data.EventNodes; set => Data.EventNodes = value; } - public SharedVariable[] SharedVariables { get => m_Data.SharedVariables; set => m_Data.SharedVariables = value; } - public SharedVariableGroup[] SharedVariableGroups { -#if UNITY_EDITOR - get => m_Data.SharedVariableGroups; - set => m_Data.SharedVariableGroups = value; -#else - get => null; - set { } -#endif - } - public ushort[] DisabledLogicNodes { get => Data.DisabledLogicNodes; set => Data.DisabledLogicNodes = value; } - public ushort[] DisabledEventNodes { get => Data.DisabledEventNodes; set => Data.DisabledEventNodes = value; } - - public SharedVariable.SharingScope VariableScope { get => SharedVariable.SharingScope.Graph; } - public World World { get => m_World; set { m_World = value; } } - public Entity Entity { get => m_Entity; set { m_Entity = value; } } - public bool Baked { get; set; } - public static int BehaviorTreeCount { get => s_BehaviorTreeByEntity.Count; } - - public LogicNodeProperties[] LogicNodeProperties { -#if UNITY_EDITOR - get => Data.LogicNodeProperties; - set => Data.LogicNodeProperties = value; -#else - get => null; - set { } -#endif - } - public NodeProperties[] EventNodeProperties { -#if UNITY_EDITOR - get => Data.EventNodeProperties; - set => Data.EventNodeProperties = value; -#else - get => null; - set { } -#endif - } - public GroupProperties[] GroupProperties { -#if UNITY_EDITOR - get => Data.GroupProperties; - set => Data.GroupProperties = value; -#else - get => null; - set { } -#endif - } - public TaskStatus Status { get - { - if (!Application.isPlaying || m_World == null || m_Entity == null || m_Data == null || m_Data.LogicNodes == null || Data.EventNodes == null) { return TaskStatus.Inactive; } - - // Find the Start event node. - Start startEventNode = null; - for (int i = 0; i < m_Data.EventNodes.Length; ++i) { - if (m_Data.EventNodes[i].GetType() == typeof(Start)) { - startEventNode = m_Data.EventNodes[i] as Start; - } - } - if (startEventNode == null || startEventNode.ConnectedIndex >= m_Data.LogicNodes.Length) { return TaskStatus.Inactive; } - - // The runtime index will match with the correct Entity TaskComponent. - var runtimeIndex = m_Data.LogicNodes[startEventNode.ConnectedIndex].RuntimeIndex; - var taskComponents = m_World.EntityManager.GetBuffer(m_Entity); - if (runtimeIndex >= taskComponents.Length) { return TaskStatus.Inactive; } - - // Retun the status of the task that the Start node is connected to. This is the current tree status. - return taskComponents[runtimeIndex].Status; - } } - - // Flow callbacks. - public Action OnBehaviorTreeStarted; - public Action OnBehaviorTreeStopped; - public Action OnBehaviorTreeDestroyed; - - // Physics callbacks. - public Action OnBehaviorTreeCollisionEnter; - public Action OnBehaviorTreeCollisionExit; - public Action OnBehaviorTreeCollisionEnter2D; - public Action OnBehaviorTreeCollisionExit2D; - public Action OnBehaviorTreeTriggerEnter; - public Action OnBehaviorTreeTriggerExit; - public Action OnBehaviorTreeTriggerEnter2D; - public Action OnBehaviorTreeTriggerExit2D; - public Action OnBehaviorTreeControllerColliderHit; - - // Event callbacks. - public Action OnWillSave; - public Action OnDidSave; - public Action OnWillLoad; - public Action OnDidLoad; - - // Coroutine support. - private Dictionary> m_ActiveTaskCoroutines; - - /// - /// Serializes the behavior tree. - /// - public void Serialize() - { - Data.Serialize(); - if (m_Subtree != null) { - m_Data.SerializeSharedVariables(); - } - } - - /// - /// Deserialize the behavior tree. - /// - /// Should the behavior tree be force deserialized? - /// True if the tree was deserialized. - public bool Deserialize(bool force = false) - { - if (this == null) { - return false; - } - - // Force the deserialization if the tree hasn't been deserialized yet at runtime. - if (Application.isPlaying && m_GameObject == null) { - force = true; - m_GameObject = gameObject; - } - - var deserialized = false; - if (m_Subtree != null) { - deserialized = InheritSubtree(force); - } else if (m_Data != null) { - deserialized = m_Data.Deserialize(this, this, force, Application.isPlaying, Application.isPlaying); - } - - // Initialize tasks after deserialization. This is only needed at edit time as the tasks are initialized elsewhere at runtime. - if (!Application.isPlaying && deserialized && m_Data != null && m_Data.LogicNodes != null) { - for (int i = 0; i < m_Data.LogicNodes.Length; ++i) { - if (m_Data.LogicNodes[i] is Task task) { - task.Initialize(this, (ushort)i); - } - } - } - - return deserialized; - } - - /// - /// Inherits the subtree tasks and variables. - /// - /// Should the behavior tree be force deserialized? - /// True if the subtree was inherited. - private bool InheritSubtree(bool force) - { - if (m_Subtree == null) { - if (Application.isPlaying) { - m_Data.EventNodes = null; - m_Data.LogicNodes = null; - m_Data.SubtreeNodesReferences = null; - m_Data.DisabledLogicNodes = null; - m_Data.DisabledEventNodes = null; -#if UNITY_EDITOR - m_Data.EventNodeProperties = null; - m_Data.LogicNodeProperties = null; - m_Data.SharedVariableGroups = null; - m_Data.GroupProperties = null; -#endif - } - return false; - } - - // The local behavior tree variables should be used. - m_Data.DeserializeSharedVariables(this, force, false); - if (m_Subtree.DeserializeSharedVariables(force || (Application.isPlaying && !m_SubtreeOverride)) && Application.isPlaying && !m_SubtreeOverride && m_Data.SharedVariables != null) { - // Set the binding on the subtree before the tasks are loaded. This is necessary because a new SharedVariable instance may need to be created. - for (int i = 0; i < m_Data.SharedVariables.Length; ++i) { - m_Subtree.Data.OverrideVariableBinding(this, m_Data.SharedVariables[i]); - } - } - // Subtrees will not have access to GameObject or Scene variables. Copy the reference from the parent tree in order to allow the subtree to correctly load all of the SharedVariables. - if (Application.isPlaying && !m_SubtreeOverride && m_Data.VariableByNameMap != null) { - foreach (var variableMap in m_Data.VariableByNameMap) { - var sharedVariable = variableMap.Value; - if (sharedVariable.Scope == SharedVariable.SharingScope.GameObject || sharedVariable.Scope == SharedVariable.SharingScope.Scene) { - var variableAssignment = new BehaviorTreeData.VariableAssignment(sharedVariable.Name, sharedVariable.Scope); - if (m_Subtree.Data.VariableByNameMap.ContainsKey(variableAssignment)) { - continue; - } - m_Subtree.Data.VariableByNameMap.Add(variableAssignment, sharedVariable); - } - } - } - - if (!m_Subtree.Deserialize(force || (Application.isPlaying && !m_Subtree.Pooled && !m_SubtreeOverride), false, Application.isPlaying, false)) { - return false; - } - - // Copy the deserialized objects at runtime to ensure each object is unique. - if (Application.isPlaying && !m_SubtreeOverride) { - m_Data.OverrideData(this, m_Subtree.Data, m_Data.SharedVariables, m_Subtree.Pooled); - m_GameObject = gameObject; - m_SubtreeOverride = true; - } - - return true; - } - - /// - /// Adds the specified node. - /// - /// The node that should be added. - public void AddNode(ILogicNode node) - { - Data.AddNode(node as ITreeLogicNode); - } - - /// - /// Removes the specified node. - /// - /// The node that should be removed. - /// True if the node was removed. - public bool RemoveNode(ILogicNode node) - { - return Data.RemoveNode(node as ITreeLogicNode); - } - - /// - /// Adds the specified event node. - /// - /// The event node that should be added. - public void AddNode(IEventNode eventNode) - { - Data.AddNode(eventNode); - } - - /// - /// Removes the specified event node. - /// - /// The event node that should be removed. - /// True if the event node was removed. - public bool RemoveNode(IEventNode eventNode) - { - return Data.RemoveNode(eventNode); - } - - /// - /// Returns the Node of the specified type. - /// - /// The type of Node that should be retrieved. - /// The Node of the specified type (can be null). - public ILogicNode GetNode(Type type) - { - return Data.GetNode(type); - } - - /// - /// Returns the EventNode of the specified type. - /// - /// The type of EventNode that should be retrieved. - /// The EventNode of the specified type (can be null). If the node is found the index will also be returned. - public (IEventNode, ushort) GetEventNode(Type type) - { - return Data.GetEventNode(type); - } - - /// - /// The component has been enabled. - /// - private void OnEnable() - { - if (m_World != null && m_StartWhenEnabled) { - StartBehavior(); - } - } - - /// - /// The component has started. - /// - private void Start() - { - if (m_StartWhenEnabled) { - StartBehavior(); - } - } - - /// - /// Starts the behavior tree. - /// - /// True if the behavior tree was started. - public bool StartBehavior() - { - var world = m_World == null ? World.DefaultGameObjectInjectionWorld : m_World; - var entity = m_Entity == Entity.Null ? world.EntityManager.CreateEntity() : m_Entity; - return StartBehavior(world, entity); - } - - /// - /// Starts the behavior tree. - /// - /// The world that should contain the behavior tree. - /// The entity that should contain the behavior tree. - /// True if the behavior tree was started. - public bool StartBehavior(World world, Entity entity) - { - return StartBehavior(world, entity, typeof(Start)); - } - - /// - /// Starts the behavior tree. - /// - /// The world that contains the entity. - /// The entity that should contain the behavior tree. - /// The type of branch that should be started. - /// True if the behavior tree was started. - public bool StartBehavior(World world, Entity entity, Type startBranchType) - { - if (world == null) { - return false; - } - - if (s_BehaviorTreeByEntity.ContainsKey(entity)) { - // The behavior tree may be paused. - if (IsPaused(world, entity)) { - world.EntityManager.SetComponentEnabled(entity, true); - if (OnBehaviorTreeStarted != null) { - OnBehaviorTreeStarted(); - } - // Tasks can implement a pause specific interface. - var tasks = Data.LogicNodes; - for (int i = 0; i < tasks.Length; ++i) { - if (!(tasks[i] is IPausableTask pausableTask)) { - continue; - } - pausableTask.Resume(world, entity); - } - return true; - } - // The tree cannot be started multiple times. - return false; - } - s_BehaviorTreeByEntity.Add(entity, this); - - if (!InitializeTree(world, entity)) { - return false; - } - - if (OnBehaviorTreeStarted != null) { - OnBehaviorTreeStarted(); - } - return StartBranch(startBranchType); - } - - /// - /// Initializes the tree within DOTS for all of the event tasks. - /// - /// True if the behavior tree was initialized. - internal bool InitializeTree() - { - var world = m_World == null ? World.DefaultGameObjectInjectionWorld : m_World; - var entity = m_Entity == Entity.Null ? world.EntityManager.CreateEntity() : m_Entity; - return InitializeTree(world, entity); - } - - /// - /// Initializes the tree within DOTS for all of the event tasks. - /// - /// The world that contains the entity. - /// The entity that should contain the behavior tree. - /// True if the behavior tree was initialized. - internal bool InitializeTree(World world, Entity entity) - { - if (!Deserialize(false)) { - enabled = false; - return false; - } - - if (m_Data.EventNodes == null || world == null) { - return false; - } - - // The tree may be reinitialized with the same world/entity. - m_World = world; - m_Entity = entity; - - // The tree may have already been initialized. - if (world.EntityManager.HasComponent(entity)) { - return true; - } - - // Initialize the branch according to the connected index. This will ensure when the task is referencing other - // tasks the index will be correct. - var eventNodes = m_Data.EventNodes; - HashSet disabledNodes = null; - if (m_Data.DisabledEventNodes != null && m_Data.DisabledEventNodes.Length > 0) { - disabledNodes = new HashSet(); - for (int i = 0; i < m_Data.DisabledEventNodes.Length; ++i) { - disabledNodes.Add(eventNodes[m_Data.DisabledEventNodes[i]]); - } - } -#if UNITY_EDITOR - var eventNodeProperties = Data.EventNodeProperties; - Array.Sort(eventNodes, eventNodeProperties, s_EventNodeComparer); - Data.EventNodeProperties = eventNodeProperties; -#endif - Array.Sort(eventNodes, s_EventNodeComparer); - // The disabled event nodes array only stores the index. Update the index with the sorted value. - if (disabledNodes != null) { - var index = 0; - var disabledEventNodes = m_Data.DisabledEventNodes; - for (int i = 0; i < eventNodes.Length; ++i) { - if (disabledNodes.Contains(eventNodes[i])) { - disabledEventNodes[index] = (ushort)i; - index++; - } - } - m_Data.DisabledEventNodes = disabledEventNodes; - } - - for (int i = 0; i < eventNodes.Length; ++i) { - InitializeBranch(world, entity, eventNodes[i]); - } - return true; - } - - /// - /// Initialize the specified event branch within DOTS. - /// - /// The world that the entity exists in. - /// The entity that the branch should be added to. - /// The task that should be setup. - private void InitializeBranch(World world, Entity entity, IEventNode eventTask) - { - if (Data.LogicNodes == null) { - return; - } - - // There must be a starting event node. - if (eventTask == null || eventTask.ConnectedIndex >= Data.LogicNodes.Length) { - return; - } - - if (!world.EntityManager.HasBuffer(entity)) { - var taskComponentBuffer = world.EntityManager.AddBuffer(entity); - taskComponentBuffer.EnsureCapacity(Data.LogicNodes.Length); - } - - DynamicBuffer branchComponents; - if (world.EntityManager.HasBuffer(entity)) { - branchComponents = world.EntityManager.GetBuffer(entity); - } else { - branchComponents = world.EntityManager.AddBuffer(entity); - } - var startBranchIndex = (ushort)branchComponents.Length; - branchComponents.Add(new BranchComponent() { ActiveIndex = ushort.MaxValue, NextIndex = ushort.MaxValue, LastActiveIndex = ushort.MaxValue, CanExecute = true }); - - ComponentUtility.AddEvaluationComponent(world, entity, m_Data.LogicNodes.Length, m_EvaluationType, m_MaxEvaluationCount); - world.EntityManager.AddComponent(entity); - world.EntityManager.AddComponent(entity); - // A manual update mode will require the user to call the Tick method. - if (m_UpdateMode == UpdateMode.Manual) { - world.EntityManager.SetComponentEnabled(entity, false); - world.EntityManager.SetComponentEnabled(entity, false); - } - - // Get the required parent system groups. - var traversalTaskSystemGroup = world.GetOrCreateSystemManaged(); - var reevaluateTaskSystemGroup = world.GetOrCreateSystemManaged(); - var interruptTaskSystemGroup = world.GetOrCreateSystemManaged(); - - // Add the necessary cleanup systems. - var behaviorTreeSystemGroup = world.GetOrCreateSystemManaged(); - behaviorTreeSystemGroup.AddSystemToUpdateList(world.GetOrCreateSystem()); - behaviorTreeSystemGroup.AddSystemToUpdateList(world.GetOrCreateSystem()); - - var canReevaluate = false; - var taskComponents = world.EntityManager.GetBuffer(entity); - var taskOffset = (ushort)(eventTask.ConnectedIndex - taskComponents.Length); - for (int i = eventTask.ConnectedIndex; i < m_Data.LogicNodes.Length; ++i) { - // Don't initialize tasks that aren't connected to the event node. - if (i > eventTask.ConnectedIndex && m_Data.LogicNodes[i].ParentIndex == ushort.MaxValue) { - break; - } - - taskComponents = world.EntityManager.GetBuffer(entity); - - // Determine the branch index based off of the parent. If the parent is a parallel node then the node will be part of a new branch. - var branchIndex = startBranchIndex; - if (m_Data.LogicNodes[i].ParentIndex != ushort.MaxValue) { - branchComponents = world.EntityManager.GetBuffer(entity); - var parentIndex = m_Data.LogicNodes[i].ParentIndex; - if (m_Data.LogicNodes[parentIndex] is IParallelNode) { - branchIndex = (ushort)branchComponents.Length; - } else { - branchIndex = taskComponents[parentIndex - taskOffset].BranchIndex; - } - - // A new branch component may need to be added to keep track of the active task index for that branch. - if (branchIndex >= branchComponents.Length) { - branchComponents.Add(new BranchComponent() { ActiveIndex = ushort.MaxValue, NextIndex = ushort.MaxValue, LastActiveIndex = ushort.MaxValue, CanExecute = true }); - } - } - - // The TaskComponent index will be different from the LogicNode index if the tree has a gap of tasks that are not connected. - // The RuntimeIndex maps the LogicNode index to the TaskComponent index. - var node = m_Data.LogicNodes[i]; - node.RuntimeIndex = (ushort)(node.Index - taskOffset); - m_Data.LogicNodes[i] = node; - if (!m_NodeIndexByRuntimeIndex.ContainsKey(node.RuntimeIndex)) { // The index will already exist if multiple entities use the same MonoBehaviour. - m_NodeIndexByRuntimeIndex.Add(node.RuntimeIndex, node.Index); - } - - if (m_Data.LogicNodes[i] is IAuthoringTask authoringTask) { - authoringTask.AddBufferElement(world, entity, gameObject); - taskComponents = world.EntityManager.GetBuffer(entity); - taskComponents.Add(new TaskComponent { - Status = TaskStatus.Inactive, - Index = node.RuntimeIndex, - ParentIndex = AdjustByIndexOffset(m_Data.LogicNodes[i].ParentIndex, taskOffset), - SiblingIndex = AdjustByIndexOffset(m_Data.LogicNodes[i].SiblingIndex, taskOffset), - BranchIndex = branchIndex, - FlagComponentType = authoringTask.Flag, - Disabled = !IsNodeEnabled(true, m_Data.LogicNodes[i].ParentIndex) || !IsNodeEnabled(true, i), - }); - - world.EntityManager.AddComponent(entity, authoringTask.Flag); - world.EntityManager.SetComponentEnabled(entity, authoringTask.Flag, false); - traversalTaskSystemGroup.AddSystemToUpdateList(world.GetOrCreateSystem(authoringTask.SystemType)); - } else if (m_Data.LogicNodes[i] is Task taskObject) { - taskObject.AddBufferElement(world, entity, GetHashCode(), node.RuntimeIndex); - taskComponents = world.EntityManager.GetBuffer(entity); - taskComponents.Add(new TaskComponent { - Status = TaskStatus.Inactive, - Index = node.RuntimeIndex, - ParentIndex = AdjustByIndexOffset(m_Data.LogicNodes[i].ParentIndex, taskOffset), - SiblingIndex = AdjustByIndexOffset(m_Data.LogicNodes[i].SiblingIndex, taskOffset), - BranchIndex = branchIndex, - FlagComponentType = typeof(TaskObjectFlag), - Disabled = !IsNodeEnabled(true, m_Data.LogicNodes[i].ParentIndex) || !IsNodeEnabled(true, i), - }); - world.EntityManager.AddComponent(entity, typeof(TaskObjectFlag)); - world.EntityManager.SetComponentEnabled(entity, typeof(TaskObjectFlag), false); - traversalTaskSystemGroup.AddSystemToUpdateList(world.GetOrCreateSystem(typeof(TaskObjectSystem))); - - taskObject.Initialize(this, node.RuntimeIndex); - } else { - Debug.LogError("Error: Unknown Task Type.", this); - continue; - } - - // Conditional tasks can be reevaluated. - if (m_Data.LogicNodes[i] is IConditional && m_Data.LogicNodes[i].ParentIndex != ushort.MaxValue) { - var reevaluateFlag = new ComponentType(); - Type reevaluateSystem; - if (m_Data.LogicNodes[i] is IAuthoringTask conditionalAuthoringTask) { - if (m_Data.LogicNodes[i] is IReevaluateResponder reevaluateTask) { - reevaluateFlag = reevaluateTask.ReevaluateFlag; - reevaluateSystem = reevaluateTask.ReevaluateSystemType; - } else { - Debug.LogWarning($"Warning: The task {m_Data.LogicNodes[i]} doesn't have a separate reevaluation tag. This may lead to unexpected results. It is recommend " + - $"that the task implements the IReevaluate interface."); - reevaluateFlag = conditionalAuthoringTask.Flag; - reevaluateSystem = conditionalAuthoringTask.SystemType; - } - } else { - reevaluateFlag = typeof(TaskObjectReevaluateFlag); - reevaluateSystem = typeof(TaskObjectReevaluateSystem); - } - world.EntityManager.AddComponent(entity, reevaluateFlag); - world.EntityManager.SetComponentEnabled(entity, reevaluateFlag, false); - ComponentUtility.AddInterruptComponents(world.EntityManager, entity); - reevaluateTaskSystemGroup.AddSystemToUpdateList(world.GetOrCreateSystem(reevaluateSystem)); - - // Ignore any decorator tasks when determining the parent. Composite tasks can only be a conditional abort parent. - IComposite parentComposite = null; - ushort parentIndex; - var compositeParentIndex = m_Data.LogicNodes[i].ParentIndex; - do { - parentComposite = m_Data.LogicNodes[compositeParentIndex] as IComposite; - parentIndex = compositeParentIndex; - compositeParentIndex = m_Data.LogicNodes[compositeParentIndex].ParentIndex; - } while (compositeParentIndex != ushort.MaxValue && parentComposite == null); - - var abortParent = parentComposite as IConditionalAbortParent; - if (abortParent != null && abortParent.AbortType != ConditionalAbortType.None) { - canReevaluate = true; - var lowerPriorityLowerIndex = ushort.MaxValue; - var lowerPriorityUpperIndex = ushort.MaxValue; - // Lower Priority aborts are recursive allowing a nested conditional task to be reevaluated even if the direct - // parent's sibling isn't active. - if (abortParent.AbortType == ConditionalAbortType.LowerPriority || abortParent.AbortType == ConditionalAbortType.Both) { - var parentChildCount = m_Data.GetChildCount(m_Data.LogicNodes[parentIndex], m_Data.LogicNodes); - lowerPriorityLowerIndex = AdjustByIndexOffset((ushort)(parentIndex + parentChildCount), taskOffset); - var parentTranversalIndex = parentIndex; - IConditionalAbortParent parentAbortParent = null; - while (parentTranversalIndex != ushort.MaxValue && ((parentAbortParent = m_Data.LogicNodes[parentTranversalIndex] as IConditionalAbortParent) != null || m_Data.LogicNodes[parentTranversalIndex] is IDecorator)) { - if (parentAbortParent != null && parentAbortParent.AbortType != ConditionalAbortType.LowerPriority && parentAbortParent.AbortType != ConditionalAbortType.Both) { - break; - } - parentIndex = parentTranversalIndex; - parentTranversalIndex = m_Data.LogicNodes[parentTranversalIndex].ParentIndex; - } - - // The conditional abort can reevaluate up to the rightmost task of the parent. - parentTranversalIndex = parentTranversalIndex != ushort.MaxValue ? parentTranversalIndex : parentIndex; - parentChildCount = m_Data.GetChildCount(m_Data.LogicNodes[parentTranversalIndex], m_Data.LogicNodes); - lowerPriorityUpperIndex = AdjustByIndexOffset((ushort)(parentTranversalIndex + parentChildCount), taskOffset); - } - var selfPriorityUpperIndex = ushort.MaxValue; - if (abortParent.AbortType == ConditionalAbortType.Self || abortParent.AbortType == ConditionalAbortType.Both) { - if (m_Data.LogicNodes[parentIndex].SiblingIndex == ushort.MaxValue) { - selfPriorityUpperIndex = (ushort)(parentIndex + m_Data.GetChildCount(m_Data.LogicNodes[parentIndex], m_Data.LogicNodes)); - } else { - selfPriorityUpperIndex = (ushort)(m_Data.LogicNodes[parentIndex].SiblingIndex - 1); - } - } - - var reevaluateTaskComponents = world.EntityManager.AddBuffer(entity); - var reevaluateTaskComponent = new ReevaluateTaskComponent() - { - Index = node.RuntimeIndex, - AbortType = abortParent.AbortType, - ReevaluateFlagComponentType = reevaluateFlag, - LowerPriorityLowerIndex = lowerPriorityLowerIndex, - LowerPriorityUpperIndex = lowerPriorityUpperIndex, - SelfPriorityUpperIndex = selfPriorityUpperIndex, - }; - - reevaluateTaskComponents.Add(reevaluateTaskComponent); - } - } - - // Add any systems that respond to interrupts. - if (m_Data.LogicNodes[i] is IInterruptResponder interruptResponder) { - interruptTaskSystemGroup.AddSystemToUpdateList(world.GetOrCreateSystem(interruptResponder.InterruptSystemType)); - } - } - - if (canReevaluate) { - reevaluateTaskSystemGroup.AddSystemToUpdateList(world.GetOrCreateSystem(typeof(ReevaluateSystem))); - } - - // The event task may perform its own logic. - if (eventTask is IEventNodeEntityReceiver entityReceiver) { - entityReceiver.AddBufferElement(world, entity, gameObject, taskOffset); - } - if (eventTask is IEventNodeGameObjectReceiver gameObjectReceiver) { - gameObjectReceiver.Initialize(this); - } - - traversalTaskSystemGroup.SortSystems(); - } - - /// - /// Adjusts the index by the specified offset. - /// - /// The index that should be adjusted. - /// The offset that should be adjusted by. - /// THe index by the specified offset. - private ushort AdjustByIndexOffset(ushort index, ushort offset) - { - if (index == ushort.MaxValue) { return index; } - return (ushort)(index - offset); - } - - /// - /// Stars the branch with the specified event task type. - /// - /// The branch that should be started. - /// True if the branch was started. - public bool StartBranch(Type eventTaskType) - { - if (m_World == null || m_Entity == Entity.Null) { - return false; - } - - return StartBranch(m_World, m_Entity, eventTaskType); - } - - /// - /// Stars the branch with the specified event task type. - /// - /// The world that the entity exists in. - /// The entity that contains the branch. - /// The branch that should be started. - /// True if the branch was started. - public bool StartBranch(World world, Entity entity, Type eventTaskType) - { - if (!s_BehaviorTreeByEntity.ContainsKey(entity)) { - return StartBehavior(world, entity, eventTaskType); - } - - if (m_Data.EventNodes == null || entity.Index == 0 || !Application.isPlaying) { - return false; - } - - for (int i = 0; i < m_Data.EventNodes.Length; ++i) { - if (m_Data.EventNodes[i].GetType() == eventTaskType) { - // The branch cannot start if it is disabled. - if (!IsNodeEnabled(false, i)) { - Debug.LogError($"Error: Unable to start the {eventTaskType.Name} branch because the node is disabled.", this); - return false; - } - - return StartBranch(world, entity, m_Data.EventNodes[i]); - } - } - - Debug.LogError($"Error: Unable to start the {eventTaskType.Name} branch because it can't be found.", this); - return false; - } - - /// - /// Starts the branch with the specified event task. - /// - /// The branch that should be started. - /// True if the branch was started. - public bool StartBranch(IEventNode eventTask) - { - if (m_World == null || m_Entity == Entity.Null) { - return false; - } - - return StartBranch(m_World, m_Entity, eventTask); - } - - /// - /// Starts the branch with the specified event task. - /// - /// The world that the entity exists in. - /// The entity that contains the branch. - /// The branch that should be started. - /// True if the branch was started. - public bool StartBranch(World world, Entity entity, IEventNode eventTask) - { - if (!Application.isPlaying || entity == Entity.Null) { - return false; - } - - // The branch can't be started if it's not connected to any tasks. - if (eventTask.ConnectedIndex == ushort.MaxValue) { - Debug.LogError($"Error: Unable to start the {eventTask.GetType().Name} branch because it doesn't have a connecting task.", this); - return false; - } - - // The tree needs to be setup before the branch can start. - if (!world.EntityManager.HasBuffer(entity)) { - InitializeTree(); - } - - var connectedIndex = m_Data.LogicNodes[eventTask.ConnectedIndex].RuntimeIndex; - return StartBranch(world, entity, connectedIndex, m_UpdateMode == UpdateMode.EveryFrame); - } - - /// - /// Starts the branch. This method is static allowing for alread-baked entities to be able to start the branch. - /// - /// The world that the entity exists in. - /// The entity that contains the branch. - /// The index of the starting task. - /// Should the branch start evaluation? If false the tree will manually need to be ticked. - /// True if the branch was started. - internal static bool StartBranch(World world, Entity entity, ushort connectedIndex, bool startEvaluation) - { - var taskComponents = world.EntityManager.GetBuffer(entity); - if (connectedIndex >= taskComponents.Length) { - Debug.LogError($"Error: Unable to start the branch on entity {entity} because the start index is greater than the task count."); - return false; - } - - var startTask = taskComponents[connectedIndex]; - // The branch can't be started twice or if it is disabled. - if (startTask.Status == TaskStatus.Queued || startTask.Status == TaskStatus.Running || startTask.Disabled) { - return false; - } - - var systemGroup = world.GetExistingSystemManaged(); - if (systemGroup == null) { - systemGroup = World.DefaultGameObjectInjectionWorld.GetExistingSystemManaged(); - if (systemGroup == null) { - return false; - } - } - systemGroup.Enabled = true; - - // The branch can start. - startTask.Status = TaskStatus.Queued; - taskComponents[connectedIndex] = startTask; - - var activeFlag = taskComponents[connectedIndex].FlagComponentType; - world.EntityManager.SetComponentEnabled(entity, activeFlag, true); - - var branchComponents = world.EntityManager.GetBuffer(entity); - var branchIndex = taskComponents[connectedIndex].BranchIndex; - var branchComponent = branchComponents[branchIndex]; - branchComponent.ActiveIndex = branchComponent.NextIndex = connectedIndex; - branchComponent.LastActiveIndex = ushort.MaxValue; - branchComponent.ActiveFlagComponentType = activeFlag; - branchComponents[branchIndex] = branchComponent; - - ComponentUtility.ResetEvaluationComponent(world, entity); - - if (startEvaluation) { - world.EntityManager.SetComponentEnabled(entity, true); - world.EntityManager.SetComponentEnabled(entity, true); - } - return true; - } - - /// - /// Returns the behavior tree component specified by the entity. - /// - /// The entity that should be retrieved. - /// The behavior tree component specified by the ID. - public static BehaviorTree GetBehaviorTree(Entity entity) - { - if (s_BehaviorTreeByEntity.TryGetValue(entity, out var behaviorTree)) { - return behaviorTree; - } - return null; - } - - /// - /// Returns the task at the specified index. - /// - /// The index of the task. - /// The task at the specified index. - public ITreeLogicNode GetTask(int index) - { - Deserialize(); - - if (m_Data.LogicNodes == null || index < 0 || index >= m_Data.LogicNodes.Length) { - return null; - } - if (Application.isPlaying && m_NodeIndexByRuntimeIndex.Count > 0) { - return m_Data.LogicNodes[m_NodeIndexByRuntimeIndex[index]]; - } - return m_Data.LogicNodes[index]; - } - - /// - /// Finds the task with the specified type. - /// - /// The first task found with the specified type (can be null). - public T FindTask() where T : Task - { - Deserialize(); - - if (m_Data.LogicNodes == null || m_Data.LogicNodes.Length == 0) { - return null; - } - - for (int i = 0; i < m_Data.LogicNodes.Length; ++i) { - if (m_Data.LogicNodes[i] is T task) { - return task; - } - if (m_Data.LogicNodes[i] is IContainerNode containerNode) { - if (containerNode.Nodes == null) { - continue; - } - for (int j = 0; j < containerNode.Nodes.Length; ++j) { - if (containerNode.Nodes[j] is T stackedTask) { - return stackedTask; - } - } - } - - } - - return null; - } - - /// - /// Finds the tasks with the specified type. This method does not have any allocations. - /// - /// A pre-initialized array that will contain the found tasks. - /// The number of tasks found with the specified type. - public int FindTasks(T[] foundTasks) where T : Task - { - if (foundTasks == null || foundTasks.Length == 0) { - return 0; - } - - Deserialize(); - if (m_Data.LogicNodes == null || m_Data.LogicNodes.Length == 0) { - return 0; - } - - var count = 0; - for (int i = 0; i < m_Data.LogicNodes.Length; ++i) { - if (m_Data.LogicNodes[i] is T task) { - foundTasks[count] = task; - count++; - if (count == foundTasks.Length) { - return count; - } - } - if (m_Data.LogicNodes[i] is IContainerNode containerNode) { - if (containerNode.Nodes == null) { - continue; - } - for (int j = 0; j < containerNode.Nodes.Length; ++j) { - if (containerNode.Nodes[j] is T stackedTask) { - foundTasks[count] = stackedTask; - count++; - if (count == foundTasks.Length) { - return count; - } - } - } - } - - } - - return count; - } - - /// - /// Finds the tasks with the specified type. - /// - /// An array containing the found tasks. - public T[] FindTasks() where T : Task - { - Deserialize(); - - if (m_Data.LogicNodes == null || m_Data.LogicNodes.Length == 0) { - return null; - } - - // Assume the maximum number of tasks will be found. The array will be resized before returning. - var foundTasks = new T[m_Data.LogicNodes.Length]; - var count = FindTasks(foundTasks); - if (foundTasks.Length != count) { - Array.Resize(ref foundTasks, count); - } - return foundTasks; - } - - /// - /// Ticks the behavior tree. The UpdateMode must be set to Manual. - /// The behavior tree will not be executed instantaneously. It will instead be ticked the next time the DOTS system group is updated. - /// - public void Tick() - { - if (m_UpdateMode != UpdateMode.Manual) { - Debug.LogWarning("Warning: The behavior tree UpdateMode must be set to Manual in order to be ticked manually.", this); - return; - } - - if (m_World == null || m_Entity == Entity.Null) { - Debug.LogWarning("Warning: The behavior tree must be started in order for it to be ticked manually.", this); - return; - } - - Tick(m_World, m_Entity); - } - - /// - /// Ticks the behavior tree. - /// The behavior tree will not be executed instantaneously. It will instead be ticked the next time the DOTS system group is updated. - /// - /// The world that the entity exists in. - /// The entity that contains the behavior tree. - public static void Tick(World world, Entity entity) - { - if (world == null || entity.Index == 0) { - return; - } - world.EntityManager.SetComponentEnabled(entity, true); - } - - /// - /// Reevaluates the SubtreeReferences by calling the EvaluateSubtrees method. - /// - public void ReevaluateSubtreeReferences() - { - if (!m_Data.ReevaluateSubtreeReferences(this, this, ClearTree)) { - return; - } - - // Restart the tree. - InitializeTree(); - if (enabled && m_GameObject.activeSelf) { - StartBehavior(); - } - } - - /// - /// Stops or pauses the behavior tree. - /// - /// Should the behavior tree be paused? - /// True if the behavior tree was stopped or paused. - public bool StopBehavior(bool pause = false) - { - return StopBehavior(m_World, m_Entity, pause); - } - - /// - /// Stops or pauses the behavior tree. - /// - /// The world that the entity exists in. - /// The entity that contains the behavior tree. - /// Should the behavior tree be paused? - /// True if the behavior tree was stopped or paused. - public bool StopBehavior(World world, Entity entity, bool pause = false) - { - if (world == null || !world.IsCreated || entity == Entity.Null) { - return false; - } - - // The tree could be stopped after it has been paused. - if (world.EntityManager.HasComponent(entity)) { - world.EntityManager.SetComponentEnabled(entity, false); - } - if (world.EntityManager.HasComponent(entity)) { - world.EntityManager.SetComponentEnabled(entity, false); - } - - if (!s_BehaviorTreeByEntity.ContainsKey(entity)) { - return false; - } - - // Notify those interested that the behavior tree has been stopped. - if (OnBehaviorTreeStopped != null) { - OnBehaviorTreeStopped(pause); - } - - // Tasks can implement a pause and end specific callback. - var tasks = Data.LogicNodes; - for (int i = 0; i < tasks.Length; ++i) { - if (pause) { - if (!(tasks[i] is IPausableTask pausableTask)) { - continue; - } - pausableTask.Pause(world, entity); - } else if (tasks[i] is Task task) { - task.OnEnd(); - } - } - - // Removing the EnabledFlag and EvaluationComponent is sufficient to pause the tree. - if (pause) { - return true; - } - - s_BehaviorTreeByEntity.Remove(entity); - - StopBehavior(world, entity); - - return true; - } - - /// - /// Stops the behavior tree. This method should only be called from an ECS system. - /// - /// The world that the entity exists in. - /// The entity that contains the behavior tree. - public static void StopBehavior(World world, Entity entity) - { - if (world == null || entity.Index == 0) { - return; - } - - var branchComponents = world.EntityManager.GetBuffer(entity); - var taskComponents = world.EntityManager.GetBuffer(entity); - for (int i = 0; i < branchComponents.Length; ++i) { - var branchComponent = branchComponents[i]; - if (branchComponent.ActiveIndex == ushort.MaxValue) { - continue; - } - - // Stop all of the active tasks within the branch. - var taskIndex = branchComponent.ActiveIndex; - while (taskIndex != ushort.MaxValue) { - var taskComponent = taskComponents[taskIndex]; - taskComponent.Status = TaskStatus.Inactive; - taskComponent.Reevaluate = false; - taskComponents[taskIndex] = taskComponent; - - taskIndex = taskComponent.ParentIndex; - } - - world.EntityManager.SetComponentEnabled(entity, branchComponent.ActiveFlagComponentType, false); - branchComponent.ActiveIndex = branchComponent.NextIndex = branchComponent.LastActiveIndex = ushort.MaxValue; - branchComponent.ActiveFlagComponentType = new ComponentType(); - branchComponent.InterruptType = InterruptType.None; - branchComponent.InterruptIndex = 0; - branchComponents[i] = branchComponent; - } - - // Stop all reevaluations. - if (world.EntityManager.HasBuffer(entity)) { - var reevaluateTaskComponents = world.EntityManager.GetBuffer(entity); - for (int i = 0; i < reevaluateTaskComponents.Length; ++i) { - if (reevaluateTaskComponents[i].ReevaluateStatus == ReevaluateStatus.Inactive) { - continue; - } - - var reevaluateTaskComponent = reevaluateTaskComponents[i]; - world.EntityManager.SetComponentEnabled(entity, reevaluateTaskComponent.ReevaluateFlagComponentType, false); - reevaluateTaskComponent.ReevaluateStatus = ReevaluateStatus.Inactive; - reevaluateTaskComponent.OriginalStatus = TaskStatus.Inactive; - - reevaluateTaskComponents[i] = reevaluateTaskComponent; - } - } - } - - /// - /// Restarts the behavior tree. - /// - /// True if the behavior tree was restarted. - public bool RestartBehavior() - { - if (!IsActive()) { - return false; - } - if (!StopBehavior()) { - return false; - } - return StartBehavior(); - } - - /// - /// Clears all of the tree components. - /// - private void ClearTree() - { - ClearTree(m_World, m_Entity); - } - - /// - /// Clears all of the tree components. - /// - /// The world that the entity exists in. - /// The entity that contains the behavior tree. - private void ClearTree(World world, Entity entity) - { - if (world == null || entity == Entity.Null || Data.LogicNodes == null) { - return; - } - - StopBehavior(world, entity, false); - - world.EntityManager.RemoveComponent(entity); - world.EntityManager.RemoveComponent(entity); - ComponentUtility.RemoveEvaluationComponent(world, entity); - - var branchComponents = world.EntityManager.GetBuffer(entity); - var taskComponents = world.EntityManager.GetBuffer(entity); - branchComponents.Clear(); - taskComponents.Clear(); - if (world.EntityManager.HasBuffer(entity)) { - var reevaluateTaskComponents = world.EntityManager.GetBuffer(entity); - reevaluateTaskComponents.Clear(); - } - - for (int i = 0; i < m_Data.LogicNodes.Length; ++i) { - if (m_Data.LogicNodes[i] is IAuthoringTask authoringTask) { - authoringTask.ClearBufferElement(world, entity); - if (world.EntityManager.HasComponent(entity, authoringTask.Flag)) { - world.EntityManager.RemoveComponent(entity, authoringTask.Flag); - } - if (m_Data.LogicNodes[i] is IReevaluateResponder reevaluateTask) { - if (world.EntityManager.HasComponent(entity, reevaluateTask.ReevaluateFlag)) { - world.EntityManager.RemoveComponent(entity, reevaluateTask.ReevaluateFlag); - } - } - } else if (m_Data.LogicNodes[i] is Task task) { - task.ClearBufferElement(world, entity); - if (m_Data.LogicNodes[i] is IConditional) { - if (world.EntityManager.HasComponent(entity, typeof(TaskObjectReevaluateFlag))) { - world.EntityManager.RemoveComponent(entity, typeof(TaskObjectReevaluateFlag)); - } - if (world.EntityManager.HasComponent(entity, typeof(InterruptFlag))) { - world.EntityManager.RemoveComponent(entity, typeof(InterruptFlag)); - } - } - if (world.EntityManager.HasComponent(entity, typeof(TaskObjectFlag))) { - world.EntityManager.RemoveComponent(entity, typeof(TaskObjectFlag)); - } - } - } - - for (int i = 0; i < m_Data.EventNodes.Length; ++i) { - if (m_Data.EventNodes[i] is IEventNodeEntityReceiver entityReceiver) { - entityReceiver.ClearBufferElement(world, entity); - } - } - - m_NodeIndexByRuntimeIndex.Clear(); - } - - /// - /// Returns the SharedVariable with the specified name. - /// - /// The name of the SharedVariable that should be retrieved. - /// The SharedVariable with the specified name (can be null). - public SharedVariable GetVariable(PropertyName name) - { - return GetVariable(name, SharedVariable.SharingScope.Graph); - } - - /// - /// Returns the SharedVariable with the specified name and scope. - /// - /// The name of the SharedVariable that should be retrieved. - /// The scope of the SharedVariable that should be retrieved. - /// The SharedVariable with the specified name (can be null). - public SharedVariable GetVariable(PropertyName name, SharedVariable.SharingScope scope) - { - Deserialize(); - - return m_Data.GetVariable(this, name, scope); - } - - /// - /// Returns the SharedVariable of the specified name. - /// - /// The name of the SharedVariable that should be retrieved. - /// The SharedVariable with the specified name (can be null). - public SharedVariable GetVariable(PropertyName name) - { - return GetVariable(name, SharedVariable.SharingScope.Graph); - } - - /// - /// Returns the SharedVariable of the specified name. - /// - /// The name of the SharedVariable that should be retrieved. - /// The scope of the SharedVariable that should be retrieved. - /// The SharedVariable with the specified name (can be null). - public SharedVariable GetVariable(PropertyName name, SharedVariable.SharingScope scope) - { - Deserialize(); - - return m_Data.GetVariable(this, name, scope); - } - - /// - /// Sets the value of the SharedVariable. - /// - /// The type of SharedVarible. - /// The name of the SharedVariable. - /// The value of the SharedVariable. - /// True if the value was set. - public bool SetVariableValue(PropertyName name, T value) - { - return SetVariableValue(name, value, SharedVariable.SharingScope.Graph); - } - - /// - /// Sets the value of the SharedVariable. - /// - /// The type of SharedVarible. - /// The name of the SharedVariable. - /// The value of the SharedVariable. - /// The scope of the SharedVariable that should be set. - /// True if the value was set. - public bool SetVariableValue(PropertyName name, T value, SharedVariable.SharingScope scope) - { - Deserialize(); - - return m_Data.SetVariableValue(this, name, value, scope); - } - - /// - /// Gets the behavior tree save data. - /// - /// Specifies which variables should be saved. Graph variables will automatically be saved. - /// The save data if the behavior tree can be saved. - public SaveManager.SaveData? Save(SaveManager.VariableSaveScope variableSaveScope = 0) - { - if (OnWillSave != null) { - OnWillSave(this); - } - var saveData = SaveManager.Save(new BehaviorTree[] { this }, variableSaveScope); - if (OnDidSave != null) { - OnDidSave(this, saveData.HasValue); - } - return saveData; - } - - /// - /// Saves the behavior tree at the specified file path. - /// - /// The file path to save the behavior tree at. The file will be replaced if it already exists. - /// Specifies which variables should be saved. Graph variables will automatically be saved. - /// True if the behavior tree was successfully saved. - public bool Save(string filePath, SaveManager.VariableSaveScope variableSaveScope = 0) - { - if (OnWillSave != null) { - OnWillSave(this); - } - var success = SaveManager.Save(new BehaviorTree[] { this }, filePath, variableSaveScope); - if (OnDidSave != null) { - OnDidSave(this, success); - } - return success; - } - - /// - /// Loads the behavior tree from the specified file path. - /// - /// The file path to load the behavior tree at. - /// Optional callback after the graph variables have been restored. - /// True if the behavior tree was successfully loaded. - public bool Load(string filePath, Action afterVariablesRestored = null) - { - if (OnWillLoad != null) { - OnWillLoad(this); - } - var success = SaveManager.Load(new BehaviorTree[] { this }, filePath, afterVariablesRestored); - if (OnDidLoad != null) { - OnDidLoad(this, success); - } - return success; - } - - /// - /// Loads the behavior tree from the specified save data. - /// - /// The data associated with the behavior tree. - /// Optional callback after the graph variables have been restored. - /// True if the behavior tree was successfully loaded. - public bool Load(SaveManager.SaveData saveData, Action afterVariablesRestored = null) - { - if (OnWillLoad != null) { - OnWillLoad(this); - } - var success = SaveManager.Load(new BehaviorTree[] { this }, saveData, afterVariablesRestored); - if (OnDidLoad != null) { - OnDidLoad(this, success); - } - return success; - } - - /// - /// Starts the task courtine with the specified name. - /// - /// The task that the coroutine belongs to. - /// The name of the coroutine method. - /// The created routine (can be null). - public Coroutine StartTaskCoroutine(Task task, string coroutineName) - { - var method = task.GetType().GetMethod(coroutineName, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); - if (method == null) { - Debug.LogError($"Error: The coroutine {coroutineName} cannot be started due to the method not being found on {task.GetType()}."); - return null; - } - - if (m_ActiveTaskCoroutines == null) { - m_ActiveTaskCoroutines = new Dictionary>(); - } - var taskCoroutine = new TaskCoroutine(this, (IEnumerator)method.Invoke(task, new object[] { }), coroutineName); - if (!m_ActiveTaskCoroutines.TryGetValue(coroutineName, out var taskCoroutines)) { - taskCoroutines = new List(); - m_ActiveTaskCoroutines.Add(coroutineName, taskCoroutines); - } - taskCoroutines.Add(taskCoroutine); - - return taskCoroutine.Coroutine; - } - - /// - /// Starts the task courtine with the specified name. - /// - /// The task that the coroutine belongs to. - /// The name of the coroutine method. - /// The input parameter to the coroutine. - /// The created routine (can be null). - public Coroutine StartTaskCoroutine(Task task, string coroutineName, object value) - { - var method = task.GetType().GetMethod(coroutineName, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); - if (method == null) { - Debug.LogError($"Error: The coroutine {coroutineName} cannot be started due to the method not being found on {task.GetType()}."); - return null; - } - - if (m_ActiveTaskCoroutines == null) { - m_ActiveTaskCoroutines = new Dictionary>(); - } - var taskCoroutine = new TaskCoroutine(this, (IEnumerator)method.Invoke(task, new object[] { value }), coroutineName); - if (!m_ActiveTaskCoroutines.TryGetValue(coroutineName, out var taskCoroutines)) { - taskCoroutines = new List(); - m_ActiveTaskCoroutines.Add(coroutineName, taskCoroutines); - } - taskCoroutines.Add(taskCoroutine); - - return taskCoroutine.Coroutine; - } - - /// - /// Stops the task courtine with the specified name. - /// - /// The name of the coroutine method. - public void StopTaskCoroutine(string coroutineName) - { - if (!m_ActiveTaskCoroutines.TryGetValue(coroutineName, out var taskCoroutines)) { - return; - } - - for (int i = 0; i < taskCoroutines.Count; ++i) { - taskCoroutines[i].Stop(); - } - } - - /// - /// Stops all of the task coroutines. - /// - public void StopAllTaskCoroutines() - { - if (m_ActiveTaskCoroutines == null) { - return; - } - - foreach (var entry in m_ActiveTaskCoroutines) { - var taskCoroutines = entry.Value; - for (int i = 0; i < taskCoroutines.Count; ++i) { - taskCoroutines[i].Stop(); - } - } - } - - /// - /// The TaskCoroutine has ended. - /// - /// The coroutine that has ended. - /// The name of the coroutine. - public void TaskCoroutineEnded(TaskCoroutine taskCoroutine, string coroutineName) - { - if (!m_ActiveTaskCoroutines.TryGetValue(coroutineName, out var taskCoroutines)) { - return; - } - - taskCoroutines.Remove(taskCoroutine); - if (taskCoroutines.Count == 0) { - m_ActiveTaskCoroutines.Remove(coroutineName); - } - } - - /// - /// OnCollisionEnter callback. - /// - /// The resulting collision. - private void OnCollisionEnter(Collision collision) - { - if (OnBehaviorTreeCollisionEnter != null) { - OnBehaviorTreeCollisionEnter(collision); - } - } - - /// - /// OnCollisionExit callback. - /// - /// The resulting collision. - private void OnCollisionExit(Collision collision) - { - if (OnBehaviorTreeCollisionExit != null) { - OnBehaviorTreeCollisionExit(collision); - } - } - - /// - /// OnCollisionEnter2D callback. - /// - /// The resulting collision. - private void OnCollisionEnter2D(Collision2D collision) - { - if (OnBehaviorTreeCollisionEnter2D != null) { - OnBehaviorTreeCollisionEnter2D(collision); - } - } - - /// - /// OnCollisionExit2D callback. - /// - /// The resulting collision. - private void OnCollisionExit2D(Collision2D collision) - { - if (OnBehaviorTreeCollisionExit2D != null) { - OnBehaviorTreeCollisionExit2D(collision); - } - } - - /// - /// OnTriggerEnter callback. - /// - /// The overlapping collider. - private void OnTriggerEnter(Collider other) - { - if (OnBehaviorTreeTriggerEnter != null) { - OnBehaviorTreeTriggerEnter(other); - } - } - - /// - /// OnTriggerExit callback. - /// - /// The collider that is no longer overlapping. - private void OnTriggerExit(Collider other) - { - if (OnBehaviorTreeTriggerExit != null) { - OnBehaviorTreeTriggerExit(other); - } - } - - /// - /// OnTriggerEnter2D callback. - /// - /// The overlapping collider. - private void OnTriggerEnter2D(Collider2D other) - { - if (OnBehaviorTreeTriggerEnter2D != null) { - OnBehaviorTreeTriggerEnter2D(other); - } - } - - /// - /// OnTriggerExit2D callback. - /// - /// The collider that is no longer overlapping. - private void OnTriggerExit2D(Collider2D other) - { - if (OnBehaviorTreeTriggerExit2D != null) { - OnBehaviorTreeTriggerExit2D(other); - } - } - - /// - /// OnControllerColliderHit callback. - /// - /// The hit result. - private void OnControllerColliderHit(ControllerColliderHit hit) - { - if (OnBehaviorTreeControllerColliderHit != null) { - OnBehaviorTreeControllerColliderHit(hit); - } - } - -#if UNITY_EDITOR - /// - /// OnDrawGizmos callback. - /// - private void OnDrawGizmos() - { - if (!enabled) { - return; - } - - if (m_Data != null && m_Data.LogicNodes != null) { - for (int i = 0; i < m_Data.LogicNodes.Length; ++i) { - if (m_Data.LogicNodes[i] is Task task) { - task.OnDrawGizmos(this); - } - } - } - } - - /// - /// OnDrawGizmos callback. - /// - private void OnDrawGizmosSelected() - { - if (!enabled) { - return; - } - - if (m_Data != null && m_Data.LogicNodes != null) { - for (int i = 0; i < m_Data.LogicNodes.Length; ++i) { - if (m_Data.LogicNodes[i] is Task task) { - task.OnDrawGizmosSelected(this); - } - } - } - } -#endif - - /// - /// The behavior tree has been disabled. - /// - private void OnDisable() - { - if (m_Entity == Entity.Null) { - return; - } - - StopBehavior(m_World, m_Entity, m_PauseWhenDisabled); - } - - /// - /// The behavior tree has been destroyed. - /// - private void OnDestroy() - { - if (m_Entity == Entity.Null) { - return; - } - - if (OnBehaviorTreeDestroyed != null) { - OnBehaviorTreeDestroyed(); - } - StopBehavior(m_World, m_Entity, false); - m_GameObject = null; - } - - /// - /// Is the node with the specified index enabled? - /// - /// Is the node a LogicNode? - /// The index of the node. - /// True if the node with the specified index is enabled. - public bool IsNodeEnabled(bool logicNode, int index) - { - return Data.IsNodeEnabled(logicNode, index); - } - - /// - /// Is the node with the specified index active? - /// - /// Is the node a LogicNode? - /// The index of the node. - /// True if the node with the specified index is active. - public bool IsNodeActive(bool logicNode, int index) - { - if (!Application.isPlaying || m_Entity == Entity.Null) { - return false; - } - - var taskComponents = m_World.EntityManager.GetBuffer(m_Entity); - var logicNodeIndex = index; - if (!logicNode && m_Data.EventNodes != null && index < m_Data.EventNodes.Length) { - // Find the logic node that the event node is connected to. - logicNodeIndex = m_Data.EventNodes[index].ConnectedIndex; - } - if (logicNodeIndex >= taskComponents.Length) { - return false; - } - var taskComponent = taskComponents[logicNodeIndex]; - return taskComponent.Status == TaskStatus.Running; - } - - /// - /// Returns true if the behavior tree is active. - /// - /// True if the behavior tree is active. - public bool IsActive() - { - return IsActive(m_Entity); - } - - /// - /// Returns true if the behavior tree is active. - /// - /// The entity that contains the behavior tree. - /// True if the behavior tree is active. - public bool IsActive(Entity entity) - { - if (entity == Entity.Null) { - return false; - } - return s_BehaviorTreeByEntity.ContainsKey(entity); - } - - /// - /// Returns true if the behavior tree is paused. - /// - /// True if the behavior tree is paused. - public bool IsPaused() - { - return IsPaused(m_World, m_Entity); - } - - /// - /// Returns true if the behavior tree is paused. - /// - /// The world that the entity exists in. - /// The entity that contains the behavior tree. - /// True if the behavior tree is paused. - public bool IsPaused(World world, Entity entity) - { - if (!IsActive(entity)) { - return false; - } - return world.EntityManager.HasComponent(entity) && !world.EntityManager.IsComponentEnabled(entity); - } - - /// - /// Copies the graph onto the current graph. - /// - /// The graph that should be copied. - public void Clone(IGraph other) - { - m_Data = new BehaviorTreeData(); - m_Data.EventNodes = other.EventNodes; - m_Data.LogicNodes = other.LogicNodes as ITreeLogicNode[]; - m_Data.SharedVariables = other.SharedVariables; - m_Data.DisabledLogicNodes = other.DisabledLogicNodes; - m_Data.DisabledEventNodes = other.DisabledEventNodes; - -#if UNITY_EDITOR - m_Data.EventNodeProperties = other.EventNodeProperties; - m_Data.LogicNodeProperties = other.LogicNodeProperties; - m_Data.GroupProperties = other.GroupProperties; - m_Data.SharedVariableGroups = other.SharedVariableGroups; -#endif - - m_Data.Serialize(); - } - - /// - /// Overrides ToString. - /// - /// The desired string value. - public override string ToString() - { - return $"{m_GraphName} (Index {m_Index})"; - } - - /// - /// Returns the hashcode of the graph. - /// - /// The hashcode of the graph. - public override int GetHashCode() - { - if (m_Subtree != null) { - return m_Subtree.GetHashCode(); - } - return base.GetHashCode(); - } - - /// - /// Callback when the domain should be reloaded. - /// - [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)] - private static void Reinitialize() - { - s_BehaviorTreeByEntity = new Dictionary(); - } - - /// - /// Enables the baked behavior tree system. - /// - /// The world that the system has been added to. - public static void EnableBakedBehaviorTreeSystem(World world) - { - if (world == null) { - return; - } - - EnableBakedBehaviorTreeSystem(world.Unmanaged); - } - - /// - /// Enables the baked behavior tree system. - /// - /// The unmanged world that the system has been added to. - public static void EnableBakedBehaviorTreeSystem(WorldUnmanaged world) - { - world.GetExistingSystemState().Enabled = true; - } - - /// - /// Converts the behavior tree to a DOTS entity. - /// - public class BehaviorTreeBaker : Baker - { - private static MethodInfo s_GetTypeOfSystemMethod; - - /// - /// Bakes the behavior tree to the DOTS entity. - /// - /// The authoring behavior tree. - public override void Bake(BehaviorTree behaviorTree) - { - if (!behaviorTree.StartWhenEnabled || !behaviorTree.enabled) { - return; - } - - var entity = GetEntity(behaviorTree, TransformUsageFlags.Dynamic); - var worlds = World.All; - for (int i = 0; i < worlds.Count; ++i) { - if (worlds[i].EntityManager.Exists(entity)) { - if (!behaviorTree.InitializeTree(worlds[i], entity)) { - continue; - } - - var connectedIndex = GetStartTaskConnectedIndex(behaviorTree); - if (connectedIndex == -1 || connectedIndex == ushort.MaxValue) { - return; - } - - var taskComponents = worlds[i].EntityManager.GetBuffer(entity); - var tagStableTypeHash = new ulong[taskComponents.Length]; - for (int j = 0; j < taskComponents.Length; ++j) { - tagStableTypeHash[j] = TypeManager.GetTypeInfo(taskComponents[j].FlagComponentType.TypeIndex).StableTypeHash; - } - ulong[] ReevaluateFlagStableTypeHash = null; - if (worlds[i].EntityManager.HasBuffer(entity)) { - var reevaluateTaskComponents = worlds[i].EntityManager.GetBuffer(entity); - ReevaluateFlagStableTypeHash = new ulong[reevaluateTaskComponents.Length]; - for (int j = 0; j < reevaluateTaskComponents.Length; ++j) { - ReevaluateFlagStableTypeHash[j] = TypeManager.GetTypeInfo(reevaluateTaskComponents[j].ReevaluateFlagComponentType.TypeIndex).StableTypeHash; - } - } - - AddComponentObject(entity, new BakedBehaviorTree - { - StartEventConnectedIndex = connectedIndex, - StartEvaluation = behaviorTree.UpdateMode == UpdateMode.EveryFrame, - ReevaluateTaskSystems = GetTaskSystems(worlds[i]), - InterruptTaskSystems = GetTaskSystems(worlds[i]), - TraversalTaskSystems = GetTaskSystems(worlds[i]), - TagStableTypeHashes = tagStableTypeHash, - ReevaluateFlagStableTypeHashes = ReevaluateFlagStableTypeHash, - }); - behaviorTree.Baked = true; - } - } - } - - /// - /// Returns the index of the node connection for the start event task. - /// - /// The interested behavior tree. - /// The index of the node connection for the start event task. - private int GetStartTaskConnectedIndex(BehaviorTree behaviorTree) - { - // The behavior tree has to first be initialized. - if (behaviorTree.World == null || behaviorTree.Entity == Entity.Null) { - Debug.LogError($"Error: Unable to retrieve the connected index on behavior tree {behaviorTree}. The behavior tree has to first be initialized."); - return -1; - } - - var data = behaviorTree.Data; - for (int i = 0; i < data.EventNodes.Length; ++i) { - if (data.EventNodes[i].GetType() == typeof(Start)) { - // The connected index may not be valid. - if (data.EventNodes[i].ConnectedIndex == ushort.MaxValue) { - return ushort.MaxValue; - } - - // The branch cannot start if it is disabled. - if (!behaviorTree.IsNodeEnabled(false, i)) { - return -1; - } - - return data.LogicNodes[data.EventNodes[i].ConnectedIndex].RuntimeIndex; - } - } - return -1; - } - - /// - /// Returns all of the system type indicies within the systems of the specified type. - /// - /// The world that the systems were added to. - /// The system type indicies within the systems of the specified type (can be null). - private string[] GetTaskSystems(World world) where T : ComponentSystemGroup - { - var systemGroup = world.GetExistingSystemManaged(); - if (systemGroup == null) { - return null; - } - - var systems = systemGroup.GetAllSystems(); - if (systems.Length == 0) { - systems.Dispose(); - return null; - } - - // Use reflection to call WorldUnmanaged.GetTypeOfSystem. This method is only called during baking at edit time so reflection is ok, though it would be better - // if this method was eventually made public. - if (s_GetTypeOfSystemMethod == null) { - s_GetTypeOfSystemMethod = typeof(WorldUnmanaged).GetMethod("GetTypeOfSystem", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); - if (s_GetTypeOfSystemMethod == null) { - Debug.LogError("Error: Unable to find WorldUnmanaged.GetTypeOfSystem. Please email support@opsive.com with your Unity version and Entity package version."); - return null; - } - } - - var systemTypes = new string[systems.Length]; - for (int i = 0; i < systems.Length; ++i) { - var systemTypeIndex = TypeManager.GetSystemTypeIndex((Type)s_GetTypeOfSystemMethod.Invoke(world.Unmanaged, new object[] { systems[i] })); - systemTypes[i] = systemTypeIndex.ToString(); - } - systems.Dispose(); - return systemTypes; - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/BehaviorTree.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/BehaviorTree.cs.meta deleted file mode 100644 index cbdaf1c..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/BehaviorTree.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0cdaa3305fa954c45a80c9662aa6f425 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: e0a8f1df788b6274a9a24003859dfa7e, type: 3} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/BehaviorTreeData.cs b/Packages/com.opsive.behaviordesigner/Runtime/BehaviorTreeData.cs deleted file mode 100644 index b66f8de..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/BehaviorTreeData.cs +++ /dev/null @@ -1,1674 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime -{ - using Opsive.BehaviorDesigner.Runtime.Tasks; - using Opsive.BehaviorDesigner.Runtime.Tasks.Events; - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Utility; - using Opsive.GraphDesigner.Runtime.Variables; - using Opsive.Shared.Utility; - using System; - using System.Collections; - using System.Collections.Generic; - using System.Reflection; - using UnityEngine; - - /// - /// Storage class for the graph data. - /// - [System.Serializable] - public partial class BehaviorTreeData - { - [Tooltip("The serialized Task data.")] - [SerializeField] private Serialization[] m_TaskData; - [Tooltip("The serialized EventTask data.")] - [SerializeField] private Serialization[] m_EventTaskData; - [Tooltip("The serialized SharedVariable data.")] - [SerializeField] private Serialization[] m_SharedVariableData; - [Tooltip("The serialized disabled event nodes data.")] - [SerializeField] private Serialization[] m_DisabledEventNodesData; - [Tooltip("The serialized disabled logic nodes data.")] - [SerializeField] private Serialization[] m_DisabledLogicNodesData; - [Tooltip("The unique ID of the data.")] - [SerializeField] private int m_UniqueID; - - private ITreeLogicNode[] m_Tasks; - private IEventNode[] m_EventTasks; - private SharedVariable[] m_SharedVariables; - private ushort[] m_DisabledLogicNodes; - private ushort[] m_DisabledEventNodes; - private Dictionary m_VariableByNameMap; - private int m_RuntimeUniqueID; - - public ITreeLogicNode[] LogicNodes - { - get => m_Tasks; - set { - if (value == null) { - m_Tasks = null; - } else { - if (m_Tasks == null) { - m_Tasks = new ITreeLogicNode[value.Length]; - } else if (m_Tasks.Length != value.Length) { - Array.Resize(ref m_Tasks, value.Length); - } - for (int i = 0; i < value.Length; ++i) { - m_Tasks[i] = value[i]; - } - } - } - } - public IEventNode[] EventNodes - { - get => m_EventTasks; - set { - if (value == null) { - m_EventTasks = null; - } else { - if (m_EventTasks == null) { - m_EventTasks = new IEventNode[value.Length]; - } else if (m_EventTasks.Length != value.Length) { - Array.Resize(ref m_EventTasks, value.Length); - } - for (int i = 0; i < value.Length; ++i) { - m_EventTasks[i] = value[i]; - } - } - } - } - public SharedVariable[] SharedVariables { get => m_SharedVariables; set => m_SharedVariables = value; } - public int UniqueID { get => m_RuntimeUniqueID != 0 ? m_RuntimeUniqueID : m_UniqueID; } - public ushort[] DisabledLogicNodes { get => m_DisabledLogicNodes; set => m_DisabledLogicNodes = value; } - public ushort[] DisabledEventNodes { get => m_DisabledEventNodes; set => m_DisabledEventNodes = value; } - internal Dictionary VariableByNameMap { get => m_VariableByNameMap; set => m_VariableByNameMap = value; } - internal int RuntimeUniqueID { set => m_RuntimeUniqueID = value; } - -#if UNITY_EDITOR - [Tooltip("The serialized logic node properties data.")] - [SerializeField] private Serialization[] m_LogicNodePropertiesData; - [Tooltip("The serialized event node properties data.")] - [SerializeField] private Serialization[] m_EventNodePropertiesData; - [Tooltip("The serialized group properties data.")] - [SerializeField] private Serialization[] m_GroupPropertiesData; - [Tooltip("The serialized shared variables group data.")] - [SerializeField] private Serialization[] m_SharedVariableGroupsData; - - private LogicNodeProperties[] m_LogicNodeProperties; - private NodeProperties[] m_EventNodeProperties; - private GroupProperties[] m_GroupProperties; - [System.NonSerialized] private SharedVariableGroup[] m_SharedVariableGroups; - - public LogicNodeProperties[] LogicNodeProperties { get => m_LogicNodeProperties; set { m_LogicNodeProperties = value; } } - public NodeProperties[] EventNodeProperties { get => m_EventNodeProperties; set { m_EventNodeProperties = value; } } - public GroupProperties[] GroupProperties { get => m_GroupProperties; set => m_GroupProperties = value; } - public SharedVariableGroup[] SharedVariableGroups { get => m_SharedVariableGroups; set => m_SharedVariableGroups = value; } -#endif - - private ResizableArray m_SubtreeNodesReference; - private ResizableArray m_VariableFields; - [System.NonSerialized] private bool m_Deserializing; - - internal ResizableArray SubtreeNodesReferences { get => m_SubtreeNodesReference; set => m_SubtreeNodesReference = value; } - - /// - /// Default constructor. - /// - public BehaviorTreeData() - { - m_UniqueID = Guid.NewGuid().GetHashCode(); - } - - /// - /// Adds the specified node. - /// - /// The node that should be added. - public void AddNode(ITreeLogicNode node) - { - if (m_Tasks == null) { - m_Tasks = new ITreeLogicNode[1]; - } else { - Array.Resize(ref m_Tasks, m_Tasks.Length + 1); - } - node.Index = (ushort)(m_Tasks.Length - 1); - node.ParentIndex = ushort.MaxValue; - node.SiblingIndex = ushort.MaxValue; - node.RuntimeIndex = ushort.MaxValue; - m_Tasks[m_Tasks.Length - 1] = node; - } - - /// - /// Removes the specified logic node. - /// - /// The node that should be removed. - /// True if the node was removed. - public bool RemoveNode(ITreeLogicNode node) - { - if (m_Tasks == null || node.Index >= m_Tasks.Length) { - return false; - } - - var dest = new ITreeLogicNode[m_Tasks.Length - 1]; - Array.Copy(m_Tasks, dest, node.Index); - Array.Copy(m_Tasks, node.Index + 1, dest, node.Index, m_Tasks.Length - node.Index - 1); - m_Tasks = dest; - return true; - } - - /// - /// Adds the specified event node. - /// - /// The event node that should be added. - public void AddNode(IEventNode eventNode) - { - if (m_EventTasks == null) { - m_EventTasks = new IEventNode[1]; - } else { - Array.Resize(ref m_EventTasks, m_EventTasks.Length + 1); - } - m_EventTasks[m_EventTasks.Length - 1] = eventNode; - } - - /// - /// Removes the specified event node. - /// - /// The event node that should be removed. - /// True if the event node was removed. - public bool RemoveNode(IEventNode eventNode) - { - if (m_EventTasks == null) { - return false; - } - - var index = m_EventTasks.IndexOf(eventNode); - if (index == -1) { - return false; - } - - var dest = new IEventNode[m_EventTasks.Length - 1]; - Array.Copy(m_EventTasks, dest, index); - Array.Copy(m_EventTasks, index + 1, dest, index, m_EventTasks.Length - index - 1); - m_EventTasks = dest; - return true; - } - - /// - /// Serializes the behavior tree. - /// - public void Serialize() - { - if (Application.isPlaying) { - return; - } - - m_TaskData = Serialization.Serialize(m_Tasks, ValidateSerializedObject); - m_EventTaskData = Serialization.Serialize(m_EventTasks, ValidateSerializedObject); - SerializeSharedVariables(); - m_DisabledEventNodesData = Serialization.Serialize(m_DisabledEventNodes); - m_DisabledLogicNodesData = Serialization.Serialize(m_DisabledLogicNodes); - m_UniqueID = Guid.NewGuid().GetHashCode(); - -#if UNITY_EDITOR - // Ensure the node data is up to date. - if (m_LogicNodeProperties != null && m_Tasks != null && m_LogicNodeProperties.Length <= m_Tasks.Length) { - for (int i = 0; i < m_LogicNodeProperties.Length; ++i) { - var nodeData = m_LogicNodeProperties[i].Data; - nodeData.ParentIndex = m_Tasks[i].ParentIndex; - nodeData.SiblingIndex = m_Tasks[i].SiblingIndex; - nodeData.IsParent = m_Tasks[i] is IParentNode; - m_LogicNodeProperties[i].Data = nodeData; - } - } - m_LogicNodePropertiesData = Serialization.Serialize(m_LogicNodeProperties); - m_EventNodePropertiesData = Serialization.Serialize(m_EventNodeProperties); - m_GroupPropertiesData = Serialization.Serialize(m_GroupProperties); -#endif - } - - /// - /// Validates the serialized object. - /// - /// The type of object. - /// The field that the object belongs to. - /// The value of the object - /// The validated object. - public static Serialization.ValidatedObject ValidateSerializedObject(Type type, FieldInfo field, object value) - { - if (value == null) { - return new Serialization.ValidatedObject() { Type = type, Obj = value }; - } - - // Replace ILogicNode with ushort index values. - if (typeof(IList).IsAssignableFrom(type)) { - var elementType = Serializer.GetElementType(type); - if (typeof(ILogicNode).IsAssignableFrom(elementType)) { - if (field == null || field.GetCustomAttribute() == null) { - var tasks = value as IList; - if (tasks == null) { - return new Serialization.ValidatedObject() { Type = type, Obj = value }; - } - - var indexValues = new ushort[tasks.Count]; - for (int i = 0; i < indexValues.Length; ++i) { - indexValues[i] = ((ILogicNode)tasks[i]).Index; - } - return new Serialization.ValidatedObject() { Type = typeof(ushort[]), Obj = indexValues }; - } - } else if (Application.isPlaying && (typeof(GameObject).IsAssignableFrom(elementType) || typeof(Component).IsAssignableFrom(elementType))) { // Scene objects cannot be serialized at runtime. - var listValue = value as IList; - if (listValue != null) { - IList objects; - if (type.IsArray) { - objects = Array.CreateInstance(elementType, listValue.Count); - } else { - if (type.IsGenericType) { - objects = Activator.CreateInstance(typeof(List<>).MakeGenericType(elementType)) as IList; - } else { - objects = Activator.CreateInstance(type) as IList; - } - } - for (int i = 0; i < listValue.Count; ++i) { - GameObject gameObjectValue = null; - if (listValue[i] is Component componentValue) { - gameObjectValue = componentValue.gameObject; - } else { - gameObjectValue = listValue[i] as GameObject; - } - if (gameObjectValue != null && gameObjectValue.scene.IsValid()) { - if (type.IsArray) { - objects[i] = null; - } else { - objects.Add(null); - } - } else { - if (type.IsArray) { - objects[i] = listValue[i]; - } else { - objects.Add(listValue[i]); - } - } - } - listValue = objects; - } - return new Serialization.ValidatedObject() { Type = type, Obj = listValue }; - } - } else if (typeof(ILogicNode).IsAssignableFrom(type)) { - if (field == null || field.GetCustomAttribute() == null) { - return new Serialization.ValidatedObject() { Type = typeof(ushort), Obj = ((ILogicNode)value).Index }; - } - } else if (Application.isPlaying && (typeof(GameObject).IsAssignableFrom(type) || typeof(Component).IsAssignableFrom(type))) { // Scene objects cannot be serialized at runtime. - GameObject gameObjectValue = null; - if (value is Component componentValue) { - gameObjectValue = componentValue.gameObject; - } else { - gameObjectValue = value as GameObject; - } - if (gameObjectValue != null && gameObjectValue.scene.IsValid()) { - return new Serialization.ValidatedObject() { Type = type, Obj = null }; - } - } - return new Serialization.ValidatedObject() { Type = type, Obj = value }; - } - - /// - /// Serializes the SharedVariables. This allows the SharedVariables to be serialized independently. - /// - public void SerializeSharedVariables() - { - if (Application.isPlaying) { - return; - } - - m_SharedVariableData = Serialization.Serialize(m_SharedVariables); -#if UNITY_EDITOR - m_SharedVariableGroupsData = Serialization.Serialize(m_SharedVariableGroups); -#endif - - // Update the mapping for any variable name changes. - if (m_VariableByNameMap == null) { - m_VariableByNameMap = new Dictionary(); - } else { - m_VariableByNameMap.Clear(); - } - if (m_SharedVariables != null) { - for (int i = 0; i < m_SharedVariables.Length; ++i) { - if (m_SharedVariables[i] == null) { - continue; - } - m_VariableByNameMap.Add(new VariableAssignment(m_SharedVariables[i].Name, m_SharedVariables[i].Scope), m_SharedVariables[i]); - } - } - } - - /// - /// Deserialize the behavior tree. - /// - /// The component that the graph is being deserialized from. - /// The graph that is being deserialized. - /// Should the behavior tree be force deserialized? - /// Should the shared variables be force deserialized? - /// Should the subtrees be injected into the behavior tree? - /// Can the SharedVariables be deep copied? - /// A list of SharedVariables that should override the current SharedVariable value. - /// True if the tree was deserialized. - public bool Deserialize(IGraphComponent graphComponent, IGraph graph, bool force, bool forceSharedVariables, bool injectSubtrees, bool canDeepCopyVariables = true, SharedVariableOverride[] sharedVariableOverrides = null) - { - // No need to deserialize if the data is already deserialized. - if (!force && ((m_Tasks != null && m_TaskData != null && m_Tasks.Length == m_TaskData.Length) || (m_EventTasks != null && m_EventTaskData != null && m_EventTasks.Length == m_EventTaskData.Length))) { - // SharedVariables may still need to be deserialized separately. - DeserializeSharedVariables(graph, false, canDeepCopyVariables, sharedVariableOverrides); - - if (Application.isPlaying && m_RuntimeUniqueID == 0) { - m_RuntimeUniqueID = m_UniqueID; - } - return true; - } - - return DeserializeInternal(graphComponent, graph, force, forceSharedVariables, injectSubtrees, canDeepCopyVariables, sharedVariableOverrides); - } - - /// - /// Internal method which deserialize the behavior tree. - /// - /// The component that the graph is being deserialized from. - /// The graph that is being deserialized. - /// Should the behavior tree be force deserialized? - /// Should the shared variables be force deserialized? - /// Should the subtrees be injected into the behavior tree? - /// Can the SharedVariables be deep copied? - /// A list of SharedVariables that should override the current SharedVariable value. - /// True if the tree was deserialized. - private bool DeserializeInternal(IGraphComponent graphComponent, IGraph graph, bool force, bool forceSharedVariables, bool injectSubtrees, bool canDeepCopyVariables, SharedVariableOverride[] sharedVariableOverrides = null) - { - // Prevent the tree from being deserialized recusrively. - if (m_Deserializing) { - Debug.LogError($"Error: Unable to deserialize {graph}. This can be caused by recursive subtree references."); - return false; - } - - m_Deserializing = true; - m_RuntimeUniqueID = Application.isPlaying ? m_UniqueID : 0; - m_VariableFields = null; - var errorState = false; -#if UNITY_EDITOR - // Deserialize the properties first so it can be used elsewhere. - if (m_LogicNodePropertiesData != null && m_LogicNodePropertiesData.Length > 0) { - m_LogicNodeProperties = new LogicNodeProperties[m_LogicNodePropertiesData.Length]; - for (int i = 0; i < m_LogicNodePropertiesData.Length; ++i) { - try { - m_LogicNodeProperties[i] = m_LogicNodePropertiesData[i].DeserializeFields(MemberVisibility.Public) as LogicNodeProperties; - } catch (Exception e) { - m_LogicNodeProperties[i] = new LogicNodeProperties(); - Debug.LogError($"Error: Unable to load task editor data at index {i} due to exception:\n{e}"); - } - } - } else { - m_LogicNodeProperties = null; - } - if (m_EventNodePropertiesData != null && m_EventNodePropertiesData.Length > 0) { - m_EventNodeProperties = new NodeProperties[m_EventNodePropertiesData.Length]; - for (int i = 0; i < m_EventNodePropertiesData.Length; ++i) { - m_EventNodeProperties[i] = m_EventNodePropertiesData[i].DeserializeFields(MemberVisibility.Public) as NodeProperties; - } - } else { - m_EventNodeProperties = null; - } - if (m_GroupPropertiesData != null && m_GroupPropertiesData.Length > 0) { - m_GroupProperties = new GroupProperties[m_GroupPropertiesData.Length]; - for (int i = 0; i < m_GroupPropertiesData.Length; ++i) { - m_GroupProperties[i] = m_GroupPropertiesData[i].DeserializeFields(MemberVisibility.Public) as GroupProperties; - } - } else { - m_GroupProperties = null; - } -#endif - DeserializeSharedVariables(graph, forceSharedVariables, canDeepCopyVariables, sharedVariableOverrides); - - // The disabled node indicies need to be deserialized before the nodes. - if (m_DisabledEventNodesData != null && m_DisabledEventNodesData.Length > 0 && m_EventTaskData != null) { - m_DisabledEventNodes = new ushort[m_DisabledEventNodesData.Length]; - var offset = 0; - for (int i = 0; i < m_DisabledEventNodesData.Length; ++i) { - m_DisabledEventNodes[i] = (ushort)m_DisabledEventNodesData[i].DeserializeFields(MemberVisibility.Public); - // The node index may no longer be valid. - if (m_DisabledEventNodes[i - offset] >= m_EventTaskData.Length) { - offset++; - } - } - if (offset > 0) { - Array.Resize(ref m_DisabledEventNodes, m_DisabledEventNodes.Length - offset); - } - } else { - m_DisabledEventNodes = null; - } - if (m_DisabledLogicNodesData != null && m_DisabledLogicNodesData.Length > 0 && m_TaskData != null) { - m_DisabledLogicNodes = new ushort[m_DisabledLogicNodesData.Length]; - var offset = 0; - for (int i = 0; i < m_DisabledLogicNodesData.Length; ++i) { - m_DisabledLogicNodes[i - offset] = (ushort)m_DisabledLogicNodesData[i].DeserializeFields(MemberVisibility.Public); - // The node index may no longer be valid. - if (m_DisabledLogicNodes[i - offset] >= m_TaskData.Length) { - offset++; - } - } - if (offset > 0) { - Array.Resize(ref m_DisabledLogicNodes, m_DisabledLogicNodes.Length - offset); - } - } else { - m_DisabledLogicNodes = null; - } - - ResizableArray taskReferences = null; - if (m_SubtreeNodesReference != null) { - m_SubtreeNodesReference.Clear(); - } - if (m_TaskData != null && m_TaskData.Length > 0) { - m_Tasks = new ITreeLogicNode[m_TaskData.Length]; - for (int i = 0; i < m_TaskData.Length; ++i) { - try { - var task = m_TaskData[i].DeserializeFields(MemberVisibility.Public, ValidateDeserializedTypeObject, (object fieldInfoObj, object task, object value) => - { - var validatedValue = ValidateDeserializedObject(fieldInfoObj, task, value, ref m_VariableByNameMap, ref taskReferences, sharedVariableOverrides); - if (validatedValue != null && validatedValue is SharedVariable sharedVariable && sharedVariable.Scope == SharedVariable.SharingScope.Graph) { - if (m_VariableFields == null) { m_VariableFields = new ResizableArray(); } - m_VariableFields.Add(new VariableField() { Field = fieldInfoObj as FieldInfo, Task = task, Name = sharedVariable.Name }); - } - return validatedValue; - }) as ILogicNode; - if (task is ITreeLogicNode treeLogicNode) { - m_Tasks[i] = treeLogicNode; - } else if (task is ILogicNode) { - Debug.LogError($"Error: The task {m_TaskData[i].ObjectType} at index {i} must implement ITreeLogicNode."); - } - } catch (Exception e) { - Debug.LogError($"Error: Unable to load task {m_TaskData[i].ObjectType} at index {i} due to exception:\n{e}"); - } - - // Account for tasks where the object no longer exists. - if (m_Tasks[i] == null) { -#if UNITY_EDITOR - if (m_LogicNodeProperties[i].Data.IsParent) { - m_Tasks[i] = new UnknownParentTaskNode(m_TaskData[i].ObjectType); - } else { - m_Tasks[i] = new UnknownTaskNode(m_TaskData[i].ObjectType); - } - m_Tasks[i].Index = (ushort)i; - m_Tasks[i].ParentIndex = m_LogicNodeProperties[i].Data.ParentIndex; - m_Tasks[i].SiblingIndex = m_LogicNodeProperties[i].Data.SiblingIndex; -#else - if (i + 1 < m_Tasks.Length && m_Tasks[i + 1] != null && m_Tasks[i + 1].ParentIndex == i) { - m_Tasks[i] = new UnknownParentTaskNode(m_TaskData[i].ObjectType); - } else { - m_Tasks[i] = new UnknownTaskNode(m_TaskData[i].ObjectType); - } - m_Tasks[i].Index = (ushort)i; -#endif - } - - // The RuntimeIndex is assigned later when the tree is initialized. - m_Tasks[i].RuntimeIndex = ushort.MaxValue; -#if UNITY_EDITOR - // Sanity checks. - if (m_Tasks[i].Index >= m_TaskData.Length) { m_Tasks[i].Index = (ushort)i; } - if (m_Tasks[i].ParentIndex != ushort.MaxValue && m_Tasks[i].ParentIndex >= m_TaskData.Length) { m_Tasks[i].ParentIndex = ushort.MaxValue; } - if (m_Tasks[i].SiblingIndex != ushort.MaxValue && m_Tasks[i].SiblingIndex >= m_TaskData.Length) { m_Tasks[i].SiblingIndex = ushort.MaxValue; } -#endif - - if (injectSubtrees) { - // If the previous task is a parent the current task has to be a child otherwise the tree is in an error state. The error will also occur - // if there is only one task and that task is a parent task. - if ((m_Tasks[i].ParentIndex != ushort.MaxValue && (i > 0 && m_Tasks[i - 1] is IParentNode && m_Tasks[i].ParentIndex != m_Tasks[i - 1].Index)) || (m_Tasks[i] is IParentNode && i + 1 == m_Tasks.Length)) { - Debug.LogError($"Error: {graph} contains the parent task {m_Tasks[i].GetType().Name} which does not have any children. All parent tasks must contain at least one child.", graph.Parent); - errorState = true; - continue; - } - - // Subtrees will be evaluated after all tasks are assigned. - if (m_Tasks[i] is ISubtreeReference subtreeReference) { - // Subtrees can be nested. - subtreeReference.EvaluateSubtrees(graphComponent); - var subtrees = subtreeReference.Subtrees; - if (subtrees != null) { - // The parent must be able to accept the number of subtrees that there are. - var parentIndex = m_Tasks[i].ParentIndex; - IParentNode parentNode = null; - if (parentIndex != ushort.MaxValue) { - parentNode = m_Tasks[parentIndex] as IParentNode; - } - - if ((parentNode == null && subtrees.Length > 1) || (parentNode != null && subtrees.Length > parentNode.MaxChildCount)) { - Debug.LogError($"Error: {graph} on object {graph.Parent} contains multiple subtrees as the starting task or as a child of a parent task which cannot contain so many children (such as a decorator).", graph.Parent); - errorState = true; - continue; - } - - var deserializedNodes = new ITreeLogicNode[subtrees.Length][]; - for (int j = 0; j < subtrees.Length; ++j) { - if (subtrees[j] == null) { - continue; - } - if (!subtrees[j].Deserialize(graphComponent, force && !subtrees[j].Pooled, forceSharedVariables && !subtrees[j].Pooled, true, true, subtreeReference.SharedVariableOverrides)) { - errorState = true; - break; - }; - if (subtrees[j].Data.m_VariableFields != null && subtrees[j].Data.m_VariableFields.Count > 0) { - if (m_VariableFields == null) { m_VariableFields = new ResizableArray(); ; } - m_VariableFields.AddRange(subtrees[j].Data.m_VariableFields); - } - // Keep a reference to the deserialized nodes. This will ensure they are unique and do not get overwritten. - deserializedNodes[j] = subtrees[j].TreeLogicNodes; - - // Add any new subtree variables to the current tree. - if (subtrees[j].SharedVariables != null) { - // In order to reduce allocations the first loop will determine the number of variables that need to be added. - var length = subtrees[j].SharedVariables.Length; - var variableCount = 0; - for (int k = 0; k < length; ++k) { - var subtreeVariable = subtrees[j].SharedVariables[k]; - if (GetVariable(graph, subtreeVariable.Name, SharedVariable.SharingScope.Graph) == null) { - variableCount++; - } - } - - // And the second loop will actually add the variables. - if (variableCount > 0) { - var insertIndex = 0; - if (m_SharedVariables == null) { - m_SharedVariables = new SharedVariable[variableCount]; - m_VariableByNameMap = new Dictionary(); - } else { - insertIndex = m_SharedVariables.Length; - Array.Resize(ref m_SharedVariables, m_SharedVariables.Length + variableCount); - } - for (int k = 0; k < length; ++k) { - var subtreeVariable = subtrees[j].SharedVariables[k]; - if (!m_VariableByNameMap.ContainsKey(new VariableAssignment(subtreeVariable.Name, SharedVariable.SharingScope.Graph))) { - m_SharedVariables[insertIndex] = subtreeVariable; - m_VariableByNameMap.Add(new VariableAssignment(subtreeVariable.Name, SharedVariable.SharingScope.Graph), subtreeVariable); - insertIndex++; - } - } - } - } - } - - // Do not add the subtree if it causes an error. - if (!errorState) { - if (m_SubtreeNodesReference == null) { m_SubtreeNodesReference = new ResizableArray(); } - m_SubtreeNodesReference.Add(new SubtreeNodesReference() - { - SubtreeReference = subtreeReference, - NodeIndex = (ushort)i, - Subtrees = subtrees, - Nodes = deserializedNodes - }); - } - } - } - } - } - } else { - m_Tasks = null; - } - - // Subtrees should be injected into the tree. - InjectSubtrees(); - - // Add the event tasks after the subtrees have been injected to ensure the connected index is correct. - if (m_EventTaskData != null && m_EventTaskData.Length > 0) { - m_EventTasks = new IEventNode[m_EventTaskData.Length]; - for (int i = 0; i < m_EventTaskData.Length; ++i) { - m_EventTasks[i] = m_EventTaskData[i].DeserializeFields(MemberVisibility.Public, ValidateDeserializedTypeObject, (object fieldInfoObj, object task, object value) => - { - var validatedValue = ValidateDeserializedObject(fieldInfoObj, task, value, ref m_VariableByNameMap, ref taskReferences, sharedVariableOverrides); - if (validatedValue != null && validatedValue is SharedVariable sharedVariable && sharedVariable.Scope == SharedVariable.SharingScope.Graph) { - if (m_VariableFields == null) { m_VariableFields = new ResizableArray(); } - m_VariableFields.Add(new VariableField() { Field = fieldInfoObj as FieldInfo, Task = task, Name = sharedVariable.Name }); - } - return validatedValue; - }) as IEventNode; - - if (m_SubtreeNodesReference != null) { - // A subtree may have injected nodes before the originally connected index. Modify the index to match the injection. - var offset = 0; - for (int j = 0; j < m_SubtreeNodesReference.Count; ++j) { - if (m_SubtreeNodesReference[j].NodeIndex >= m_EventTasks[i].ConnectedIndex) { - break; - } - offset += m_SubtreeNodesReference[j].NodeCount - 1; - } - if (offset > 0) { - m_EventTasks[i].ConnectedIndex += (ushort)offset; - } - } - - if (m_EventTasks[i] == null) { - m_EventTasks[i] = new UnknownEventTask(); - } - } - } else { - m_EventTasks = null; - } - - // After the tree has been deserialized the task references need to be assigned. - AssignTaskReferences(m_Tasks, taskReferences); - - m_Deserializing = false; - - return !errorState; - } - - /// - /// Validates the object type when deserializing. - /// - /// The type of object that should be validated. - /// The field that contains the object. - /// The validated type. - public static Type ValidateDeserializedTypeObject(Type type, FieldInfo field) - { - if (typeof(IList).IsAssignableFrom(type)) { - var elementType = Serializer.GetElementType(type); - if (typeof(ILogicNode).IsAssignableFrom(elementType) && (field == null || field.GetCustomAttribute() == null)) { - return typeof(ushort[]); - } - } else if (typeof(ILogicNode).IsAssignableFrom(type) && (field == null || field.GetCustomAttribute() == null)) { - return typeof(ushort); - } - return type; - } - - /// - /// Validates the object when deserializing. - /// - /// The FieldInfo that is being deserialized. - /// The object being deserialized. - /// The value of the field. - /// A reference to the map between the VariableAssignment and SharedVariable. - /// A reference to the list of task references that need to be resolved later. - /// A list of SharedVariables that should override the current SharedVariable value. - /// The validated object. - public static object ValidateDeserializedObject(object fieldInfoObj, object target, object value, ref Dictionary variableByNameMap, - ref ResizableArray taskReferences, SharedVariableOverride[] sharedVariableOverrides = null) - { - var fieldInfo = fieldInfoObj as FieldInfo; - if (fieldInfo == null) { - return value; - } - - var type = fieldInfo.FieldType; - if (value == null) { - // A SharedVariable object should always exist. - if (!type.IsAbstract && typeof(SharedVariable).IsAssignableFrom(type)) { - return Activator.CreateInstance(type); - } - return null; - } - - if (typeof(IList).IsAssignableFrom(type)) { - var elementType = Serializer.GetElementType(type); - if (typeof(ILogicNode).IsAssignableFrom(elementType) && fieldInfo.GetCustomAttribute() == null) { - // The task reference will be assigned after all of the tasks have been deserialized. - if (taskReferences == null) { taskReferences = new ResizableArray(); } - taskReferences.Add(new TaskAssignment() { Field = fieldInfo, Target = target, Value = value }); - } else if (typeof(SharedVariable).IsAssignableFrom(elementType)) { - var listValue = value as IList; - if (listValue != null) { - for (int i = 0; i < listValue.Count; ++i) { - var sharedVariableElement = listValue[i] as SharedVariable; - if (variableByNameMap != null && sharedVariableElement != null && !string.IsNullOrEmpty(sharedVariableElement.Name)) { - if (variableByNameMap.TryGetValue(new VariableAssignment(sharedVariableElement.Name, sharedVariableElement.Scope), out var mappedSharedVariable)) { - if (Application.isPlaying && sharedVariableElement.Scope == SharedVariable.SharingScope.Dynamic && sharedVariableElement.GetType() != mappedSharedVariable.GetType()) { - Debug.LogError($"Error: The dynamic variables with name {sharedVariableElement.Name} have different types. All dynamic variables must have the same type."); - listValue[i] = sharedVariableElement; - } else { - listValue[i] = GetOverrideVariable(sharedVariableOverrides, mappedSharedVariable, false); - } - } else if (sharedVariableElement.Scope == SharedVariable.SharingScope.Dynamic) { - // New dynamic variables should have the default value. - var sharedVariableValueType = sharedVariableElement.GetType().GetGenericArguments()[0]; - if (sharedVariableValueType.IsValueType) { - sharedVariableElement.SetValue(Activator.CreateInstance(sharedVariableValueType)); - } else { - sharedVariableElement.SetValue(null); - } - - // Dynamic variables are created when the task is deserialized. The variable needs to be added to the mapping so it can be reused. - variableByNameMap.Add(new VariableAssignment(sharedVariableElement.Name, sharedVariableElement.Scope), sharedVariableElement); - listValue[i] = sharedVariableElement; - } - } - - } - return listValue; - } - } - } else if (typeof(ILogicNode).IsAssignableFrom(type) && fieldInfo.GetCustomAttribute() == null) { - // The task reference will be assigned after all of the tasks have been deserialized. - if (taskReferences == null) { taskReferences = new ResizableArray(); } - taskReferences.Add(new TaskAssignment() { Field = fieldInfo, Target = target, Value = value }); - } else if (typeof(SharedVariable).IsAssignableFrom(type)) { - var sharedVariable = value as SharedVariable; - if (variableByNameMap != null && sharedVariable != null && !string.IsNullOrEmpty(sharedVariable.Name)) { - if (variableByNameMap.TryGetValue(new VariableAssignment(sharedVariable.Name, sharedVariable.Scope), out var mappedSharedVariable)) { - if (Application.isPlaying && sharedVariable.Scope == SharedVariable.SharingScope.Dynamic && sharedVariable.GetType() != mappedSharedVariable.GetType()) { - Debug.LogError($"Error: The dynamic variables with name {sharedVariable.Name} have different types. Dynamic variables with the same name must have the same type."); - return sharedVariable; - } - var val = GetOverrideVariable(sharedVariableOverrides, mappedSharedVariable, false); - return val; - } else if (Application.isPlaying && sharedVariable.Scope == SharedVariable.SharingScope.Dynamic) { - // New dynamic variables should have the default value. - var sharedVariableValueType = sharedVariable.GetType().GetGenericArguments()[0]; - if (sharedVariableValueType.IsValueType) { - sharedVariable.SetValue(Activator.CreateInstance(sharedVariableValueType)); - } else { - sharedVariable.SetValue(null); - } - - // Dynamic variables are created when the task is deserialized. The variable needs to be added to the mapping so it can be reused. - variableByNameMap.Add(new VariableAssignment(sharedVariable.Name, sharedVariable.Scope), sharedVariable); - return sharedVariable; - } - } - } - - return value; - } - - /// - /// Deserializes the SharedVariables. This allows the SharedVariables to be deserialized independently. - /// - /// The graph that is being deserialized. - /// Should the variables be forced deserialized? - /// Can the SharedVariables be deep copied? - /// A list of SharedVariables that should override the current SharedVariable value. - /// True if the SharedVariables were deserialized. - public bool DeserializeSharedVariables(IGraph graph, bool force, bool canDeepCopy, SharedVariableOverride[] sharedVariableOverrides = null) - { - // No need to deserialize if the data is already deserialized. - if (!force && (m_SharedVariables != null || m_VariableByNameMap != null -#if UNITY_EDITOR - || m_SharedVariableGroups != null -#endif - )) { - return false; - } - - if (m_SharedVariableData != null && m_SharedVariableData.Length > 0) { - m_SharedVariables = new SharedVariable[m_SharedVariableData.Length]; - for (int i = 0; i < m_SharedVariableData.Length; ++i) { - try { - m_SharedVariables[i] = m_SharedVariableData[i].DeserializeFields(MemberVisibility.Public) as SharedVariable; - } catch (Exception e) { - Debug.LogError($"Error: Unable to load variable {m_SharedVariableData[i].ObjectType} at index {i} due to exception:\n{e}"); - } - - if (m_SharedVariables[i] == null) { - var unknownSharedVariableData = m_SharedVariableData[i]; - unknownSharedVariableData.ObjectType = typeof(UnknownSharedVariable).FullName; - m_SharedVariables[i] = unknownSharedVariableData.DeserializeFields(MemberVisibility.Public) as SharedVariable; - - Debug.LogError($"Error: Unable to deserialize SharedVariable {m_SharedVariables[i].Name} of type {m_SharedVariableData[i].ObjectType}."); - } - - // The override variable can set a value specific for the subtree. - if (Application.isPlaying) { - m_SharedVariables[i].Initialize(); - - var overrideVariable = GetOverrideVariable(sharedVariableOverrides, m_SharedVariables[i], true); - // If the overridden scope is self then only the value should be overridden and not the SharedVariable reference. - if (overrideVariable != null && overrideVariable.Scope == SharedVariable.SharingScope.Self) { - m_SharedVariables[i].SetValue(overrideVariable.GetValue()); - } - } - } - } else { - m_SharedVariables = null; - } - m_VariableByNameMap = PopulateSharedVariablesMapping(graph, canDeepCopy); - -#if UNITY_EDITOR - if (m_SharedVariableGroupsData != null && m_SharedVariableGroupsData.Length > 0) { - m_SharedVariableGroups = new SharedVariableGroup[m_SharedVariableGroupsData.Length]; - for (int i = 0; i < m_SharedVariableGroupsData.Length; ++i) { - m_SharedVariableGroups[i] = m_SharedVariableGroupsData[i].DeserializeFields(MemberVisibility.Public) as SharedVariableGroup; - } - } else { - m_SharedVariableGroups = null; - } -#endif - - return true; - } - - /// - /// Returns the override SharedVariable from the source SharedVariable. - /// - /// The list of override SharedVariables. - /// The variable that should be overridden. - /// Is the method being called when the variables are being deserialized? - /// The override SharedVariable (can be null). - private static SharedVariable GetOverrideVariable(SharedVariableOverride[] sharedVariableOverrides, SharedVariable graphVariable, bool deserialize) - { - if (sharedVariableOverrides == null) { - return deserialize ? null : graphVariable; - } - - for (int i = 0; i < sharedVariableOverrides.Length; ++i) { - var overrideVariable = sharedVariableOverrides[i].Override; - // Empty variables indicate that the variable should not be overridden. - if (overrideVariable == null || overrideVariable.Scope == SharedVariable.SharingScope.Empty) { - continue; - } - - // The override variable should be used if the name and the type matches. - var sourceVariable = sharedVariableOverrides[i].Source; - if (sourceVariable.GetType() != graphVariable.GetType() || sourceVariable.Name != graphVariable.Name) { - continue; - } - - // If the scope is self then the graphVariable value should be updated instead of completely replaced. - if (overrideVariable.Scope == SharedVariable.SharingScope.Self) { - graphVariable.SetValue(overrideVariable.GetValue()); - return graphVariable; - } - - return overrideVariable; - } - - return graphVariable; - } - - /// - /// Populates the SharedVariable Mapping at runtime. - /// - /// The graph that is being deserialized. - /// Can the SharedVariables be deep copied? - /// A reference to the map between the VariableAssignment and SharedVariable. - public static Dictionary PopulateSharedVariablesMapping(IGraph graph, bool canDeepCopy) - { - var variableByNameMap = new Dictionary(); - PopulateSharedVariablesMapping(graph, graph.SharedVariables, SharedVariable.SharingScope.Graph, canDeepCopy, ref variableByNameMap); - - if (graph.Parent is GameObject parentGameObject) { - var gameObjectSharedVariablesContainer = parentGameObject.GetComponent(); - if (gameObjectSharedVariablesContainer != null) { - gameObjectSharedVariablesContainer.Deserialize(false); - PopulateSharedVariablesMapping(graph, gameObjectSharedVariablesContainer.SharedVariables, SharedVariable.SharingScope.GameObject, canDeepCopy, ref variableByNameMap); - } - } - - var sceneSharedVariablesContainer = SceneSharedVariables.Instance; - if (sceneSharedVariablesContainer != null) { - sceneSharedVariablesContainer.Deserialize(false); - PopulateSharedVariablesMapping(graph, sceneSharedVariablesContainer.SharedVariables, SharedVariable.SharingScope.Scene, canDeepCopy, ref variableByNameMap); - } - - var projectSharedVariablesContainer = ProjectSharedVariables.Instance; - if (projectSharedVariablesContainer != null) { - projectSharedVariablesContainer.Deserialize(false); - PopulateSharedVariablesMapping(graph, projectSharedVariablesContainer.SharedVariables, SharedVariable.SharingScope.Project, canDeepCopy, ref variableByNameMap); - } - return variableByNameMap; - } - - /// - /// Populates the name variables mapping with the specified SharedVariables. - /// - /// The graph that is being deserialized. - /// The SharedVariables that should be populated. - /// The scope of SharedVariables. - /// Can the SharedVariables be deep copied? - /// A reference to the map between the VariableAssignment and SharedVariable. - private static void PopulateSharedVariablesMapping(IGraph graph, SharedVariable[] sharedVariables, SharedVariable.SharingScope scope, bool canDeepCopy, ref Dictionary variableByNameMap) - { - if (sharedVariables == null) { - return; - } - - var deepCopy = canDeepCopy && graph is Subtree && scope == SharedVariable.SharingScope.Graph; // Deep copy variables so the instance is not bound to the subtree. - for (int i = 0; i < sharedVariables.Length; ++i) { - if (sharedVariables[i] == null) { - continue; - } - if (variableByNameMap.ContainsKey(new VariableAssignment(sharedVariables[i].Name, scope))) { -#if UNITY_EDITOR - Debug.LogWarning("Warning: Multiple SharedVariables with the same name have been added. Please email support@opsive.com with the steps to reproduce this warning. Thank you."); -#endif - continue; - } - var val = new VariableAssignment(sharedVariables[i].Name, scope); - variableByNameMap.Add(val, deepCopy ? CopyUtility.DeepCopy(sharedVariables[i]) as SharedVariable : sharedVariables[i]); - } - } - - /// - /// When the behavior tree loads not all tasks will be deserialized instantly. TaskA may reference TaskB but TaskB hasn't - /// been deserialized yet. The TaskAssignment data structure will store all of the references that need to be restored after - /// the behavior tree has fully been deserialized. - /// - /// The tasks that belong to the graph. - /// The tasks that should be referenced. - public static void AssignTaskReferences(ILogicNode[] tasks, ResizableArray taskReferences) - { - if (taskReferences == null) { - return; - } - - for (int i = 0; i < taskReferences.Count; ++i) { - var taskReference = taskReferences[i]; - var fieldType = taskReference.Field.FieldType; - object value = null; - - // The field can be a list or single value. - if (typeof(IList).IsAssignableFrom(fieldType)) { - var elements = (IList)taskReferences[i].Value; - if (fieldType.IsArray) { - // The field type is an array. Create a new array with all of the task instances. - var array = Array.CreateInstance(Serializer.GetElementType(fieldType), elements.Count) as ILogicNode[]; - for (int j = 0; j < array.Length; ++j) { - var index = (ushort)elements[j]; - if (index < tasks.Length) { - array[j] = tasks[index]; - } - } - value = array; - } else { - // The field type is a list. Create a new list with all of the task instances. - IList taskList; - if (fieldType.IsGenericType) { - taskList = Activator.CreateInstance(typeof(List<>).MakeGenericType(Serializer.GetElementType(fieldType))) as IList; - } else { - taskList = Activator.CreateInstance(fieldType) as IList; - } - - for (int j = 0; j < elements.Count; ++j) { - var index = (ushort)elements[j]; - if (index < tasks.Length) { - taskList.Add(tasks[index]); - } - } - value = taskList; - } - } else { // Single ILogicNode value. - var index = (ushort)taskReference.Value; - if (index < tasks.Length) { - value = tasks[index]; - } - } - if (value != null) { - taskReference.Field.SetValue(taskReference.Target, value); - } - } - } - - /// - /// Injects the subtree into the task list. - /// - private void InjectSubtrees() - { - if (m_SubtreeNodesReference == null || m_SubtreeNodesReference.Count == 0) { - return; - } - - // The behavior tree must generate a new ID when subtrees are injected. - m_RuntimeUniqueID = Guid.NewGuid().GetHashCode(); - - var taskCount = 0; - var subtreeReferenceCount = 0; - var subtreeAssignments = new ResizableArray(); - var lastParentIndex = m_Tasks[m_SubtreeNodesReference[0].NodeIndex].ParentIndex; - var parentIndexOffset = 0; - for (int i = 0; i < m_SubtreeNodesReference.Count; ++i) { - var subtreeReference = m_Tasks[m_SubtreeNodesReference[i].NodeIndex] as ISubtreeReference; - var subtrees = subtreeReference.Subtrees; - if (subtrees != null) { - var indexOffset = (ushort)0; // The index offset is relative to each individual ISubtreeReference task. - - // The parent index will change based on the number of tasks that have been added. - var parentIndex = m_Tasks[m_SubtreeNodesReference[i].NodeIndex].ParentIndex; - if (parentIndex != ushort.MaxValue && (parentIndex > lastParentIndex || (i > 0 && lastParentIndex == ushort.MaxValue))) { - parentIndexOffset = (ushort)(taskCount - subtreeReferenceCount); - lastParentIndex = parentIndex; - } else if (parentIndex < lastParentIndex) { - parentIndexOffset = 0; - lastParentIndex = parentIndex; - } - - // Calculate the parent index offset based on previously injected subtrees - for (int j = 0; j < subtrees.Length; ++j) { - if (subtrees[j] == null || subtrees[j].LogicNodes == null || subtrees[j].EventNodes == null) { - continue; - } - - // The subtree should start from the start node. - var startNode = subtrees[j].GetEventNode(typeof(Start)); // Returns (IEventNode, index). - if (startNode.Item1 == null || startNode.Item1.ConnectedIndex == ushort.MaxValue || !subtrees[j].IsNodeEnabled(false, startNode.Item2)) { - continue; - } - - var firstNode = m_SubtreeNodesReference[i].Nodes[j][startNode.Item1.ConnectedIndex]; - var subtreeNodeCount = GetChildCount(firstNode, m_SubtreeNodesReference[i].Nodes[j]) + 1; // firstNode should be included in addition to the children. - taskCount += subtreeNodeCount; - subtreeAssignments.Add(new SubtreeAssignment() - { - ReferenceIndex = i, - NodeIndex = m_SubtreeNodesReference[i].NodeIndex, - SubtreeIndex = j, - Subtree = subtrees[j], - NodeCount = (ushort)subtreeNodeCount, - IndexOffset = indexOffset, - ParentIndex = (ushort)(parentIndex + parentIndexOffset), - SiblingIndex = m_Tasks[m_SubtreeNodesReference[i].NodeIndex].SiblingIndex, -#if UNITY_EDITOR - NodePropertiesPosition = m_LogicNodeProperties[m_SubtreeNodesReference[i].NodeIndex].Position, - Collapsed = m_LogicNodeProperties[m_SubtreeNodesReference[i].NodeIndex].Collapsed -#endif - }); - indexOffset += (ushort)subtreeNodeCount; - } - - // Update the parent index offset for the next subtree reference - if (indexOffset > 0) { // Subtree References may not contain any valid subtrees. - subtreeReferenceCount++; - } - var subtreeNodesReferenceOrig = m_SubtreeNodesReference[i]; - subtreeNodesReferenceOrig.NodeCount = indexOffset; - m_SubtreeNodesReference[i] = subtreeNodesReferenceOrig; - } - } - - if (taskCount == 0) { - return; - } - - var targetCount = m_Tasks.Length + taskCount - subtreeReferenceCount; - var originalTaskCount = m_Tasks.Length; - if (m_Tasks.Length != targetCount) { - Array.Resize(ref m_Tasks, targetCount); -#if UNITY_EDITOR - Array.Resize(ref m_LogicNodeProperties, targetCount); -#endif - } - - // Make space for all of the subtree tasks. - var addedTasks = 0; - for (int i = 0; i < subtreeAssignments.Count; ++i) { - var subtreeIndex = (ushort)(subtreeAssignments[i].NodeIndex + addedTasks); - var subtreeTaskCount = subtreeAssignments[i].NodeCount - (subtreeAssignments[i].IndexOffset == 0 ? 1 : 0); - if (subtreeTaskCount > 0) { // subtreeTaskCount will be zero if a single task replaces the reference task. - for (int j = originalTaskCount - 1 + addedTasks; j > subtreeIndex; --j) { - var node = m_Tasks[j]; - node.Index += (ushort)subtreeTaskCount; - if (node.ParentIndex > subtreeIndex && node.ParentIndex != ushort.MaxValue) { - node.ParentIndex += (ushort)subtreeTaskCount; - } - if (node.SiblingIndex > subtreeIndex && node.SiblingIndex != ushort.MaxValue) { - node.SiblingIndex += (ushort)subtreeTaskCount; - } - m_Tasks[j + subtreeTaskCount] = node; - m_Tasks[j] = null; -#if UNITY_EDITOR - m_LogicNodeProperties[j + subtreeTaskCount] = m_LogicNodeProperties[j]; -#endif - } - - // The parents need to adjust their sibling index offsets for the newly added nodes. This should only be done with an index offset of 0 - // as grouped subtrees have the same parents. - if (subtreeAssignments[i].IndexOffset == 0) { - var parentIndex = m_Tasks[subtreeIndex].ParentIndex; - while (parentIndex != ushort.MaxValue) { - var parentNode = m_Tasks[parentIndex]; - if (parentNode.SiblingIndex != ushort.MaxValue) { - parentNode.SiblingIndex += (ushort)subtreeTaskCount; - m_Tasks[parentIndex] = parentNode; - } - parentIndex = parentNode.ParentIndex; - } - } - - // Any disabled nodes after the insertion needs to shift. - var lastDisabledNodeIndex = 0; - if (m_DisabledLogicNodes != null) { - for (int j = 0; j < m_DisabledLogicNodes.Length; ++j) { - if (m_DisabledLogicNodes[j] > subtreeIndex) { - m_DisabledLogicNodes[j] += (ushort)subtreeTaskCount; - } else { // Remember the last index that was greater than the subtree index so any disabled subtree nodes can be inserted. - lastDisabledNodeIndex = j + 1; - } - } - } - - // If the parent reference task is disabled then all subtree nodes should be disabled. - var subtreeDisabledLogicNodes = subtreeAssignments[i].Subtree.DisabledLogicNodes; - if (!IsNodeEnabled(true, m_SubtreeNodesReference[subtreeAssignments[i].ReferenceIndex].NodeIndex)) { - subtreeDisabledLogicNodes = new ushort[subtreeAssignments[i].NodeCount]; - for (ushort j = 0; j < subtreeDisabledLogicNodes.Length; ++j) { - subtreeDisabledLogicNodes[j] = j; - } - } - - // The subtree may have disabled tasks. - if (subtreeDisabledLogicNodes != null && subtreeDisabledLogicNodes.Length > 0) { - var subtreeDisabledLength = subtreeDisabledLogicNodes.Length; - // Ensure all of the disabled logic nodes have been transferred. - for (int j = subtreeDisabledLength - 1; j >= 0; --j) { - if (subtreeDisabledLogicNodes[j] > subtreeTaskCount) { - subtreeDisabledLength--; - } - } - - if (subtreeDisabledLength > 0) { - if (m_DisabledLogicNodes == null) { - m_DisabledLogicNodes = new ushort[subtreeDisabledLength]; - } else { - Array.Resize(ref m_DisabledLogicNodes, m_DisabledLogicNodes.Length + subtreeDisabledLength); - } - var originalLength = m_DisabledLogicNodes.Length - subtreeDisabledLength; - for (int j = lastDisabledNodeIndex; j < originalLength; ++j) { - m_DisabledLogicNodes[j + subtreeDisabledLength] = m_DisabledLogicNodes[j]; - } - for (int j = 0; j < subtreeDisabledLength; ++j) { - if (subtreeDisabledLogicNodes[j] > subtreeTaskCount) { - continue; - } - m_DisabledLogicNodes[lastDisabledNodeIndex + j] = (ushort)(subtreeIndex + subtreeDisabledLogicNodes[j]); - } - } - } - } - // Tasks were added to the tree. Update the tree to the correct indicies. - var subtreeAssignment = subtreeAssignments[i]; - subtreeAssignment.IndexOffset = (ushort)(addedTasks + (subtreeAssignments[i].IndexOffset == 0 ? 0 : 1)); - subtreeAssignments[i] = subtreeAssignment; - - addedTasks += subtreeTaskCount; - } - - // Populate the tasks with the subtree. - for (int i = 0; i < subtreeAssignments.Count; ++i) { - var subtreeIndex = (ushort)(subtreeAssignments[i].NodeIndex + subtreeAssignments[i].IndexOffset); - var subtreeParentIndex = subtreeAssignments[i].ParentIndex; -#if UNITY_EDITOR - var positionOffset = Vector2.zero; -#endif - for (int j = 0; j < subtreeAssignments[i].NodeCount; ++j) { - var node = m_SubtreeNodesReference[subtreeAssignments[i].ReferenceIndex].Nodes[subtreeAssignments[i].SubtreeIndex][j]; - // The node needs to be copied if it isn't pooled to prevent the same node from being used in multiple trees. - if (!m_SubtreeNodesReference[subtreeAssignments[i].ReferenceIndex].Subtrees[subtreeAssignments[i].SubtreeIndex].Pooled) { - var copiedNode = CopyUtility.DeepCopy(node) as ITreeLogicNode; - if (m_VariableFields != null && m_VariableFields.Count > 0) { - // Replace the old node reference with the updated reference. - var nodeMap = new Dictionary(); - nodeMap.Add(node, copiedNode); - if (node is IContainerNode containerNode) { - if (containerNode.Nodes != null) { - var copiedContainerNode = copiedNode as IContainerNode; - for (int k = 0; k < containerNode.Nodes.Length; ++k) { - nodeMap.Add(containerNode.Nodes[k], copiedContainerNode.Nodes[k]); - } - } - } - for (int k = 0; k < m_VariableFields.Count; ++k) { - if (nodeMap.TryGetValue(m_VariableFields[k].Task, out var copiedTask)) { - var variableField = m_VariableFields[k]; - variableField.Task = copiedTask; - m_VariableFields[k] = variableField; - } - } - } - node = copiedNode; - } - node.Index = (ushort)(subtreeIndex + j); - node.RuntimeIndex = ushort.MaxValue; - if (j == 0) { - node.ParentIndex = subtreeParentIndex; - subtreeParentIndex = node.Index; // The subsequent subtree tasks should use the first subtree task as the parent reference. - // If there's a next subtree from the same reference task, point to its first node. Otherwise, use the original SiblingIndex. - if (i + 1 < subtreeAssignments.Count && subtreeAssignments[i + 1].ReferenceIndex == subtreeAssignments[i].ReferenceIndex) { - // Point to the first node of the next subtree. - var nextSubtreeIndex = (ushort)(subtreeAssignments[i + 1].NodeIndex + subtreeAssignments[i + 1].IndexOffset); - node.SiblingIndex = nextSubtreeIndex; - } else { - // Use the original SiblingIndex from the reference task. - node.SiblingIndex = subtreeAssignments[i].SiblingIndex != ushort.MaxValue ? (ushort)(subtreeIndex + subtreeAssignments[i].NodeCount) : ushort.MaxValue; - } - } else { - // Adjust the subsequent subtree tasks by the location of the insertion. - node.ParentIndex += subtreeParentIndex; - if (node.SiblingIndex != ushort.MaxValue) { - node.SiblingIndex += subtreeIndex; - } - } - m_Tasks[subtreeIndex + j] = node; -#if UNITY_EDITOR - var nodeProperties = CopyUtility.DeepCopy(subtreeAssignments[i].Subtree.LogicNodeProperties[j]) as LogicNodeProperties; - nodeProperties.GuidString = Guid.NewGuid().ToString(); - if (j == 0) { - // Keep the tasks in the same relative position as the subtree reference. - positionOffset = subtreeAssignments[i].NodePropertiesPosition - subtreeAssignments[i].Subtree.LogicNodeProperties[j].Position; - } else { - // Apply a small offset for stacked subtrees so they are not directly overlapping. - positionOffset += new Vector2(2, 2); - } - nodeProperties.Position += positionOffset; - nodeProperties.Collapsed = subtreeAssignments[i].Collapsed; - m_LogicNodeProperties[subtreeIndex + j] = nodeProperties; -#endif - } - } - } - - /// - /// Returns the Node of the specified type. - /// - /// The type of Node that should be retrieved. - /// The Node of the specified type (can be null). - public ITreeLogicNode GetNode(Type type) - { - if (m_Tasks == null) { - return null; - } - - for (int i = 0; i < m_Tasks.Length; ++i) { - if (m_Tasks[i].GetType() == type) { - return m_Tasks[i]; - } - } - return null; - } - - /// - /// Returns the event node of the specified type. - /// - /// The type of EventNode that should be retrieved. - /// The EventNode of the specified type (can be null). If the node is found the index will also be returned. - public (IEventNode, ushort) GetEventNode(Type type) - { - if (m_EventTasks == null) { - return (null, ushort.MaxValue); - } - - for (ushort i = 0; i < m_EventTasks.Length; ++i) { - if (m_EventTasks[i].GetType() == type) { - return (m_EventTasks[i], i); - } - } - return (null, ushort.MaxValue); - } - - /// - /// Returns the total number of children belonging to the specified node. - /// - /// The node to retrieve the child count of. - /// All of the nodes that belong to the graph. - /// The total number of children belonging to the specified node. - public int GetChildCount(ITreeLogicNode node, ITreeLogicNode[] nodes) - { - if (node.SiblingIndex != ushort.MaxValue) { - return node.SiblingIndex - node.Index - 1; - } - - if (node.Index + 1 == nodes.Length) { - return 0; - } - - var child = nodes[node.Index + 1]; - if (child.ParentIndex != node.Index) { - return 0; - } - - // Determine the child count based off of the sibling index. - while (child.SiblingIndex != ushort.MaxValue) { - child = nodes[child.SiblingIndex]; - } - - return child.Index - node.Index + GetChildCount(child, nodes); - } - - /// - /// Reevaluates the SubtreeReferences by calling the EvaluateSubtrees method. - /// - /// The component that the graph is being deserialized from. - /// The graph that is being reevaluated. - /// Action that should be done before the tasks are swapped. - /// True if the subtree was reevaluated. - public bool ReevaluateSubtreeReferences(IGraphComponent graphComponent, IGraph graph, Action onBeforeReevaluationSwap) - { - // The tree must contain tasks. - if (!Application.isPlaying || m_Tasks == null || m_Tasks.Length == 0) { - return false; - } - - // Subtree references must exist. - if (m_SubtreeNodesReference == null || m_SubtreeNodesReference.Count == 0) { - return false; - } - - if (onBeforeReevaluationSwap != null) { - onBeforeReevaluationSwap(); - } - - // Find the new reevaluated nodes. - for (int i = m_SubtreeNodesReference.Count - 1; i >= 0; --i) { - var subtreeNodesReference = m_SubtreeNodesReference[i]; - var subtreeReference = m_SubtreeNodesReference[i].SubtreeReference; - subtreeReference.EvaluateSubtrees(graphComponent); - var reevaluatedSubtrees = subtreeReference.Subtrees; - ITreeLogicNode[][] reevaluatedNodes; - if (reevaluatedSubtrees == null) { - continue; - } - - // The parent must be able to accept the number of subtrees that there are. - var parentIndex = m_Tasks[m_SubtreeNodesReference[i].NodeIndex].ParentIndex; - IParentNode parentNode = null; - if (parentIndex != ushort.MaxValue) { - parentNode = m_Tasks[parentIndex] as IParentNode; - } - - if ((parentNode == null && reevaluatedSubtrees.Length > 1) || (parentNode != null && reevaluatedSubtrees.Length > parentNode.MaxChildCount)) { - Debug.LogError($"Error: the reevaluated graph contains multiple subtrees as the starting task or as a child of a parent task which cannot contain so many children (such as a decorator)."); - continue; - } - - reevaluatedNodes = new ITreeLogicNode[reevaluatedSubtrees.Length][]; - var errorState = false; - for (int j = 0; j < reevaluatedSubtrees.Length; ++j) { - if (reevaluatedSubtrees[j] == null) { - continue; - } - if (!reevaluatedSubtrees[j].Deserialize(graphComponent, true, true, true, true, subtreeReference.SharedVariableOverrides)) { - errorState = true; - break; - }; - // Keep a reference to the deserialized nodes. This will ensure they are unique and do not get overwritten. - reevaluatedNodes[j] = reevaluatedSubtrees[j].TreeLogicNodes; - } - if (errorState) { - continue; - } - - // The subtree index will be offsetted from the original index value if there are multiple subtree references. - var nodeOffset = 0; - for (int j = i - 1; j >= 0; --j) { - nodeOffset += m_SubtreeNodesReference[j].NodeCount - 1; - } - - // All of the reevaluated nodes have been determined. Remove the old subtree nodes. - var nodeCount = m_SubtreeNodesReference[i].NodeCount; - - // Replace the first node with the subtree reference, and remove the rest of the added nodes. - m_Tasks[m_SubtreeNodesReference[i].NodeIndex + nodeOffset] = m_SubtreeNodesReference[i].SubtreeReference as ITreeLogicNode; - for (int j = m_SubtreeNodesReference[i].NodeIndex + nodeOffset + 1; j < m_Tasks.Length - nodeCount + 1; ++j) { - m_Tasks[j] = m_Tasks[j + nodeCount - 1]; - m_Tasks[j].Index = (ushort)j; - if (m_Tasks[j].ParentIndex != ushort.MaxValue && m_Tasks[j].ParentIndex > m_SubtreeNodesReference[i].NodeIndex + nodeOffset) { - m_Tasks[j].ParentIndex -= (ushort)(nodeCount - 1); - } - if (m_Tasks[j].SiblingIndex != ushort.MaxValue && m_Tasks[j].SiblingIndex > m_SubtreeNodesReference[i].NodeIndex + nodeOffset) { - m_Tasks[j].SiblingIndex -= (ushort)(nodeCount - 1); - } - -#if UNITY_EDITOR - m_LogicNodeProperties[j] = m_LogicNodeProperties[j + nodeCount - 1]; -#endif - } - - // Restore the original sibling index value for parent nodes. - parentIndex = m_Tasks[m_SubtreeNodesReference[i].NodeIndex + nodeOffset].ParentIndex; - while (parentIndex != ushort.MaxValue) { - var parentTask = m_Tasks[parentIndex]; - if (parentTask.SiblingIndex != ushort.MaxValue) { - parentTask.SiblingIndex -= (ushort)(nodeCount - 1); - m_Tasks[parentIndex] = parentTask; - } - parentIndex = parentTask.ParentIndex; - } - - // Restore the original ConnectedIndex value. - if (m_EventTasks != null) { - for (int j = 0; j < m_EventTasks.Length; ++j) { - if (m_EventTasks[j].ConnectedIndex > m_SubtreeNodesReference[i].NodeIndex) { - m_EventTasks[j].ConnectedIndex -= (ushort)(nodeCount - 1); - } - } - } - Array.Resize(ref m_Tasks, m_Tasks.Length - nodeCount + 1); -#if UNITY_EDITOR - Array.Resize(ref m_LogicNodeProperties, m_LogicNodeProperties.Length - nodeCount + 1); -#endif - - // Replace the old nodes with the new nodes. - subtreeNodesReference.Nodes = reevaluatedNodes; - m_SubtreeNodesReference[i] = subtreeNodesReference; - - // The disabled nodes also need to be removed. - var subtrees = m_SubtreeNodesReference[i].Subtrees; - var disabledNodesCount = 0; - for (int j = 0; j < subtrees.Length; ++j) { - if (subtrees[j].DisabledLogicNodes == null || subtrees[j].DisabledLogicNodes.Length == 0) { - continue; - } - disabledNodesCount += subtrees[j].DisabledLogicNodes.Length; - } - if (disabledNodesCount > 0) { - if (m_DisabledLogicNodes.Length > disabledNodesCount) { // The local tree may not have any disabled nodes. - for (int j = 0; j < m_DisabledLogicNodes.Length - disabledNodesCount; ++j) { - if (m_DisabledLogicNodes[j] >= m_SubtreeNodesReference[i].NodeIndex + nodeOffset + 1) { - m_DisabledLogicNodes[j] = (ushort)(m_DisabledLogicNodes[j + disabledNodesCount] - nodeCount + 1); - } - } - } - Array.Resize(ref m_DisabledLogicNodes, m_DisabledLogicNodes.Length - disabledNodesCount); - } - } - - // The tasks array has been restored to the original set of nodes with the ISubtreeReference. Inject the new nodes. - InjectSubtrees(); - - // Modify the ConnectedIndex to match the injection. - if (m_EventTasks != null && m_SubtreeNodesReference != null) { - for (int i = 0; i < m_EventTasks.Length; ++i) { - var offset = 0; - for (int j = 0; j < m_SubtreeNodesReference.Count; ++j) { - if (m_SubtreeNodesReference[j].NodeIndex >= m_EventTasks[i].ConnectedIndex) { - break; - } - offset += m_SubtreeNodesReference[j].NodeCount - 1; - } - if (offset != 0) { - m_EventTasks[i].ConnectedIndex += (ushort)offset; - } - } - } - - return true; - } - - /// - /// Returns the SharedVariable with the specified name. - /// - /// The graph that the data belongs to. - /// The name of the SharedVariable that should be retrieved. - /// The scope of the SharedVariable that should be retrieved. - /// The SharedVariable with the specified name (can be null). - public SharedVariable GetVariable(IGraph graph, PropertyName name, SharedVariable.SharingScope scope) - { - if (m_VariableByNameMap == null) { - DeserializeSharedVariables(graph, false, true, null); - } - - if (m_VariableByNameMap != null && m_VariableByNameMap.TryGetValue(new VariableAssignment(name, scope), out var variable)) { - return variable; - } - - return null; - } - - /// - /// Returns the SharedVariable of the specified type. - /// - /// The graph that the data belongs to. - /// The name of the SharedVariable that should be retrieved. - /// The scope of the SharedVariable that should be retrieved. - /// The SharedVariable with the specified name (can be null). - public SharedVariable GetVariable(IGraph graph, PropertyName name, SharedVariable.SharingScope scope) - { - return GetVariable(graph, name, scope) as SharedVariable; - } - - /// - /// Sets the value of the SharedVariable. - /// - /// The type of SharedVarible. - /// The graph that the data belongs to. - /// The name of the SharedVariable. - /// The value of the SharedVariable. - /// The scope of the SharedVariable that should be set. - /// True if the value was set. - public bool SetVariableValue(IGraph graph, PropertyName name, T value, SharedVariable.SharingScope scope) - { - if (m_VariableByNameMap == null) { - DeserializeSharedVariables(graph, false, true, null); - } - - if (m_VariableByNameMap == null || !m_VariableByNameMap.TryGetValue(new VariableAssignment(name, scope), out var variable)) { - return false; - } - - (variable as SharedVariable).Value = value; - return true; - } - - /// - /// Overrides the SharedVariable binding. The name must match an exsting variable. - /// - /// The graph that the data belongs to. - /// The reference to the SharedVariable. - internal void OverrideVariableBinding(IGraph graph, SharedVariable variable) - { - if (string.IsNullOrEmpty(variable.Name)) { - return; - } - - DeserializeSharedVariables(graph, false, true, null); - var dirty = false; - if (m_SharedVariables != null) { - for (int i = 0; i < m_SharedVariables.Length; ++i) { - if (m_SharedVariables[i].Name == variable.Name) { - var variableType = variable.GetType(); - if (variableType.IsGenericType && variableType.GetGenericTypeDefinition().IsAssignableFrom(typeof(SharedVariableBinding<>))) { - m_SharedVariables[i] = variable.Clone() as SharedVariable; - dirty = true; - } - break; - } - } - } - - if (dirty) { - m_VariableByNameMap = PopulateSharedVariablesMapping(graph, true); - } - } - - /// - /// Replaces the data with the specified BehaviorTreeData. - /// - /// The graph that the current data belongs to. - /// The data that should be replaced. - /// The SharedVariables of the current graph. - internal void OverrideData(IGraph graph, BehaviorTreeData other, SharedVariable[] originalSharedVariables, bool updateFields) - { - EventNodes = other.EventNodes; - LogicNodes = other.LogicNodes; - SubtreeNodesReferences = other.SubtreeNodesReferences; - m_SharedVariables = other.SharedVariables; - m_SharedVariableData = other.m_SharedVariableData; - m_VariableByNameMap = PopulateSharedVariablesMapping(graph, false); - m_DisabledLogicNodes = other.DisabledLogicNodes; - m_DisabledEventNodes = other.DisabledEventNodes; - // The other tree may be pooled. Update the variable references to point to the local graph variables. - if (updateFields && other.m_VariableFields != null) { - for (int i = 0; i < other.m_VariableFields.Count; ++i) { - var variableField = other.m_VariableFields[i]; - var localVariable = GetVariable(graph, variableField.Name, SharedVariable.SharingScope.Graph); - if (localVariable != null) { - variableField.Field.SetValue(variableField.Task, localVariable); - } - } - } - // The original tree variable value should override the other variable value. - if (originalSharedVariables != null) { - for (int i = 0; i < originalSharedVariables.Length; ++i) { - OverrideVariableValue(graph, originalSharedVariables[i]); - } - } -#if UNITY_EDITOR - m_EventNodeProperties = other.EventNodeProperties; - m_LogicNodeProperties = other.LogicNodeProperties; - m_SharedVariableGroups = other.SharedVariableGroups; - m_SharedVariableGroupsData = other.m_SharedVariableGroupsData; - m_GroupProperties = other.GroupProperties; -#endif - } - - /// - /// Overrides the SharedVariable value. The name must match an exsting variable. - /// - /// The graph that the data belongs to. - /// The reference to the SharedVariable. - /// True if the value was overridden. - private bool OverrideVariableValue(IGraph graph, SharedVariable variable) - { - if (string.IsNullOrEmpty(variable.Name)) { - return false; - } - - var dirty = false; - if (m_SharedVariables != null) { - for (int i = 0; i < m_SharedVariables.Length; ++i) { - if (m_SharedVariables[i].Name == variable.Name) { - var variableType = variable.GetType(); - if (m_SharedVariables[i].GetType() == variableType) { - m_SharedVariables[i].SetValue(variable.GetValue()); - dirty = true; - } - break; - } - } - } - - return dirty; - } - - /// - /// Is the node with the specified index enabled? - /// - /// Is the node a LogicNode? - /// The index of the node. - /// True if the node with the specified index is enabled. - public bool IsNodeEnabled(bool logicNode, int index) - { - if (index == ushort.MaxValue) { - return true; - } - - var disabledNodes = logicNode ? m_DisabledLogicNodes : m_DisabledEventNodes; - if (disabledNodes == null) { - return true; - } - for (int i = 0; i < disabledNodes.Length; ++i) { - if (disabledNodes[i] == index) { - return false; - } - } - return true; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/BehaviorTreeData.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/BehaviorTreeData.cs.meta deleted file mode 100644 index eb15828..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/BehaviorTreeData.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b88607c73749e1f47b8bb1ed0b34a7a8 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/BehaviorTreeDataStructures.cs b/Packages/com.opsive.behaviordesigner/Runtime/BehaviorTreeDataStructures.cs deleted file mode 100644 index f2d76ff..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/BehaviorTreeDataStructures.cs +++ /dev/null @@ -1,117 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime -{ - using Opsive.BehaviorDesigner.Runtime.Tasks; - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using Opsive.Shared.Utility; - using System.Collections.Generic; - using System.Reflection; - using UnityEngine; - - /// - /// Storage class for the graph data. - /// - public partial class BehaviorTreeData - { - /// - /// Data structure which contains the properties for a subtree that will be injected. - /// - private struct SubtreeAssignment - { - [Tooltip("The index of the SubtreeNodesReference element.")] - public int ReferenceIndex; - [Tooltip("The index of the ISubtreeReference task.")] - public ushort NodeIndex; - [Tooltip("The index of the Subtree.")] - public int SubtreeIndex; - [Tooltip("The subtree that the task references.")] - public Subtree Subtree; - [Tooltip("The offset of the index. This will change as subtrees are added.")] - public ushort IndexOffset; - [Tooltip("The original parent index of the ISubtreeReference task.")] - public ushort ParentIndex; - [Tooltip("The original sibling index of the ISubtreeReference task.")] - public ushort SiblingIndex; - [Tooltip("The number of nodes that are a child of the ISubtreeReference.")] - public ushort NodeCount; -#if UNITY_EDITOR - [Tooltip("The position of the ISubtreeReference task.")] - public Vector2 NodePropertiesPosition; - [Tooltip("Is the ISubtreeReference task collapsed?")] - public bool Collapsed; -#endif - } - - /// - /// Contains a reference to the subtree index and nodes. - /// - internal struct SubtreeNodesReference - { - [Tooltip("The ISubtreeReference.")] - public ISubtreeReference SubtreeReference; - [Tooltip("The index of the ISubtreeReference.")] - public ushort NodeIndex; - [Tooltip("The total number of nodes contained within the ISubtreeReference.")] - public ushort NodeCount; - [Tooltip("A reference to the subtrees that are loaded.")] - public Subtree[] Subtrees; - [Tooltip("The deserialized nodes.")] - public ITreeLogicNode[][] Nodes; - } - - /// - /// Keeps a reference to the graph variables allowing them to be overwritten if a subtree is set. - /// - private struct VariableField - { - [Tooltip("The field that the SharedVariable is assigned to.")] - public FieldInfo Field; - [Tooltip("The task that the SharedVariable is assigned to.")] - public object Task; - [Tooltip("The name of the SharedVariable.")] - public string Name; - } - - /// - /// Internal data structure for referencing a SharedVariable to its name/scope. - /// - public struct VariableAssignment - { - [Tooltip("The name of the SharedVariable.")] - public PropertyName Name; - [Tooltip("The scope of the SharedVariable.")] - public SharedVariable.SharingScope Scope; - - /// - /// VariableAssignment constructor. - /// - /// The name of the SharedVariable. - /// The scope of the SharedVariable. - public VariableAssignment(PropertyName name, SharedVariable.SharingScope scope) - { - Name = name; - Scope = scope; - } - } - - /// - /// Internal data structure for restoring a task reference after it has been deserialized. - /// - public struct TaskAssignment - { - [Tooltip("The field of the task.")] - public FieldInfo Field; - [Tooltip("The task that the field belongs to.")] - public object Target; - [Tooltip("The value of the field. This will be the task object that should be assigned after the tree has been loaded.")] - public object Value; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/BehaviorTreeDataStructures.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/BehaviorTreeDataStructures.cs.meta deleted file mode 100644 index 7aa7fe3..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/BehaviorTreeDataStructures.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0ca426c026a6a06469dc2d4a512ef855 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Components.meta b/Packages/com.opsive.behaviordesigner/Runtime/Components.meta deleted file mode 100644 index 87788c5..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Components.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3f13872ff04404c4da862a21fe89cac6 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Components/BakedBehaviorTree.cs b/Packages/com.opsive.behaviordesigner/Runtime/Components/BakedBehaviorTree.cs deleted file mode 100644 index ca4d22a..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Components/BakedBehaviorTree.cs +++ /dev/null @@ -1,120 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Components -{ - using Opsive.BehaviorDesigner.Runtime.Groups; - using Opsive.BehaviorDesigner.Runtime.Systems; - using Unity.Entities; - using UnityEngine; - - /// - /// Indicates that the behavior tree was baked. - /// - public class BakedBehaviorTree : IComponentData - { - [Tooltip("The index of the connected start task.")] - public int StartEventConnectedIndex; - [Tooltip("Should the behavior tree be started after it has been baked?")] - public bool StartEvaluation; - [Tooltip("The indicies of the reevaluate task systems.")] - public string[] ReevaluateTaskSystems; - [Tooltip("The indicies of the interrupt task systems.")] - public string[] InterruptTaskSystems; - [Tooltip("The indicies of the traversal task systems.")] - public string[] TraversalTaskSystems; - [Tooltip("The hashes that correspond to the TaskComponent's ComponentType.")] - public ulong[] TagStableTypeHashes; - [Tooltip("The hashes that correspond to the ReevaluateTaskComponent's ComponentType.")] - public ulong[] ReevaluateFlagStableTypeHashes; - } - - /// - /// The behavior tree has been baked. Start the tree using the baked data. - /// - public partial struct StartBakedBehaviorTreeSystem : ISystem - { - /// - /// Restricts when the system should run. - /// - /// The current SystemState. - private void OnCreate(ref SystemState state) - { - state.RequireForUpdate(); - state.Enabled = false; - } - - /// - /// Starts the baked behavior tree. - /// - /// The current SystemState. - private void OnUpdate(ref SystemState state) - { - state.Enabled = false; - - // The components are baked, but systems are not baked. Create the required systems within the current world. - var reevaluateTaskSystemGroup = state.World.GetOrCreateSystemManaged(); - var interruptTaskSystemGroup = state.World.GetOrCreateSystemManaged(); - var traversalTaskSystemGroup = state.World.GetOrCreateSystemManaged(); - - // Add the necessary cleanup systems. - var behaviorTreeSystemGroup = state.World.GetOrCreateSystemManaged(); - behaviorTreeSystemGroup.AddSystemToUpdateList(state.World.GetOrCreateSystem()); - behaviorTreeSystemGroup.AddSystemToUpdateList(state.World.GetOrCreateSystem()); - - var canReevaluate = false; - var ecb = new EntityCommandBuffer(state.WorldUpdateAllocator); - foreach (var (bakedBehaviorTree, entity) in SystemAPI.Query().WithEntityAccess()) { - AddSystems(state.World, reevaluateTaskSystemGroup, bakedBehaviorTree.ReevaluateTaskSystems); - AddSystems(state.World, interruptTaskSystemGroup, bakedBehaviorTree.InterruptTaskSystems); - AddSystems(state.World, traversalTaskSystemGroup, bakedBehaviorTree.TraversalTaskSystems); - - // ComponentTypes cannot be serialized. Convert the StableTypeHash to a ComponentType. - var taskComponents = state.World.EntityManager.GetBuffer(entity); - for (int i = 0; i < taskComponents.Length; ++i) { - var taskComponent = taskComponents[i]; - taskComponent.FlagComponentType = ComponentType.FromTypeIndex(TypeManager.GetTypeIndexFromStableTypeHash(bakedBehaviorTree.TagStableTypeHashes[i])); - taskComponents[i] = taskComponent; - } - - if (state.World.EntityManager.HasBuffer(entity)) { - var reevaluateComponents = state.World.EntityManager.GetBuffer(entity); - canReevaluate = true; - for (int i = 0; i < reevaluateComponents.Length; ++i) { - var reevaluateComponent = reevaluateComponents[i]; - reevaluateComponent.ReevaluateFlagComponentType = ComponentType.FromTypeIndex(TypeManager.GetTypeIndexFromStableTypeHash(bakedBehaviorTree.ReevaluateFlagStableTypeHashes[i])); - reevaluateComponents[i] = reevaluateComponent; - } - } - - // All of the systems have been added. Start the behavior tree. - BehaviorTree.StartBranch(state.World, entity, (ushort)bakedBehaviorTree.StartEventConnectedIndex, bakedBehaviorTree.StartEvaluation); - ecb.RemoveComponent(entity); - } - if (canReevaluate) { - reevaluateTaskSystemGroup.AddSystemToUpdateList(state.World.GetOrCreateSystem()); - } - ecb.Playback(state.EntityManager); - ecb.Dispose(); - } - - /// - /// Adds the systems indicated by the SystemTypeIndex to the specified group. - /// - /// The current World. - /// The group that the systems should be added to. - /// The types of systems that should be added. - private void AddSystems(World world, ComponentSystemGroup group, string[] systemTypes) - { - if (systemTypes == null) { return; } - - for (int i = 0; i < systemTypes.Length; ++i) { - group.AddSystemToUpdateList(world.GetOrCreateSystem(Shared.Utility.TypeUtility.GetType(systemTypes[i]))); - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Components/BakedBehaviorTree.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Components/BakedBehaviorTree.cs.meta deleted file mode 100644 index 04a6b14..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Components/BakedBehaviorTree.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f68d4eca856988e4a8f4073516e7de57 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Components/BehaviorTreeComponents.cs b/Packages/com.opsive.behaviordesigner/Runtime/Components/BehaviorTreeComponents.cs deleted file mode 100644 index 7b5be0c..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Components/BehaviorTreeComponents.cs +++ /dev/null @@ -1,261 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Components -{ - using Opsive.BehaviorDesigner.Runtime.Tasks; - using System.Runtime.InteropServices; - using Unity.Collections; - using Unity.Entities; - using UnityEngine; - - /// - /// The runtime DOTS data associated with a task. - /// - [System.Serializable] - public struct TaskComponent : IBufferElementData - { - [Tooltip("The index of the task within the behavior tree.")] - public ushort Index; - [Tooltip("The index of the parent task within the behavior tree.")] - public ushort ParentIndex; - //public ushort m_ParentIndex; - //public ushort ParentIndex { get { return m_ParentIndex; } set { UnityEngine.Debug.Log(Index + " parent: " + value); m_ParentIndex = value; } } - [Tooltip("The index of the sibling task within the behavior tree.")] - public ushort SiblingIndex; - //public ushort m_SiblingIndex; - //public ushort SiblingIndex { get { return m_SiblingIndex; } set { UnityEngine.Debug.Log(Index + " sibling: " + value); m_SiblingIndex = value; } } - [Tooltip("The index of the branch the task executes within.")] - public ushort BranchIndex; - //public ushort m_BranchIndex; - //public ushort BranchIndex { get { return m_BranchIndex; } set { UnityEngine.Debug.Log(Index + " branch: " + value); m_BranchIndex = value; } } - [Tooltip("The component type responsible for indicating that the task is active.")] - public ComponentType FlagComponentType; - [Tooltip("Is the task disabled?")] - [MarshalAs(UnmanagedType.U1)] - public bool Disabled; - [Tooltip("The current execution status of the task.")] - //public TaskStatus Status; - [SerializeField] private TaskStatus m_Status; - public TaskStatus Status { - get => m_Status; - set { - m_Status = value; - CanReevaluate = value != TaskStatus.Inactive; - //UnityEngine.Debug.Log(string.Format("{0} status: {1}", Index, value)); - } - } - [Tooltip("Can the task be reevaluated with conditional aborts?")] - [MarshalAs(UnmanagedType.U1)] - public bool CanReevaluate; - [Tooltip("Is the task being reevaluated with conditional aborts?")] - [MarshalAs(UnmanagedType.U1)] - public bool Reevaluate; - //public bool m_Reevaluate; - //public bool Reevaluate { get { return m_Reevaluate; } set { UnityEngine.Debug.Log(Index + " reevaluate: " + value + " " + GetHashCode()); m_Reevaluate = value; } } - } - - /// - /// Specifies when the behavior tree should be updated. - /// - public enum UpdateMode - { - EveryFrame, // The behavior tree should be updated every frame. - Manual // The behavior tree should be updated manually via a user script. - } - - /// - /// Specifies how many tasks should be evaluated. Evaluation will end if all branches return a status of TaskStatus.Running. - /// - public enum EvaluationType : byte - { - EntireTree, // Evaluates up to all of the tasks within the tree. - Count // Evaluates up to the specified MaxEvaluationCount. - } - - /// - /// Specifies if the tree should be evaluated. - /// - public struct EvaluationComponent32 : IComponentData - { - [Tooltip("Specifies how many tasks should be updated during a single tick.")] - public EvaluationType EvaluationType; - [Tooltip("The maximum number of tasks that can run if the evaluation type is set to EvaluationType.Count.")] - public ushort MaxEvaluationCount; - [Tooltip("A bitmask of the tasks that have been evaluated. For EvaluationType.Count, the last element stores the execution count.")] - public FixedList32Bytes EvaluatedTasks; - } - - /// - /// Specifies if the tree should be evaluated. - /// - public struct EvaluationComponent64 : IComponentData - { - [Tooltip("Specifies how many tasks should be updated during a single tick.")] - public EvaluationType EvaluationType; - [Tooltip("The maximum number of tasks that can run if the evaluation type is set to EvaluationType.Count.")] - public ushort MaxEvaluationCount; - [Tooltip("A bitmask of the tasks that have been evaluated. For EvaluationType.Count, the last element stores the execution count.")] - public FixedList64Bytes EvaluatedTasks; - } - - /// - /// Specifies if the tree should be evaluated. - /// - public struct EvaluationComponent128 : IComponentData - { - [Tooltip("Specifies how many tasks should be updated during a single tick.")] - public EvaluationType EvaluationType; - [Tooltip("The maximum number of tasks that can run if the evaluation type is set to EvaluationType.Count.")] - public ushort MaxEvaluationCount; - [Tooltip("A bitmask of the tasks that have been evaluated. For EvaluationType.Count, the last element stores the execution count.")] - public FixedList128Bytes EvaluatedTasks; - } - - /// - /// Specifies if the tree should be evaluated. - /// - public struct EvaluationComponent512 : IComponentData - { - [Tooltip("Specifies how many tasks should be updated during a single tick.")] - public EvaluationType EvaluationType; - [Tooltip("The maximum number of tasks that can run if the evaluation type is set to EvaluationType.Count.")] - public ushort MaxEvaluationCount; - [Tooltip("A bitmask of the tasks that have been evaluated. For EvaluationType.Count, the last element stores the execution count.")] - public FixedList512Bytes EvaluatedTasks; - } - - /// - /// Specifies if the tree should be evaluated. - /// - public struct EvaluationComponent4096 : IComponentData - { - [Tooltip("Specifies how many tasks should be updated during a single tick.")] - public EvaluationType EvaluationType; - [Tooltip("The maximum number of tasks that can run if the evaluation type is set to EvaluationType.Count.")] - public ushort MaxEvaluationCount; - [Tooltip("A bitmask of the tasks that have been evaluated. For EvaluationType.Count, the last element stores the execution count.")] - public FixedList4096Bytes EvaluatedTasks; - } - - /// - /// Specifies how the branch was interrupted. - /// - public enum InterruptType : byte - { - None, // No interrupt. - Branch, // A conditional abort or utility selector triggered the interruption. - ImmediateSuccess, // The branch was interrupted with a success status. - ImmediateFailure, // The branch was interrupted with a failure status. - } - - /// - /// The runtime DOTS data associated with a branch. - /// - public struct BranchComponent : IBufferElementData - { - [Tooltip("The index of the task that is currently active.")] - public ushort ActiveIndex; - //public ushort m_ActiveIndex; - //public ushort ActiveIndex { get { return m_ActiveIndex; } set { Debug.Log(string.Format("Active: {0}", value)); m_ActiveIndex = value; } } - [Tooltip("The index of the task that should execute next.")] - public ushort NextIndex; - //public ushort m_NextIndex; - //public ushort NextIndex { get { return m_NextIndex; } set { Debug.Log(string.Format("Next: {0}", value)); m_NextIndex = value; } } - [Tooltip("The index of the last active task.")] - public ushort LastActiveIndex; - [Tooltip("The component tag that is active.")] - public ComponentType ActiveFlagComponentType; - //public ComponentType m_ActiveFlagComponentType; - //public ComponentType ActiveFlagComponentType { get { return m_ActiveFlagComponentType; } set { Debug.Log(string.Format("Tag: {0}", value)); m_ActiveFlagComponentType = value; } } - [Tooltip("Specifies how the branch is interrupted.")] - public InterruptType InterruptType; - //public InterruptType m_InterruptType; - //public InterruptType InterruptType { get { return m_InterruptType; } set { m_InterruptType = value; Debug.Log("Interrupt Type " + value); } } - [Tooltip("The index of the task that caused an interruption. A value of 0 indicates no interruption.")] - public ushort InterruptIndex; - [Tooltip("Specifies if the branch can execute tasks. Set to false when all tasks in the branch have executed this tick.")] - public bool CanExecute; - //public bool m_CanExecute; - //public bool CanExecute { get { return m_CanExecute; } set { m_CanExecute = value; Debug.Log("Can Execute " + value); } } - } - - /// - /// Specifies if the tree can be evaluated. - /// - public struct EvaluateFlag : IComponentData, IEnableableComponent { } - - /// - /// Specifies if the tree is enabled. - /// - public struct EnabledFlag : IComponentData, IEnableableComponent { } - - /// - /// Flag used to indicate when the branch should be interrupted. - /// - public struct InterruptFlag : IComponentData, IEnableableComponent { } - - /// - /// Flag used to indicate that the branch has been interrupted. - /// - public struct InterruptedFlag : IComponentData, IEnableableComponent { } - - /// - /// Specifies the reevaluation status of the task. - /// - public enum ReevaluateStatus : byte - { - Inactive, // The task is not being reevaluated. - Active, // The task is currently being reevaluated. - Dirty // The task was reevaluated and triggered a change. - } - - /// - /// The runtime DOTS data associated with conditional aborts. - /// - public struct ReevaluateTaskComponent : IBufferElementData - { - [Tooltip("The index of the task.")] - public ushort Index; - [Tooltip("The type of conditional abort.")] - public ConditionalAbortType AbortType; - [Tooltip("The lower bound index of the next task if a lower priority abort is specified.")] - public ushort LowerPriorityLowerIndex; - [Tooltip("The upper bound index of the next task if a lower priority abort is specified.")] - public ushort LowerPriorityUpperIndex; - [Tooltip("The upper bound index of the next task if a self priority abort is specified.")] - public ushort SelfPriorityUpperIndex; - [Tooltip("The original status of the task.")] - public TaskStatus OriginalStatus; - [Tooltip("The tag specifiying the task should be reevaluated.")] - public ComponentType ReevaluateFlagComponentType; - [Tooltip("The current reevaluation status of the task.")] - public ReevaluateStatus ReevaluateStatus; - } - - /// - /// Runtime representation of IEventNodes that can run its own entity logic. - /// - public interface IEventNodeEntityReceiver - { - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The offset between the connected index and the runtime index. - void AddBufferElement(World world, Entity entity, GameObject gameObject, ushort taskOffset); - - /// - /// Clears the IBufferElementData from the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be cleared from. - void ClearBufferElement(World world, Entity entity); - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Components/BehaviorTreeComponents.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Components/BehaviorTreeComponents.cs.meta deleted file mode 100644 index 3ec4234..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Components/BehaviorTreeComponents.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 12b6df69a20daeb4ab4ce1ccaa7bc7ec -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Groups.meta b/Packages/com.opsive.behaviordesigner/Runtime/Groups.meta deleted file mode 100644 index e0e6591..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Groups.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d9c918e9af659ea4fb420fd6af1433b7 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Groups/BeforeTraversalSystemGroup.cs b/Packages/com.opsive.behaviordesigner/Runtime/Groups/BeforeTraversalSystemGroup.cs deleted file mode 100644 index b1d926d..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Groups/BeforeTraversalSystemGroup.cs +++ /dev/null @@ -1,46 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Groups -{ - using Opsive.BehaviorDesigner.Runtime.Systems; - using Unity.Entities; - - /// - /// Grouping for the systems that should before other systems. - /// - [UpdateInGroup(typeof(BehaviorTreeSystemGroup), OrderFirst = true)] - public partial class BeforeTraversalSystemGroup : ComponentSystemGroup - { - } - - /// - /// Grouping for the task systems that should reevaluate. - /// - [UpdateInGroup(typeof(BeforeTraversalSystemGroup))] - public partial class ReevaluateTaskSystemGroup : ComponentSystemGroup - { - } - - /// - /// Grouping for the systems that run before the tree execution. - /// - [UpdateInGroup(typeof(BehaviorTreeSystemGroup))] - public partial class InterruptSystemGroup : ComponentSystemGroup - { - } - - /// - /// Grouping for the task systems that can cause interrupts. - /// - [UpdateInGroup(typeof(InterruptSystemGroup))] - [UpdateAfter(typeof(InterruptSystem))] - [UpdateBefore(typeof(InterruptCleanupSystem))] - public partial class InterruptTaskSystemGroup : ComponentSystemGroup - { - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Groups/BeforeTraversalSystemGroup.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Groups/BeforeTraversalSystemGroup.cs.meta deleted file mode 100644 index 075d5be..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Groups/BeforeTraversalSystemGroup.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 83e6fa82f6125e140a3d0bd4737feeb3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Groups/BehaviorTreeSystemGroup.cs b/Packages/com.opsive.behaviordesigner/Runtime/Groups/BehaviorTreeSystemGroup.cs deleted file mode 100644 index 51b8ed8..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Groups/BehaviorTreeSystemGroup.cs +++ /dev/null @@ -1,80 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Groups -{ - using Opsive.BehaviorDesigner.Runtime.Systems; - using Unity.Entities; - using UnityEngine; - - /// - /// System group which runs all of the behavior tree systems. - /// - [UpdateInGroup(typeof(SimulationSystemGroup))] - [UpdateAfter(typeof(BeginSimulationEntityCommandBufferSystem))] - public partial class BehaviorTreeSystemGroup : ComponentSystemGroup - { - private bool m_Alive; - - public bool Alive { get => m_Alive; } - - /// - /// Disable the group if there are no behavior trees. - /// - [RuntimeInitializeOnLoadMethod] - private static void Init() - { - if (BehaviorTree.BehaviorTreeCount > 0) { - return; - } - - var worlds = World.All; - for (int i = 0; i < worlds.Count; ++i) { - var systemGroup = worlds[i].GetExistingSystemManaged(); - if (systemGroup == null) { - continue; - } - systemGroup.Enabled = false; - } - } - - /// - /// The group has been created. - /// - protected override void OnCreate() - { - base.OnCreate(); - - m_Alive = true; - } - - /// - /// Update the system group. - /// - protected override void OnUpdate() - { - base.OnUpdate(); - - // Stop running if all trees have completed. - var systemHandle = World.GetExistingSystem(); - var system = EntityManager.WorldUnmanaged.GetUnsafeSystemRef(systemHandle); - if (!system.Active) { - Enabled = false; - } - } - - /// - /// The group has been destroyed. - /// - protected override void OnDestroy() - { - base.OnDestroy(); - - m_Alive = false; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Groups/BehaviorTreeSystemGroup.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Groups/BehaviorTreeSystemGroup.cs.meta deleted file mode 100644 index 182c14b..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Groups/BehaviorTreeSystemGroup.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 905219e69953a5e479911f095744ec54 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Groups/TaskSystemGroup.cs b/Packages/com.opsive.behaviordesigner/Runtime/Groups/TaskSystemGroup.cs deleted file mode 100644 index 5c0567a..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Groups/TaskSystemGroup.cs +++ /dev/null @@ -1,41 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Groups -{ - using System; - using Unity.Entities; - using UnityEngine; - - /// - /// Group that executes all of the tasks. - /// - [UpdateInGroup(typeof(TraversalSystemGroup))] - public partial class TraversalTaskSystemGroup : ComponentSystemGroup - { - [Tooltip("Callback before the outher tasks are updated.")] - public Action OnPreUpdate; - [Tooltip("Callback after the outher tasks are updated.")] - public Action OnPostUpdate; - - /// - /// Updates the group. - /// - protected override void OnUpdate() - { - if (OnPreUpdate != null) { - OnPreUpdate(); - } - - base.OnUpdate(); - - if (OnPostUpdate != null) { - OnPostUpdate(); - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Groups/TaskSystemGroup.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Groups/TaskSystemGroup.cs.meta deleted file mode 100644 index bbe78a1..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Groups/TaskSystemGroup.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f48a72a09e70b944a82639a4d549f090 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Groups/TraversalSystemGroup.cs b/Packages/com.opsive.behaviordesigner/Runtime/Groups/TraversalSystemGroup.cs deleted file mode 100644 index 5985cba..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Groups/TraversalSystemGroup.cs +++ /dev/null @@ -1,76 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Groups -{ - using Opsive.BehaviorDesigner.Runtime.Systems; - using Unity.Entities; - - /// - /// Main group for the systems that are responsible for traversing the behavior tree. - /// - [UpdateInGroup(typeof(BehaviorTreeSystemGroup))] - [UpdateAfter(typeof(InterruptSystemGroup))] - public partial class TraversalSystemGroup : ComponentSystemGroup - { - private SystemHandle m_EvaluationSystemHandle; - private SystemHandle m_DetermineEvaluationSystemHandle; - - /// - /// The group has been created. - /// - protected override void OnCreate() - { - base.OnCreate(); - - m_EvaluationSystemHandle = World.GetExistingSystem(); - m_DetermineEvaluationSystemHandle = World.GetExistingSystem(); - } - - /// - /// Updates the systems. Determines if the systems need to keep being evaluated. - /// - protected override void OnUpdate() - { -#if UNITY_EDITOR - var count = 0; -#endif - bool evaluate; - do { - base.OnUpdate(); - - var determineEvaluationSystem = EntityManager.WorldUnmanaged.GetUnsafeSystemRef(m_DetermineEvaluationSystemHandle); - determineEvaluationSystem.Complete(EntityManager); - evaluate = determineEvaluationSystem.Evaluate; - - var evaluationSystem = EntityManager.WorldUnmanaged.GetUnsafeSystemRef(m_EvaluationSystemHandle); - evaluationSystem.Complete(EntityManager); - -#if UNITY_EDITOR - if (evaluate) { - count++; - if (count == ushort.MaxValue / 10) { - UnityEngine.Debug.LogWarning("An infinite loop would have been caused by the TraversalSystemGroup. Please email support@opsive.com with steps to reproduce this error."); - break; - } - } -#endif - } while (evaluate); - } - - /// - /// The group has stopped running. - /// - protected override void OnStopRunning() - { - base.OnStopRunning(); - - var evaluationSystem = EntityManager.WorldUnmanaged.GetUnsafeSystemRef(m_EvaluationSystemHandle); - evaluationSystem.Complete(EntityManager, true); - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Groups/TraversalSystemGroup.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Groups/TraversalSystemGroup.cs.meta deleted file mode 100644 index c94ab49..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Groups/TraversalSystemGroup.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 2c1ad397e3cdf7a44ae172b5ae92c2e4 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Opsive.BehaviorDesigner.Runtime.asmdef b/Packages/com.opsive.behaviordesigner/Runtime/Opsive.BehaviorDesigner.Runtime.asmdef deleted file mode 100644 index 3427a47..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Opsive.BehaviorDesigner.Runtime.asmdef +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "Opsive.BehaviorDesigner.Runtime", - "rootNamespace": "Opsive.BehaviorDesigner.Runtime", - "references": [ - "GUID:e9319bc8ab9315745bdf80aeffa01d6d", - "GUID:d8e89a79cd8df884b8d5b3356783eb74", - "GUID:734d92eba21c94caba915361bd5ac177", - "GUID:2665a8d13d1b3f18800f46e256720795", - "GUID:e0cd26848372d4e5c891c569017e11f1", - "GUID:d8b63aba1907145bea998dd612889d6b", - "GUID:a5baed0c9693541a5bd947d336ec7659", - "GUID:8819f35a0fc84499b990e90a4ca1911f" - ], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [ - { - "name": "com.unity.entities", - "expression": "1.3.5", - "define": "UNITY_ENTITIES" - } - ], - "noEngineReferences": false -} \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Opsive.BehaviorDesigner.Runtime.asmdef.meta b/Packages/com.opsive.behaviordesigner/Runtime/Opsive.BehaviorDesigner.Runtime.asmdef.meta deleted file mode 100644 index 14d256c..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Opsive.BehaviorDesigner.Runtime.asmdef.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: f9fbcd65fc33f6847b0f124cf7e891b6 -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Subtree.cs b/Packages/com.opsive.behaviordesigner/Runtime/Subtree.cs deleted file mode 100644 index 1dcc58a..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Subtree.cs +++ /dev/null @@ -1,298 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using System; - using UnityEngine; - - /// - /// The behavior tree stored within a Scriptable Object. - /// - [CreateAssetMenu(fileName = "Subtree", menuName = "Opsive/Behavior Designer/Subtree", order = 1)] - public class Subtree : ScriptableObject, IGraph, ISharedVariableContainer - { - [Tooltip("The behavior tree data.")] - [SerializeField] private BehaviorTreeData m_Data = new BehaviorTreeData(); - - public string Name { get => name; set => name = value; } - public SharedVariable.SharingScope VariableScope { get => SharedVariable.SharingScope.Graph; } - public BehaviorTreeData Data { get => m_Data; } - public UnityEngine.Object Parent { get => this; } - public ILogicNode[] LogicNodes { get => m_Data?.LogicNodes; set => m_Data.LogicNodes = value as ITreeLogicNode[]; } - public ITreeLogicNode[] TreeLogicNodes { get => m_Data?.LogicNodes; set => m_Data.LogicNodes = value; } - public IEventNode[] EventNodes { get => m_Data?.EventNodes; set => m_Data.EventNodes = value; } - public SharedVariable[] SharedVariables { get => m_Data?.SharedVariables; set => m_Data.SharedVariables = value; } - public SharedVariableGroup[] SharedVariableGroups { -#if UNITY_EDITOR - get => Data?.SharedVariableGroups; - set => Data.SharedVariableGroups = value; -#else - get => null; - set { } -#endif - } - public ushort[] DisabledLogicNodes { get => m_Data.DisabledLogicNodes; set => m_Data.DisabledLogicNodes = value; } - public ushort[] DisabledEventNodes { get => m_Data.DisabledEventNodes; set => m_Data.DisabledEventNodes = value; } - - public LogicNodeProperties[] LogicNodeProperties - { -#if UNITY_EDITOR - get => m_Data.LogicNodeProperties; - set => m_Data.LogicNodeProperties = value; -#else - get => null; - set { } -#endif - } - public NodeProperties[] EventNodeProperties - { -#if UNITY_EDITOR - get => m_Data.EventNodeProperties; - set => m_Data.EventNodeProperties = value; -#else - get => null; - set { } -#endif - } - public GroupProperties[] GroupProperties - { -#if UNITY_EDITOR - get => m_Data.GroupProperties; - set => m_Data.GroupProperties = value; -#else - get => null; - set { } -#endif - } - - public int UniqueID { get => m_Data.UniqueID; } - public bool Pooled { get; set; } - - /// - /// Serializes the behavior tree. - /// - public void Serialize() - { - m_Data.Serialize(); - } - - /// - /// Deserialize the behavior tree. - /// - /// Should the behavior tree be force deserialized? - /// True if the tree was deserialized. - public bool Deserialize(bool force = false) - { - return Deserialize(null, force, force, false, true, null); - } - - /// - /// Deserialize the behavior tree. - /// - /// Should the behavior tree be force deserialized? - /// Should the shared variables be force deserialized? - /// Should the subtrees be injected into the behavior tree? - /// Can the SharedVariables be deep copied? - /// True if the tree was deserialized. - public bool Deserialize(bool force, bool forceSharedVariables, bool injectSubtrees, bool canDeepCopyVariables = true) - { - return Deserialize(null, force, forceSharedVariables, injectSubtrees, canDeepCopyVariables, null); - } - - /// - /// Deserialize the behavior tree. - /// - /// The component that the graph is being deserialized from. - /// Should the behavior tree be force deserialized? - /// Should the shared variables be force deserialized? - /// Should the subtrees be injected into the behavior tree? - /// Can the SharedVariables be deep copied? - /// A list of SharedVariables that should override the current SharedVariable value. - /// True if the tree was deserialized. - public bool Deserialize(IGraphComponent graphComponent, bool force, bool forceSharedVariables, bool injectSubtrees, bool canDeepCopyVariables, SharedVariableOverride[] sharedVariableOverrides) - { - if (m_Data == null) { - return false; - } - - return m_Data.Deserialize(graphComponent, this, force, forceSharedVariables, injectSubtrees, canDeepCopyVariables, sharedVariableOverrides); - } - - /// - /// Deserializes the SharedVariables. This allows the SharedVariables to be deserialized independently. - /// - /// Should the variables be forced deserialized? - /// True if the SharedVariables were deserialized. - public bool DeserializeSharedVariables(bool force) - { - if (m_Data == null) { - return false; - } - - return m_Data.DeserializeSharedVariables(this, force, false); - } - - /// - /// Adds the specified logic node. - /// - /// The node that should be added. - public void AddNode(ILogicNode node) - { - m_Data.AddNode(node as ITreeLogicNode); - } - - /// - /// Removes the specified logic node. - /// - /// The node that should be removed. - /// True if the node was removed. - public bool RemoveNode(ILogicNode node) - { - return m_Data.RemoveNode(node as ITreeLogicNode); - } - - /// - /// Adds the specified event node. - /// - /// The event node that should be added. - public void AddNode(IEventNode eventNode) - { - m_Data.AddNode(eventNode); - } - - /// - /// Removes the specified event node. - /// - /// The event node that should be removed. - /// True if the event node was removed. - public bool RemoveNode(IEventNode eventNode) - { - return m_Data.RemoveNode(eventNode); - } - - /// - /// Returns the Node of the specified type. - /// - /// The type of Node that should be retrieved. - /// The Node of the specified type (can be null). - public ILogicNode GetNode(Type type) - { - return m_Data.GetNode(type); - } - - /// - /// Returns the EventNode of the specified type. - /// - /// The type of EventNode that should be retrieved. - /// The EventNode of the specified type (can be null). If the node is found the index will also be returned. - public (IEventNode, ushort) GetEventNode(Type type) - { - return m_Data.GetEventNode(type); - } - - /// - /// Returns the SharedVariable with the specified name. - /// - /// The name of the SharedVariable that should be retrieved. - /// The SharedVariable with the specified name (can be null). - public SharedVariable GetVariable(PropertyName name) - { - Deserialize(); - - return m_Data.GetVariable(this, name, SharedVariable.SharingScope.Graph); - } - - /// - /// Returns the SharedVariable of the specified name. - /// - /// The name of the SharedVariable that should be retrieved. - /// The SharedVariable with the specified name (can be null). - public SharedVariable GetVariable(PropertyName name) - { - Deserialize(); - - return m_Data.GetVariable(this, name, SharedVariable.SharingScope.Graph); - } - - /// - /// Sets the value of the SharedVariable. - /// - /// The type of SharedVarible. - /// The name of the SharedVariable. - /// The value of the SharedVariable. - /// True if the value was set. - public bool SetVariableValue(PropertyName name, T value) - { - Deserialize(); - - return m_Data.SetVariableValue(this, name, value, SharedVariable.SharingScope.Graph); - } - - /// - /// Is the node with the specified index enabled? - /// - /// Is the node a LogicNode? - /// The index of the node. - /// True if the node with the specified index is enabled. - public bool IsNodeEnabled(bool logicNode, int index) - { - return m_Data.IsNodeEnabled(logicNode, index); - } - - /// - /// Is the node with the specified index active? - /// - /// Is the node a LogicNode? - /// The index of the node. - /// True if the node with the specified index is active. - public bool IsNodeActive(bool logicNode, int index) - { - return false; // The subtree node itself is never active. - } - - /// - /// Copies the graph onto the current graph. - /// - /// The graph that should be copied. - public void Clone(IGraph other) - { - m_Data = new BehaviorTreeData(); - m_Data.EventNodes = other.EventNodes; - m_Data.LogicNodes = other.LogicNodes as ITreeLogicNode[]; - m_Data.SharedVariables = other.SharedVariables; - -#if UNITY_EDITOR - m_Data.EventNodeProperties = other.EventNodeProperties; - m_Data.LogicNodeProperties = other.LogicNodeProperties; - m_Data.GroupProperties = other.GroupProperties; -#endif - - m_Data.Serialize(); - } - - /// - /// Overrides ToString. - /// - /// The desired string value. - public override string ToString() - { - return name; - } - } - - /// - /// Attribute indicating that a ReorderableList should be used for the Subtree array. - /// - [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = false)] - public class SubtreeListAttribute : System.Attribute - { - - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Subtree.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Subtree.cs.meta deleted file mode 100644 index b2e463e..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Subtree.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0ab170e3869205449b993a35614c2084 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: e0a8f1df788b6274a9a24003859dfa7e, type: 3} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Systems.meta b/Packages/com.opsive.behaviordesigner/Runtime/Systems.meta deleted file mode 100644 index 5b02575..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Systems.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a33ce2113e48ee54f946531482da6261 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Systems/BeforeTraversalSystems.cs b/Packages/com.opsive.behaviordesigner/Runtime/Systems/BeforeTraversalSystems.cs deleted file mode 100644 index 6638c21..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Systems/BeforeTraversalSystems.cs +++ /dev/null @@ -1,412 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Systems -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Groups; - using Opsive.BehaviorDesigner.Runtime.Tasks; - using Opsive.BehaviorDesigner.Runtime.Utility; - using Unity.Burst; - using Unity.Collections; - using Unity.Entities; - using UnityEngine; - - /// - /// System which checks for any tasks that should be reevaluated with conditional aborts. This system only marks the tasks, it does not do - /// the actual reevaluation or interruption. - /// - [UpdateInGroup(typeof(BeforeTraversalSystemGroup), OrderFirst = true)] - [DisableAutoCreation] - public partial struct ReevaluateSystem : ISystem - { - private EntityQuery m_Query; - - /// - /// Builds the query. - /// - /// THe current SystemState. - private void OnCreate(ref SystemState state) - { - m_Query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAll().WithAbsent().Build(); - } - - /// - /// Creates the ReevaluateJob. - /// - /// The current SystemState. - private void OnUpdate(ref SystemState state) - { - var ecb = new EntityCommandBuffer(Allocator.TempJob); - state.Dependency = new ReevaluateJob() - { - EntityCommandBuffer = ecb.AsParallelWriter(), - }.ScheduleParallel(m_Query, state.Dependency); - - // The job must run immediately for the next systems. - state.Dependency.Complete(); - ecb.Playback(state.EntityManager); - ecb.Dispose(); - } - - /// - /// Job which checks for any tasks that should be reevaluated with conditional aborts. This job only flags the tasks, it does not do - /// the actual reevaluation or interruption. - /// - [BurstCompile] - private partial struct ReevaluateJob : IJobEntity - { - [Tooltip("CommandBuffer which sets the component data.")] - public EntityCommandBuffer.ParallelWriter EntityCommandBuffer; - - /// - /// Executes the job. - /// - /// The entity that is being acted upon. - /// The index of the entity. - /// An array of branch components. - /// An array of task components. - /// An array of reevaluate task components. - [BurstCompile] - public void Execute(Entity entity, [EntityIndexInQuery] int entityIndex, in DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer reevaluateTaskComponents) - { - for (int i = 0; i < reevaluateTaskComponents.Length; ++i) { - var reevaluateTaskComponent = reevaluateTaskComponents[i]; - // The task may not be able to reevaluate. - var taskComponent = taskComponents[reevaluateTaskComponent.Index]; - if (!taskComponent.CanReevaluate || taskComponent.Disabled) { - continue; - } - - // The branch may not be active. - var branchComponent = branchComponents[taskComponent.BranchIndex]; - if (branchComponent.ActiveIndex == ushort.MaxValue) { - if (taskComponent.Reevaluate) { - taskComponent.Reevaluate = false; - taskComponents[reevaluateTaskComponent.Index] = taskComponent; - - reevaluateTaskComponent.ReevaluateStatus = ReevaluateStatus.Inactive; - reevaluateTaskComponents[i] = reevaluateTaskComponent; - } - continue; - } - - var reevaluate = false; - if (reevaluateTaskComponent.AbortType == ConditionalAbortType.Self || reevaluateTaskComponent.AbortType == ConditionalAbortType.Both) { - if (branchComponent.ActiveIndex > taskComponent.Index && branchComponent.ActiveIndex <= reevaluateTaskComponent.SelfPriorityUpperIndex) { - // Reevaluate. - reevaluate = true; - if (reevaluateTaskComponent.ReevaluateStatus == ReevaluateStatus.Inactive) { - reevaluateTaskComponent.ReevaluateStatus = ReevaluateStatus.Active; - EntityCommandBuffer.SetComponentEnabled(entityIndex, entity, reevaluateTaskComponent.ReevaluateFlagComponentType, true); - } - } - } - if (!reevaluate && (reevaluateTaskComponent.AbortType == ConditionalAbortType.LowerPriority || reevaluateTaskComponent.AbortType == ConditionalAbortType.Both)) { - if (branchComponent.ActiveIndex > reevaluateTaskComponent.LowerPriorityLowerIndex && branchComponent.ActiveIndex <= reevaluateTaskComponent.LowerPriorityUpperIndex) { - // Reevaluate. - reevaluate = true; - if (reevaluateTaskComponent.ReevaluateStatus == ReevaluateStatus.Inactive) { - reevaluateTaskComponent.ReevaluateStatus = ReevaluateStatus.Active; - EntityCommandBuffer.SetComponentEnabled(entityIndex, entity, reevaluateTaskComponent.ReevaluateFlagComponentType, true); - } - } - } - - // The task should no longer reevaluate. - if (!reevaluate && (taskComponent.Reevaluate || reevaluateTaskComponent.ReevaluateStatus == ReevaluateStatus.Dirty)) { - // The system needs to be kept active if there are other tasks with the same reevaluate tag. - var keepSystemActive = false; - for (int j = 0; j < reevaluateTaskComponents.Length; ++j) { - if (i == j) { - continue; - } - - if ((reevaluateTaskComponents[j].ReevaluateStatus == ReevaluateStatus.Active || reevaluateTaskComponents[j].ReevaluateStatus == ReevaluateStatus.Dirty) && - reevaluateTaskComponent.ReevaluateFlagComponentType == reevaluateTaskComponents[j].ReevaluateFlagComponentType) { - keepSystemActive = true; - break; - } - } - - if (!keepSystemActive) { - EntityCommandBuffer.SetComponentEnabled(entityIndex, entity, reevaluateTaskComponent.ReevaluateFlagComponentType, false); - } - // The task should always disable itself. - taskComponent.Reevaluate = false; - reevaluateTaskComponent.ReevaluateStatus = ReevaluateStatus.Inactive; - } else { - // Store the current status of the task. This status will be compared after the task is reevaluated within DetermineInterruptSystem. - reevaluateTaskComponent.OriginalStatus = taskComponent.Status; - } - - reevaluateTaskComponents[i] = reevaluateTaskComponent; - - taskComponent.Reevaluate = reevaluate; - taskComponents[reevaluateTaskComponent.Index] = taskComponent; - } - } - } - } - - /// - /// The tasks have been reevaluated. Compare the status to determine if an interrupt should occur. - /// - [UpdateInGroup(typeof(InterruptSystemGroup))] - [UpdateBefore(typeof(InterruptSystem))] - public partial struct ConditionalAbortsInvokerSystem : ISystem - { - private EntityQuery m_Query; - - /// - /// Builds the query. - /// - /// THe current SystemState. - private void OnCreate(ref SystemState state) - { - m_Query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW().WithAbsent().Build(); - } - - /// - /// Creates the jobs necessary for conditional aborts. - /// - /// The current SystemState. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var ecb = new EntityCommandBuffer(Allocator.TempJob); - state.Dependency = new ConditionalAbortsJob() - { - EntityCommandBuffer = ecb.AsParallelWriter() - }.ScheduleParallel(m_Query, state.Dependency); - - // The jobs must be run immediately for the next systems. - state.Dependency.Complete(); - ecb.Playback(state.EntityManager); - ecb.Dispose(); - } - - /// - /// Job which checks for any tasks that should be reevaluated with conditional aborts. This job only flags the tasks, it does not do - /// the actual reevaluation or interruption. - /// - [BurstCompile] - private partial struct ConditionalAbortsJob : IJobEntity - { - [Tooltip("CommandBuffer which sets the component data.")] - public EntityCommandBuffer.ParallelWriter EntityCommandBuffer; - - /// - /// Executes the job. - /// - /// The entity that is being acted upon. - /// The index of the entity. - /// An array of branch components. - /// An array of task components. - /// An array of reevaluate task components. - [BurstCompile] - public void Execute(Entity entity, [EntityIndexInQuery] int entityIndex, ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer reevaluateTaskComponents) - { - for (int i = 0; i < reevaluateTaskComponents.Length; ++i) { - var reevaluateTaskComponent = reevaluateTaskComponents[i]; - var taskComponent = taskComponents[reevaluateTaskComponent.Index]; - - if (taskComponent.Reevaluate) { - if (reevaluateTaskComponent.OriginalStatus != taskComponent.Status) { - // The status is different. This will cause an interrupt. - var branchComponent = branchComponents[taskComponent.BranchIndex]; - // The task with the highest priority should cause the abort. - if (branchComponent.InterruptType == InterruptType.None || taskComponent.Index < branchComponent.InterruptIndex) { - branchComponent.InterruptIndex = taskComponent.Index; - branchComponent.InterruptType = InterruptType.Branch; - branchComponents[taskComponent.BranchIndex] = branchComponent; - } else { - taskComponent.Status = TaskStatus.Inactive; - } - - taskComponent.Reevaluate = false; - taskComponents[reevaluateTaskComponent.Index] = taskComponent; - EntityCommandBuffer.SetComponentEnabled(entityIndex, entity, true); - - reevaluateTaskComponent.ReevaluateStatus = ReevaluateStatus.Dirty; - var reevaluateTaskComponentsBuffer = reevaluateTaskComponents; - reevaluateTaskComponentsBuffer[i] = reevaluateTaskComponent; - } - } - } - } - } - } - - /// - /// Processes any interrupts. - /// - [UpdateInGroup(typeof(InterruptSystemGroup))] - [UpdateAfter(typeof(ConditionalAbortsInvokerSystem))] - public partial struct InterruptSystem : ISystem - { - private EntityQuery m_Query; - - /// - /// Builds the query. - /// - /// THe current SystemState. - private void OnCreate(ref SystemState state) - { - m_Query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAll().Build(); - } - - /// - /// Creates the InterruptJob. - /// - /// The current SystemState. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var ecb = new EntityCommandBuffer(Allocator.TempJob); - state.Dependency = new InterruptJob() - { - EntityCommandBuffer = ecb.AsParallelWriter(), - }.ScheduleParallel(m_Query, state.Dependency); - - // The job must run immediately for the next systems. - state.Dependency.Complete(); - ecb.Playback(state.EntityManager); - ecb.Dispose(); - } - - /// - /// Triggers the interrupts. - /// - [BurstCompile] - private partial struct InterruptJob : IJobEntity - { - [Tooltip("CommandBuffer which sets the component data.")] - public EntityCommandBuffer.ParallelWriter EntityCommandBuffer; - - /// - /// Executes the job. - /// - /// The entity that is being acted upon. - /// The index of the entity. - /// An array of branch components. - /// An array of task components. - [BurstCompile] - public void Execute(Entity entity, [EntityIndexInQuery] int entityIndex, DynamicBuffer branchComponents, DynamicBuffer taskComponents) - { - for (ushort i = 0; i < branchComponents.Length; ++i) { - var branchComponent = branchComponents[i]; - if (branchComponent.InterruptType != InterruptType.None) { - var targetTaskComponent = taskComponents[branchComponent.InterruptIndex]; - var parentIndex = targetTaskComponent.ParentIndex == ushort.MaxValue ? targetTaskComponent.Index : targetTaskComponent.ParentIndex; - TaskStatus prevActiveNewStatus; - if (branchComponent.InterruptType == InterruptType.Branch) { - branchComponent.NextIndex = branchComponent.InterruptIndex; - branchComponents[i] = branchComponent; - - // Start the target task. - targetTaskComponent.Status = TaskStatus.Running; - // Set the target branch tasks to running. Any parent that uses conditional aborts should implement IInterruptResponder. - while (parentIndex != ushort.MaxValue && taskComponents[parentIndex].Status != TaskStatus.Running) { - var parentTaskComponent = taskComponents[parentIndex]; - parentTaskComponent.Status = TaskStatus.Running; - taskComponents[parentIndex] = parentTaskComponent; - parentIndex = parentTaskComponent.ParentIndex; - } - - prevActiveNewStatus = TaskStatus.Failure; - } else { // InterruptType.ImmediateSuccess/Failure. - targetTaskComponent.Status = branchComponent.InterruptType == InterruptType.ImmediateSuccess ? TaskStatus.Success : TaskStatus.Failure; - var targetBranchComponent = branchComponents[targetTaskComponent.BranchIndex]; - targetBranchComponent.NextIndex = targetTaskComponent.ParentIndex; - branchComponents[targetTaskComponent.BranchIndex] = targetBranchComponent; - - prevActiveNewStatus = targetTaskComponent.Status; - } - - // Determine if any other branches need to be interrupted. - for (ushort j = i; j < branchComponents.Length; ++j) { - if (i == j || TraversalUtility.IsParent((ushort)branchComponents[j].ActiveIndex, parentIndex, ref taskComponents)) { - AbortChildren((ushort)branchComponents[j].ActiveIndex, parentIndex, ref taskComponents, prevActiveNewStatus); - - // Reset any queued children. - var taskComponentBuffer = taskComponents; - var childCount = TraversalUtility.GetChildCount(branchComponent.ActiveIndex, ref taskComponentBuffer); - for (int k = 0; k < childCount; ++k) { - var childTaskComponent = taskComponents[branchComponent.ActiveIndex + k + 1]; - if (childTaskComponent.Status == TaskStatus.Queued) { - childTaskComponent.Status = TaskStatus.Inactive; - taskComponentBuffer[branchComponent.ActiveIndex + k + 1] = childTaskComponent; - } - } - - // If the branch is a parallel branch then reset the NextIndex. The current branch (i) will be interrupted normally above. - var localBranchComponent = branchComponents[j]; - if (localBranchComponent.InterruptType == InterruptType.None) { - localBranchComponent.NextIndex = ushort.MaxValue; - branchComponents[j] = localBranchComponent; - } - EntityCommandBuffer.SetComponentEnabled(entityIndex, entity, true); - } - } - - taskComponents[targetTaskComponent.Index] = targetTaskComponent; - } - } - } - - /// - /// Aborts all of the children within the specified branch. - /// - /// The index of the active task within the branch. - /// Aborts the tasks up to the specified parent index. - /// All of the tasks. - /// The abort status. - [BurstCompile] - private void AbortChildren(ushort activeIndex, ushort parentIndex, ref DynamicBuffer taskComponents, TaskStatus status) - { - while (activeIndex != ushort.MaxValue && activeIndex != parentIndex) { - var activeTask = taskComponents[activeIndex]; - activeTask.Status = status; - taskComponents[activeIndex] = activeTask; - activeIndex = activeTask.ParentIndex; - } - } - } - } - - /// - /// Cleanup the interrupts after they have run. - /// - [UpdateInGroup(typeof(InterruptSystemGroup), OrderLast = true)] - public partial struct InterruptCleanupSystem : ISystem - { - /// - /// Executes the system. - /// - /// The current SystemState. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - foreach (var (branchComponents, entity) in - SystemAPI.Query>().WithAll().WithEntityAccess()) { - for (int i = 0; i < branchComponents.Length; ++i) { - var branchComponent = branchComponents[i]; - if (branchComponent.InterruptType != InterruptType.None) { - // Reset the interruption. - branchComponent.InterruptType = InterruptType.None; - branchComponent.InterruptIndex = 0; - var branchComponentBuffer = branchComponents; - branchComponentBuffer[i] = branchComponent; - - state.EntityManager.SetComponentEnabled(entity, false); - } - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Systems/BeforeTraversalSystems.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Systems/BeforeTraversalSystems.cs.meta deleted file mode 100644 index 4cc57b4..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Systems/BeforeTraversalSystems.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ffa99079a1d11e547943e43bd0446c86 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Systems/CleanupSystem.cs b/Packages/com.opsive.behaviordesigner/Runtime/Systems/CleanupSystem.cs deleted file mode 100644 index 40fbb36..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Systems/CleanupSystem.cs +++ /dev/null @@ -1,176 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Systems -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Groups; - using Unity.Burst; - using Unity.Burst.Intrinsics; - using Unity.Collections; - using Unity.Entities; - - /// - /// Resets the evaluation status. - /// - [DisableAutoCreation] - [UpdateInGroup(typeof(BehaviorTreeSystemGroup), OrderLast = true)] - [BurstCompile] - public partial struct EvaluationCleanupSystem : ISystem - { - private EntityQuery m_EvaluateCleanupQuery; - private ComponentTypeHandle m_EnabledComponentHandle; - private ComponentTypeHandle m_EvaluateComponentHandle; - private BufferTypeHandle m_BranchComponentHandle; - - /// - /// Creates the required objects for use within the job system. - /// - /// The current SystemState. - [BurstCompile] - private void OnCreate(ref SystemState state) - { - m_EvaluateCleanupQuery = new EntityQueryBuilder(Allocator.Temp) - .WithAll() - .WithAllRW() - .WithOptions(EntityQueryOptions.IgnoreComponentEnabledState) - .Build(ref state); - m_EnabledComponentHandle = state.GetComponentTypeHandle(); - m_EvaluateComponentHandle = state.GetComponentTypeHandle(); - m_BranchComponentHandle = state.GetBufferTypeHandle(); - } - - /// - /// Updates the data object values for use within the job system. - /// - /// The current SystemState. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - state.Dependency.Complete(); - - // Reset the evaluation status. - m_EnabledComponentHandle.Update(ref state); - m_EvaluateComponentHandle.Update(ref state); - m_BranchComponentHandle.Update(ref state); - var evaluationCleanupJob = new EvaluationCleanupJob() - { - EnabledComponentHandle = m_EnabledComponentHandle, - EvaluateComponentHandle = m_EvaluateComponentHandle, - BranchComponentHandle = m_BranchComponentHandle, - }; - state.Dependency = evaluationCleanupJob.ScheduleParallel(m_EvaluateCleanupQuery, state.Dependency); - } - - /// - /// Job that resets the EvaluationComponent component value. - /// - [BurstCompile(CompileSynchronously = true)] - public struct EvaluationCleanupJob : IJobChunk - { - [UnityEngine.Tooltip("A reference to the Enabled Component Handle.")] - public ComponentTypeHandle EnabledComponentHandle; - [UnityEngine.Tooltip("A reference to the Evaluate Component Handle.")] - public ComponentTypeHandle EvaluateComponentHandle; - [UnityEngine.Tooltip("A reference to the Branch Component Handle.")] - public BufferTypeHandle BranchComponentHandle; - - /// - /// Resets the EvaluationComponent component value. - /// - /// Block of memory that contains the entity and components. - /// The index of the chunk. - /// Should the enabled mask be used? - /// The bitwise enabled mask. - [BurstCompile] - public void Execute(in ArchetypeChunk chunk, int unfilteredChunkIndex, bool useEnabledMask, in v128 chunkEnabledMask) - { - var branchAccessor = chunk.GetBufferAccessor(ref BranchComponentHandle); - for (int i = 0; i < chunk.Count; i++) { - // If the chunk is enabled then it should be evaluated. - if (chunk.IsComponentEnabled(ref EnabledComponentHandle, i)) { - chunk.SetComponentEnabled(ref EvaluateComponentHandle, i, true); - } - - // Reset CanExecute for all branches so they can execute in the next tick. - var branchComponents = branchAccessor[i]; - for (int j = 0; j < branchComponents.Length; j++) { - var branchComponent = branchComponents[j]; - branchComponent.CanExecute = true; - branchComponent.LastActiveIndex = ushort.MaxValue; - branchComponents[j] = branchComponent; - } - } - } - } - } - - /// - /// Resets the InterruptedFlag enabled value. - /// - [DisableAutoCreation] - [UpdateInGroup(typeof(BehaviorTreeSystemGroup), OrderLast = true)] - [BurstCompile] - public partial struct InterruptedCleanupSystem : ISystem - { - private EntityQuery m_InterruptedCleanupQuery; - private ComponentTypeHandle m_InterruptedComponentHandle; - - /// - /// Creates the required objects for use within the job system. - /// - /// The current SystemState. - [BurstCompile] - private void OnCreate(ref SystemState state) - { - m_InterruptedCleanupQuery = new EntityQueryBuilder(Allocator.Temp) - .WithAll() - .Build(ref state); - m_InterruptedComponentHandle = state.GetComponentTypeHandle(); - } - - /// - /// Updates the data object values for use within the job system. - /// - /// The current SystemState. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - // Clean up the interrupted tag. - m_InterruptedComponentHandle.Update(ref state); - var interruptedJob = new InterruptedCleanupJob() - { - InterruptedComponentHandle = m_InterruptedComponentHandle, - }; - state.Dependency = interruptedJob.ScheduleParallel(m_InterruptedCleanupQuery, state.Dependency); - } - - /// - /// Job that resets the InterruptedFlag value. - /// - [BurstCompile(CompileSynchronously = true)] - public partial struct InterruptedCleanupJob : IJobChunk - { - [UnityEngine.Tooltip("A reference to the Interrupted Component Handle.")] - public ComponentTypeHandle InterruptedComponentHandle; - - /// - /// Resets the InterruptedFlag value. - /// - /// The entity that is being acted upon. - /// The index of the entity. - [BurstCompile] - public void Execute(in ArchetypeChunk chunk, int unfilteredChunkIndex, bool useEnabledMask, in v128 chunkEnabledMask) - { - for (int i = 0; i < chunk.Count; i++) { - // Only chunks with the tag enabled will be returned so there's no need to check if the tag is enabled. - chunk.SetComponentEnabled(ref InterruptedComponentHandle, i, false); - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Systems/CleanupSystem.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Systems/CleanupSystem.cs.meta deleted file mode 100644 index 2f9a2cc..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Systems/CleanupSystem.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 36ac1accbf78b7344be0384fd1edf942 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Systems/TaskObjectSystem.cs b/Packages/com.opsive.behaviordesigner/Runtime/Systems/TaskObjectSystem.cs deleted file mode 100644 index 9050a69..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Systems/TaskObjectSystem.cs +++ /dev/null @@ -1,217 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Systems -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Groups; - using Opsive.BehaviorDesigner.Runtime.Tasks; - using Opsive.BehaviorDesigner.Runtime.Utility; - using Opsive.GraphDesigner.Runtime; - using Unity.Entities; - using UnityEngine; - - /// - /// Specifies that the node is an object task which can specify the next child that should run. - /// - public interface ITaskObjectParentNode - { - /// - /// Returns the index of the next child that should run. Set to ushort.MaxValue to ignore. - /// - ushort NextChildIndex { get; } - } - - /// - /// The DOTS data structure for the TaskObject class. - /// - public struct TaskObjectComponent : IBufferElementData - { - [Tooltip("The index of the task.")] - public ushort Index; - } - - /// - /// A DOTS flag indicating when an TaskObject node is active. - /// - public struct TaskObjectFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the TaskObject logic. - /// - [DisableAutoCreation] - [UpdateInGroup(typeof(TraversalTaskSystemGroup), OrderLast = true)] - public partial struct TaskObjectSystem : ISystem - { - /// - /// Updates the logic. - /// - /// The current state of the system. - private void OnUpdate(ref SystemState state) - { - // When the task is interrupted there is no callback which prevents Task.OnEnd from being called. Track the status within the referenced task object and if the status is different then - // the task was aborted and OnEnd needs to be called. - foreach (var (taskObjectComponents, taskComponents, entity) in - SystemAPI.Query, DynamicBuffer>().WithAll().WithEntityAccess()) { - var behaviorTree = BehaviorTree.GetBehaviorTree(entity); - if (behaviorTree == null) { - continue; - } - - for (int i = 0; i < taskObjectComponents.Length; ++i) { - var taskObjectComponent = taskObjectComponents[i]; - var taskComponent = taskComponents[taskObjectComponent.Index]; - if (taskComponent.Status == TaskStatus.Success || taskComponent.Status == TaskStatus.Failure) { - var task = behaviorTree.GetTask(taskObjectComponent.Index) as Task; - if (task.Status != taskComponent.Status) { - task.OnEnd(); - task.Status = taskComponent.Status; - } - } - } - } - - // Update the task objects. - foreach (var (taskObjectComponents, taskComponents, branchComponents, entity) in - SystemAPI.Query, DynamicBuffer, DynamicBuffer>().WithAll().WithEntityAccess()) { - - var behaviorTree = BehaviorTree.GetBehaviorTree(entity); - if (behaviorTree == null) { - continue; - } - - for (int i = 0; i < taskObjectComponents.Length; ++i) { - var taskObjectComponent = taskObjectComponents[i]; - var taskComponent = taskComponents[taskObjectComponent.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - if (!branchComponent.CanExecute || branchComponent.ActiveIndex != taskComponent.Index) { - continue; - } - - var task = behaviorTree.GetTask(taskObjectComponent.Index) as Task; - if (taskComponent.Status == TaskStatus.Queued) { - task.Status = taskComponent.Status = TaskStatus.Running; - var taskComponentBuffer = taskComponents; - taskComponentBuffer[taskComponent.Index] = taskComponent; - - task.OnStart(); - } - if (taskComponent.Status != TaskStatus.Running) { - continue; - } - - var status = task.OnUpdate(); - // Update the status if has changed. - if (status != taskComponent.Status) { - task.Status = taskComponent.Status = status; - var taskComponentBuffer = taskComponents; - taskComponentBuffer[taskComponent.Index] = taskComponent; - - // End the task if it is done running. - if (status != TaskStatus.Running) { - task.OnEnd(); - - branchComponent = branchComponents[taskComponent.BranchIndex]; - branchComponent.NextIndex = taskComponent.ParentIndex; - var branchComponentBuffer = branchComponents; - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - } - } - - if (task is IParentNode && (task is ITaskObjectParentNode taskObjectParentNode)) { - if (status == TaskStatus.Running) { - // Parent object tasks do not have a direct way to set the next child. Use the ITaskObjectParentNode to switch the child task. - if (taskObjectParentNode.NextChildIndex != ushort.MaxValue && taskComponents[taskObjectParentNode.NextChildIndex].Status != TaskStatus.Running) { - branchComponent = branchComponents[taskComponent.BranchIndex]; - branchComponent.NextIndex = taskObjectParentNode.NextChildIndex; - var branchComponentBuffer = branchComponents; - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - - var nextTaskComponent = taskComponents[taskObjectParentNode.NextChildIndex]; - nextTaskComponent.Status = TaskStatus.Queued; - var taskComponentBuffer = taskComponents; - taskComponentBuffer[taskObjectParentNode.NextChildIndex] = nextTaskComponent; - } - } else if (status == TaskStatus.Success || status == TaskStatus.Failure) { - // An interrupt should occur if the parent returns a success or failure status before the children. - var taskComponentBuffer = taskComponents; - var childCount = TraversalUtility.GetChildCount(taskComponent.Index, ref taskComponentBuffer); - var branchComponentBuffer = branchComponents; - var hasInterruptComponents = SystemAPI.HasComponent(entity); - var interruptedFlagEnabled = SystemAPI.IsComponentEnabled(entity); - for (ushort j = (ushort)(taskComponent.Index + 1); j < taskComponent.Index + 1 + childCount; ++j) { - var childTaskComponent = taskComponentBuffer[j]; - if (childTaskComponent.Status == TaskStatus.Running || childTaskComponent.Status == TaskStatus.Queued) { - childTaskComponent.Status = status; - taskComponentBuffer[j] = childTaskComponent; - - branchComponent = branchComponentBuffer[childTaskComponent.BranchIndex]; - if (!hasInterruptComponents) { - ComponentUtility.AddInterruptComponents(behaviorTree.World.EntityManager, entity); - hasInterruptComponents = true; - } - if (!interruptedFlagEnabled) { - SystemAPI.SetComponentEnabled(entity, true); - interruptedFlagEnabled = true; - } - if (branchComponent.ActiveIndex == childTaskComponent.Index) { - branchComponent.NextIndex = ushort.MaxValue; - branchComponentBuffer[childTaskComponent.BranchIndex] = branchComponent; - } - } - } - } - } - } - } - } - } - - /// - /// A DOTS tag indicating when an TaskObject node needs to be reevaluated. - /// - public struct TaskObjectReevaluateFlag : IComponentData, IEnableableComponent - { - } - - /// - /// Runs the TaskObject reevaluation logic. - /// - [DisableAutoCreation] - public partial struct TaskObjectReevaluateSystem : ISystem - { - /// - /// Updates the reevaluation logic. - /// - /// The current state of the system. - private void OnUpdate(ref SystemState state) - { - foreach (var (taskComponents, taskObjectComponents, entity) in - SystemAPI.Query, DynamicBuffer>().WithAll().WithEntityAccess()) { - for (int i = 0; i < taskObjectComponents.Length; ++i) { - var taskObjectComponent = taskObjectComponents[i]; - var taskComponent = taskComponents[taskObjectComponent.Index]; - if (!taskComponent.Reevaluate) { - continue; - } - var behaviorTree = BehaviorTree.GetBehaviorTree(entity); - if (behaviorTree == null) { - continue; - } - - var task = behaviorTree.GetTask(taskObjectComponent.Index) as IConditionalReevaluation; - var status = task.OnReevaluateUpdate(); - if (status != taskComponent.Status) { - taskComponent.Status = status; - var buffer = taskComponents; - buffer[taskComponent.Index] = taskComponent; - } - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Systems/TaskObjectSystem.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Systems/TaskObjectSystem.cs.meta deleted file mode 100644 index e8c518a..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Systems/TaskObjectSystem.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 203f2349f12650c4f887e6a0a3925c04 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Systems/TraversalSystems.cs b/Packages/com.opsive.behaviordesigner/Runtime/Systems/TraversalSystems.cs deleted file mode 100644 index 7eb9b62..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Systems/TraversalSystems.cs +++ /dev/null @@ -1,617 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Systems -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Groups; - using Opsive.BehaviorDesigner.Runtime.Tasks; - using Opsive.BehaviorDesigner.Runtime.Utility; - using Unity.Burst; - using Unity.Collections; - using Unity.Entities; - using Unity.Jobs; - using UnityEngine; - - /// - /// Traverses and ensures the correct tasks are active. - /// - [UpdateInGroup(typeof(TraversalSystemGroup))] - [UpdateAfter(typeof(TraversalTaskSystemGroup))] - public partial struct EvaluationSystem : ISystem - { - private bool m_JobScheduled; - private EntityQuery m_Query; - private JobHandle m_Dependency; - private EntityCommandBuffer m_EntityCommandBuffer; - - /// - /// The system has been created. - /// - /// The state of the system. - private void OnCreate(ref SystemState state) - { - m_JobScheduled = false; - m_Query = SystemAPI.QueryBuilder().WithAllRW().WithAbsent().Build(); - } - - /// - /// Starts the job which traverses the tree. - /// - /// The current state of the system. - private void OnUpdate(ref SystemState state) - { - m_JobScheduled = true; - - m_EntityCommandBuffer = new EntityCommandBuffer(state.WorldUpdateAllocator); - m_Dependency = state.Dependency = new EvaluationJob() - { - EntityCommandBuffer = m_EntityCommandBuffer.AsParallelWriter(), - }.ScheduleParallel(m_Query, state.Dependency); - } - - /// - /// Completes the job and releases any memory. - /// - /// The running EntityManager. - /// Has the system been stopped? - [BurstCompile] - public void Complete(EntityManager entityManager, bool stopRunning = false) - { - if (!m_JobScheduled) { - return; - } - - if (!stopRunning) { - m_Dependency.Complete(); - m_EntityCommandBuffer.Playback(entityManager); - m_EntityCommandBuffer.Dispose(); - } - - m_JobScheduled = false; - } - - /// - /// Job which traverses the tree. - /// - [BurstCompile] - public partial struct EvaluationJob : IJobEntity - { - [Tooltip("CommandBuffer which sets the component data.")] - public EntityCommandBuffer.ParallelWriter EntityCommandBuffer; - - /// - /// Executes the job. - /// - /// The entity that is being acted upon. - /// The index of the entity.An array of branch components. - /// An array of task components. - [BurstCompile] - public void Execute(Entity entity, [EntityIndexInQuery] int entityIndex, ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents) - { - for (int i = 0; i < branchComponents.Length; ++i) { - var branchComponent = branchComponents[i]; - if (branchComponent.ActiveIndex != ushort.MaxValue && branchComponent.ActiveIndex == branchComponent.NextIndex) { - var activeTask = taskComponents[branchComponent.ActiveIndex]; - if (activeTask.Status == TaskStatus.Success || activeTask.Status == TaskStatus.Failure) { - branchComponent.NextIndex = activeTask.ParentIndex; - } - } - if (branchComponent.ActiveIndex != branchComponent.NextIndex) { - // Do not switch into a disabled task. - if (branchComponent.NextIndex != ushort.MaxValue && taskComponents[branchComponent.NextIndex].Disabled) { - var taskComponent = taskComponents[branchComponent.NextIndex]; - taskComponent.Status = TaskStatus.Inactive; - var taskComponentBuffer = taskComponents; - taskComponentBuffer[branchComponent.NextIndex] = taskComponent; - - branchComponent.NextIndex = branchComponent.ActiveIndex; - } else { - // The status for all children should be reset back to their inactive state if the next task is within a new branch. This will prevent - // the return status from being reset when the task ends normally. - var taskComponentBuffer = taskComponents; - if (branchComponent.NextIndex != ushort.MaxValue && - !TraversalUtility.IsParent((ushort)branchComponent.ActiveIndex, (ushort)branchComponent.NextIndex, ref taskComponentBuffer)) { - var nextTaskComponent = taskComponents[branchComponent.NextIndex]; - if (branchComponent.ActiveIndex != ushort.MaxValue && nextTaskComponent.Status != TaskStatus.Running) { // If the next task is already running then an interrupt has already reset the children. - var childCount = TraversalUtility.GetChildCount(branchComponent.NextIndex, ref taskComponentBuffer); - for (int j = 0; j < childCount; ++j) { - var childTaskComponent = taskComponents[branchComponent.NextIndex + j + 1]; - childTaskComponent.Status = TaskStatus.Inactive; - taskComponentBuffer[branchComponent.NextIndex + j + 1] = childTaskComponent; - } - } - nextTaskComponent.Status = nextTaskComponent.Status == TaskStatus.Running ? TaskStatus.Running : TaskStatus.Queued; - taskComponentBuffer[branchComponent.NextIndex] = nextTaskComponent; - } - branchComponent.ActiveIndex = branchComponent.NextIndex; - - // Change the component tag if the task type is different. - var componentType = branchComponent.ActiveIndex != ushort.MaxValue ? taskComponents[branchComponent.ActiveIndex].FlagComponentType : new ComponentType(); - if (componentType != branchComponent.ActiveFlagComponentType) { - if (branchComponent.ActiveFlagComponentType.TypeIndex != TypeIndex.Null) { - var deactivateTag = true; - for (int j = 0; j < branchComponents.Length; ++j) { - // The tag should be deactivated if no other tasks have the same tag type. - if (i != j && branchComponents[j].ActiveIndex != ushort.MaxValue && - branchComponent.ActiveFlagComponentType == branchComponents[j].ActiveFlagComponentType) { - deactivateTag = false; - break; - } - } - - // The task of that type is no longer active - disable the system to prevent it from running. - if (deactivateTag) { - EntityCommandBuffer.SetComponentEnabled(entityIndex, entity, branchComponent.ActiveFlagComponentType, false); - } - } - // A new system type should start. - if (branchComponent.ActiveIndex != ushort.MaxValue) { - var taskComponent = taskComponents[branchComponent.ActiveIndex]; - EntityCommandBuffer.SetComponentEnabled(entityIndex, entity, taskComponent.FlagComponentType, true); - } - branchComponent.ActiveFlagComponentType = componentType; - } - } - var branchComponentBuffer = branchComponents; - branchComponentBuffer[i] = branchComponent; - } - } - } - } - } - - /// - /// Loops through the active tasks to determine if the system should stay active for the current tick. - /// - [UpdateInGroup(typeof(TraversalSystemGroup))] - [UpdateAfter(typeof(EvaluationSystem))] - public partial struct DetermineEvaluationSystem : ISystem - { - [Tooltip("Should the group stay active? An inactive tree does not run.")] - public bool Active { get; private set; } - [Tooltip("Should the group be evaluated? This bool indicates if the entire tree should be evaluated instead of the reevaluation" + - "concept for conditional aborts. The tree will be reevaluated if any of the leaf tasks have a status of running.")] - public bool Evaluate { get; private set; } - - private bool m_JobScheduled; - private JobHandle m_Dependency; - - private EntityQuery m_Query32; - private EntityQuery m_Query64; - private EntityQuery m_Query128; - private EntityQuery m_Query512; - private EntityQuery m_Query4096; - private EntityCommandBuffer m_EntityCommandBuffer32; - private EntityCommandBuffer m_EntityCommandBuffer64; - private EntityCommandBuffer m_EntityCommandBuffer128; - private EntityCommandBuffer m_EntityCommandBuffer512; - private EntityCommandBuffer m_EntityCommandBuffer4096; - - private NativeArray m_Results; - - /// - /// The system has been created. - /// - /// The state of the system. - private void OnCreate(ref SystemState state) - { - Active = Evaluate = true; - m_JobScheduled = false; - m_Query32 = SystemAPI.QueryBuilder().WithAllRW().WithAll().WithAbsent().Build(); - m_Query64 = SystemAPI.QueryBuilder().WithAllRW().WithAll().WithAbsent().Build(); - m_Query128 = SystemAPI.QueryBuilder().WithAllRW().WithAll().WithAbsent().Build(); - m_Query512 = SystemAPI.QueryBuilder().WithAllRW().WithAll().WithAbsent().Build(); - m_Query4096 = SystemAPI.QueryBuilder().WithAllRW().WithAll().WithAbsent().Build(); - } - - /// - /// Executes the job to determine if the system should stay active and evaluating. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - Active = Evaluate = true; - m_JobScheduled = true; - - m_EntityCommandBuffer32 = new EntityCommandBuffer(Allocator.TempJob); - m_EntityCommandBuffer64 = new EntityCommandBuffer(Allocator.TempJob); - m_EntityCommandBuffer128 = new EntityCommandBuffer(Allocator.TempJob); - m_EntityCommandBuffer512 = new EntityCommandBuffer(Allocator.TempJob); - m_EntityCommandBuffer4096 = new EntityCommandBuffer(Allocator.TempJob); - - m_Results = new NativeArray(3, Allocator.TempJob, NativeArrayOptions.UninitializedMemory); - for (int i = 0; i < m_Results.Length; ++i) { - m_Results[i] = false; - } - - // Chain jobs sequentially since they all write to the shared Results array. - m_Dependency = new DetermineEvaluationJob32() - { - EntityCommandBuffer = m_EntityCommandBuffer32.AsParallelWriter(), - Results = m_Results - }.ScheduleParallel(m_Query32, state.Dependency); - m_Dependency = new DetermineEvaluationJob64() - { - EntityCommandBuffer = m_EntityCommandBuffer64.AsParallelWriter(), - Results = m_Results - }.ScheduleParallel(m_Query64, m_Dependency); - m_Dependency = new DetermineEvaluationJob128() - { - EntityCommandBuffer = m_EntityCommandBuffer128.AsParallelWriter(), - Results = m_Results - }.ScheduleParallel(m_Query128, m_Dependency); - m_Dependency = new DetermineEvaluationJob512() - { - EntityCommandBuffer = m_EntityCommandBuffer512.AsParallelWriter(), - Results = m_Results - }.ScheduleParallel(m_Query512, m_Dependency); - m_Dependency = new DetermineEvaluationJob4096() - { - EntityCommandBuffer = m_EntityCommandBuffer4096.AsParallelWriter(), - Results = m_Results - }.ScheduleParallel(m_Query4096, m_Dependency); - - state.Dependency = m_Dependency; - } - - /// - /// Completes the job and releases any memory. - /// - /// The running EntityManager. - [BurstCompile] - public void Complete(EntityManager entityManager) - { - if (!m_JobScheduled) { - return; - } - - m_Dependency.Complete(); - m_EntityCommandBuffer32.Playback(entityManager); - m_EntityCommandBuffer32.Dispose(); - m_EntityCommandBuffer64.Playback(entityManager); - m_EntityCommandBuffer64.Dispose(); - m_EntityCommandBuffer128.Playback(entityManager); - m_EntityCommandBuffer128.Dispose(); - m_EntityCommandBuffer512.Playback(entityManager); - m_EntityCommandBuffer512.Dispose(); - m_EntityCommandBuffer4096.Playback(entityManager); - m_EntityCommandBuffer4096.Dispose(); - - if (m_Results.IsCreated) { - if (m_Results[0]) { - Active = m_Results[1]; - Evaluate = m_Results[2]; - } else { - // If the first element is false then no trees executed. - Active = Evaluate = false; - } - m_Results.Dispose(); - } - m_JobScheduled = false; - } - - /// - /// The system has been destroyed. - /// - /// The current state of the system. - private void OnDestroy(ref SystemState state) - { - if (m_Dependency.IsCompleted) { - return; - } - - m_Results.Dispose(); - } - - /// - /// Job which determine if the system should stay active. If any behavior tree should stay active then the entire system must remain active. - /// - [BurstCompile] - public partial struct DetermineEvaluationJob32 : IJobEntity - { - [Tooltip("CommandBuffer which sets the component data.")] - public EntityCommandBuffer.ParallelWriter EntityCommandBuffer; - [Tooltip("The computed results.")] - [NativeDisableParallelForRestriction] public NativeArray Results; - - /// - /// Executes the job. - /// - /// The entity that is being acted upon. - /// The index of the entity. - /// An array of branch components. - /// An array of task components. - /// The EvaluationComponent that belongs to the entity. - [BurstCompile] - private void Execute(Entity entity, [EntityIndexInQuery] int entityIndex, ref DynamicBuffer branchComponents, in DynamicBuffer taskComponents, ref EvaluationComponent32 evaluationComponent) - { - var evaluatedTasks = evaluationComponent.EvaluatedTasks; - EvaluationUtility.DetermineEvaluation(entity, entityIndex, ref branchComponents, taskComponents, ref evaluatedTasks, evaluationComponent.EvaluationType, evaluationComponent.MaxEvaluationCount, EntityCommandBuffer, Results); - evaluationComponent.EvaluatedTasks = evaluatedTasks; - } - } - - /// - /// Job which determine if the system should stay active. If any behavior tree should stay active then the entire system must remain active. - /// - [BurstCompile] - public partial struct DetermineEvaluationJob64 : IJobEntity - { - [Tooltip("CommandBuffer which sets the component data.")] - public EntityCommandBuffer.ParallelWriter EntityCommandBuffer; - [Tooltip("The computed results.")] - [NativeDisableParallelForRestriction] public NativeArray Results; - - /// - /// Executes the job. - /// - /// The entity that is being acted upon. - /// The index of the entity. - /// An array of branch components. - /// An array of task components. - /// The EvaluationComponent that belongs to the entity. - [BurstCompile] - private void Execute(Entity entity, [EntityIndexInQuery] int entityIndex, ref DynamicBuffer branchComponents, in DynamicBuffer taskComponents, ref EvaluationComponent64 evaluationComponent) - { - var evaluatedTasks = evaluationComponent.EvaluatedTasks; - EvaluationUtility.DetermineEvaluation(entity, entityIndex, ref branchComponents, taskComponents, ref evaluatedTasks, evaluationComponent.EvaluationType, evaluationComponent.MaxEvaluationCount, EntityCommandBuffer, Results); - evaluationComponent.EvaluatedTasks = evaluatedTasks; - } - } - - /// - /// Job which determine if the system should stay active. If any behavior tree should stay active then the entire system must remain active. - /// - [BurstCompile] - public partial struct DetermineEvaluationJob128 : IJobEntity - { - [Tooltip("CommandBuffer which sets the component data.")] - public EntityCommandBuffer.ParallelWriter EntityCommandBuffer; - [Tooltip("The computed results.")] - [NativeDisableParallelForRestriction] public NativeArray Results; - - /// - /// Executes the job. - /// - /// The entity that is being acted upon. - /// The index of the entity. - /// An array of branch components. - /// An array of task components. - /// The EvaluationComponent that belongs to the entity. - [BurstCompile] - private void Execute(Entity entity, [EntityIndexInQuery] int entityIndex, ref DynamicBuffer branchComponents, in DynamicBuffer taskComponents, ref EvaluationComponent128 evaluationComponent) - { - var evaluatedTasks = evaluationComponent.EvaluatedTasks; - EvaluationUtility.DetermineEvaluation(entity, entityIndex, ref branchComponents, taskComponents, ref evaluatedTasks, evaluationComponent.EvaluationType, evaluationComponent.MaxEvaluationCount, EntityCommandBuffer, Results); - evaluationComponent.EvaluatedTasks = evaluatedTasks; - } - } - - - /// - /// Job which determine if the system should stay active. If any behavior tree should stay active then the entire system must remain active. - /// - [BurstCompile] - public partial struct DetermineEvaluationJob512 : IJobEntity - { - [Tooltip("CommandBuffer which sets the component data.")] - public EntityCommandBuffer.ParallelWriter EntityCommandBuffer; - [Tooltip("The computed results.")] - [NativeDisableParallelForRestriction] public NativeArray Results; - - /// - /// Executes the job. - /// - /// The entity that is being acted upon. - /// The index of the entity. - /// An array of branch components. - /// An array of task components. - /// The EvaluationComponent that belongs to the entity. - [BurstCompile] - private void Execute(Entity entity, [EntityIndexInQuery] int entityIndex, ref DynamicBuffer branchComponents, in DynamicBuffer taskComponents, ref EvaluationComponent512 evaluationComponent) - { - var evaluatedTasks = evaluationComponent.EvaluatedTasks; - EvaluationUtility.DetermineEvaluation(entity, entityIndex, ref branchComponents, taskComponents, ref evaluatedTasks, evaluationComponent.EvaluationType, evaluationComponent.MaxEvaluationCount, EntityCommandBuffer, Results); - evaluationComponent.EvaluatedTasks = evaluatedTasks; - } - } - - /// - /// Job which determine if the system should stay active. If any behavior tree should stay active then the entire system must remain active. - /// - [BurstCompile] - public partial struct DetermineEvaluationJob4096 : IJobEntity - { - [Tooltip("CommandBuffer which sets the component data.")] - public EntityCommandBuffer.ParallelWriter EntityCommandBuffer; - [Tooltip("The computed results.")] - [NativeDisableParallelForRestriction] public NativeArray Results; - - /// - /// Executes the job. - /// - /// The entity that is being acted upon. - /// The index of the entity. - /// An array of branch components. - /// An array of task components. - /// The EvaluationComponent that belongs to the entity. - [BurstCompile] - private void Execute(Entity entity, [EntityIndexInQuery] int entityIndex, ref DynamicBuffer branchComponents, in DynamicBuffer taskComponents, ref EvaluationComponent4096 evaluationComponent) - { - var evaluatedTasks = evaluationComponent.EvaluatedTasks; - EvaluationUtility.DetermineEvaluation(entity, entityIndex, ref branchComponents, taskComponents, ref evaluatedTasks, evaluationComponent.EvaluationType, evaluationComponent.MaxEvaluationCount, EntityCommandBuffer, Results); - evaluationComponent.EvaluatedTasks = evaluatedTasks; - } - } - } - - /// - /// Utility functions for the task evaluation. - /// - [BurstCompile] - public struct EvaluationUtility - { - /// - /// Is the task at the specified index a parent task. - /// - /// An array of task components. - /// The index to check if it is a parent. - /// True if the task at the specified index is a parent task. - [BurstCompile] - public static bool IsParentTask(ref DynamicBuffer taskComponents, int index) - { - // The last task cannot be a parent. - if (index == taskComponents.Length - 1) { - return false; - } - - // The next child will have a parent of the current task. - if (taskComponents[index + 1].ParentIndex == index) { - return true; - } - - // The parent index is different - the current task is not a parent. - return false; - } - - /// - /// Core evaluation logic that works with any FixedList type for EvaluatedTasks. - /// - /// The type of FixedList for EvaluatedTasks. - /// The entity that is being acted upon. - /// The index of the entity. - /// An array of branch components. - /// An array of task components. - /// The evaluated tasks list. - /// The evaluation type. - /// The maximum evaluation count. - /// The command buffer for setting component data. - /// The computed results array. - [BurstCompile] - public static void DetermineEvaluation(Entity entity, int entityIndex, ref DynamicBuffer branchComponents, DynamicBuffer taskComponents, ref TFixedList evaluatedTasks, EvaluationType evaluationType, ushort maxEvaluationCount, EntityCommandBuffer.ParallelWriter entityCommandBuffer, NativeArray results) where TFixedList : struct, INativeList - { - results[0] = true; // The first element indicates that the job has been executed. - - // No branches may be active. - var active = false; - var evaluate = false; - var evaluatedMask = new FixedList4096Bytes(); - for (int i = 0; i < branchComponents.Length; ++i) { - var branchComponent = branchComponents[i]; - if (branchComponent.ActiveIndex == ushort.MaxValue || !branchComponent.CanExecute) { - continue; - } - active = true; - - // Interrupts are processed in a separate system that is run outside of the task execution system. As a result the branch should not continue to evaluate. - if (branchComponent.InterruptType != InterruptType.None) { - continue; - } - - var taskComponent = taskComponents[branchComponent.ActiveIndex]; - var isParentTask = EvaluationUtility.IsParentTask(ref taskComponents, branchComponent.ActiveIndex); - // The branch can evaluate if the active task is an outer node (action or conditional) and is not running OR - // the task is an inner node (composite or decorator), is running, and is not a parallel task. Parent tasks cannot run without an active child. - if ((!isParentTask && taskComponent.Status != TaskStatus.Running && taskComponent.ParentIndex != ushort.MaxValue) || - (isParentTask && (taskComponent.Status == TaskStatus.Queued || taskComponent.Status == TaskStatus.Running))) { - - // Compute active task bit positions. - var bitIndex = branchComponent.ActiveIndex + 1; - var arrayIndex = bitIndex / ComponentUtility.ulongBitSize; - var bitInUlong = bitIndex % ComponentUtility.ulongBitSize; - while (evaluatedMask.Length <= arrayIndex) evaluatedMask.Add(0UL); - evaluatedMask[arrayIndex] |= (1UL << bitInUlong); - - // Prevent evaluating the same task again within the same tick. - if (branchComponent.ActiveIndex == branchComponent.LastActiveIndex) { - branchComponent.CanExecute = false; - branchComponents.ElementAt(i) = branchComponent; - continue; - } - - // Check if the task has already been evaluated this tick. - var alreadyEvaluated = (evaluatedTasks[arrayIndex] & (1UL << bitInUlong)) != 0; - - // Decision to evaluate: - // - For parent tasks: always evaluate. The parent task should never be the last executing task. - // - For non-parent tasks: evaluate if this task hasn't been evaluated yet. - if (isParentTask || !alreadyEvaluated) { - evaluate = true; - branchComponent.LastActiveIndex = branchComponent.ActiveIndex; - } else { - branchComponent.CanExecute = false; - } - branchComponents.ElementAt(i) = branchComponent; - - evaluatedTasks[arrayIndex] |= evaluatedMask[arrayIndex]; - } else { - branchComponent.CanExecute = false; - branchComponents.ElementAt(i) = branchComponent; - } - } - - // If a branch is active then at least one task within that branch is active. - if (active) { - results[1] = true; // Active result. - - if (evaluate) { - if (evaluationType == EvaluationType.Count) { - // Use the last element of EvaluatedTasks as the counter. - evaluatedTasks[evaluatedTasks.Length - 1]++; - if (evaluatedTasks[evaluatedTasks.Length - 1] >= maxEvaluationCount) { - // Reset the counter and bitmask elements. - for (int i = 0; i < evaluatedTasks.Length; ++i) { - evaluatedTasks[i] = 0; - } - entityCommandBuffer.SetComponentEnabled(entityIndex, entity, false); - // Set the bitmask for current active tasks to prevent one extra task from being executed on subsequent frames. - SetActiveBranchBits(ref branchComponents, ref evaluatedTasks); - } else { - results[2] = true; // Evaluate result. - } - } else { - results[2] = true; // Evaluate result - continue the loop. - } - } else { - entityCommandBuffer.SetComponentEnabled(entityIndex, entity, false); - // Reset the evaluated tasks bitmask. - for (int i = 0; i < evaluatedTasks.Length; ++i) { - evaluatedTasks[i] = 0; - } - // The system is going to stop evaluating this entity. It will be resumed immediately the next update. Because the DetermineEvaluationJob is run after the tasks - // update the EvaluatedTasks value should be set to the next active task. If this value is set to 0 then one extra task will always be executed with subsequent frames. - SetActiveBranchBits(ref branchComponents, ref evaluatedTasks); - } - } - } - - /// - /// Sets the bitmask bits for all active branches. This prevents one extra task from being executed on subsequent frames. - /// - /// An array of branch components. - /// The evaluated tasks list to update. - [BurstCompile] - private static void SetActiveBranchBits(ref DynamicBuffer branchComponents, ref TFixedList evaluatedTasks) where TFixedList : struct, INativeList - { - for (int i = 0; i < branchComponents.Length; ++i) { - var branchComponent = branchComponents[i]; - if (branchComponent.ActiveIndex == ushort.MaxValue) { - continue; - } - - // Compute active task bit positions. - var bitIndex = branchComponent.ActiveIndex + 1; - var arrayIndex = bitIndex / ComponentUtility.ulongBitSize; - var bitInUlong = bitIndex % ComponentUtility.ulongBitSize; - evaluatedTasks[arrayIndex] |= (1UL << bitInUlong); - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Systems/TraversalSystems.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Systems/TraversalSystems.cs.meta deleted file mode 100644 index cc0ff28..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Systems/TraversalSystems.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4e38e2be36422f54fa65b67063d03366 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks.meta deleted file mode 100644 index 61befb4..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0b7936234bfdce042b052d68dd0136f1 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions.meta deleted file mode 100644 index ab1c731..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 72fd968959b610e4bb7994fedbaab0c9 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Action.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Action.cs deleted file mode 100644 index 5423f29..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Action.cs +++ /dev/null @@ -1,19 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.GraphDesigner.Runtime; - - /// - /// A TaskObject implementation of the Action task. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public abstract class Action : Task, IAction - { - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Action.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Action.cs.meta deleted file mode 100644 index 0887adb..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Action.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 24e232a868c7a0d439cb82feeb963c8e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/ActionNode.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/ActionNode.cs deleted file mode 100644 index 17ade82..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/ActionNode.cs +++ /dev/null @@ -1,31 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.GraphDesigner.Runtime; - using UnityEngine; - - /// - /// A TaskObject implementation of the Action task. This class can be used when the task should not be grouped by the StackedAction task. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public abstract class ActionNode : Task, ITreeLogicNode, IAction - { - [Tooltip("The index of the node.")] - [SerializeField] ushort m_Index; - [Tooltip("The parent index of the node. ushort.MaxValue indicates no parent.")] - [SerializeField] ushort m_ParentIndex; - [Tooltip("The sibling index of the node. ushort.MaxValue indicates no sibling.")] - [SerializeField] ushort m_SiblingIndex; - - public ushort Index { get => m_Index; set => m_Index = value; } - public ushort ParentIndex { get => m_ParentIndex; set => m_ParentIndex = value; } - public ushort SiblingIndex { get => m_SiblingIndex; set => m_SiblingIndex = value; } - public ushort RuntimeIndex { get; set; } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/ActionNode.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/ActionNode.cs.meta deleted file mode 100644 index 5824520..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/ActionNode.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f95ceadf4eaf7df499091158c2ba5178 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions.meta deleted file mode 100644 index bc78407..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a57b0c8b5bd7c5142963151eb3723e6e -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToFloat.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToFloat.cs deleted file mode 100644 index cc957d2..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToFloat.cs +++ /dev/null @@ -1,33 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Conversions -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Converts a boolean value to a float value (true = 1.0, false = 0.0).")] - [Shared.Utility.Category("Conversions")] - public class ConvertBoolToFloat : Action - { - [Tooltip("The boolean value to convert.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set to the converted float value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = m_Value.Value ? 1.0f : 0.0f; - return TaskStatus.Success; - } - } -} -#endif - diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToFloat.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToFloat.cs.meta deleted file mode 100644 index 8e225f0..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToFloat.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 73c605544c0648e4bbf8dcfe72348337 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToInt.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToInt.cs deleted file mode 100644 index e08b49b..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToInt.cs +++ /dev/null @@ -1,33 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Conversions -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Converts a boolean value to an integer value (true = 1, false = 0).")] - [Shared.Utility.Category("Conversions")] - public class ConvertBoolToInt : Action - { - [Tooltip("The boolean value to convert.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set to the converted integer value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = m_Value.Value ? 1 : 0; - return TaskStatus.Success; - } - } -} -#endif - diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToInt.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToInt.cs.meta deleted file mode 100644 index 5b35c1d..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToInt.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3955564edbd009346b730327375e3d48 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToString.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToString.cs deleted file mode 100644 index daa94ac..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToString.cs +++ /dev/null @@ -1,33 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Conversions -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Converts a boolean value to a string value.")] - [Shared.Utility.Category("Conversions")] - public class ConvertBoolToString : Action - { - [Tooltip("The boolean value to convert.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set to the converted string value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = m_Value.Value.ToString(); - return TaskStatus.Success; - } - } -} -#endif - diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToString.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToString.cs.meta deleted file mode 100644 index 48dad45..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertBoolToString.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 888e5ecfd2f882346ad4879020c18283 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToBool.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToBool.cs deleted file mode 100644 index cb090ee..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToBool.cs +++ /dev/null @@ -1,33 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Conversions -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Converts a float value to a boolean value (0.0 = false, non-zero = true).")] - [Shared.Utility.Category("Conversions")] - public class ConvertFloatToBool : Action - { - [Tooltip("The float value to convert.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set to the converted boolean value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = m_Value.Value != 0.0f; - return TaskStatus.Success; - } - } -} -#endif - diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToBool.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToBool.cs.meta deleted file mode 100644 index b3c73f8..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToBool.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 49e265c8db111534fab491cfc5672622 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToInt.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToInt.cs deleted file mode 100644 index 4e8d0c9..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToInt.cs +++ /dev/null @@ -1,33 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Conversions -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Converts a float value to an integer value.")] - [Shared.Utility.Category("Conversions")] - public class ConvertFloatToInt : Action - { - [Tooltip("The float value to convert.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set to the converted integer value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = Mathf.RoundToInt(m_Value.Value); - return TaskStatus.Success; - } - } -} -#endif - diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToInt.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToInt.cs.meta deleted file mode 100644 index 0aeb597..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToInt.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7e596c94da53a4a45ad9113b33a1aea4 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToString.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToString.cs deleted file mode 100644 index 5443952..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToString.cs +++ /dev/null @@ -1,33 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Conversions -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Converts a float value to a string value.")] - [Shared.Utility.Category("Conversions")] - public class ConvertFloatToString : Action - { - [Tooltip("The float value to convert.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set to the converted string value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = m_Value.Value.ToString(); - return TaskStatus.Success; - } - } -} -#endif - diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToString.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToString.cs.meta deleted file mode 100644 index 258f476..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertFloatToString.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: cc1ceef260c01c645b8b47ce20199dc6 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertGameObjectToTransform.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertGameObjectToTransform.cs deleted file mode 100644 index a529b1d..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertGameObjectToTransform.cs +++ /dev/null @@ -1,37 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Conversions -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Converts a GameObject value to a Transform value.")] - [Shared.Utility.Category("Conversions")] - public class ConvertGameObjectToTransform : Action - { - [Tooltip("The GameObject value to convert.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set to the converted Transform value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - if (m_Value.Value != null) { - m_StoreResult.Value = m_Value.Value.transform; - return TaskStatus.Success; - } - m_StoreResult.Value = null; - return TaskStatus.Failure; - } - } -} -#endif - diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertGameObjectToTransform.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertGameObjectToTransform.cs.meta deleted file mode 100644 index 6227ffc..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertGameObjectToTransform.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a297e510d0a945c449c2d125813fe9d9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToBool.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToBool.cs deleted file mode 100644 index 9944f36..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToBool.cs +++ /dev/null @@ -1,33 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Conversions -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Converts an integer value to a boolean value (0 = false, non-zero = true).")] - [Shared.Utility.Category("Conversions")] - public class ConvertIntToBool : Action - { - [Tooltip("The integer value to convert.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set to the converted boolean value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = m_Value.Value != 0; - return TaskStatus.Success; - } - } -} -#endif - diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToBool.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToBool.cs.meta deleted file mode 100644 index a0d2bc0..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToBool.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 67e0599636ba3b7419611ae159070c04 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToFloat.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToFloat.cs deleted file mode 100644 index effca97..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToFloat.cs +++ /dev/null @@ -1,33 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Conversions -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Converts an integer value to a float value.")] - [Shared.Utility.Category("Conversions")] - public class ConvertIntToFloat : Action - { - [Tooltip("The integer value to convert.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set to the converted float value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = m_Value.Value; - return TaskStatus.Success; - } - } -} -#endif - diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToFloat.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToFloat.cs.meta deleted file mode 100644 index e576fd1..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToFloat.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 07440ccf7d92b14498b7e4c7b9e08e5e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToString.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToString.cs deleted file mode 100644 index feac7d1..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToString.cs +++ /dev/null @@ -1,33 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Conversions -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Converts an integer value to a string value.")] - [Shared.Utility.Category("Conversions")] - public class ConvertIntToString : Action - { - [Tooltip("The integer value to convert.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set to the converted string value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = m_Value.Value.ToString(); - return TaskStatus.Success; - } - } -} -#endif - diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToString.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToString.cs.meta deleted file mode 100644 index c43439e..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertIntToString.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: eeadd74b13bc65d45af983c98b9f3e01 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToBool.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToBool.cs deleted file mode 100644 index 063eb8c..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToBool.cs +++ /dev/null @@ -1,36 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Conversions -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Converts a string value to a boolean value.")] - [Shared.Utility.Category("Conversions")] - public class ConvertStringToBool : Action - { - [Tooltip("The string value to convert.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set to the converted boolean value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - if (bool.TryParse(m_Value.Value, out bool result)) { - m_StoreResult.Value = result; - return TaskStatus.Success; - } - return TaskStatus.Failure; - } - } -} -#endif - diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToBool.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToBool.cs.meta deleted file mode 100644 index 8b556cc..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToBool.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 336754ea3fd33e44e91733089662ebd7 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToFloat.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToFloat.cs deleted file mode 100644 index f79e721..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToFloat.cs +++ /dev/null @@ -1,36 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Conversions -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Converts a string value to a float value.")] - [Shared.Utility.Category("Conversions")] - public class ConvertStringToFloat : Action - { - [Tooltip("The string value to convert.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set to the converted float value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - if (float.TryParse(m_Value.Value, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out float result)) { - m_StoreResult.Value = result; - return TaskStatus.Success; - } - return TaskStatus.Failure; - } - } -} -#endif - diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToFloat.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToFloat.cs.meta deleted file mode 100644 index b8b7ca7..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToFloat.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d22d87f8a2847f34185c0ff330b89209 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToInt.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToInt.cs deleted file mode 100644 index b6f329d..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToInt.cs +++ /dev/null @@ -1,36 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Conversions -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Converts a string value to an integer value.")] - [Shared.Utility.Category("Conversions")] - public class ConvertStringToInt : Action - { - [Tooltip("The string value to convert.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set to the converted integer value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - if (int.TryParse(m_Value.Value, System.Globalization.NumberStyles.Integer, System.Globalization.CultureInfo.InvariantCulture, out int result)) { - m_StoreResult.Value = result; - return TaskStatus.Success; - } - return TaskStatus.Failure; - } - } -} -#endif - diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToInt.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToInt.cs.meta deleted file mode 100644 index 0d1bbad..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertStringToInt.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e2d95d3a42e27184da971d47c792ff72 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertTransformToGameObject.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertTransformToGameObject.cs deleted file mode 100644 index 10bb152..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertTransformToGameObject.cs +++ /dev/null @@ -1,37 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Conversions -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Converts a Transform value to a GameObject value.")] - [Shared.Utility.Category("Conversions")] - public class ConvertTransformToGameObject : Action - { - [Tooltip("The Transform value to convert.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set to the converted GameObject value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - if (m_Value.Value != null) { - m_StoreResult.Value = m_Value.Value.gameObject; - return TaskStatus.Success; - } - m_StoreResult.Value = null; - return TaskStatus.Failure; - } - } -} -#endif - diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertTransformToGameObject.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertTransformToGameObject.cs.meta deleted file mode 100644 index 9cfc1a6..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Conversions/ConvertTransformToGameObject.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 36617d392cb63e24184a825b05f4f78a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList.meta deleted file mode 100644 index d79aed9..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 31447ed8785ef5146bbb37d6466c1954 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/AddGameObjectToArray.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/AddGameObjectToArray.cs deleted file mode 100644 index 4120ebe..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/AddGameObjectToArray.cs +++ /dev/null @@ -1,45 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.UnityObjects -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using Opsive.Shared.Utility; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Adds the GameObject to the array.")] - [Shared.Utility.Category("Lists")] - public class AddGameObjectToArray : TargetGameObjectAction - { - [Tooltip("The list of possible GameObjects.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - [Tooltip("Are duplicates allowed to be added?")] - [SerializeField] protected SharedVariable m_AllowDuplicates = true; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - if (!m_AllowDuplicates.Value && m_StoreResult.Value.Contains(m_ResolvedGameObject)) { - return TaskStatus.Failure; - } - - var array = m_StoreResult.Value; - if (array == null) { - array = new GameObject[1]; - } else { - System.Array.Resize(ref array, array.Length + 1); - } - - m_StoreResult.Value = array; - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/AddGameObjectToArray.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/AddGameObjectToArray.cs.meta deleted file mode 100644 index e50a633..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/AddGameObjectToArray.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0e15921d659313647b2d4d2b3c76c6ec -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/AddGameObjectToList.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/AddGameObjectToList.cs deleted file mode 100644 index ea25b08..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/AddGameObjectToList.cs +++ /dev/null @@ -1,37 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.UnityObjects -{ - using Opsive.GraphDesigner.Runtime.Variables; - using System.Collections.Generic; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Adds the GameObject to the list.")] - [Shared.Utility.Category("Lists")] - public class AddGameObjectToList : TargetGameObjectAction - { - [Tooltip("The list of possible GameObjects.")] - [RequireShared] [SerializeField] protected SharedVariable> m_StoreResult; - [Tooltip("Are duplicates allowed to be added?")] - [SerializeField] protected SharedVariable m_AllowDuplicates = true; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - if (!m_AllowDuplicates.Value && m_StoreResult.Value.Contains(m_ResolvedGameObject)) { - return TaskStatus.Failure; - } - - m_StoreResult.Value.Add(m_ResolvedGameObject); - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/AddGameObjectToList.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/AddGameObjectToList.cs.meta deleted file mode 100644 index 6c99f7c..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/AddGameObjectToList.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 771474f9417f55641b0b1a23028e05d0 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RandomGameObjectFromArray.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RandomGameObjectFromArray.cs deleted file mode 100644 index 539c968..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RandomGameObjectFromArray.cs +++ /dev/null @@ -1,49 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.UnityObjects -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Sets a random GameObject value from the GameObject array.")] - [Shared.Utility.Category("Lists")] - public class RandomGameObjectFromArray : Action - { - [Tooltip("The list of possible GameObjects.")] - [SerializeField] protected SharedVariable m_GameObjects; - [Tooltip("The variable that should be set.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - [Tooltip("The seed of the random number generator. Set to 0 to disable.")] - [SerializeField] protected int m_Seed; - - /// - /// Callback when the behavior tree is initialized. - /// - public override void OnAwake() - { - if (m_Seed != 0) { - Random.InitState(m_Seed); - } - } - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - if (m_GameObjects.Value == null || m_GameObjects.Value.Length == 0) { - return TaskStatus.Failure; - } - - m_StoreResult.Value = m_GameObjects.Value[Random.Range(0, m_GameObjects.Value.Length)]; - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RandomGameObjectFromArray.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RandomGameObjectFromArray.cs.meta deleted file mode 100644 index cf00752..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RandomGameObjectFromArray.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a32475ebd3e6d3145bd238c01607ea15 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RandomGameObjectFromList.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RandomGameObjectFromList.cs deleted file mode 100644 index 768ec3a..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RandomGameObjectFromList.cs +++ /dev/null @@ -1,50 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.UnityObjects -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - using System.Collections.Generic; - - [Opsive.Shared.Utility.Description("Sets a random GameObject value from the GameObject list.")] - [Shared.Utility.Category("Lists")] - public class RandomGameObjectFromList : Action - { - [Tooltip("The list of possible GameObjects.")] - [SerializeField] protected SharedVariable> m_GameObjects; - [Tooltip("The variable that should be set.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - [Tooltip("The seed of the random number generator. Set to 0 to disable.")] - [SerializeField] protected int m_Seed; - - /// - /// Callback when the behavior tree is initialized. - /// - public override void OnAwake() - { - if (m_Seed != 0) { - Random.InitState(m_Seed); - } - } - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - if (m_GameObjects.Value == null || m_GameObjects.Value.Count == 0) { - return TaskStatus.Failure; - } - - m_StoreResult.Value = m_GameObjects.Value[Random.Range(0, m_GameObjects.Value.Count)]; - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RandomGameObjectFromList.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RandomGameObjectFromList.cs.meta deleted file mode 100644 index f02d940..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RandomGameObjectFromList.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b7809ab5aee37184c9a3f0c4b013ab0a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RemoveGameObjectFromArray.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RemoveGameObjectFromArray.cs deleted file mode 100644 index 85bcec0..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RemoveGameObjectFromArray.cs +++ /dev/null @@ -1,57 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.UnityObjects -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Removes the GameObject from the array.")] - [Shared.Utility.Category("Lists")] - public class RemoveGameObjectFromArray : TargetGameObjectAction - { - [Tooltip("The list of possible GameObjects.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - var array = m_StoreResult.Value; - if (array == null) { - return TaskStatus.Failure; - } - - // Find the index of the GameObject to remove. - var indexToRemove = -1; - for (int i = 0; i < array.Length; i++) { - if (array[i] == m_ResolvedGameObject) { - indexToRemove = i; - break; - } - } - if (indexToRemove == -1) { - return TaskStatus.Failure; - } - - // Create a new array with the GameObject removed. - var newArray = new GameObject[array.Length - 1]; - for (int i = 0, j = 0; i < array.Length; ++i) { - if (i != indexToRemove) { - newArray[j] = array[i]; - ++j; - } - } - - m_StoreResult.Value = newArray; - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RemoveGameObjectFromArray.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RemoveGameObjectFromArray.cs.meta deleted file mode 100644 index d23881a..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RemoveGameObjectFromArray.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 29d1b655a839c324c9ca4b12f3af0351 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RemoveGameObjectFromList.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RemoveGameObjectFromList.cs deleted file mode 100644 index e47c525..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RemoveGameObjectFromList.cs +++ /dev/null @@ -1,31 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.UnityObjects -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using System.Collections.Generic; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Removes the GameObject from the list.")] - [Shared.Utility.Category("Lists")] - public class RemoveGameObjectFromList : TargetGameObjectAction - { - [Tooltip("The list of possible GameObjects.")] - [RequireShared] [SerializeField] protected SharedVariable> m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - return m_StoreResult.Value.Remove(m_ResolvedGameObject) ? TaskStatus.Success : TaskStatus.Failure; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RemoveGameObjectFromList.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RemoveGameObjectFromList.cs.meta deleted file mode 100644 index a36532f..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/RemoveGameObjectFromList.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 89e178d0be1b41b4b933d144dc32aef1 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/SelectGameObjectFromArray.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/SelectGameObjectFromArray.cs deleted file mode 100644 index 4324a43..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/SelectGameObjectFromArray.cs +++ /dev/null @@ -1,39 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.UnityObjects -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Selects the GameObject from the array.")] - [Shared.Utility.Category("Lists")] - public class SelectGameObjectFromArray : Action - { - [Tooltip("The list of possible GameObjects.")] - [SerializeField] protected SharedVariable m_GameObjects; - [Tooltip("The index of the GameObject that should be selected.")] - [SerializeField] protected SharedVariable m_ElementIndex; - [Tooltip("The selected GameObject.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - if (m_GameObjects.Value == null || m_ElementIndex.Value < 0 || m_ElementIndex.Value > m_GameObjects.Value.Length) { - return TaskStatus.Failure; - } - - m_StoreResult.Value = m_GameObjects.Value[m_ElementIndex.Value]; - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/SelectGameObjectFromArray.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/SelectGameObjectFromArray.cs.meta deleted file mode 100644 index 2126f83..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/SelectGameObjectFromArray.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d082de8064bdd7c4dada3c5a48e46fef -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/SelectGameObjectFromList.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/SelectGameObjectFromList.cs deleted file mode 100644 index 7fedc0c..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/SelectGameObjectFromList.cs +++ /dev/null @@ -1,40 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.UnityObjects -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using System.Collections.Generic; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Selects the GameObject from the list.")] - [Shared.Utility.Category("Lists")] - public class SelectGameObjectFromList : Action - { - [Tooltip("The list of possible GameObjects.")] - [SerializeField] protected SharedVariable> m_GameObjects; - [Tooltip("The index of the GameObject that should be selected.")] - [SerializeField] protected SharedVariable m_ElementIndex; - [Tooltip("The selected GameObject.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - if (m_GameObjects.Value == null || m_ElementIndex.Value < 0 || m_ElementIndex.Value > m_GameObjects.Value.Count) { - return TaskStatus.Failure; - } - - m_StoreResult.Value = m_GameObjects.Value[m_ElementIndex.Value]; - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/SelectGameObjectFromList.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/SelectGameObjectFromList.cs.meta deleted file mode 100644 index 9646ef7..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/IList/SelectGameObjectFromList.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e0dab44acdb589c4a8d2966c9ddc73a0 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Idle.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Idle.cs deleted file mode 100644 index e501392..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Idle.cs +++ /dev/null @@ -1,96 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.GraphDesigner.Runtime; - using Unity.Entities; - using Unity.Burst; - using UnityEngine; - - /// - /// A node representation of the idle task. - /// - [NodeIcon("fc4d1b83384913b4abfbd8455db6df5b", "79a6985a753bb244fb5b32dc0f26addb")] - [Opsive.Shared.Utility.Description("Returns a TaskStatus of running. The task will only stop when interrupted or a conditional abort is triggered.")] - public class Idle : ECSActionTask - { - /// - /// The type of tag that should be enabled when the task is running. - /// - public override ComponentType Flag { get => typeof(IdleFlag); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override IdleComponent GetBufferElement() - { - return new IdleComponent() { - Index = RuntimeIndex - }; - } - } - - /// - /// The DOTS data structure for the Idle class. - /// - public struct IdleComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - public ushort Index; - } - - /// - /// A DOTS tag indicating when a Idle node is active. - /// - public struct IdleFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the Idle logic. - /// - [DisableAutoCreation] - public partial struct IdleTaskSystem : ISystem - { - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var query = SystemAPI.QueryBuilder().WithAllRW().WithAll().Build(); - state.Dependency = new IdleJob().ScheduleParallel(query, state.Dependency); - } - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct IdleJob : IJobEntity - { - /// - /// Executes the idle logic. - /// - /// An array of TaskComponents. - /// An array of IdleComponents. - [BurstCompile] - public void Execute(ref DynamicBuffer taskComponents, ref DynamicBuffer idleComponents) - { - for (int i = 0; i < idleComponents.Length; ++i) { - var idleComponent = idleComponents[i]; - var taskComponent = taskComponents[idleComponent.Index]; - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Running; - taskComponents[idleComponent.Index] = taskComponent; - } - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Idle.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Idle.cs.meta deleted file mode 100644 index 4b8f4a0..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Idle.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3cbbfc0d48db475498ad454651507929 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Log.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Log.cs deleted file mode 100644 index 5a96987..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Log.cs +++ /dev/null @@ -1,34 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - /// - /// Logs the specified string. - /// - [NodeIcon("c97bee71424b3e247a161d1279643506", "138439e3588de5d449b7949d68d32ad8")] - [Opsive.Shared.Utility.Description("A simple task which will output the specified text and return success. It can be used for debugging.")] - public class Log : Action - { - [Tooltip("The string that should be outputted to the console.")] - [SerializeField] protected SharedVariable m_Text; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - Debug.Log(m_Text.Value); - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Log.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Log.cs.meta deleted file mode 100644 index 3e13be7..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Log.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 74a01e8c621648b44bb6cf0cff363e59 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/LogValue.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/LogValue.cs deleted file mode 100644 index 74f9d33..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/LogValue.cs +++ /dev/null @@ -1,38 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - /// - /// Logs the specified value. - /// - [NodeIcon("c97bee71424b3e247a161d1279643506", "138439e3588de5d449b7949d68d32ad8")] - public class LogValue : Action - { - [Tooltip("The value that should be outputted to the console.")] - [RequireShared] [SerializeField] protected SharedVariable m_Value; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - if (m_Value == null || m_Value.Scope == SharedVariable.SharingScope.Empty) { - Debug.LogWarning("Warning: The LogValue.Value variable must be set."); - return TaskStatus.Failure; - } - - Debug.Log(m_Value.GetValue()); - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/LogValue.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/LogValue.cs.meta deleted file mode 100644 index e3c49bd..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/LogValue.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0e6b3f8ede31f634ea1aa5727a7df673 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math.meta deleted file mode 100644 index 7280262..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7177abfd9732b2d45aec5e96e4415d68 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/BoolFlip.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/BoolFlip.cs deleted file mode 100644 index 26acbdd..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/BoolFlip.cs +++ /dev/null @@ -1,31 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Math -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Flips the value of the boolean.")] - [Shared.Utility.Category("Math")] - public class BoolFlip : Action - { - [Tooltip("The bool that should be flipped.")] - [SerializeField] protected SharedVariable m_Bool; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - m_Bool.Value = !m_Bool.Value; - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/BoolFlip.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/BoolFlip.cs.meta deleted file mode 100644 index e0dfedc..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/BoolFlip.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a6654554de66a1340bff69fd22ffcacf -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/BoolOperator.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/BoolOperator.cs deleted file mode 100644 index 1ce972a..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/BoolOperator.cs +++ /dev/null @@ -1,61 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Math -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Performs a math operation on the two booleans.")] - [Shared.Utility.Category("Math")] - public class BoolOperator : Action - { - /// - /// Specifies the type of bool operation that should be performed. - /// - protected enum Operation - { - AND, // Returns the AND between two booleans. - OR, // Returns the OR between two booleans. - NAND, // Returns the NAND between two booleans. - XOR, // Returns the XOR between two booleans. - } - - [Tooltip("The operation to perform.")] - [SerializeField] protected SharedVariable m_Operation; - [Tooltip("The first boolean.")] - [SerializeField] protected SharedVariable m_Bool1; - [Tooltip("The second boolean.")] - [SerializeField] protected SharedVariable m_Bool2; - [Tooltip("The variable to store the result.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - switch (m_Operation.Value) { - case Operation.AND: - m_StoreResult.Value = m_Bool1.Value && m_Bool2.Value; - break; - case Operation.OR: - m_StoreResult.Value = m_Bool1.Value || m_Bool2.Value; - break; - case Operation.NAND: - m_StoreResult.Value = !(m_Bool1.Value && m_Bool2.Value); - break; - case Operation.XOR: - m_StoreResult.Value = (m_Bool1.Value ^ m_Bool2.Value); - break; - } - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/BoolOperator.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/BoolOperator.cs.meta deleted file mode 100644 index 3f2fd93..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/BoolOperator.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: bf243997f53145143915ba48268817b4 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/FloatOperator.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/FloatOperator.cs deleted file mode 100644 index c57f03b..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/FloatOperator.cs +++ /dev/null @@ -1,73 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Math -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Performs a math operation on the two floats.")] - [Shared.Utility.Category("Math")] - public class FloatOperator : Action - { - /// - /// Specifies the type of float operation that should be performed. - /// - protected enum Operation - { - Add, // Returns the addition between two floats. - Subtract, // Returns the division between two floats. - Multiply, // Returns the multiplication between two floats. - Divide, // Returns the division between two floats. - Modulo, // Returns the modulo between two floats. - Min, // Returns the minimum of two floats. - Max, // Returns the maximum of two floats. - } - - [Tooltip("The operation to perform.")] - [SerializeField] protected SharedVariable m_Operation; - [Tooltip("The first float.")] - [SerializeField] protected SharedVariable m_Float1; - [Tooltip("The second float.")] - [SerializeField] protected SharedVariable m_Float2; - [Tooltip("The variable to store the result.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - switch (m_Operation.Value) { - case Operation.Add: - m_StoreResult.Value = m_Float1.Value + m_Float2.Value; - break; - case Operation.Subtract: - m_StoreResult.Value = m_Float1.Value - m_Float2.Value; - break; - case Operation.Multiply: - m_StoreResult.Value = m_Float1.Value * m_Float2.Value; - break; - case Operation.Divide: - m_StoreResult.Value = m_Float1.Value / m_Float2.Value; - break; - case Operation.Modulo: - m_StoreResult.Value = m_Float1.Value % m_Float2.Value; - break; - case Operation.Min: - m_StoreResult.Value = Mathf.Min(m_Float1.Value, m_Float2.Value); - break; - case Operation.Max: - m_StoreResult.Value = Mathf.Max(m_Float1.Value, m_Float2.Value); - break; - } - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/FloatOperator.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/FloatOperator.cs.meta deleted file mode 100644 index 244aa0d..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/FloatOperator.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: fd85a074520c85b4aac9a2e02a37fe47 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/IntOperator.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/IntOperator.cs deleted file mode 100644 index 0ddfc8f..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/IntOperator.cs +++ /dev/null @@ -1,73 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Math -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Performs a math operation on the two integers.")] - [Shared.Utility.Category("Math")] - public class IntOperator : Action - { - /// - /// Specifies the type of int operation that should be performed. - /// - protected enum Operation - { - Add, // Returns the addition between two integers. - Subtract, // Returns the division between two integers. - Multiply, // Returns the multiplication between two integers. - Divide, // Returns the division between two integers. - Modulo, // Returns the modulo between two integers. - Min, // Returns the minimum of two integers. - Max, // Returns the maximum of two integers. - } - - [Tooltip("The operation to perform.")] - [SerializeField] protected SharedVariable m_Operation; - [Tooltip("The first integer.")] - [SerializeField] protected SharedVariable m_Integer1; - [Tooltip("The second integer.")] - [SerializeField] protected SharedVariable m_Integer2; - [Tooltip("The variable to store the result.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - switch (m_Operation.Value) { - case Operation.Add: - m_StoreResult.Value = m_Integer1.Value + m_Integer2.Value; - break; - case Operation.Subtract: - m_StoreResult.Value = m_Integer1.Value - m_Integer2.Value; - break; - case Operation.Multiply: - m_StoreResult.Value = m_Integer1.Value * m_Integer2.Value; - break; - case Operation.Divide: - m_StoreResult.Value = m_Integer1.Value / m_Integer2.Value; - break; - case Operation.Modulo: - m_StoreResult.Value = m_Integer1.Value % m_Integer2.Value; - break; - case Operation.Min: - m_StoreResult.Value = Mathf.Min(m_Integer1.Value, m_Integer2.Value); - break; - case Operation.Max: - m_StoreResult.Value = Mathf.Max(m_Integer1.Value, m_Integer2.Value); - break; - } - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/IntOperator.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/IntOperator.cs.meta deleted file mode 100644 index 25b23e9..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/IntOperator.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 77d11b9520f296b43a19d4a987844d73 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomBool.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomBool.cs deleted file mode 100644 index b74c7f3..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomBool.cs +++ /dev/null @@ -1,45 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Tasks.Actions.Math -{ - using Opsive.BehaviorDesigner.Runtime.Tasks; - using Opsive.BehaviorDesigner.Runtime.Tasks.Actions; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Tooltip("Returns a random bool value.")] - [Shared.Utility.Category("Math")] - public class RandomBool : Action - { - [Tooltip("The stored random bool value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - [Tooltip("The seed of the random number generator. Set to 0 to disable.")] - [SerializeField] protected int m_Seed; - - /// - /// Callback when the behavior tree is initialized. - /// - public override void OnAwake() - { - if (m_Seed != 0) { - Random.InitState(m_Seed); - } - } - - /// - /// Executes the task logic. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = Random.value > 0.5; - return base.OnUpdate(); - } - - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomBool.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomBool.cs.meta deleted file mode 100644 index e923b00..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomBool.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e39f6d31610d07b4ca1c977ce86198bd -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomFloat.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomFloat.cs deleted file mode 100644 index 5b59095..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomFloat.cs +++ /dev/null @@ -1,49 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Tasks.Actions.Math -{ - using Opsive.BehaviorDesigner.Runtime.Tasks; - using Opsive.BehaviorDesigner.Runtime.Tasks.Actions; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Tooltip("Returns a random float between the specified values (inclusive).")] - [Shared.Utility.Category("Math")] - public class RandomFloat : Action - { - [Tooltip("The minimum float value (inclusive).")] - [SerializeField] protected SharedVariable m_MinimumFloat; - [Tooltip("The maximum float value (inclusive).")] - [SerializeField] protected SharedVariable m_MaximumFloat; - [Tooltip("The stored random float value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - [Tooltip("The seed of the random number generator. Set to 0 to disable.")] - [SerializeField] protected int m_Seed; - - /// - /// Callback when the behavior tree is initialized. - /// - public override void OnAwake() - { - if (m_Seed != 0) { - Random.InitState(m_Seed); - } - } - - /// - /// Executes the task logic. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = Random.Range(m_MinimumFloat.Value, m_MaximumFloat.Value); - return base.OnUpdate(); - } - - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomFloat.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomFloat.cs.meta deleted file mode 100644 index a6d1b20..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomFloat.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e4cd0328bf01f2a46a89268dcaf0cd26 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomInteger.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomInteger.cs deleted file mode 100644 index 1d3bc24..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomInteger.cs +++ /dev/null @@ -1,49 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Tasks.Actions.Math -{ - using Opsive.BehaviorDesigner.Runtime.Tasks; - using Opsive.BehaviorDesigner.Runtime.Tasks.Actions; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Tooltip("Returns a random integer between the specified values (inclusive).")] - [Shared.Utility.Category("Math")] - public class RandomInteger : Action - { - [Tooltip("The minimum integer value (inclusive).")] - [SerializeField] protected SharedVariable m_MinimumInteger; - [Tooltip("The maximum integer value (inclusive).")] - [SerializeField] protected SharedVariable m_MaximumInteger; - [Tooltip("The stored random integer value.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - [Tooltip("The seed of the random number generator. Set to 0 to disable.")] - [SerializeField] protected int m_Seed; - - /// - /// Callback when the behavior tree is initialized. - /// - public override void OnAwake() - { - if (m_Seed != 0) { - Random.InitState(m_Seed); - } - } - - /// - /// Executes the task logic. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = Random.Range(m_MinimumInteger.Value, m_MaximumInteger.Value); - return base.OnUpdate(); - } - - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomInteger.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomInteger.cs.meta deleted file mode 100644 index 4fdfd7c..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/RandomInteger.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: bf8b675bf82b06f44a19056eedc9e3f6 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetBool.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetBool.cs deleted file mode 100644 index b1d351d..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetBool.cs +++ /dev/null @@ -1,33 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Math -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Set the boolean value.")] - [Shared.Utility.Category("Math")] - public class SetBool : Action - { - [Tooltip("The bool value to set.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = m_Value.Value; - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetBool.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetBool.cs.meta deleted file mode 100644 index 8aa6708..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetBool.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 77b177a61d9c7c94889fe58326045014 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetFloat.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetFloat.cs deleted file mode 100644 index 3d24d1d..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetFloat.cs +++ /dev/null @@ -1,33 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Math -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Set the float value.")] - [Shared.Utility.Category("Math")] - public class SetFloat : Action - { - [Tooltip("The float value to set.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = m_Value.Value; - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetFloat.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetFloat.cs.meta deleted file mode 100644 index ff8dbc3..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetFloat.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7114039f3b7a3ff439a901637ba04235 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetInt.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetInt.cs deleted file mode 100644 index 5fd97f6..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetInt.cs +++ /dev/null @@ -1,32 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Math -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Set the integer value.")] - [Shared.Utility.Category("Math")] - public class SetInt : Action - { - [Tooltip("The int value to set.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = m_Value.Value; - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetInt.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetInt.cs.meta deleted file mode 100644 index c0b7ae9..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetInt.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: eed961f4064f9024f8e51b3ddb69020a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetString.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetString.cs deleted file mode 100644 index afa3bae..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetString.cs +++ /dev/null @@ -1,33 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Math -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Set the string value.")] - [Shared.Utility.Category("Math")] - public class SetString : Action - { - [Tooltip("The string value to set.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = m_Value.Value; - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetString.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetString.cs.meta deleted file mode 100644 index c7a1fdb..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetString.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 450ec74688a332e42a42173708a621c1 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetVector2.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetVector2.cs deleted file mode 100644 index cf92be8..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetVector2.cs +++ /dev/null @@ -1,33 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Math -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Set the Vector2 value.")] - [Shared.Utility.Category("Math")] - public class SetVector2 : Action - { - [Tooltip("The Vector2 value to set.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = m_Value.Value; - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetVector2.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetVector2.cs.meta deleted file mode 100644 index 05fe7ec..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetVector2.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1507af45b59e2d642a8372f952ef5bec -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetVector3.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetVector3.cs deleted file mode 100644 index 306721c..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetVector3.cs +++ /dev/null @@ -1,33 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.Math -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Set the Vector3 value.")] - [Shared.Utility.Category("Math")] - public class SetVector3 : Action - { - [Tooltip("The Vector3 value to set.")] - [SerializeField] protected SharedVariable m_Value; - [Tooltip("The variable that should be set.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - m_StoreResult.Value = m_Value.Value; - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetVector3.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetVector3.cs.meta deleted file mode 100644 index 8e67c42..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Math/SetVector3.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8fd35c62b935e674da0ed3b7d450a049 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/PerformInterruption.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/PerformInterruption.cs deleted file mode 100644 index d321927..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/PerformInterruption.cs +++ /dev/null @@ -1,160 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Utility; - using Opsive.GraphDesigner.Runtime; - using Unity.Entities; - using Unity.Burst; - using UnityEngine; - using Unity.Collections; - - [NodeIcon("7c0aba0d8377aac48966d8e3f817a2a8", "90105f40f82a30e45b08d150c1928950")] - [Opsive.Shared.Utility.Description("Performs the actual interruption. This will immediately stop the specified tasks from running and will return success or failure depending on the value of interrupt success.")] - public class PerformInterruption : ECSActionTask - { - [Tooltip("The task that should be interrupted.")] - [SerializeField] ILogicNode[] m_InterruptTasks; - [Tooltip("Should the interrupted task return success?")] - [SerializeField] bool m_InterruptSuccess; - - /// - /// The type of tag that should be enabled when the task is running. - /// - public override ComponentType Flag { get => typeof(PerformInterruptionFlag); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override PerformInterruptionComponent GetBufferElement() - { - if (m_InterruptTasks == null || m_InterruptTasks.Length == 0) { - UnityEngine.Debug.LogError("Error: At least one interrupt task must be specified."); - return new PerformInterruptionComponent(); - } - - var indicies = new ushort[m_InterruptTasks.Length]; - var nullTaskCount = 0; - for (int i = 0; i < m_InterruptTasks.Length; ++i) { - if (m_InterruptTasks[i] == null) { - nullTaskCount++; - continue; - } - indicies[i - nullTaskCount] = m_InterruptTasks[i].Index; - } - if (nullTaskCount > 0) { - System.Array.Resize(ref indicies, indicies.Length - nullTaskCount); - } - - var builder = new BlobBuilder(Allocator.Temp); - ref var root = ref builder.ConstructRoot(); - var indicesArray = builder.Allocate(ref root.Indicies, indicies.Length); - for (int i = 0; i < indicies.Length; i++) { - indicesArray[i] = indicies[i]; - } - var blobAsset = builder.CreateBlobAssetReference(Allocator.Persistent); - builder.Dispose(); - - return new PerformInterruptionComponent() { - Index = RuntimeIndex, - InterruptIndicies = blobAsset, - InterruptSuccess = m_InterruptSuccess - }; - } - - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The index of the element within the buffer. - public override int AddBufferElement(World world, Entity entity, GameObject gameObject) - { - var index = base.AddBufferElement(world, entity, gameObject); - ComponentUtility.AddInterruptComponents(world.EntityManager, entity); - return index; - } - } - - /// - /// The DOTS data structure for the PerformInterruption class. - /// - public struct PerformInterruptionComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - [SerializeField] public ushort Index; - [Tooltip("The indicies of the tasks that should be interrupted.")] - [SerializeField] public BlobAssetReference InterruptIndicies; - [Tooltip("Should the interrupted tasks return success?")] - [SerializeField] public bool InterruptSuccess; - } - - /// - /// A DOTS flag indicating when a PerformInterruption node is active. - /// - public struct PerformInterruptionFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the PerformInterruption logic. - /// - [DisableAutoCreation] - public partial struct PerformInterruptionTaskSystem : ISystem - { - /// - /// Updates the logic. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - foreach (var (branchComponents, taskComponents, performInterruptionComponents, entity) in - SystemAPI.Query, DynamicBuffer, DynamicBuffer>().WithAll().WithEntityAccess()) { - for (int i = 0; i < performInterruptionComponents.Length; ++i) { - var performInterruptionComponent = performInterruptionComponents[i]; - var taskComponent = taskComponents[performInterruptionComponent.Index]; - - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Success; - var taskComponentsBuffer = taskComponents; - taskComponentsBuffer[taskComponent.Index] = taskComponent; - - var branchComponentsBuffer = branchComponents; - for (int j = 0; j < performInterruptionComponent.InterruptIndicies.Value.Indicies.Length; ++j) { - var interruptTaskComponent = taskComponents[performInterruptionComponent.InterruptIndicies.Value.Indicies[j]]; - var interruptBranchComponent = branchComponents[interruptTaskComponent.BranchIndex]; - interruptBranchComponent.InterruptType = performInterruptionComponent.InterruptSuccess ? InterruptType.ImmediateSuccess : InterruptType.ImmediateFailure; - interruptBranchComponent.InterruptIndex = interruptTaskComponent.Index; - branchComponentsBuffer[interruptTaskComponent.BranchIndex] = interruptBranchComponent; - } - - state.EntityManager.SetComponentEnabled(entity, true); - } - } - } - } - - /// - /// The task has been destroyed. - /// - /// The current state of the system. - private void OnDestroy(ref SystemState state) - { - foreach (var performInterruptionComponents in SystemAPI.Query>()) { - for (int i = 0; i < performInterruptionComponents.Length; ++i) { - var performInterruptionComponent = performInterruptionComponents[i]; - if (performInterruptionComponent.InterruptIndicies.IsCreated) { - performInterruptionComponent.InterruptIndicies.Dispose(); - } - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/PerformInterruption.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/PerformInterruption.cs.meta deleted file mode 100644 index 1791c3f..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/PerformInterruption.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9407f1f7d7a4efc43928e2885fbd047d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/RestartBehaviorTree.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/RestartBehaviorTree.cs deleted file mode 100644 index b8fc8dc..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/RestartBehaviorTree.cs +++ /dev/null @@ -1,60 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.GraphDesigner.Runtime; - using System.Collections; - using UnityEngine; - - [NodeIcon("e0a8f1df788b6274a9a24003859dfa7e")] - [Opsive.Shared.Utility.Description("Restarts the specified behavior tree.")] - public class RestartBehaviorTree : TargetBehaviorTreeAction - { - private TaskStatus m_Status; - - /// - /// The task has started. - /// - public override void OnStart() - { - m_Status = TaskStatus.Queued; - } - - /// - /// Executes the task logic. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - // The coroutine has already been started if the status is not queued. - if (m_Status != TaskStatus.Queued) { - return m_Status; - } - - if (m_ResolvedBehaviorTree == null) { - return TaskStatus.Failure; - } - - m_Status = TaskStatus.Running; - StartCoroutine(RestartBehavior()); - return m_Status; - } - - /// - /// Restarts the behavior tree using a coroutine to allow structural changes. - /// - private IEnumerator RestartBehavior() - { - yield return new WaitForEndOfFrame(); - - m_Status = m_ResolvedBehaviorTree.RestartBehavior() ? TaskStatus.Success : TaskStatus.Failure; - } - - - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/RestartBehaviorTree.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/RestartBehaviorTree.cs.meta deleted file mode 100644 index 8f5b521..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/RestartBehaviorTree.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1240560819407764d95369a091d6f5e9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/ReturnStatus.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/ReturnStatus.cs deleted file mode 100644 index bcb13a6..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/ReturnStatus.cs +++ /dev/null @@ -1,121 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.GraphDesigner.Runtime; - using Unity.Entities; - using Unity.Burst; - using UnityEngine; - using System; - - /// - /// A node representation of the return status task. - /// - [Opsive.Shared.Utility.Description("The return status task will immediately return sucess or failure.")] - public class ReturnStatus : ECSActionTask, ICloneable - { - [Tooltip("Should a success status be returned? If false then failure will be returned.")] - [SerializeField] bool m_Success; - - public bool Success { get => m_Success; set => m_Success = value; } - - /// - /// The type of tag that should be enabled when the task is running. - /// - public override ComponentType Flag { get => typeof(ReturnStatusFlag); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override ReturnStatusComponent GetBufferElement() - { - return new ReturnStatusComponent() { - Index = RuntimeIndex, - Success = m_Success - }; - } - - /// - /// Creates a deep clone of the component. - /// - /// A deep clone of the component. - public object Clone() - { - var clone = Activator.CreateInstance(); - clone.Index = Index; - clone.ParentIndex = ParentIndex; - clone.SiblingIndex = SiblingIndex; - clone.Success = Success; - return clone; - } - } - - /// - /// The DOTS data structure for the ReturnStatus class. - /// - public struct ReturnStatusComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - [SerializeField] ushort m_Index; - [Tooltip("Should a success status be returned? If false then failure will be returned.")] - [SerializeField] bool m_Success; - public ushort Index { get => m_Index; set => m_Index = value; } - public bool Success { get => m_Success; set => m_Success = value; } - } - - /// - /// A DOTS tag indicating when a ReturnStatus node is active. - /// - public struct ReturnStatusFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the ReturnStatus logic. - /// - [DisableAutoCreation] - public partial struct ReturnStatusTaskSystem : ISystem - { - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAll().Build(); - state.Dependency = new ReturnStatusJob().ScheduleParallel(query, state.Dependency); - } - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct ReturnStatusJob : IJobEntity - { - /// - /// Executes the return status logic. - /// - /// An array of TaskComponents. - /// An array of ReturnStatusComponents. - [BurstCompile] - public void Execute(ref DynamicBuffer taskComponents, ref DynamicBuffer returnStatusComponents) - { - for (int i = 0; i < returnStatusComponents.Length; ++i) { - var returnStatusComponent = returnStatusComponents[i]; - var taskComponent = taskComponents[returnStatusComponent.Index]; - if (taskComponent.Status != TaskStatus.Queued) { - continue; - } - taskComponent.Status = returnStatusComponent.Success ? TaskStatus.Success : TaskStatus.Failure; - taskComponents[returnStatusComponent.Index] = taskComponent; - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/ReturnStatus.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/ReturnStatus.cs.meta deleted file mode 100644 index 47d1b8d..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/ReturnStatus.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 837791748c4f57c4293429e8e94fd32c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SendEvent.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SendEvent.cs deleted file mode 100644 index c79af29..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SendEvent.cs +++ /dev/null @@ -1,81 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using Opsive.Shared.Events; - using UnityEngine; - - /// - /// Executes the specified event. - /// - [NodeIcon("bde76446ddfbd234488e8d591bc75e2f", "6d03b96c0f79bee4ab2e14fc82aa0031")] - [Opsive.Shared.Utility.Description("Sends an event to the behavior tree, returns success after sending the event.")] - public class SendEvent : TargetBehaviorTreeAction - { - [Tooltip("The name of the event.")] - [SerializeField] protected SharedVariable m_EventName; - [Tooltip("Is the event a global event?")] - [SerializeField] protected SharedVariable m_GlobalEvent; - [Tooltip("Optionally specify a first argument to send.")] - [RequireShared] [SerializeField] protected SharedVariable m_Argument1; - [Tooltip("Optionally specify a second argument to send.")] - [RequireShared] [SerializeField] protected SharedVariable m_Argument2; - [Tooltip("Optionally specify a third argument to send.")] - [RequireShared] [SerializeField] protected SharedVariable m_Argument3; - - /// - /// Executes the event. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - if (m_ResolvedBehaviorTree == null) { - return TaskStatus.Failure; - } - - if (string.IsNullOrEmpty(m_EventName.Value)) { - Debug.LogError("Error: Unable to send event. The event name is empty."); - return TaskStatus.Failure; - } - - if (m_Argument1 == null || !m_Argument1.IsShared) { - if (m_GlobalEvent.Value) { - EventHandler.ExecuteEvent(m_EventName.Value); - } else { - EventHandler.ExecuteEvent(m_ResolvedBehaviorTree, m_EventName.Value); - } - } else { - if (m_Argument2 == null || !m_Argument2.IsShared) { - if (m_GlobalEvent.Value) { - EventHandler.ExecuteEvent(m_EventName.Value, m_Argument1.GetValue()); - } else { - EventHandler.ExecuteEvent(m_ResolvedBehaviorTree, m_EventName.Value, m_Argument1.GetValue()); - } - } else { - if (m_Argument3 == null || !m_Argument3.IsShared) { - if (m_GlobalEvent.Value) { - EventHandler.ExecuteEvent(m_EventName.Value, m_Argument1.GetValue(), m_Argument2.GetValue()); - } else { - EventHandler.ExecuteEvent(m_ResolvedBehaviorTree, m_EventName.Value, m_Argument1.GetValue(), m_Argument2.GetValue()); - } - } else { - if (m_GlobalEvent.Value) { - EventHandler.ExecuteEvent(m_EventName.Value, m_Argument1.GetValue(), m_Argument2.GetValue(), m_Argument3.GetValue()); - } else { - EventHandler.ExecuteEvent(m_ResolvedBehaviorTree, m_EventName.Value, m_Argument1.GetValue(), m_Argument2.GetValue(), m_Argument3.GetValue()); - } - } - } - } - - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SendEvent.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SendEvent.cs.meta deleted file mode 100644 index d9b5948..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SendEvent.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6af31db67c14aba458ffd11cd0b671aa -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SetSubtree.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SetSubtree.cs deleted file mode 100644 index 99f3e8c..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SetSubtree.cs +++ /dev/null @@ -1,68 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.GraphDesigner.Runtime; - using System.Collections; - using UnityEngine; - - [NodeIcon("e0a8f1df788b6274a9a24003859dfa7e")] - [Opsive.Shared.Utility.Description("Sets the specified subtree.")] - public class SetSubtree : TargetBehaviorTreeAction - { - [Tooltip("The subtree that should be set.")] - [SerializeField] protected Subtree m_Subtree; - [Tooltip("Should the behavior tree be started after the subtree is set?")] - [SerializeField] protected bool m_StartBehavior = true; - - private TaskStatus m_Status; - - /// - /// The task has started. - /// - public override void OnStart() - { - m_Status = TaskStatus.Queued; - } - - /// - /// Executes the task logic. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - // The coroutine has already been started if the status is not queued. - if (m_Status != TaskStatus.Queued) { - return m_Status; - } - - if (m_ResolvedBehaviorTree == null) { - return TaskStatus.Failure; - } - - m_Status = TaskStatus.Running; - StartCoroutine(DoSetSubtree()); - return m_Status; - } - - /// - /// Sets the subtree using a coroutine to allow structural changes. - /// - private IEnumerator DoSetSubtree() - { - yield return new WaitForEndOfFrame(); - - m_ResolvedBehaviorTree.Subgraph = m_Subtree; - m_Status = TaskStatus.Success; - - if (m_StartBehavior) { - m_ResolvedBehaviorTree.StartBehavior(); - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SetSubtree.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SetSubtree.cs.meta deleted file mode 100644 index 0f25923..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SetSubtree.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 881cf86206c0dfa458723d1cde9e0e13 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StackedAction.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StackedAction.cs deleted file mode 100644 index 6427a06..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StackedAction.cs +++ /dev/null @@ -1,20 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.GraphDesigner.Runtime; - - /// - /// The StackedAction task allows for multiple actions to be added to the same node. - /// - [NodeIcon("dacf20a036b1f5e41886d84ac4a47779", "2df1cb3efc025214cbab4df573bb3515")] - [Opsive.Shared.Utility.Description("Allows multiple action tasks to be added to a single node.")] - public class StackedAction : StackedTask, IAction - { - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StackedAction.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StackedAction.cs.meta deleted file mode 100644 index 558ca6d..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StackedAction.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4342d213dec4aa5458c9e9969ef98fc7 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StartBehaviorTree.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StartBehaviorTree.cs deleted file mode 100644 index 9fb9792..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StartBehaviorTree.cs +++ /dev/null @@ -1,58 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.GraphDesigner.Runtime; - using System.Collections; - using UnityEngine; - - [NodeIcon("e0a8f1df788b6274a9a24003859dfa7e")] - [Opsive.Shared.Utility.Description("Starts the specified behavior tree.")] - public class StartBehaviorTree : TargetBehaviorTreeAction - { - private TaskStatus m_Status; - - /// - /// The task has started. - /// - public override void OnStart() - { - m_Status = TaskStatus.Queued; - } - - /// - /// Executes the task logic. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - // The coroutine has already been started if the status is not queued. - if (m_Status != TaskStatus.Queued) { - return m_Status; - } - - if (m_ResolvedBehaviorTree == null || m_ResolvedBehaviorTree.IsActive()) { - return TaskStatus.Failure; - } - - m_Status = TaskStatus.Running; - StartCoroutine(StartBehavior()); - return m_Status; - } - - /// - /// Starts the behavior tree using a coroutine to allow structural changes. - /// - private IEnumerator StartBehavior() - { - yield return new WaitForEndOfFrame(); - - m_Status = m_ResolvedBehaviorTree.StartBehavior() ? TaskStatus.Success : TaskStatus.Failure; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StartBehaviorTree.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StartBehaviorTree.cs.meta deleted file mode 100644 index a09c38a..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StartBehaviorTree.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a308f84e10d3f9b4e89c16ea755e4120 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StopBehaviorTree.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StopBehaviorTree.cs deleted file mode 100644 index 635cf49..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StopBehaviorTree.cs +++ /dev/null @@ -1,32 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [NodeIcon("e0a8f1df788b6274a9a24003859dfa7e")] - [Opsive.Shared.Utility.Description("Stops the specified behavior tree.")] - public class StopBehaviorTree : TargetBehaviorTreeAction - { - [SerializeField] protected SharedVariable m_PauseBehaviorTree; - /// - /// Executes the task logic. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - if (m_ResolvedBehaviorTree == null || !m_ResolvedBehaviorTree.IsActive()) { - return TaskStatus.Failure; - } - - return m_ResolvedBehaviorTree.StopBehavior(m_PauseBehaviorTree.Value) ? TaskStatus.Success : TaskStatus.Failure; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StopBehaviorTree.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StopBehaviorTree.cs.meta deleted file mode 100644 index 4620ec3..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/StopBehaviorTree.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ff712b458703ec440a858c41edeca111 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SubtreeReference.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SubtreeReference.cs deleted file mode 100644 index d985b38..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SubtreeReference.cs +++ /dev/null @@ -1,50 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - /// - /// Allows for subtrees to be loaded at runtime into the tree. - /// - [NodeIcon("e0a8f1df788b6274a9a24003859dfa7e")] - [Opsive.Shared.Utility.Description("Loads the specified subtrees in at runtime.")] - public class SubtreeReference : ActionNode, ISubtreeReference - { - [Tooltip("The subtrees that should be loaded.")] - [SubtreeListAttribute] - [SerializeField] protected Subtree[] m_Subtrees; - [Tooltip("The variables that should override the subtree variables.")] - [SharedVariableOverridesListAttribute] - [SerializeField] protected SharedVariableOverride[] m_Variables; - - public virtual Subtree[] Subtrees { get { return m_Subtrees; } } - - /// - /// A list of mapped SharedVariables. These variables can override the subtree. - /// - public virtual SharedVariableOverride[] SharedVariableOverrides { get => m_Variables; set => m_Variables = value; } - - /// - /// Performs any runtime operations to evaluate the array of subtrees that should be returned. - /// - /// The component that the node is attached to. - public virtual void EvaluateSubtrees(IGraphComponent graphComponent) { } - - /// - /// If the task exists at runtime then the subtree didn't load. Return failure. - /// - /// The failure TaskStatus. - public override TaskStatus OnUpdate() - { - return TaskStatus.Failure; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SubtreeReference.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SubtreeReference.cs.meta deleted file mode 100644 index 903ee47..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SubtreeReference.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 176873898443d5643badfdcaa50ddfdb -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SubtreeReferenceSelector.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SubtreeReferenceSelector.cs deleted file mode 100644 index 0be69e8..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SubtreeReferenceSelector.cs +++ /dev/null @@ -1,42 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.BehaviorDesigner.Runtime; - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - /// - /// Allows for subtrees to be loaded at runtime into the tree. - /// - [Opsive.Shared.Utility.Description("Selects a subtree based on the index value.")] - public class SubtreeReferenceSelector : SubtreeReference - { - [Tooltip("The index of the subtree that should be selected.")] - [SerializeField] protected SharedVariable m_Index; - - private Subtree[] m_Selection; - - public override Subtree[] Subtrees => m_Selection != null ? m_Selection : m_Subtrees; - - /// - /// Performs any runtime operations to evaluate the array of subtrees that should be returned. - /// - /// The component that the node is attached to. - public override void EvaluateSubtrees(IGraphComponent graphComponent) - { - if (m_Index.Value < 0 || m_Index.Value >= m_Subtrees.Length) { - return; - } - - m_Selection = new Subtree[] { m_Subtrees[m_Index.Value] }; - } - } -} - -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SubtreeReferenceSelector.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SubtreeReferenceSelector.cs.meta deleted file mode 100644 index f232d21..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/SubtreeReferenceSelector.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 501228e2e706ea841a290cb3863f6f38 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/TargetBehaviorTreeAction.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/TargetBehaviorTreeAction.cs deleted file mode 100644 index 5eb7289..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/TargetBehaviorTreeAction.cs +++ /dev/null @@ -1,71 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - /// - /// A TaskObject Action task which implements the shared TargetGameObject/TreeUserID objects. - /// - public abstract class TargetBehaviorTreeAction : Action - { - [Tooltip("The GameObject of the target behavior tree. If the value is null the current GameObject will be used.")] - [SerializeField] protected SharedVariable m_TargetGameObject; - [Tooltip("The index of the tree if there are multiple behavior trees on the same GameObject.")] - [SerializeField] protected SharedVariable m_TreeIndex; - - protected BehaviorTree m_ResolvedBehaviorTree; - - /// - /// Initializes the task. - /// - public override void OnAwake() - { - m_TargetGameObject.OnValueChange += InitializeTarget; - m_TreeIndex.OnValueChange += InitializeTarget; - - InitializeTarget(); - } - - /// - /// Initializes the target behavior tree. - /// - protected virtual void InitializeTarget() - { - if (m_TargetGameObject.Value == null) { - m_ResolvedBehaviorTree = m_BehaviorTree; - } else { - var behaviorTrees = m_TargetGameObject.Value.GetComponents(); - if (behaviorTrees.Length == 1) { - m_ResolvedBehaviorTree = behaviorTrees[0]; - } else if (behaviorTrees.Length > 1) { - for (int i = 0; i < behaviorTrees.Length; ++i) { - if (behaviorTrees[i].Index == m_TreeIndex.Value) { - m_ResolvedBehaviorTree = behaviorTrees[i]; - break; - } - } - // If the UserID can't be found then use the first behavior tree. - if (m_ResolvedBehaviorTree == null) { - m_ResolvedBehaviorTree = behaviorTrees[0]; - } - } - } - } - - /// - /// The behavior tree has been destroyed. - /// - public override void OnDestroy() - { - m_TargetGameObject.OnValueChange -= InitializeTarget; - m_TreeIndex.OnValueChange -= InitializeTarget; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/TargetBehaviorTreeAction.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/TargetBehaviorTreeAction.cs.meta deleted file mode 100644 index 2df2a2d..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/TargetBehaviorTreeAction.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ea8fab3de7105aa4497485f5934c06d9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/TargetGameObjectAction.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/TargetGameObjectAction.cs deleted file mode 100644 index 2e7cebe..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/TargetGameObjectAction.cs +++ /dev/null @@ -1,54 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - /// - /// A TaskObject Action task which returns the current GameObject if the target is null. - /// - public abstract class TargetGameObjectAction : Action - { - [Tooltip("The GameObject of the target behavior tree. If the value is null the current GameObject will be used.")] - [SerializeField] protected SharedVariable m_TargetGameObject; - - protected override GameObject gameObject => m_ResolvedGameObject; - protected override Transform transform => m_ResolvedTransform; - - protected GameObject m_ResolvedGameObject; - protected Transform m_ResolvedTransform; - - /// - /// Initializes the task. - /// - public override void OnAwake() - { - m_TargetGameObject.OnValueChange += InitializeTarget; - - InitializeTarget(); - } - - /// - /// Initializes the target GameObject. - /// - protected virtual void InitializeTarget() - { - m_ResolvedGameObject = (m_TargetGameObject.Value == null || m_TargetGameObject.Value.Equals(null)) ? m_GameObject : m_TargetGameObject.Value; - m_ResolvedTransform = m_ResolvedGameObject.transform; - } - - /// - /// The behavior tree has been destroyed. - /// - public override void OnDestroy() - { - m_TargetGameObject.OnValueChange -= InitializeTarget; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/TargetGameObjectAction.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/TargetGameObjectAction.cs.meta deleted file mode 100644 index 6fe0d18..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/TargetGameObjectAction.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3025700b92fd09d4d86b26d7213de9ab -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects.meta deleted file mode 100644 index 8401830..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1e88e229aee9deb4596b688718c14806 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/SetEnabled.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/SetEnabled.cs deleted file mode 100644 index a880bfd..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/SetEnabled.cs +++ /dev/null @@ -1,36 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.UnityObjects -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Enables or disables the specified MonoBehaviour.")] - [Shared.Utility.Category("Unity")] - public class SetEnabled : Action - { - [Tooltip("Should the MonoBehaviour be enabled?")] - [SerializeField] protected SharedVariable m_Enable; - [Tooltip("The MonoBehaviour that should be enabled or disabled.")] - [SerializeField] protected SharedVariable m_MonoBehaviour; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - if (m_MonoBehaviour.Value == null) { - return TaskStatus.Failure; - } - m_MonoBehaviour.Value.enabled = m_Enable.Value; - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/SetEnabled.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/SetEnabled.cs.meta deleted file mode 100644 index 8b25396..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/SetEnabled.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8f30ae346f704e446942d6cdb1c4adfa -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/SetGameObject.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/SetGameObject.cs deleted file mode 100644 index dd3f513..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/SetGameObject.cs +++ /dev/null @@ -1,33 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.UnityObjects -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Set the GameObject value.")] - [Shared.Utility.Category("Unity")] - public class SetGameObject : TargetGameObjectAction - { - [Tooltip("The variable that should be set.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoreResult; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - InitializeTarget(); - - m_StoreResult.Value = m_ResolvedGameObject; - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/SetGameObject.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/SetGameObject.cs.meta deleted file mode 100644 index a622403..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/SetGameObject.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: acfe874544935e64f80eeb34681141c1 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/WaitForAnimatorState.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/WaitForAnimatorState.cs deleted file mode 100644 index c41308e..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/WaitForAnimatorState.cs +++ /dev/null @@ -1,58 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions.UnityObjects -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Returns success as soon as the current Animator state ends.")] - [Shared.Utility.Category("Unity")] - public class WaitForAnimatorState : TargetGameObjectAction - { - [Tooltip("The layer to wait for the state on.")] - public SharedVariable m_Layer; - - private Animator m_Animator; - private int m_StateHash; - - /// - /// Initializes the default values. - /// - public override void OnAwake() - { - base.OnAwake(); - - m_Animator = gameObject.GetComponent(); - } - - /// - /// Caches the Animator state. - /// - public override void OnStart() - { - m_StateHash = (m_Animator.IsInTransition(m_Layer.Value) ? m_Animator.GetNextAnimatorStateInfo(m_Layer.Value) : m_Animator.GetCurrentAnimatorStateInfo(m_Layer.Value)).fullPathHash; - } - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - if (m_Animator.IsInTransition(m_Layer.Value)) { - return TaskStatus.Running; - } - var currentState = m_Animator.GetCurrentAnimatorStateInfo(m_Layer.Value).fullPathHash; - if (currentState != m_StateHash) { - return TaskStatus.Success; - } - return TaskStatus.Running; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/WaitForAnimatorState.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/WaitForAnimatorState.cs.meta deleted file mode 100644 index 0de3894..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/UnityObjects/WaitForAnimatorState.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7f6c915175357ab449604315406c51bb -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Wait.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Wait.cs deleted file mode 100644 index 1cf9460..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Wait.cs +++ /dev/null @@ -1,383 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Actions -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Utility; - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using Opsive.Shared.Utility; - using Unity.Entities; - using Unity.Burst; - using UnityEngine; - using System; - - [NodeIcon("b4b59e888607422409f1efa599af34ae", "e1cb9cb566a90fb4489bf31465b99747")] - [Opsive.Shared.Utility.Description("Wait a specified amount of time. The task will return running until the task is done waiting. It will return success after the wait time has elapsed.")] - public class Wait : ECSActionTask, ICloneable, IPausableTask, ISavableTask - { - [Tooltip("The amount of time to wait (in seconds).")] - [SerializeField] float m_Duration; - [Tooltip("Should the wait duration be randomized?")] - [SerializeField] bool m_RandomDuration; - [Tooltip("The seed of the random number generator. Set to 0 to use the entity index as the seed.")] - [SerializeField] uint m_Seed; - [Tooltip("The wait duration range if random wait is enabled.")] - [SerializeField] RangeFloat m_RandomDurationRange; - - private ushort m_ComponentIndex; - - public float Duration { get => m_Duration; set => m_Duration = value; } - public bool RandomDuration { get => m_RandomDuration; set => m_RandomDuration = value; } - public uint Seed { get => m_Seed; set => m_Seed = value; } - public RangeFloat RandomDurationRange { get => m_RandomDurationRange; set => m_RandomDurationRange = value; } - - /// - /// Resets the task to its default values. - /// - public override void Reset() { m_Duration = m_RandomDurationRange.Min = m_RandomDurationRange.Max = 1; m_RandomDuration = false; m_Seed = 0; } - - /// - /// The type of tag that should be enabled when the task is running. - /// - public override ComponentType Flag { get => typeof(WaitFlag); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override WaitComponent GetBufferElement() - { - return new WaitComponent() { - Index = RuntimeIndex, - Duration = m_Duration, - RandomDuration = m_RandomDuration, - RandomDurationRange = m_RandomDurationRange, - Seed = m_Seed, - }; - } - - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The index of the element within the buffer. - public override int AddBufferElement(World world, Entity entity, GameObject gameObject) - { - m_ComponentIndex = (ushort)base.AddBufferElement(world, entity, gameObject); - return m_ComponentIndex; - } - - /// - /// Specifies the type of reflection that should be used to save the task. - /// - /// The index of the sub-task. This is used for the task set allowing each contained task to have their own save type. - public MemberVisibility GetSaveReflectionType(int index) { return MemberVisibility.None; } - - /// - /// The task has been paused. - /// - /// The DOTS world. - /// The DOTS entity. - public void Pause(World world, Entity entity) - { - var waitComponents = world.EntityManager.GetBuffer(entity); - var waitComponent = waitComponents[m_ComponentIndex]; - waitComponent.PauseTime = Time.time; - var waitComponentBuffer = waitComponents; - waitComponentBuffer[m_ComponentIndex] = waitComponent; - } - - /// - /// The task has been resumed. - /// - /// The DOTS world. - /// The DOTS entity. - public void Resume(World world, Entity entity) - { - var waitComponents = world.EntityManager.GetBuffer(entity); - var waitComponent = waitComponents[m_ComponentIndex]; - waitComponent.StartTime += (Time.time - waitComponent.PauseTime); - waitComponent.PauseTime = 0; - var waitComponentBuffer = waitComponents; - waitComponentBuffer[m_ComponentIndex] = waitComponent; - } - - /// - /// Returns the current task state. - /// - /// The DOTS world. - /// The DOTS entity. - /// The current task state. - public object Save(World world, Entity entity) - { - var waitComponents = world.EntityManager.GetBuffer(entity); - var waitComponent = waitComponents[m_ComponentIndex]; - - // Save the unique data. - return new object[] { waitComponent.WaitDuration, Time.time - waitComponent.StartTime }; - } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - public void Load(object saveData, World world, Entity entity) - { - var waitComponents = world.EntityManager.GetBuffer(entity); - var waitComponent = waitComponents[m_ComponentIndex]; - - // saveData is the wait duration and the elapsed amount of time. - var data = (object[])saveData; - waitComponent.WaitDuration = (double)data[0]; - waitComponent.StartTime = Time.time - (double)data[1]; - waitComponents[m_ComponentIndex] = waitComponent; - } - - /// - /// Creates a deep clone of the component. - /// - /// A deep clone of the component. - public object Clone() - { - var clone = Activator.CreateInstance(); - clone.Index = Index; - clone.ParentIndex = ParentIndex; - clone.SiblingIndex = SiblingIndex; - clone.Duration = Duration; - clone.RandomDuration = RandomDuration; - clone.Seed = Seed; - clone.RandomDurationRange = RandomDurationRange; - return clone; - } - } - - /// - /// The DOTS data structure for the Wait struct. - /// - public struct WaitComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - public ushort Index; - [Tooltip("The amount of time the task should wait.")] - public float Duration; - [Tooltip("Should the wait duration be randomized?")] - public bool RandomDuration; - [Tooltip("The wait duration range if random wait is enabled.")] - public RangeFloat RandomDurationRange; - [Tooltip("The amount of time the task should wait.")] - public double WaitDuration; - [Tooltip("The real time the task started to wait.")] - public double StartTime; - [Tooltip("The seed of the random number generator.")] - public uint Seed; - [Tooltip("The random number generator for the task.")] - public Unity.Mathematics.Random RandomNumberGenerator; - [Tooltip("The time the task was paused.")] - public double PauseTime; - } - - /// - /// A DOTS tag indicating when a Wait node is active. - /// - public struct WaitFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the Wait logic. - /// - [DisableAutoCreation] - public partial struct WaitTaskSystem : ISystem - { - /// - /// Updates the logic. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAll().Build(); - state.Dependency = new WaitJob() { ElapsedTime = SystemAPI.Time.ElapsedTime }.ScheduleParallel(query, state.Dependency); - } - - /// - /// Waits for the specified amount of time. - /// - [BurstCompile] - private partial struct WaitJob : IJobEntity - { - [Tooltip("The current ElapsedTime.")] - public double ElapsedTime; - - /// - /// Updates the logic. - /// - /// The entity. - /// An array of TaskComponents. - /// An array of WaitComponents. - [BurstCompile] - public void Execute(Entity entity, ref DynamicBuffer taskComponents, ref DynamicBuffer waitComponents) - { - for (int i = 0; i < waitComponents.Length; ++i) { - var waitComponent = waitComponents[i]; - var taskComponent = taskComponents[waitComponent.Index]; - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Running; - waitComponent.StartTime = ElapsedTime; - - if (waitComponent.RandomDuration) { - // Generate a new random number seed for each entity. - if (waitComponent.RandomNumberGenerator.state == 0) { - waitComponent.RandomNumberGenerator = Unity.Mathematics.Random.CreateFromIndex(waitComponent.Seed != 0 ? waitComponent.Seed : (uint)entity.Index); - } - - waitComponent.WaitDuration = waitComponent.RandomNumberGenerator.NextDouble(waitComponent.RandomDurationRange.Min, waitComponent.RandomDurationRange.Max); - } else { - waitComponent.WaitDuration = waitComponent.Duration; - } - - waitComponents[i] = waitComponent; - } - if (taskComponent.Status == TaskStatus.Running) { - if (waitComponent.StartTime + waitComponent.WaitDuration <= ElapsedTime) { - taskComponent.Status = TaskStatus.Success; - } - } - taskComponents[waitComponent.Index] = taskComponent; - } - } - } - } - - [NodeIcon("b4b59e888607422409f1efa599af34ae", "e1cb9cb566a90fb4489bf31465b99747")] - [Opsive.Shared.Utility.Description("Wait a specified amount of time. The task will return running until the task is done waiting. It will return success after the wait time has elapsed. Uses the GameObject workflow.")] - public class SharedWait : Action - { - [Tooltip("The amount of time to wait (in seconds).")] - [SerializeField] SharedVariable m_Duration = 1; - [Tooltip("The seed of the random number generator. Set to 0 to disable.")] - [SerializeField] int m_Seed; - [Tooltip("Should the wait duration be randomized?")] - [SerializeField] SharedVariable m_RandomDuration; - [Tooltip("The minimum wait duration if random wait is enabled.")] - [SerializeField] SharedVariable m_RandomDurationRange = new RangeFloat(1, 1); - [Tooltip("The maximum wait duration if random wait is enabled.")] - [SerializeField] SharedVariable m_RandomDurationMax = 1; - - public SharedVariable Duration { get => m_Duration; set => m_Duration = value; } - public int Seed { get => m_Seed; set => m_Seed = value; } - public SharedVariable RandomDuration { get => m_RandomDuration; set => m_RandomDuration = value; } - public SharedVariable RandomDurationRange { get => m_RandomDurationRange; set => m_RandomDurationRange = value; } - public SharedVariable RandomDurationMax { get => m_RandomDurationMax; set => m_RandomDurationMax = value; } - - private float m_WaitDuration; - private float m_StartTime; - private float m_PauseTime = -1; - - /// - /// Callback when the task is initialized. - /// - public override void OnAwake() - { - if (m_Seed != 0) { - UnityEngine.Random.InitState(m_Seed); - } - } - - /// - /// Callback when the task is started. - /// - public override void OnStart() - { - if (m_RandomDuration.Value) { - m_WaitDuration = UnityEngine.Random.Range(m_RandomDurationRange.Value.Min, m_RandomDurationRange.Value.Max); - } else { - m_WaitDuration = m_Duration.Value; - } - m_StartTime = Time.time; - } - - /// - /// Executes the task logic. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - return m_StartTime + m_WaitDuration <= Time.time ? TaskStatus.Success : TaskStatus.Running; - } - - /// - /// Returns the current task state. - /// - /// The DOTS world. - /// The DOTS entity. - /// The current task state. - public override object Save(World world, Entity entity) - { - // Save the unique data. - return new object[] { m_WaitDuration, Time.time - m_StartTime }; - } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - public override void Load(object saveData, World world, Entity entity) - { - // saveData is the wait duration and the elapsed amount of time. - var data = (object[])saveData; - m_WaitDuration = (float)data[0]; - m_StartTime = Time.time - (float)data[1]; - } - - /// - /// The behavior tree has been started. - /// - public override void OnBehaviorTreeStarted() - { - base.OnBehaviorTreeStarted(); - - if (m_PauseTime != -1) { - m_StartTime += (Time.time - m_PauseTime); - m_PauseTime = -1; - } - } - - /// - /// The behavior tree has been stopped or paused. - /// - /// True if the tree has been paused. - public override void OnBehaviorTreeStopped(bool paused) - { - base.OnBehaviorTreeStopped(paused); - - if (paused) { - m_PauseTime = Time.time; - } - } - - /// - /// Resets the variables. - /// - public override void Reset() - { - base.Reset(); - - m_Duration = 1; - m_RandomDuration = false; - m_Seed = 0; - m_RandomDurationRange = new RangeFloat(1, 1); - m_PauseTime = -1; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Wait.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Wait.cs.meta deleted file mode 100644 index bf52020..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Actions/Wait.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0c0e41c99613e54428dc9103bb7635dd -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites.meta deleted file mode 100644 index 8ab8244..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 52b686992c2aafd4bb5214021e8b492b -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/CompositeNode.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/CompositeNode.cs deleted file mode 100644 index 1726571..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/CompositeNode.cs +++ /dev/null @@ -1,35 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Composites -{ - using Opsive.BehaviorDesigner.Runtime.Systems; - using Opsive.GraphDesigner.Runtime; - using UnityEngine; - - /// - /// A TaskObject implementation of the Composite task. - /// - [NodeIcon("3afb3814c40717440b175b6fde4e73c2", "7fb12c74939f50b41b1679eb8f9e79ab")] - public abstract class CompositeNode : Task, ITreeLogicNode, IParentNode, IComposite, ITaskObjectParentNode - { - [Tooltip("The index of the node.")] - [SerializeField] ushort m_Index; - [Tooltip("The parent index of the node. ushort.MaxValue indicates no parent.")] - [SerializeField] ushort m_ParentIndex; - [Tooltip("The sibling index of the node. ushort.MaxValue indicates no sibling.")] - [SerializeField] ushort m_SiblingIndex; - - public ushort Index { get => m_Index; set => m_Index = value; } - public ushort ParentIndex { get => m_ParentIndex; set => m_ParentIndex = value; } - public ushort SiblingIndex { get => m_SiblingIndex; set => m_SiblingIndex = value; } - public ushort RuntimeIndex { get; set; } - - public virtual int MaxChildCount { get => int.MaxValue; } - public virtual ushort NextChildIndex { get => (ushort)(RuntimeIndex + 1); } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/CompositeNode.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/CompositeNode.cs.meta deleted file mode 100644 index fc6cfd1..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/CompositeNode.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 03dee97f70b381e4bb7a230cca3e5f8f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Parallel.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Parallel.cs deleted file mode 100644 index 985b5d3..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Parallel.cs +++ /dev/null @@ -1,225 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Composites -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Utility; - using Opsive.GraphDesigner.Runtime; - using Unity.Burst; - using Unity.Collections; - using Unity.Entities; - using Unity.Jobs; - using UnityEngine; - - /// - /// A node representation of the parallel task. - /// - [NodeIcon("f612c025389b22640b1b6df88f4502e7", "8a4a401bcfb527a48a08351efaf92e14")] - [Opsive.Shared.Utility.Description("Similar to the sequence task, the parallel task will run each child task until a child task returns failure. " + - "The parallel task will run all of its children tasks simultaneously versus running each task one at a time. " + - "Like the sequence class, the parallel task will return success once all of its children tasks have return success. " + - "If one tasks returns failure the parallel task will end all of the child tasks and return failure.")] - public class Parallel : ECSCompositeTask, IParentNode, IParallelNode - { - public override ComponentType Flag { get => typeof(ParallelFlag); } - - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The index of the element within the buffer. - public override int AddBufferElement(World world, Entity entity, GameObject gameObject) - { - var index = base.AddBufferElement(world, entity, gameObject); - ComponentUtility.AddInterruptComponents(world.EntityManager, entity); - return index; - } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override ParallelComponent GetBufferElement() - { - return new ParallelComponent() - { - Index = RuntimeIndex - }; - } - } - - /// - /// The DOTS data structure for the Parallel class. - /// - public struct ParallelComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - [SerializeField] ushort m_Index; - - public ushort Index { get => m_Index; set => m_Index = value; } - } - - /// - /// A DOTS tag indicating when a Parallel node is active. - /// - public struct ParallelFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the Parallel logic. - /// - [DisableAutoCreation] - public partial struct ParallelTaskSystem : ISystem - { - private EntityQuery m_Query; - private JobHandle m_Dependency; - - /// - /// Builds the query. - /// - /// THe current SystemState. - private void OnCreate(ref SystemState state) - { - m_Query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW().WithAll().Build(); - } - - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - m_Dependency.Complete(); - - var ecb = SystemAPI.GetSingleton().CreateCommandBuffer(state.WorldUnmanaged); - state.Dependency = new ParallelJob() - { - EntityCommandBuffer = ecb.AsParallelWriter() - }.ScheduleParallel(m_Query, state.Dependency); - m_Dependency = state.Dependency; - } - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct ParallelJob : IJobEntity - { - [Tooltip("CommandBuffer which sets the component data.")] - public EntityCommandBuffer.ParallelWriter EntityCommandBuffer; - - /// - /// Executes the parallel logic. - /// - /// The entity that is being acted upon. - /// The index of the entity. - /// An array of ParallelComponents. - /// An array of TaskComponents. - /// An array of BranchComponents. - [BurstCompile] - public void Execute(Entity entity, [EntityIndexInQuery] int entityIndex, ref DynamicBuffer parallelComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer branchComponents) - { - for (int i = 0; i < parallelComponents.Length; ++i) { - var parallelComponent = parallelComponents[i]; - var taskComponent = taskComponents[parallelComponent.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - - // Do not continue if there will be an interrupt or the branch cannot execute. - if (branchComponent.InterruptType != InterruptType.None || !branchComponent.CanExecute) { - continue; - } - - ushort childIndex; - TaskComponent childTaskComponent; - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Running; - taskComponents[taskComponent.Index] = taskComponent; - - childIndex = (ushort)(parallelComponent.Index + 1); - while (childIndex != ushort.MaxValue) { - childTaskComponent = taskComponents[childIndex]; - childTaskComponent.Status = TaskStatus.Queued; - taskComponents[childIndex] = childTaskComponent; - - var childBranchComponent = branchComponents[childTaskComponent.BranchIndex]; - childBranchComponent.NextIndex = childTaskComponent.Index; - branchComponents[childTaskComponent.BranchIndex] = childBranchComponent; - - childIndex = taskComponents[childIndex].SiblingIndex; - } - } else if (taskComponent.Status != TaskStatus.Running) { - continue; - } - - var childrenFailure = false; - var childrenRunning = false; - childIndex = (ushort)(parallelComponent.Index + 1); - while (childIndex != ushort.MaxValue) { - childTaskComponent = taskComponents[childIndex]; - if (childTaskComponent.Status == TaskStatus.Queued || childTaskComponent.Status == TaskStatus.Running) { - childrenRunning = true; - } else if (childTaskComponent.Status == TaskStatus.Failure) { - childrenFailure = true; - - var childBranchComponent = branchComponents[childTaskComponent.BranchIndex]; - childBranchComponent.NextIndex = ushort.MaxValue; - branchComponents[childTaskComponent.BranchIndex] = childBranchComponent; - break; - } else if (childTaskComponent.Status == TaskStatus.Success) { - var childBranchComponent = branchComponents[childTaskComponent.BranchIndex]; - if (childBranchComponent.ActiveIndex != ushort.MaxValue) { - childBranchComponent.NextIndex = ushort.MaxValue; - branchComponents[childTaskComponent.BranchIndex] = childBranchComponent; - } - } - childIndex = taskComponents[childIndex].SiblingIndex; - } - - // If a single child fails then all tasks should be stopped. - if (childrenFailure) { - var maxChildIndex = taskComponent.Index + TraversalUtility.GetChildCount(taskComponent.Index, ref taskComponents); - for (ushort j = (ushort)(taskComponent.Index + 1); j <= maxChildIndex; ++j) { - childTaskComponent = taskComponents[j]; - if (childTaskComponent.Status == TaskStatus.Running || childTaskComponent.Status == TaskStatus.Queued) { - childTaskComponent.Status = TaskStatus.Failure; - taskComponents[j] = childTaskComponent; - - branchComponent = branchComponents[childTaskComponent.BranchIndex]; - EntityCommandBuffer.SetComponentEnabled(entityIndex, entity, true); - if (branchComponent.ActiveIndex == childTaskComponent.Index) { - branchComponent.NextIndex = ushort.MaxValue; - branchComponents[childTaskComponent.BranchIndex] = branchComponent; - } - } - } - - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponents[taskComponent.BranchIndex] = branchComponent; - taskComponent.Status = TaskStatus.Failure; - taskComponents[taskComponent.Index] = taskComponent; - - continue; - } - - if (childrenRunning) { - continue; - } - - // No more children are running. Resume the parent task. - taskComponent.Status = TaskStatus.Success; - taskComponents[taskComponent.Index] = taskComponent; - - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponents[taskComponent.BranchIndex] = branchComponent; - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Parallel.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Parallel.cs.meta deleted file mode 100644 index 74fb69a..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Parallel.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 121e856fe6b49d648a50fde8ee6923ed -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/ParallelSelector.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/ParallelSelector.cs deleted file mode 100644 index 9435354..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/ParallelSelector.cs +++ /dev/null @@ -1,219 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Composites -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Utility; - using Opsive.GraphDesigner.Runtime; - using Unity.Burst; - using Unity.Collections; - using Unity.Entities; - using Unity.Jobs; - using Unity.Mathematics; - using UnityEngine; - - /// - /// A node representation of the parallel selector task. - /// - [NodeIcon("d47aff1a00bcc6d4da8ca0df32ed8415", "108591b5d7a6bd94383d16a62cb3b4a7")] - [Opsive.Shared.Utility.Description("Similar to the selector task, the parallel selector task will return success as soon as a child task returns success. " + - "The parallel task will run all of its children tasks simultaneously versus running each task one at a time. " + - "If one tasks returns success the parallel selector task will end all of the child tasks and return success. " + - "If every child task returns failure then the parallel selector task will return failure.")] - public class ParallelSelector : ECSCompositeTask, IParentNode, IParallelNode - { - /// - /// The type of tag that should be enabled when the task is running. - /// - public override ComponentType Flag { get => typeof(ParallelSelectorFlag); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override ParallelSelectorComponent GetBufferElement() - { - return new ParallelSelectorComponent() { - Index = RuntimeIndex, - }; - } - - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The index of the element within the buffer. - public override int AddBufferElement(World world, Entity entity, GameObject gameObject) - { - var index = base.AddBufferElement(world, entity, gameObject); - ComponentUtility.AddInterruptComponents(world.EntityManager, entity); - return index; - } - } - - /// - /// The DOTS data structure for the ParallelSelector class. - /// - public struct ParallelSelectorComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - [SerializeField] ushort m_Index; - - public ushort Index { get => m_Index; set => m_Index = value; } - } - - /// - /// A DOTS tag indicating when a ParallelSelector node is active. - /// - public struct ParallelSelectorFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the ParallelSelector logic. - /// - [DisableAutoCreation] - public partial struct ParallelSelectorTaskSystem : ISystem - { - private EntityQuery m_Query; - private JobHandle m_Dependency; - - /// - /// Builds the query. - /// - /// THe current SystemState. - private void OnCreate(ref SystemState state) - { - m_Query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW().WithAll().Build(); - } - - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - m_Dependency.Complete(); - - var ecb = SystemAPI.GetSingleton().CreateCommandBuffer(state.WorldUnmanaged); - state.Dependency = new ParallelSelectorJob() - { - EntityCommandBuffer = ecb.AsParallelWriter() - }.ScheduleParallel(m_Query, state.Dependency); - m_Dependency = state.Dependency; - } - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct ParallelSelectorJob : IJobEntity - { - [Tooltip("CommandBuffer which sets the component data.")] - public EntityCommandBuffer.ParallelWriter EntityCommandBuffer; - - /// - /// Executes the parallel selector logic. - /// - /// The entity that is being acted upon. - /// The index of the entity. - /// An array of BranchComponents. - /// An array of TaskComponents. - /// An array of ParallelSelectorComponents. - [BurstCompile] - public void Execute(Entity entity, [EntityIndexInQuery] int entityIndex, ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer parallelSelectorComponents) - { - for (int i = 0; i < parallelSelectorComponents.Length; ++i) { - var parallelSelectorComponent = parallelSelectorComponents[i]; - var taskComponent = taskComponents[parallelSelectorComponent.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - - // Do not continue if there will be an interrupt or the branch cannot execute. - if (branchComponent.InterruptType != InterruptType.None || !branchComponent.CanExecute) { - continue; - } - - ushort childIndex; - TaskComponent childTaskComponent; - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Running; - taskComponents[taskComponent.Index] = taskComponent; - - childIndex = (ushort)(parallelSelectorComponent.Index + 1); - while (childIndex != ushort.MaxValue) { - childTaskComponent = taskComponents[childIndex]; - childTaskComponent.Status = TaskStatus.Queued; - taskComponents[childIndex] = childTaskComponent; - - var childBranchComponent = branchComponents[childTaskComponent.BranchIndex]; - childBranchComponent.NextIndex = childTaskComponent.Index; - branchComponents[childTaskComponent.BranchIndex] = childBranchComponent; - - childIndex = taskComponents[childIndex].SiblingIndex; - } - } else if (taskComponent.Status != TaskStatus.Running) { - continue; - } - - var childSuccess = false; - var childrenRunning = false; - childIndex = (ushort)(parallelSelectorComponent.Index + 1); - while (childIndex != ushort.MaxValue) { - childTaskComponent = taskComponents[childIndex]; - if (childTaskComponent.Status == TaskStatus.Queued || childTaskComponent.Status == TaskStatus.Running) { - childrenRunning = true; - } else if (childTaskComponent.Status == TaskStatus.Failure) { - var childBranchComponent = branchComponents[childTaskComponent.BranchIndex]; - if (childBranchComponent.ActiveIndex != ushort.MaxValue) { - childBranchComponent.NextIndex = ushort.MaxValue; - branchComponents[childTaskComponent.BranchIndex] = childBranchComponent; - } - } else if (childTaskComponent.Status == TaskStatus.Success) { - childSuccess = true; - - var childBranchComponent = branchComponents[childTaskComponent.BranchIndex]; - childBranchComponent.NextIndex = ushort.MaxValue; - branchComponents[childTaskComponent.BranchIndex] = childBranchComponent; - break; - } - childIndex = taskComponents[childIndex].SiblingIndex; - } - - // If a single child succeeds then all tasks should be stopped. - if (childSuccess) { - var maxChildIndex = taskComponent.Index + TraversalUtility.GetChildCount(taskComponent.Index, ref taskComponents); - for (ushort j = (ushort)(taskComponent.Index + 1); j <= maxChildIndex; ++j) { - childTaskComponent = taskComponents[j]; - if (childTaskComponent.Status == TaskStatus.Running || childTaskComponent.Status == TaskStatus.Queued) { - childTaskComponent.Status = TaskStatus.Failure; - taskComponents[j] = childTaskComponent; - - branchComponent = branchComponents[childTaskComponent.BranchIndex]; - EntityCommandBuffer.SetComponentEnabled(entityIndex, entity, true); - if (branchComponent.ActiveIndex == childTaskComponent.Index) { - branchComponent.NextIndex = ushort.MaxValue; - branchComponents[childTaskComponent.BranchIndex] = branchComponent; - } - } - } - } else if (childrenRunning) { - continue; - } - - // No more children are running. Resume the parent task. - taskComponent.Status = TaskStatus.Success; - taskComponents[taskComponent.Index] = taskComponent; - - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponents[taskComponent.BranchIndex] = branchComponent; - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/ParallelSelector.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/ParallelSelector.cs.meta deleted file mode 100644 index dc076e8..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/ParallelSelector.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f3ba12965f09f3f4e81b66fa35df8ec3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/PrioritySelector.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/PrioritySelector.cs deleted file mode 100644 index ed22b02..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/PrioritySelector.cs +++ /dev/null @@ -1,331 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Composites -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Utility; - using Opsive.GraphDesigner.Runtime; - using Opsive.Shared.Utility; - using System; - using Unity.Burst; - using Unity.Collections; - using Unity.Entities; - using UnityEngine; - - /// - /// A node representation of the priority selector task. - /// - [NodeIcon("cea0f2b6cee06a742bb35dcc40202e8e", "744afc2640950e045961296f1d5800d7")] - [Opsive.Shared.Utility.Description("Similar to the selector task, the priority selector task will return success as soon as a child task returns success. " + - "Instead of running the tasks sequentially from left to right within the tree, the priority selector will ask the task what its priority is to determine the order. " + - "The higher priority tasks have a higher chance at being run first.")] - public class PrioritySelector : ECSCompositeTask, IParentNode, ISavableTask, ICloneable - { - private ushort m_ComponentIndex; - - public override ComponentType Flag { get => typeof(PrioritySelectorFlag); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override PrioritySelectorComponent GetBufferElement() - { - return new PrioritySelectorComponent() - { - Index = RuntimeIndex, - }; - } - - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The index of the element within the buffer. - public override int AddBufferElement(World world, Entity entity, GameObject gameObject) - { - m_ComponentIndex = (ushort)base.AddBufferElement(world, entity, gameObject); - return m_ComponentIndex; - } - - /// - /// Specifies the type of reflection that should be used to save the task. - /// - /// The index of the sub-task. This is used for the task set allowing each contained task to have their own save type. - public MemberVisibility GetSaveReflectionType(int index) { return MemberVisibility.None; } - - /// - /// Returns the current task state. - /// - /// The DOTS world. - /// The DOTS entity. - /// The current task state. - public object Save(World world, Entity entity) - { - var prioritySelectorComponents = world.EntityManager.GetBuffer(entity); - var prioritySelectorComponent = prioritySelectorComponents[m_ComponentIndex]; - - // Save the active child and array order. - var saveData = new object[2]; - saveData[0] = prioritySelectorComponent.ActiveRelativeChildIndex; - if (prioritySelectorComponent.Priorities.IsCreated) { - saveData[1] = prioritySelectorComponent.Priorities.ToArray(); - } - return saveData; - } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - public void Load(object saveData, World world, Entity entity) - { - var prioritySelectorComponents = world.EntityManager.GetBuffer(entity); - var prioritySelectorComponent = prioritySelectorComponents[m_ComponentIndex]; - - // saveData is the active child and array order. - var taskSaveData = (object[])saveData; - prioritySelectorComponent.ActiveRelativeChildIndex = (ushort)taskSaveData[0]; - if (taskSaveData[1] != null) { - prioritySelectorComponent.Priorities = new NativeArray((PrioritySelectorComponent.PriorityItem[])taskSaveData[1], Allocator.Persistent); - } - prioritySelectorComponents[m_ComponentIndex] = prioritySelectorComponent; - } - - /// - /// Creates a deep clone of the component. - /// - /// A deep clone of the component. - public object Clone() - { - var clone = Activator.CreateInstance(); - clone.Index = Index; - clone.ParentIndex = ParentIndex; - clone.SiblingIndex = SiblingIndex; - return clone; - } - } - - /// - /// The DOTS data structure for the PrioritySelector class. - /// - public struct PrioritySelectorComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - public ushort Index; - [Tooltip("The relative index of the child that is currently active.")] - public ushort ActiveRelativeChildIndex; - [Tooltip("The latest priority values for each child task.")] - public NativeArray Priorities; - - /// - /// Joins the task index with the priority value. - /// - public struct PriorityItem : IComparable - { - [Tooltip("The index of the task.")] - public ushort TaskIndex; - [Tooltip("The index of the PriorityValueComponent. A value of ushort.MaxValue indicates that there is not a corresponding PriorityValueComponent to this element.")] - public ushort PriorityValueIndex; - [Tooltip("The priority value.")] - public float Value; - - /// - /// Compares the current PriorityItem to the other PriorityItem. - /// - /// The other PriorityItem. - /// The comparison between the current PriorityItem and the other PriorityItem. - public int CompareTo(PriorityItem other) - { - // The higher the value the lower the item is in the array. - return other.Value.CompareTo(Value); - } - } - } - - /// - /// DOTS structure that contains the most recently priority of the task. - /// - public struct PriorityValueComponent : IBufferElementData - { - [Tooltip("The index of the task.")] - public ushort Index; - [Tooltip("The current priority value. The higher the value the more likely it will be selected.")] - public float Value; - } - - /// - /// A DOTS tag indicating when a PrioritySelector node is active. - /// - public struct PrioritySelectorFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the PrioritySelector logic. - /// - [DisableAutoCreation] - public partial struct PrioritySelectorTaskSystem : ISystem - { - /// - /// Updates the logic. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var hasPriorityValueComponent = false; - foreach (var (branchComponents, taskComponents, prioritySelectorComponents, priorityValueComponents) in - SystemAPI.Query, DynamicBuffer, DynamicBuffer, DynamicBuffer>().WithAll()) { - - hasPriorityValueComponent = true; - for (int i = 0; i < prioritySelectorComponents.Length; ++i) { - var prioritySelectorComponent = prioritySelectorComponents[i]; - var taskComponent = taskComponents[prioritySelectorComponent.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - - // Do not continue if there will be an interrupt or the branch cannot execute. - if (branchComponent.InterruptType != InterruptType.None || !branchComponent.CanExecute) { - continue; - } - - var prioritySelectorComponentsBuffer = prioritySelectorComponents; - var taskComponentsBuffer = taskComponents; - var branchComponentBuffer = branchComponents; - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Running; - taskComponentsBuffer[taskComponent.Index] = taskComponent; - - // Initialize the priority value array. - NativeArray priorities; - if (prioritySelectorComponent.Priorities.Length == 0) { - var childCount = TraversalUtility.GetImmediateChildCount(ref taskComponent, ref taskComponentsBuffer); - priorities = new NativeArray(childCount, Allocator.Persistent); - // Match the PriorityValueComponent with the child index. - var childIndex = (ushort)(taskComponent.Index + 1); - for (ushort j = 0; j < childCount; ++j) { - priorities[j] = new PrioritySelectorComponent.PriorityItem() { TaskIndex = childIndex, PriorityValueIndex = ushort.MaxValue, Value = float.MinValue }; - for (ushort k = 0; k < priorityValueComponents.Length; ++k) { - var priorityValueComponent = priorityValueComponents[k]; - - if (priorityValueComponent.Index == childIndex) { - var priorityItem = priorities[j]; - priorityItem.PriorityValueIndex = k; - priorities[j] = priorityItem; - break; - } - } - childIndex = taskComponents[childIndex].SiblingIndex; - } - - prioritySelectorComponent.Priorities = priorities; - } - - // Determine the child order when the task starts. - priorities = prioritySelectorComponent.Priorities; - - for (ushort j = 0; j < priorities.Length; ++j) { - var valueIndex = priorities[j].PriorityValueIndex; - // The task may not have a matching PriorityValueComponent. - if (valueIndex == ushort.MaxValue) { - continue; - } - - var priorityItem = priorities[j]; - priorityItem.Value = priorityValueComponents[valueIndex].Value; - priorities[j] = priorityItem; - } - priorities.Sort(); - prioritySelectorComponent.Priorities = priorities; - prioritySelectorComponentsBuffer[i] = prioritySelectorComponent; - - prioritySelectorComponent.ActiveRelativeChildIndex = 0; - branchComponent.NextIndex = prioritySelectorComponent.Priorities[prioritySelectorComponent.ActiveRelativeChildIndex].TaskIndex; - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - - // Start the child. - var nextChildTaskComponent = taskComponents[branchComponent.NextIndex]; - nextChildTaskComponent.Status = TaskStatus.Queued; - taskComponentsBuffer[branchComponent.NextIndex] = nextChildTaskComponent; - } else if (taskComponent.Status != TaskStatus.Running) { - continue; - } - - // The prioritySelector task is currently active. Check the first child. - var childTaskComponent = taskComponents[prioritySelectorComponent.Priorities[prioritySelectorComponent.ActiveRelativeChildIndex].TaskIndex]; - if (childTaskComponent.Status == TaskStatus.Queued || childTaskComponent.Status == TaskStatus.Running) { - // The child should keep running. - continue; - } - - // Switch to the next highest priority. If no more priority values exist the task should act as a normal selector. - if (prioritySelectorComponent.ActiveRelativeChildIndex == prioritySelectorComponent.Priorities.Length - 1 || - childTaskComponent.Status == TaskStatus.Success) { - // There are no more children or the child succeeded. The selector task should end. - taskComponent.Status = childTaskComponent.Status; - prioritySelectorComponent.ActiveRelativeChildIndex = 0; - taskComponentsBuffer[prioritySelectorComponent.Index] = taskComponent; - - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - } else { - // The child task returned failure. Move onto the next task. - prioritySelectorComponent.ActiveRelativeChildIndex++; - var nextIndex = prioritySelectorComponent.Priorities[prioritySelectorComponent.ActiveRelativeChildIndex].TaskIndex; - var nextTaskComponent = taskComponents[nextIndex]; - nextTaskComponent.Status = TaskStatus.Queued; - taskComponentsBuffer[nextIndex] = nextTaskComponent; - - branchComponent.NextIndex = nextIndex; - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - } - prioritySelectorComponentsBuffer[i] = prioritySelectorComponent; - } - } - - // Special case where the PrioritySelectorComponent has no PriorityValueComponent children. - if (!hasPriorityValueComponent) { - foreach (var (prioritySelectorComponents, taskComponents, branchComponents) in - SystemAPI.Query, DynamicBuffer, DynamicBuffer>().WithAll()) { - - for (int i = 0; i < prioritySelectorComponents.Length; ++i) { - var prioritySelectorComponent = prioritySelectorComponents[i]; - var taskComponent = taskComponents[prioritySelectorComponent.Index]; - - // If there are no values then the selector should return failure. - if (taskComponent.Status == TaskStatus.Queued && prioritySelectorComponent.Priorities.Length == 0) { - taskComponent.Status = TaskStatus.Failure; - var taskComponentsBuffer = taskComponents; - taskComponentsBuffer[prioritySelectorComponent.Index] = taskComponent; - - var branchComponent = branchComponents[taskComponent.BranchIndex]; - branchComponent.NextIndex = taskComponent.ParentIndex; - var branchComponentBuffer = branchComponents; - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - } - } - } - } - } - - /// - /// The task has been destroyed. - /// - /// The current state of the system. - private void OnDestroy(ref SystemState state) - { - foreach (var prioritySelectorComponents in SystemAPI.Query>()) { - for (int i = 0; i < prioritySelectorComponents.Length; ++i) { - prioritySelectorComponents[i].Priorities.Dispose(); - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/PrioritySelector.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/PrioritySelector.cs.meta deleted file mode 100644 index ce4eafb..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/PrioritySelector.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0df94ec9b57703043babb28f51e4b55d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/RandomSelector.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/RandomSelector.cs deleted file mode 100644 index af57f9e..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/RandomSelector.cs +++ /dev/null @@ -1,324 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Composites -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Utility; - using Opsive.GraphDesigner.Runtime; - using Opsive.Shared.Utility; - using Unity.Collections; - using Unity.Entities; - using Unity.Burst; - using UnityEngine; - using System; - - /// - /// A node representation of the random selector task. - /// - [NodeIcon("d7c1e0f5830316e449df8a35561df859", "7638e4bc5a1f4cd488801902387ec5ea")] - [Opsive.Shared.Utility.Description("Similar to the selector task, the random selector task will return success as soon as a child task returns success. " + - "The difference is that the random selector class will run its children in a random order. The selector task is deterministic " + - "in that it will always run the tasks from left to right within the tree. The random selector task shuffles the child tasks up and then begins " + - "execution in a random order. Other than that the random selector class is the same as the selector class. It will continue running tasks " + - "until a task completes successfully. If no child tasks return success then it will return failure.")] - public class RandomSelector : ECSCompositeTask, IParentNode, IConditionalAbortParent, IInterruptResponder, ISavableTask, ICloneable - { - [Tooltip("Specifies how the child conditional tasks should be reevaluated.")] - [SerializeField] ConditionalAbortType m_AbortType; - [Tooltip("The seed of the random number generator. Set to 0 to use the entity index as the seed.")] - [SerializeField] uint m_Seed; - - private ushort m_ComponentIndex; - - public ConditionalAbortType AbortType { get => m_AbortType; set => m_AbortType = value; } - public uint Seed { get => m_Seed; set => m_Seed = value; } - - public override ComponentType Flag { get => typeof(RandomSelectorFlag); } - public Type InterruptSystemType { get => typeof(RandomSelectorInterruptSystem); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override RandomSelectorComponent GetBufferElement() - { - return new RandomSelectorComponent() - { - Index = RuntimeIndex, - Seed = m_Seed, - }; - } - - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The index of the element within the buffer. - public override int AddBufferElement(World world, Entity entity, GameObject gameObject) - { - m_ComponentIndex = (ushort)base.AddBufferElement(world, entity, gameObject); - return m_ComponentIndex; - } - - /// - /// Specifies the type of reflection that should be used to save the task. - /// - /// The index of the sub-task. This is used for the task set allowing each contained task to have their own save type. - public MemberVisibility GetSaveReflectionType(int index) { return MemberVisibility.None; } - - /// - /// Returns the current task state. - /// - /// The DOTS world. - /// The DOTS entity. - /// The current task state. - public object Save(World world, Entity entity) - { - var randomSelectorComponents = world.EntityManager.GetBuffer(entity); - var randomSelectorComponent = randomSelectorComponents[m_ComponentIndex]; - - // Save the active child and array order. - var saveData = new object[2]; - saveData[0] = randomSelectorComponent.ActiveRelativeChildIndex; - if (randomSelectorComponent.TaskOrder.IsCreated) { - var taskOrder = randomSelectorComponent.TaskOrder.Value.Indicies.ToArray(); - saveData[1] = taskOrder; - } - return saveData; - } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - public void Load(object saveData, World world, Entity entity) - { - var randomSelectorComponents = world.EntityManager.GetBuffer(entity); - var randomSelectorComponent = randomSelectorComponents[m_ComponentIndex]; - - // saveData is the active child and array order. - var taskSaveData = (object[])saveData; - randomSelectorComponent.ActiveRelativeChildIndex = (ushort)taskSaveData[0]; - if (taskSaveData[1] != null) { - var taskOrder = (ushort[])taskSaveData[1]; - var builder = new BlobBuilder(Allocator.Temp); - ref var root = ref builder.ConstructRoot(); - var orderArray = builder.Allocate(ref root.Indicies, taskOrder.Length); - for (int i = 0; i < taskOrder.Length; i++) { - orderArray[i] = taskOrder[i]; - } - randomSelectorComponent.TaskOrder = builder.CreateBlobAssetReference(Allocator.Persistent); - builder.Dispose(); - } - randomSelectorComponents[m_ComponentIndex] = randomSelectorComponent; - } - - /// - /// Creates a deep clone of the component. - /// - /// A deep clone of the component. - public object Clone() - { - var clone = Activator.CreateInstance(); - clone.Index = Index; - clone.ParentIndex = ParentIndex; - clone.SiblingIndex = SiblingIndex; - clone.AbortType = AbortType; - return clone; - } - } - - /// - /// The DOTS data structure for the RandomSelector class. - /// - public struct RandomSelectorComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - public ushort Index; - [Tooltip("The relative index of the child that is currently active.")] - public ushort ActiveRelativeChildIndex; - [Tooltip("The seed of the random number generator.")] - public uint Seed; - [Tooltip("The random number generator for the task.")] - public Unity.Mathematics.Random RandomNumberGenerator; - [Tooltip("The indicies of the child task execution order.")] - public BlobAssetReference TaskOrder; - } - - /// - /// A DOTS tag indicating when a RandomSelector node is active. - /// - public struct RandomSelectorFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the RandomSelector logic. - /// - [DisableAutoCreation] - public partial struct RandomSelectorTaskSystem : ISystem - { - /// - /// Updates the logic. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - foreach (var (branchComponents, taskComponents, randomSelectorComponents, entity) in - SystemAPI.Query, DynamicBuffer, DynamicBuffer>().WithAll().WithEntityAccess()) { - for (int i = 0; i < randomSelectorComponents.Length; ++i) { - var randomSelectorComponent = randomSelectorComponents[i]; - var taskComponent = taskComponents[randomSelectorComponent.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - - // Do not continue if there will be an interrupt or the branch cannot execute. - if (branchComponent.InterruptType != InterruptType.None || !branchComponent.CanExecute) { - continue; - } - - var randomSelectorComponentsBuffer = randomSelectorComponents; - var taskComponentsBuffer = taskComponents; - var branchComponentBuffer = branchComponents; - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Running; - taskComponentsBuffer[taskComponent.Index] = taskComponent; - - // Initialize the task order array. - if (!randomSelectorComponent.TaskOrder.IsCreated) { - var childCount = TraversalUtility.GetImmediateChildCount(ref taskComponent, ref taskComponentsBuffer); - var builder = new BlobBuilder(Allocator.Temp); - ref var root = ref builder.ConstructRoot(); - var orderArray = builder.Allocate(ref root.Indicies, childCount); - var childIndex = taskComponent.Index + 1; - for (int j = 0; j < childCount; ++j) { - orderArray[j] = (ushort)childIndex; - childIndex = taskComponents[childIndex].SiblingIndex; - } - randomSelectorComponent.TaskOrder = builder.CreateBlobAssetReference(Allocator.Persistent); - builder.Dispose(); - } - - // Generate a new random number seed for each entity. - if (randomSelectorComponent.RandomNumberGenerator.state == 0) { - randomSelectorComponent.RandomNumberGenerator = Unity.Mathematics.Random.CreateFromIndex(randomSelectorComponent.Seed != 0 ? randomSelectorComponent.Seed : (uint)entity.Index); - } - - // Use fisher-yates to shuffle the array in place. - ref var initialTaskOrder = ref randomSelectorComponent.TaskOrder.Value.Indicies; - var index = initialTaskOrder.Length; - while (index != 0) { - var randomUnitFloat = randomSelectorComponent.RandomNumberGenerator.NextFloat(); - var randomIndex = (int)Unity.Mathematics.math.floor(randomUnitFloat * index); - index--; - - var element = initialTaskOrder[randomIndex]; - initialTaskOrder[randomIndex] = initialTaskOrder[index]; - initialTaskOrder[index] = element; - } - - randomSelectorComponent.ActiveRelativeChildIndex = 0; - randomSelectorComponentsBuffer[i] = randomSelectorComponent; - - branchComponent.NextIndex = initialTaskOrder[randomSelectorComponent.ActiveRelativeChildIndex]; - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - - // The child may have already ran and have a non-inactive status. - var nextChildTaskComponent = taskComponents[branchComponent.NextIndex]; - nextChildTaskComponent.Status = TaskStatus.Queued; - taskComponentsBuffer[branchComponent.NextIndex] = nextChildTaskComponent; - } else if (taskComponent.Status != TaskStatus.Running) { - continue; - } - - // The randomSelector task is currently active. Check the first child. - ref var taskOrder = ref randomSelectorComponent.TaskOrder.Value.Indicies; - var childTaskComponent = taskComponents[taskOrder[randomSelectorComponent.ActiveRelativeChildIndex]]; - if (childTaskComponent.Status == TaskStatus.Queued || childTaskComponent.Status == TaskStatus.Running) { - // The child should keep running. - continue; - } - - if (randomSelectorComponent.ActiveRelativeChildIndex == taskOrder.Length - 1 || childTaskComponent.Status == TaskStatus.Success) { - // There are no more children or the child succeeded. The random selector task should end. A task status of inactive indicates the last task was disabled. Return failure. - taskComponent.Status = childTaskComponent.Status != TaskStatus.Inactive ? childTaskComponent.Status : TaskStatus.Failure; - randomSelectorComponent.ActiveRelativeChildIndex = 0; - taskComponentsBuffer[randomSelectorComponent.Index] = taskComponent; - - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - } else { - // The child task returned failure. Move onto the next task. - randomSelectorComponent.ActiveRelativeChildIndex++; - var nextIndex = taskOrder[randomSelectorComponent.ActiveRelativeChildIndex]; - var nextTaskComponent = taskComponents[nextIndex]; - nextTaskComponent.Status = TaskStatus.Queued; - taskComponentsBuffer[nextIndex] = nextTaskComponent; - - branchComponent.NextIndex = nextIndex; - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - } - randomSelectorComponentsBuffer[i] = randomSelectorComponent; - } - } - } - - /// - /// The task has been destroyed. - /// - /// The current state of the system. - private void OnDestroy(ref SystemState state) - { - foreach (var randomSelectorComponents in SystemAPI.Query>()) { - for (int i = 0; i < randomSelectorComponents.Length; ++i) { - var randomSelectorComponent = randomSelectorComponents[i]; - if (randomSelectorComponent.TaskOrder.IsCreated) { - randomSelectorComponent.TaskOrder.Dispose(); - } - } - } - } - } - - /// - /// An interrupt has occurred. Ensure the task state is correct after the interruption. - /// - [DisableAutoCreation] - - public partial struct RandomSelectorInterruptSystem : ISystem - { - /// - /// Runs the logic after an interruption. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - foreach (var (taskComponents, randomSelectorComponents) in - SystemAPI.Query, DynamicBuffer>().WithAll()) { - for (int i = 0; i < randomSelectorComponents.Length; ++i) { - var randomSelectorComponent = randomSelectorComponents[i]; - // The active child will have a non-running status if it has been interrupted. - var taskComponent = taskComponents[randomSelectorComponent.Index]; - if (taskComponent.Status == TaskStatus.Running && taskComponents[randomSelectorComponent.TaskOrder.Value.Indicies[randomSelectorComponent.ActiveRelativeChildIndex]].Status != TaskStatus.Running) { - ushort relativeChildIndex = 0; - // Find the currently active task. - while (taskComponents[randomSelectorComponent.TaskOrder.Value.Indicies[relativeChildIndex]].Status != TaskStatus.Running) { - relativeChildIndex++; - } - randomSelectorComponent.ActiveRelativeChildIndex = relativeChildIndex; - var randomSelectorBuffer = randomSelectorComponents; - randomSelectorBuffer[i] = randomSelectorComponent; - } - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/RandomSelector.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/RandomSelector.cs.meta deleted file mode 100644 index 08d2062..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/RandomSelector.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 88b2c4cec0256b8478ada94d9f020ae3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/RandomSequence.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/RandomSequence.cs deleted file mode 100644 index 60548ed..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/RandomSequence.cs +++ /dev/null @@ -1,324 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Composites -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Utility; - using Opsive.GraphDesigner.Runtime; - using Opsive.Shared.Utility; - using Unity.Collections; - using Unity.Entities; - using Unity.Burst; - using UnityEngine; - using System; - - /// - /// A node representation of the random sequence task. - /// - [NodeIcon("edb30349221143a408c76da55a6aa809", "cfb9039832ed52748b617bde070898dc")] - [Opsive.Shared.Utility.Description("Similar to the sequence task, the random sequence task will return success as soon as every child task returns success. " + - "The difference is that the random sequence class will run its children in a random order. The sequence task is deterministic " + - "in that it will always run the tasks from left to right within the tree. The random sequence task shuffles the child tasks up and then begins " + - "execution in a random order. Other than that the random sequence class is the same as the sequence class. It will stop running tasks " + - "as soon as a single task ends in failure. On a task failure it will stop executing all of the child tasks and return failure. " + - "If no child returns failure then it will return success.")] - public class RandomSequence : ECSCompositeTask, IParentNode, IConditionalAbortParent, IInterruptResponder, ISavableTask, ICloneable - { - [Tooltip("Specifies how the child conditional tasks should be reevaluated.")] - [SerializeField] ConditionalAbortType m_AbortType; - [Tooltip("The seed of the random number generator. Set to 0 to use the entity index as the seed.")] - [SerializeField] uint m_Seed; - - private ushort m_ComponentIndex; - - public ConditionalAbortType AbortType { get => m_AbortType; set => m_AbortType = value; } - public uint Seed { get => m_Seed; set => m_Seed = value; } - - public override ComponentType Flag { get => typeof(RandomSequenceFlag); } - public Type InterruptSystemType { get => typeof(RandomSequenceInterruptSystem); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override RandomSequenceComponent GetBufferElement() - { - return new RandomSequenceComponent() - { - Index = RuntimeIndex, - Seed = m_Seed, - }; - } - - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The index of the element within the buffer. - public override int AddBufferElement(World world, Entity entity, GameObject gameObject) - { - m_ComponentIndex = (ushort)base.AddBufferElement(world, entity, gameObject); - return m_ComponentIndex; - } - - /// - /// Specifies the type of reflection that should be used to save the task. - /// - /// The index of the sub-task. This is used for the task set allowing each contained task to have their own save type. - public MemberVisibility GetSaveReflectionType(int index) { return MemberVisibility.None; } - - /// - /// Returns the current task state. - /// - /// The DOTS world. - /// The DOTS entity. - /// The current task state. - public object Save(World world, Entity entity) - { - var randomSequenceComponents = world.EntityManager.GetBuffer(entity); - var randomSequenceComponent = randomSequenceComponents[m_ComponentIndex]; - - // Save the active child and array order. - var saveData = new object[2]; - saveData[0] = randomSequenceComponent.ActiveRelativeChildIndex; - if (randomSequenceComponent.TaskOrder.IsCreated) { - var taskOrder = randomSequenceComponent.TaskOrder.Value.Indicies.ToArray(); - saveData[1] = taskOrder; - } - return saveData; - } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - public void Load(object saveData, World world, Entity entity) - { - var randomSequenceComponents = world.EntityManager.GetBuffer(entity); - var randomSequenceComponent = randomSequenceComponents[m_ComponentIndex]; - - // saveData is the active child and array order. - var taskSaveData = (object[])saveData; - randomSequenceComponent.ActiveRelativeChildIndex = (ushort)taskSaveData[0]; - if (taskSaveData[1] != null) { - var taskOrder = (ushort[])taskSaveData[1]; - var builder = new BlobBuilder(Allocator.Temp); - ref var root = ref builder.ConstructRoot(); - var orderArray = builder.Allocate(ref root.Indicies, taskOrder.Length); - for (int i = 0; i < taskOrder.Length; i++) { - orderArray[i] = taskOrder[i]; - } - randomSequenceComponent.TaskOrder = builder.CreateBlobAssetReference(Allocator.Persistent); - builder.Dispose(); - } - randomSequenceComponents[m_ComponentIndex] = randomSequenceComponent; - } - - /// - /// Creates a deep clone of the component. - /// - /// A deep clone of the component. - public object Clone() - { - var clone = Activator.CreateInstance(); - clone.Index = Index; - clone.ParentIndex = ParentIndex; - clone.SiblingIndex = SiblingIndex; - clone.AbortType = AbortType; - return clone; - } - } - - /// - /// The DOTS data structure for the RandomSequence class. - /// - public struct RandomSequenceComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - public ushort Index; - [Tooltip("The relative index of the child that is currently active.")] - public ushort ActiveRelativeChildIndex; - [Tooltip("The seed of the random number generator.")] - public uint Seed; - [Tooltip("The random number generator for the task.")] - public Unity.Mathematics.Random RandomNumberGenerator; - [Tooltip("The indicies of the child task execution order.")] - public BlobAssetReference TaskOrder; - } - - /// - /// A DOTS tag indicating when a RandomSequence node is active. - /// - public struct RandomSequenceFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the RandomSequence logic. - /// - [DisableAutoCreation] - public partial struct RandomSequenceTaskSystem : ISystem - { - /// - /// Updates the logic. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - foreach (var (branchComponents, taskComponents, randomSequenceComponents, entity) in - SystemAPI.Query, DynamicBuffer, DynamicBuffer>().WithAll().WithEntityAccess()) { - for (int i = 0; i < randomSequenceComponents.Length; ++i) { - var randomSequenceComponent = randomSequenceComponents[i]; - var taskComponent = taskComponents[randomSequenceComponent.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - - // Do not continue if there will be an interrupt or the branch cannot execute. - if (branchComponent.InterruptType != InterruptType.None || !branchComponent.CanExecute) { - continue; - } - - var randomSequenceComponentsBuffer = randomSequenceComponents; - var taskComponentsBuffer = taskComponents; - var branchComponentBuffer = branchComponents; - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Running; - taskComponentsBuffer[taskComponent.Index] = taskComponent; - - // Initialize the task order array. - if (!randomSequenceComponent.TaskOrder.IsCreated) { - var childCount = TraversalUtility.GetImmediateChildCount(ref taskComponent, ref taskComponentsBuffer); - var builder = new BlobBuilder(Allocator.Temp); - ref var root = ref builder.ConstructRoot(); - var orderArray = builder.Allocate(ref root.Indicies, childCount); - var childIndex = taskComponent.Index + 1; - for (int j = 0; j < childCount; ++j) { - orderArray[j] = (ushort)childIndex; - childIndex = taskComponents[childIndex].SiblingIndex; - } - randomSequenceComponent.TaskOrder = builder.CreateBlobAssetReference(Allocator.Persistent); - builder.Dispose(); - } - - // Generate a new random number seed for each entity. - if (randomSequenceComponent.RandomNumberGenerator.state == 0) { - randomSequenceComponent.RandomNumberGenerator = Unity.Mathematics.Random.CreateFromIndex(randomSequenceComponent.Seed != 0 ? randomSequenceComponent.Seed : (uint)entity.Index); - } - - // Use fisher-yates to shuffle the array in place. - ref var initialTaskOrder = ref randomSequenceComponent.TaskOrder.Value.Indicies; - var index = initialTaskOrder.Length; - while (index != 0) { - var randomUnitFloat = randomSequenceComponent.RandomNumberGenerator.NextFloat(); - var randomIndex = (int)Unity.Mathematics.math.floor(randomUnitFloat * index); - index--; - - var element = initialTaskOrder[randomIndex]; - initialTaskOrder[randomIndex] = initialTaskOrder[index]; - initialTaskOrder[index] = element; - } - - randomSequenceComponent.ActiveRelativeChildIndex = 0; - randomSequenceComponentsBuffer[i] = randomSequenceComponent; - - branchComponent.NextIndex = initialTaskOrder[randomSequenceComponent.ActiveRelativeChildIndex]; - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - - // Start the child. - var nextChildTaskComponent = taskComponents[branchComponent.NextIndex]; - nextChildTaskComponent.Status = TaskStatus.Queued; - taskComponentsBuffer[branchComponent.NextIndex] = nextChildTaskComponent; - } else if (taskComponent.Status != TaskStatus.Running) { - continue; - } - - // The randomSequence task is currently active. Check the first child. - ref var taskOrder = ref randomSequenceComponent.TaskOrder.Value.Indicies; - var childTaskComponent = taskComponents[taskOrder[randomSequenceComponent.ActiveRelativeChildIndex]]; - if (childTaskComponent.Status == TaskStatus.Queued || childTaskComponent.Status == TaskStatus.Running) { - // The child should keep running. - continue; - } - - if (randomSequenceComponent.ActiveRelativeChildIndex == taskOrder.Length - 1 || childTaskComponent.Status == TaskStatus.Failure) { - // There are no more children or the child failed. The random sequence task should end. A task status of inactive indicates the last task was disabled. Return success. - taskComponent.Status = childTaskComponent.Status != TaskStatus.Inactive ? childTaskComponent.Status : TaskStatus.Success; - randomSequenceComponent.ActiveRelativeChildIndex = 0; - taskComponentsBuffer[randomSequenceComponent.Index] = taskComponent; - - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - } else { - // The child task returned success. Move onto the next task. - randomSequenceComponent.ActiveRelativeChildIndex++; - var nextIndex = taskOrder[randomSequenceComponent.ActiveRelativeChildIndex]; - var nextTaskComponent = taskComponents[nextIndex]; - nextTaskComponent.Status = TaskStatus.Queued; - taskComponentsBuffer[nextIndex] = nextTaskComponent; - - branchComponent.NextIndex = nextIndex; - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - } - randomSequenceComponentsBuffer[i] = randomSequenceComponent; - } - } - } - - /// - /// The task has been destroyed. - /// - /// The current state of the system. - private void OnDestroy(ref SystemState state) - { - foreach (var randomSequenceComponents in SystemAPI.Query>()) { - for (int i = 0; i < randomSequenceComponents.Length; ++i) { - var randomSequenceComponent = randomSequenceComponents[i]; - if (randomSequenceComponent.TaskOrder.IsCreated) { - randomSequenceComponent.TaskOrder.Dispose(); - } - } - } - } - } - - /// - /// An interrupt has occurred. Ensure the task state is correct after the interruption. - /// - [DisableAutoCreation] - public partial struct RandomSequenceInterruptSystem : ISystem - { - /// - /// Runs the logic after an interruption. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - foreach (var (taskComponents, randomSequenceComponents) in - SystemAPI.Query, DynamicBuffer>().WithAll()) { - for (int i = 0; i < randomSequenceComponents.Length; ++i) { - var randomSequenceComponent = randomSequenceComponents[i]; - // The active child will have a non-running status if it has been interrupted. - var taskComponent = taskComponents[randomSequenceComponent.Index]; - if (taskComponent.Status == TaskStatus.Running && taskComponents[randomSequenceComponent.TaskOrder.Value.Indicies[randomSequenceComponent.ActiveRelativeChildIndex]].Status != TaskStatus.Running) { - ushort relativeChildIndex = 0; - // Find the currently active task. - while (taskComponents[randomSequenceComponent.TaskOrder.Value.Indicies[relativeChildIndex]].Status != TaskStatus.Running) { - relativeChildIndex++; - } - randomSequenceComponent.ActiveRelativeChildIndex = relativeChildIndex; - var randomSequenceBuffer = randomSequenceComponents; - randomSequenceBuffer[i] = randomSequenceComponent; - } - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/RandomSequence.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/RandomSequence.cs.meta deleted file mode 100644 index bd76250..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/RandomSequence.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d02a71e18382d8548b9f8f0a4834da93 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Selector.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Selector.cs deleted file mode 100644 index c779a08..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Selector.cs +++ /dev/null @@ -1,258 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Composites -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.GraphDesigner.Runtime; - using Opsive.Shared.Utility; - using Unity.Entities; - using Unity.Burst; - using UnityEngine; - using System; - - /// - /// A node representation of the selector task. - /// - [NodeIcon("4c3d0559a9ebc604e88b16e9a3fdfa05", "de3acf0e386a26246b8bc999b1ef8e32")] - [Opsive.Shared.Utility.Description("The selector task is similar to an \"or\" operation. It will return success as soon as one of its child tasks return success. " + - "If a child task returns failure then it will sequentially run the next task. If no child task returns success then it will return failure.")] - public class Selector : ECSCompositeTask, IParentNode, IConditionalAbortParent, IInterruptResponder, ISavableTask, ICloneable - { - [Tooltip("Specifies how the child conditional tasks should be reevaluated.")] - [SerializeField] ConditionalAbortType m_AbortType; - - private ushort m_ComponentIndex; - - public ConditionalAbortType AbortType { get => m_AbortType; set => m_AbortType = value; } - public Type InterruptSystemType { get => typeof(SelectorInterruptSystem); } - - /// - /// The type of tag that should be enabled when the task is running. - /// - public override ComponentType Flag { get => typeof(SelectorFlag); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override SelectorComponent GetBufferElement() - { - return new SelectorComponent() { - Index = RuntimeIndex, - }; - } - - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The index of the element within the buffer. - public override int AddBufferElement(World world, Entity entity, GameObject gameObject) - { - m_ComponentIndex = (ushort)base.AddBufferElement(world, entity, gameObject); - return m_ComponentIndex; - } - - /// - /// Specifies the type of reflection that should be used to save the task. - /// - /// The index of the sub-task. This is used for the task set allowing each contained task to have their own save type. - public MemberVisibility GetSaveReflectionType(int index) { return MemberVisibility.None; } - - /// - /// Returns the current task state. - /// - /// The DOTS world. - /// The DOTS entity. - /// The current task state. - public object Save(World world, Entity entity) - { - var selectorComponents = world.EntityManager.GetBuffer(entity); - var selectorComponent = selectorComponents[m_ComponentIndex]; - - // Save the active child. - return selectorComponent.ActiveChildIndex; - } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - public void Load(object saveData, World world, Entity entity) - { - var selectorComponents = world.EntityManager.GetBuffer(entity); - var selectorComponent = selectorComponents[m_ComponentIndex]; - - // saveData is the active child. - selectorComponent.ActiveChildIndex = (ushort)saveData; - selectorComponents[m_ComponentIndex] = selectorComponent; - } - - /// - /// Creates a deep clone of the component. - /// - /// A deep clone of the component. - public object Clone() - { - var clone = Activator.CreateInstance(); - clone.Index = Index; - clone.ParentIndex = ParentIndex; - clone.SiblingIndex = SiblingIndex; - clone.AbortType = AbortType; - return clone; - } - } - - /// - /// The DOTS data structure for the Selector class. - /// - public struct SelectorComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - public ushort Index; - [Tooltip("The index of the child that is currently active.")] - public ushort ActiveChildIndex; - } - - /// - /// A DOTS tag indicating when a Selector node is active. - /// - public struct SelectorFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the Selector logic. - /// - [DisableAutoCreation] - public partial struct SelectorTaskSystem : ISystem - { - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW().WithAll().Build(); - state.Dependency = new SelectorJob().ScheduleParallel(query, state.Dependency); - } - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct SelectorJob : IJobEntity - { - /// - /// Executes the selector logic. - /// - /// An array of BranchComponents. - /// An array of TaskComponents. - /// An array of SelectorComponents. - [BurstCompile] - public void Execute(ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer selectorComponents) - { - for (int i = 0; i < selectorComponents.Length; ++i) { - var selectorComponent = selectorComponents[i]; - var taskComponent = taskComponents[selectorComponent.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - - // Do not continue if there will be an interrupt or the branch cannot execute. - if (branchComponent.InterruptType != InterruptType.None || !branchComponent.CanExecute) { - continue; - } - - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Running; - taskComponents[taskComponent.Index] = taskComponent; - - selectorComponent.ActiveChildIndex = (ushort)(taskComponent.Index + 1); - selectorComponents[i] = selectorComponent; - - branchComponent.NextIndex = selectorComponent.ActiveChildIndex; - branchComponents[taskComponent.BranchIndex] = branchComponent; - - // Start the child. - var nextChildTaskComponent = taskComponents[branchComponent.NextIndex]; - nextChildTaskComponent.Status = TaskStatus.Queued; - taskComponents[branchComponent.NextIndex] = nextChildTaskComponent; - } else if (taskComponent.Status != TaskStatus.Running) { - continue; - } - - // The selector task is currently active. Check the first child. - var childTaskComponent = taskComponents[selectorComponent.ActiveChildIndex]; - if (childTaskComponent.Status == TaskStatus.Queued || childTaskComponent.Status == TaskStatus.Running) { - // The child should keep running. - continue; - } - - if (childTaskComponent.SiblingIndex == ushort.MaxValue || childTaskComponent.Status == TaskStatus.Success) { - // There are no more children or the child succeeded. The selector task should end. A task status of inactive indicates the last task was disabled. Return failure. - taskComponent.Status = childTaskComponent.Status != TaskStatus.Inactive ? childTaskComponent.Status : TaskStatus.Failure; - selectorComponent.ActiveChildIndex = (ushort)(selectorComponent.Index + 1); - taskComponents[selectorComponent.Index] = taskComponent; - - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponents[taskComponent.BranchIndex] = branchComponent; - } else { - // The previous task is no longer running. - var siblingTaskComponent = taskComponents[childTaskComponent.SiblingIndex]; - - siblingTaskComponent.Status = TaskStatus.Queued; - taskComponents[childTaskComponent.SiblingIndex] = siblingTaskComponent; - // The current index is now the sibling index. - selectorComponent.ActiveChildIndex = childTaskComponent.SiblingIndex; - - branchComponent.NextIndex = selectorComponent.ActiveChildIndex; - branchComponents[taskComponent.BranchIndex] = branchComponent; - } - selectorComponents[i] = selectorComponent; - } - } - } - } - - /// - /// An interrupt has occurred. Ensure the task state is correct after the interruption. - /// - [DisableAutoCreation] - public partial struct SelectorInterruptSystem : ISystem - { - /// - /// Runs the logic after an interruption. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - foreach (var (taskComponents, selectorComponents) in - SystemAPI.Query, DynamicBuffer>().WithAll()) { - for (int i = 0; i < selectorComponents.Length; ++i) { - var selectorComponent = selectorComponents[i]; - // The active child will have a non-running status if it has been interrupted. - if (taskComponents[selectorComponent.ActiveChildIndex].Status != TaskStatus.Running) { - var childIndex = (ushort)(selectorComponent.Index + 1); - // Find the currently active task. - while (childIndex != ushort.MaxValue && taskComponents[childIndex].Status != TaskStatus.Running) { - childIndex = taskComponents[childIndex].SiblingIndex; - } - if (childIndex != ushort.MaxValue) { - selectorComponent.ActiveChildIndex = childIndex; - } - var selectorBuffer = selectorComponents; - selectorBuffer[i] = selectorComponent; - } - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Selector.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Selector.cs.meta deleted file mode 100644 index 6315eeb..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Selector.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9b0cbe842d363e545a41d9ac600430a3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Sequence.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Sequence.cs deleted file mode 100644 index 172efd1..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Sequence.cs +++ /dev/null @@ -1,257 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Composites -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.GraphDesigner.Runtime; - using Opsive.Shared.Utility; - using Unity.Burst; - using Unity.Entities; - using UnityEngine; - using System; - - /// - /// A node representation of the sequence task. - /// - [NodeIcon("8981cc246f900b24da46ae10eb49b68b", "4a7b39d8e0d056a4a9d8eb390b4bc9b8")] - [Opsive.Shared.Utility.Description("The sequence task is similar to an \"and\" operation. It will return failure as soon as one of its child tasks return failure. " + - "If a child task returns success then it will sequentially run the next task. If all child tasks return success then it will return success.")] - public class Sequence : ECSCompositeTask, IParentNode, IConditionalAbortParent, IInterruptResponder, ISavableTask, ICloneable - { - [Tooltip("Specifies how the child conditional tasks should be reevaluated.")] - [SerializeField] ConditionalAbortType m_AbortType; - - private ushort m_ComponentIndex; - - public ConditionalAbortType AbortType { get => m_AbortType; set => m_AbortType = value; } - public Type InterruptSystemType { get => typeof(SequenceInterruptSystem); } - - /// - /// The type of tag that should be enabled when the task is running. - /// - public override ComponentType Flag { get => typeof(SequenceFlag); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override SequenceComponent GetBufferElement() - { - return new SequenceComponent() { - Index = RuntimeIndex, - }; - } - - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The index of the element within the buffer. - public override int AddBufferElement(World world, Entity entity, GameObject gameObject) - { - m_ComponentIndex = (ushort)base.AddBufferElement(world, entity, gameObject); - return m_ComponentIndex; - } - - /// - /// Specifies the type of reflection that should be used to save the task. - /// - /// The index of the sub-task. This is used for the task set allowing each contained task to have their own save type. - public MemberVisibility GetSaveReflectionType(int index) { return MemberVisibility.None; } - - /// - /// Returns the current task state. - /// - /// The DOTS world. - /// The DOTS entity. - /// The current task state. - public object Save(World world, Entity entity) - { - var sequenceComponents = world.EntityManager.GetBuffer(entity); - var sequenceComponent = sequenceComponents[m_ComponentIndex]; - - // Save the active child. - return sequenceComponent.ActiveChildIndex; - } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - public void Load(object saveData, World world, Entity entity) - { - var sequenceComponents = world.EntityManager.GetBuffer(entity); - var sequenceComponent = sequenceComponents[m_ComponentIndex]; - - // saveData is the active child. - sequenceComponent.ActiveChildIndex = (ushort)saveData; - sequenceComponents[m_ComponentIndex] = sequenceComponent; - } - - /// - /// Creates a deep clone of the component. - /// - /// A deep clone of the component. - public object Clone() - { - var clone = Activator.CreateInstance(); - clone.Index = Index; - clone.ParentIndex = ParentIndex; - clone.SiblingIndex = SiblingIndex; - clone.AbortType = AbortType; - return clone; - } - } - - /// - /// The DOTS data structure for the Sequence class. - /// - public struct SequenceComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - public ushort Index; - [Tooltip("The index of the child that is currently active.")] - public ushort ActiveChildIndex; - } - - /// - /// A DOTS tag indicating when a Sequence node is active. - /// - public struct SequenceFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the Sequence logic. - /// - [DisableAutoCreation] - public partial struct SequenceTaskSystem : ISystem - { - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW().WithAll().Build(); - state.Dependency = new SequenceJob().ScheduleParallel(query, state.Dependency); - } - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct SequenceJob : IJobEntity - { - /// - /// Executes the sequence logic. - /// - /// An array of BranchComponents. - /// An array of TaskComponents. - /// An array of SequenceComponents. - [BurstCompile] - public void Execute(ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer sequenceComponents) - { - for (int i = 0; i < sequenceComponents.Length; ++i) { - var sequenceComponent = sequenceComponents[i]; - var taskComponent = taskComponents[sequenceComponent.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - - // Do not continue if there will be an interrupt or the branch cannot execute. - if (branchComponent.InterruptType != InterruptType.None || !branchComponent.CanExecute) { - continue; - } - - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Running; - taskComponents[taskComponent.Index] = taskComponent; - - sequenceComponent.ActiveChildIndex = (ushort)(taskComponent.Index + 1); - sequenceComponents[i] = sequenceComponent; - - branchComponent.NextIndex = sequenceComponent.ActiveChildIndex; - branchComponents[taskComponent.BranchIndex] = branchComponent; - - // Start the child. - var nextChildTaskComponent = taskComponents[branchComponent.NextIndex]; - nextChildTaskComponent.Status = TaskStatus.Queued; - taskComponents[branchComponent.NextIndex] = nextChildTaskComponent; - } else if (taskComponent.Status != TaskStatus.Running) { - continue; - } - - // The sequence task is currently active. Check the first child. - var childTaskComponent = taskComponents[sequenceComponent.ActiveChildIndex]; - if (childTaskComponent.Status == TaskStatus.Queued || childTaskComponent.Status == TaskStatus.Running) { - // The child should keep running. - continue; - } - - if (childTaskComponent.SiblingIndex == ushort.MaxValue || childTaskComponent.Status == TaskStatus.Failure) { - // There are no more children or the child failed. The sequence task should end. A task status of inactive indicates the last task was disabled. Return success. - taskComponent.Status = childTaskComponent.Status != TaskStatus.Inactive ? childTaskComponent.Status : TaskStatus.Success; - sequenceComponent.ActiveChildIndex = (ushort)(sequenceComponent.Index + 1); - taskComponents[sequenceComponent.Index] = taskComponent; - - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponents[taskComponent.BranchIndex] = branchComponent; - } else { - // The previous task is no longer running. - var siblingTaskComponent = taskComponents[childTaskComponent.SiblingIndex]; - - siblingTaskComponent.Status = TaskStatus.Queued; - taskComponents[childTaskComponent.SiblingIndex] = siblingTaskComponent; - // The current index is now the sibling index. - sequenceComponent.ActiveChildIndex = childTaskComponent.SiblingIndex; - - branchComponent.NextIndex = sequenceComponent.ActiveChildIndex; - branchComponents[taskComponent.BranchIndex] = branchComponent; - } - sequenceComponents[i] = sequenceComponent; - } - } - } - } - - /// - /// An interrupt has occurred. Ensure the task state is correct after the interruption. - /// - [DisableAutoCreation] - public partial struct SequenceInterruptSystem : ISystem - { - /// - /// Runs the logic after an interruption. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - foreach (var (taskComponents, sequenceComponents) in - SystemAPI.Query, DynamicBuffer>().WithAll()) { - for (int i = 0; i < sequenceComponents.Length; ++i) { - var sequenceComponent = sequenceComponents[i]; - if (taskComponents[sequenceComponent.ActiveChildIndex].Status != TaskStatus.Running) { - var childIndex = (ushort)(sequenceComponent.Index + 1); - // Find the currently active task. - while (childIndex != ushort.MaxValue && taskComponents[childIndex].Status != TaskStatus.Running) { - childIndex = taskComponents[childIndex].SiblingIndex; - } - if (childIndex != ushort.MaxValue) { - sequenceComponent.ActiveChildIndex = childIndex; - } - var sequenceBuffer = sequenceComponents; - sequenceBuffer[i] = sequenceComponent; - } - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Sequence.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Sequence.cs.meta deleted file mode 100644 index 8fcffd3..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/Sequence.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 519b18064a01b25499eb333d144065c0 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/UtilitySelector.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/UtilitySelector.cs deleted file mode 100644 index 0d2a200..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/UtilitySelector.cs +++ /dev/null @@ -1,361 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Composites -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Utility; - using Opsive.GraphDesigner.Runtime; - using Opsive.Shared.Utility; - using Unity.Collections; - using Unity.Entities; - using Unity.Burst; - using UnityEngine; - using System; - - /// - /// A node representation of the utility selector task. - /// - [NodeIcon("9d36cd363c3e08246a6e9eaf5ad99d69", "db3d0b77c7f9e0b4f9157aa03178836a")] - [Opsive.Shared.Utility.Description("The utility selector task evaluates the child tasks using Utility Theory AI. The child task can return the utility value " + - "at that particular time. The task with the highest utility value will be selected and the existing running task will be aborted. The utility selector " + - "task reevaluates its children every tick.")] - public class UtilitySelector : ECSCompositeTask, IParentNode, ISavableTask, ICloneable - { - private ushort m_ComponentIndex; - - public override ComponentType Flag { get => typeof(UtilitySelectorFlag); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override UtilitySelectorComponent GetBufferElement() - { - return new UtilitySelectorComponent() - { - Index = RuntimeIndex, - }; - } - - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The index of the element within the buffer. - public override int AddBufferElement(World world, Entity entity, GameObject gameObject) - { - m_ComponentIndex = (ushort)base.AddBufferElement(world, entity, gameObject); - ComponentUtility.AddInterruptComponents(world.EntityManager, entity); - return m_ComponentIndex; - } - - /// - /// Specifies the type of reflection that should be used to save the task. - /// - /// The index of the sub-task. This is used for the task set allowing each contained task to have their own save type. - public MemberVisibility GetSaveReflectionType(int index) { return MemberVisibility.None; } - - /// - /// Returns the current task state. - /// - /// The DOTS world. - /// The DOTS entity. - /// The current task state. - public object Save(World world, Entity entity) - { - var utilitySelectorComponents = world.EntityManager.GetBuffer(entity); - var utilitySelectorComponent = utilitySelectorComponents[m_ComponentIndex]; - - // Save the active child. - return utilitySelectorComponent.ActiveChildIndex; - } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - public void Load(object saveData, World world, Entity entity) - { - var utilitySelectorComponents = world.EntityManager.GetBuffer(entity); - var utilitySelectorComponent = utilitySelectorComponents[m_ComponentIndex]; - - // saveData is the active child index. - utilitySelectorComponent.ActiveChildIndex = (ushort)saveData; - utilitySelectorComponents[m_ComponentIndex] = utilitySelectorComponent; - } - - /// - /// Creates a deep clone of the component. - /// - /// A deep clone of the component. - public object Clone() - { - var clone = Activator.CreateInstance(); - clone.Index = Index; - clone.ParentIndex = ParentIndex; - clone.SiblingIndex = SiblingIndex; - return clone; - } - } - - /// - /// The DOTS data structure for the UtilitySelector class. - /// - public struct UtilitySelectorComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - public ushort Index; - [Tooltip("The index of the child that is currently active.")] - public ushort ActiveChildIndex; - [Tooltip("The index of the UtilityValueComponent that corresponds to each child.")] - public NativeArray UtilityItems; - - /// - /// A mapping between the UnityValueComponent and the task. - /// - public struct UtilityItem - { - [Tooltip("The index of the task.")] - public ushort TaskIndex; - [Tooltip("The index of the UtilityValueComponent.")] - public ushort UtilityValueIndex; - [Tooltip("Can the task continue to exectute?")] - public bool CanExecute; - } - } - - /// - /// DOTS structure that contains the most recently utility of the task. - /// - public struct UtilityValueComponent : IBufferElementData - { - [Tooltip("The index of the task.")] - public ushort Index; - [Tooltip("The current utility value. The higher the value the more likely it will be selected.")] - public float Value; - } - - /// - /// A DOTS tag indicating when a UtilitySelector node is active. - /// - public struct UtilitySelectorFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the UtilitySelector logic. - /// - [DisableAutoCreation] - public partial struct UtilitySelectorTaskSystem : ISystem - { - /// - /// Updates the logic. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var hasUtilityValueComponent = false; - foreach (var (utilitySelectorComponents, utilityValueComponents, taskComponents, branchComponents, entity) in - SystemAPI.Query, DynamicBuffer, DynamicBuffer, DynamicBuffer>().WithAll().WithEntityAccess()) { - - hasUtilityValueComponent = true; - for (int i = 0; i < utilitySelectorComponents.Length; ++i) { - var utilitySelectorComponent = utilitySelectorComponents[i]; - var taskComponent = taskComponents[utilitySelectorComponent.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - - // Do not continue if there will be an interrupt or the branch cannot execute. - if (branchComponent.InterruptType != InterruptType.None || !branchComponent.CanExecute) { - continue; - } - - var utilitySelectorComponentsBuffer = utilitySelectorComponents; - var utilityValueComponentBuffer = utilityValueComponents; - var taskComponentsBuffer = taskComponents; - var branchComponentBuffer = branchComponents; - if (taskComponent.Status == TaskStatus.Queued) { - // Initialize the UtilityItem array. - if (utilitySelectorComponent.UtilityItems.Length == 0) { - var childCount = TraversalUtility.GetImmediateChildCount(ref taskComponent, ref taskComponentsBuffer); - var utilityItems = new NativeArray(childCount, Allocator.Persistent); - // Match the UtilitySelectorComponent with the child index. - var childIndex = (ushort)(taskComponent.Index + 1); - for (ushort j = 0; j < childCount; ++j) { - utilityItems[j] = new UtilitySelectorComponent.UtilityItem() { TaskIndex = childIndex, UtilityValueIndex = ushort.MaxValue, CanExecute = !taskComponents[childIndex].Disabled }; - - for (ushort k = 0; k < utilityValueComponents.Length; ++k) { - var utilityValueComponent = utilityValueComponents[k]; - if (utilityValueComponent.Index == childIndex) { - var utilityItem = utilityItems[j]; - utilityItem.UtilityValueIndex = k; - utilityItems[j] = utilityItem; - break; - } - } - childIndex = taskComponents[childIndex].SiblingIndex; - } - - utilitySelectorComponent.UtilityItems = utilityItems; - } else { - // Reset the execution status. - var childIndex = (ushort)(taskComponent.Index + 1); - for (int j = 0; j < utilitySelectorComponent.UtilityItems.Length; ++j) { - var utilityItem = utilitySelectorComponent.UtilityItems[j]; - utilityItem.CanExecute = !taskComponents[childIndex].Disabled; - utilitySelectorComponent.UtilityItems[j] = utilityItem; - - childIndex = taskComponents[childIndex].SiblingIndex; - } - } - - utilitySelectorComponent.ActiveChildIndex = GetHighestUtility(utilitySelectorComponent.UtilityItems, ref utilityValueComponentBuffer); - utilitySelectorComponentsBuffer[i] = utilitySelectorComponent; - - if (utilitySelectorComponent.ActiveChildIndex == ushort.MaxValue) { - taskComponent.Status = TaskStatus.Failure; - branchComponent.NextIndex = taskComponent.ParentIndex; - } else { - taskComponent.Status = TaskStatus.Running; - branchComponent.NextIndex = utilitySelectorComponent.UtilityItems[utilitySelectorComponent.ActiveChildIndex].TaskIndex; - - // Start the child. - var nextChildTaskComponent = taskComponents[branchComponent.NextIndex]; - nextChildTaskComponent.Status = TaskStatus.Queued; - taskComponentsBuffer[branchComponent.NextIndex] = nextChildTaskComponent; - } - taskComponentsBuffer[taskComponent.Index] = taskComponent; - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - - continue; - } else if (taskComponent.Status != TaskStatus.Running) { - continue; - } - - var childTaskComponent = taskComponents[utilitySelectorComponent.UtilityItems[utilitySelectorComponent.ActiveChildIndex].TaskIndex]; - if (childTaskComponent.Status == TaskStatus.Success) { - // The child has returned success. Stop the selector. - taskComponent.Status = childTaskComponent.Status; - taskComponentsBuffer[utilitySelectorComponent.Index] = taskComponent; - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - continue; - } else if (childTaskComponent.Status == TaskStatus.Failure) { - var utilityItem = utilitySelectorComponent.UtilityItems[utilitySelectorComponent.ActiveChildIndex]; - utilityItem.CanExecute = false; - utilitySelectorComponent.UtilityItems[utilitySelectorComponent.ActiveChildIndex] = utilityItem; - - utilitySelectorComponentsBuffer[i] = utilitySelectorComponent; - } - - // The active task returned failure or is currently running. Determine if the active task needs to change. - var highestIndex = GetHighestUtility(utilitySelectorComponent.UtilityItems, ref utilityValueComponentBuffer); - if (highestIndex == utilitySelectorComponent.ActiveChildIndex) { - // No changes are necessary. - continue; - } - - var activeTaskIndex = utilitySelectorComponent.UtilityItems[utilitySelectorComponent.ActiveChildIndex].TaskIndex; - utilitySelectorComponent.ActiveChildIndex = highestIndex; - utilitySelectorComponentsBuffer[i] = utilitySelectorComponent; - - // A new branch has been selected. Trigger an interrupt on the currently active branch. - if (taskComponents[activeTaskIndex].Status == TaskStatus.Running){ - branchComponent.InterruptType = InterruptType.Branch; - branchComponent.InterruptIndex = utilitySelectorComponent.UtilityItems[highestIndex].TaskIndex; - state.EntityManager.SetComponentEnabled(entity, true); - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - continue; - } - - // No more tasks may need to run. - if (highestIndex == ushort.MaxValue) { - taskComponent.Status = TaskStatus.Failure; - taskComponentsBuffer[utilitySelectorComponent.Index] = taskComponent; - - branchComponent.NextIndex = taskComponent.ParentIndex; - } else { - // Run the task with the next highest utility value. - var nextTaskIndex = utilitySelectorComponent.UtilityItems[utilitySelectorComponent.ActiveChildIndex].TaskIndex; - var nextTaskComponent = taskComponents[nextTaskIndex]; - nextTaskComponent.Status = TaskStatus.Queued; - taskComponentsBuffer[nextTaskIndex] = nextTaskComponent; - - branchComponent.NextIndex = nextTaskIndex; - } - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - } - } - - // Special case where the UtilitySelectorComponent has no UtilityValueComponent children. - if (!hasUtilityValueComponent) { - foreach (var (utilitySelectorComponents, taskComponents, branchComponents) in - SystemAPI.Query, DynamicBuffer, DynamicBuffer>().WithAll()) { - - for (int i = 0; i < utilitySelectorComponents.Length; ++i) { - var utilitySelectorComponent = utilitySelectorComponents[i]; - var taskComponent = taskComponents[utilitySelectorComponent.Index]; - - // If there are no values then the selector should return failure. - if (taskComponent.Status == TaskStatus.Queued && utilitySelectorComponent.UtilityItems.Length == 0) { - taskComponent.Status = TaskStatus.Failure; - var taskComponentsBuffer = taskComponents; - taskComponentsBuffer[utilitySelectorComponent.Index] = taskComponent; - - var branchComponent = branchComponents[taskComponent.BranchIndex]; - branchComponent.NextIndex = taskComponent.ParentIndex; - var branchComponentBuffer = branchComponents; - branchComponentBuffer[taskComponent.BranchIndex] = branchComponent; - } - } - } - } - } - - /// - /// Retruns the task index with the highest utility value. - /// - /// The components with utility values. - /// The utility values of the tasks. - /// The task with the highest utility value. - [BurstCompile] - private ushort GetHighestUtility(NativeArray utilityItems, ref DynamicBuffer utilityValueComponents) - { - var utilityIndex = ushort.MaxValue; - var highestUtility = float.MinValue; - for (ushort i = 0; i < utilityItems.Length; ++i) { - if (utilityItems[i].UtilityValueIndex == ushort.MaxValue || !utilityItems[i].CanExecute) { - continue; - } - - var utilityValue = utilityValueComponents[utilityItems[i].UtilityValueIndex].Value; - if (utilityValue > highestUtility) { - highestUtility = utilityValue; - utilityIndex = i; - } - } - - return utilityIndex; - } - - /// - /// The task has been destroyed. - /// - /// The current state of the system. - private void OnDestroy(ref SystemState state) - { - foreach (var utilitySelectorComponents in SystemAPI.Query>()) { - for (int i = 0; i < utilitySelectorComponents.Length; ++i) { - utilitySelectorComponents[i].UtilityItems.Dispose(); - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/UtilitySelector.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/UtilitySelector.cs.meta deleted file mode 100644 index 042d5bc..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Composites/UtilitySelector.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: c68beac686ca75c42879aee6c864fc5e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ConditionalAbortType.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ConditionalAbortType.cs deleted file mode 100644 index 84e4f21..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ConditionalAbortType.cs +++ /dev/null @@ -1,28 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks -{ - /// - /// Specifies that the task can interrupt using conditional aborts. - /// - public interface IConditionalAbortParent - { - ConditionalAbortType AbortType { get; } - } - - /// - /// The type of conditional abort. - /// - public enum ConditionalAbortType : byte - { - None, // No abort specified. - LowerPriority, // Any task to the right of the current branch can be aborted. - Self, // Any task within the current branch can be aborted. - Both // A combination of LowerPriority and Self. - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ConditionalAbortType.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ConditionalAbortType.cs.meta deleted file mode 100644 index a58f477..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ConditionalAbortType.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: c8d72bd503b98814ca0c5cbc857cd014 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals.meta deleted file mode 100644 index 0f2fa6c..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0a0792e3d1b870e4dad5e75b17c12724 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Conditional.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Conditional.cs deleted file mode 100644 index 4fec6b7..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Conditional.cs +++ /dev/null @@ -1,25 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.GraphDesigner.Runtime; - - /// - /// A TaskObject implementation of the Conditional task. - /// - [NodeIcon("dea5c23eac9d12c4cbd380cc879816ea", "2963cf3eb0c036449829254b2074c4c3")] - public abstract class Conditional : Task, IConditional, IConditionalReevaluation - { - /// - /// Reevaluates the task logic. Returns a TaskStatus indicating how the behavior tree flow should proceed. - /// - /// The status of the task during the reevaluation phase. - public virtual TaskStatus OnReevaluateUpdate() { return OnUpdate(); } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Conditional.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Conditional.cs.meta deleted file mode 100644 index 6248e7c..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Conditional.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3a2db972855f8ce48b67b75699c1745a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/ConditionalNode.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/ConditionalNode.cs deleted file mode 100644 index 1fc8cce..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/ConditionalNode.cs +++ /dev/null @@ -1,37 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals -{ - using Opsive.GraphDesigner.Runtime; - using UnityEngine; - - /// - /// A TaskObject implementation of the Conditional task. This class can be used when the task should not be grouped by the StackedConditional task. - /// - [NodeIcon("dea5c23eac9d12c4cbd380cc879816ea", "2963cf3eb0c036449829254b2074c4c3")] - public abstract class ConditionalNode : Task, ITreeLogicNode, IConditional, IConditionalReevaluation - { - [Tooltip("The index of the node.")] - [SerializeField] ushort m_Index; - [Tooltip("The parent index of the node. ushort.MaxValue indicates no parent.")] - [SerializeField] ushort m_ParentIndex; - [Tooltip("The sibling index of the node. ushort.MaxValue indicates no sibling.")] - [SerializeField] ushort m_SiblingIndex; - - public ushort Index { get => m_Index; set => m_Index = value; } - public ushort ParentIndex { get => m_ParentIndex; set => m_ParentIndex = value; } - public ushort SiblingIndex { get => m_SiblingIndex; set => m_SiblingIndex = value; } - public ushort RuntimeIndex { get; set; } - - /// - /// Reevaluates the task logic. Returns a TaskStatus indicating how the behavior tree flow should proceed. - /// - /// The status of the task during the reevaluation phase. - public virtual TaskStatus OnReevaluateUpdate() { return OnUpdate(); } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/ConditionalNode.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/ConditionalNode.cs.meta deleted file mode 100644 index ea1205b..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/ConditionalNode.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5a27f55166c97394ba777a25ede3e192 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/HasReceivedEvent.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/HasReceivedEvent.cs deleted file mode 100644 index 1f6e6a3..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/HasReceivedEvent.cs +++ /dev/null @@ -1,262 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using Opsive.Shared.Events; - using UnityEngine; - - /// - /// A TaskObject implementation of the Conditional task. This class can be used when the task should not be grouped by the StackedConditional task. - /// - [NodeIcon("e6fc90c130121da4f9067b5e15b02975", "69959064b54a0cb4cb077dbb6967a3e1")] - [Opsive.Shared.Utility.Description("Returns success as soon as the event specified by eventName has been received.")] - public class HasReceivedEvent : TargetBehaviorTreeConditional - { - [Tooltip("The name of the event that should be registered.")] - [SerializeField] protected SharedVariable m_EventName; - [Tooltip("Is the event a global event?")] - [SerializeField] protected SharedVariable m_GlobalEvent; - [Tooltip("Optionally store the first sent argument.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoredValue1; - [Tooltip("Optionally store the second sent argument.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoredValue2; - [Tooltip("Optionally store the third sent argument.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoredValue3; - - private string m_RegisteredEventName; - private bool m_EventRegistered; - private bool m_EventReceived; - private bool m_ResetEventReceived = true; - - /// - /// The behavior tree has started. - /// - public override void OnBehaviorTreeStarted() - { - base.OnBehaviorTreeStarted(); - - RegisterEvents(); - } - - /// - /// Initializes the target behavior tree. - /// - protected override void InitializeTarget() - { - if (m_ResolvedBehaviorTree != null) { - UnregisterEvents(); - } - - base.InitializeTarget(); - - RegisterEvents(); - } - - /// - /// Registers for the events. - /// - private void RegisterEvents() - { - if (m_EventRegistered) { - return; - } - - if (string.IsNullOrEmpty(m_EventName.Value)) { - Debug.LogError("Error: Unable to receive event. The event name is empty."); - return; - } - - if (m_StoredValue1 == null || !m_StoredValue1.IsShared) { - if (m_GlobalEvent.Value) { - EventHandler.RegisterEvent(m_EventName.Value, ReceivedEvent); - } else { - EventHandler.RegisterEvent(m_ResolvedBehaviorTree, m_EventName.Value, ReceivedEvent); - } - } else { - if (m_StoredValue2 == null || !m_StoredValue2.IsShared) { - if (m_GlobalEvent.Value) { - EventHandler.RegisterEvent(m_EventName.Value, ReceivedEvent); - } else { - EventHandler.RegisterEvent(m_ResolvedBehaviorTree, m_EventName.Value, ReceivedEvent); - } - } else { - if (m_StoredValue3 == null || !m_StoredValue3.IsShared) { - if (m_GlobalEvent.Value) { - EventHandler.RegisterEvent(m_EventName.Value, ReceivedEvent); - } else { - EventHandler.RegisterEvent(m_ResolvedBehaviorTree, m_EventName.Value, ReceivedEvent); - } - } else { - if (m_GlobalEvent.Value) { - EventHandler.RegisterEvent(m_EventName.Value, ReceivedEvent); - } else { - EventHandler.RegisterEvent(m_ResolvedBehaviorTree, m_EventName.Value, ReceivedEvent); - } - } - } - } - - m_EventName.OnValueChange += UpdateEvents; - if (m_StoredValue1 != null) { m_StoredValue1.OnValueChange += UpdateEvents; } - if (m_StoredValue2 != null) { m_StoredValue2.OnValueChange += UpdateEvents; } - if (m_StoredValue3 != null) { m_StoredValue3.OnValueChange += UpdateEvents; } - - m_EventRegistered = true; - m_RegisteredEventName = m_EventName.Value; - } - - /// - /// The event name or parameter count has changed. Update the events. - /// - private void UpdateEvents() - { - UnregisterEvents(); - RegisterEvents(); - } - - /// - /// A parameterless event has been recevied. - /// - private void ReceivedEvent() - { - m_EventReceived = true; - } - - /// - /// A single parameter event has been received. - /// - /// The first parameter. - private void ReceivedEvent(object arg1) - { - m_EventReceived = true; - - if (m_StoredValue1 != null && m_StoredValue1.IsShared) { m_StoredValue1.SetValue(arg1); } - } - - /// - /// A two parameter event has been received. - /// - /// The first parameter. - /// The second parameter. - private void ReceivedEvent(object arg1, object arg2) - { - m_EventReceived = true; - - if (m_StoredValue1 != null && m_StoredValue1.IsShared) { m_StoredValue1.SetValue(arg1); } - if (m_StoredValue2 != null && m_StoredValue2.IsShared) { m_StoredValue2.SetValue(arg2); } - } - - /// - /// A three parameter event has been received. - /// - /// The first parameter. - /// The second parameter. - /// The third parameter. - private void ReceivedEvent(object arg1, object arg2, object arg3) - { - m_EventReceived = true; - - if (m_StoredValue1 != null && m_StoredValue1.IsShared) { m_StoredValue1.SetValue(arg1); } - if (m_StoredValue2 != null && m_StoredValue2.IsShared) { m_StoredValue2.SetValue(arg2); } - if (m_StoredValue3 != null && m_StoredValue3.IsShared) { m_StoredValue3.SetValue(arg3); } - } - - /// - /// Callback when the task is started. - /// - public override void OnStart() - { - base.OnStart(); - - if (m_ResetEventReceived) { - m_EventReceived = false; - } - } - - /// - /// The task has been updated. - /// - /// True if an event has been received. - public override TaskStatus OnUpdate() - { - return m_EventReceived ? TaskStatus.Success : TaskStatus.Failure; - } - - /// - /// Reevaluates the task logic. - /// - /// The status of the task during the reevaluation phase. - public override TaskStatus OnReevaluateUpdate() - { - if (m_EventReceived) { - // OnStart/OnUpdate will be called immediately after the task is reevaluated. Do not reset the receive status. - m_ResetEventReceived = false; - return TaskStatus.Success; - } - return TaskStatus.Failure; - } - - /// - /// The task has ended. - /// - public override void OnEnd() - { - base.OnEnd(); - - m_EventReceived = false; - m_ResetEventReceived = true; - } - - /// - /// The behavior tree has been stopped. - /// - /// Is the behavior tree paused? - public override void OnBehaviorTreeStopped(bool paused) - { - base.OnBehaviorTreeStopped(paused); - - UnregisterEvents(); - m_EventReceived = false; - m_ResetEventReceived = true; - } - - /// - /// Unregisters for the events that were registered. - /// - private void UnregisterEvents() - { - // The events must be registered first in order to be unregistered. - if (string.IsNullOrEmpty(m_RegisteredEventName)) { - return; - } - - // Unregister from all parameters. This will ensure no events are subscribed if the parameters change. - if (m_GlobalEvent.Value) { - EventHandler.UnregisterEvent(m_RegisteredEventName, ReceivedEvent); - EventHandler.UnregisterEvent(m_RegisteredEventName, ReceivedEvent); - EventHandler.UnregisterEvent(m_RegisteredEventName, ReceivedEvent); - EventHandler.UnregisterEvent(m_RegisteredEventName, ReceivedEvent); - } else { - EventHandler.UnregisterEvent(m_ResolvedBehaviorTree, m_RegisteredEventName, ReceivedEvent); - EventHandler.UnregisterEvent(m_ResolvedBehaviorTree, m_RegisteredEventName, ReceivedEvent); - EventHandler.UnregisterEvent(m_ResolvedBehaviorTree, m_RegisteredEventName, ReceivedEvent); - EventHandler.UnregisterEvent(m_ResolvedBehaviorTree, m_RegisteredEventName, ReceivedEvent); - } - - m_EventName.OnValueChange -= UpdateEvents; - if (m_StoredValue1 != null) { m_StoredValue1.OnValueChange -= UpdateEvents; } - if (m_StoredValue2 != null) { m_StoredValue2.OnValueChange -= UpdateEvents; } - if (m_StoredValue3 != null) { m_StoredValue3.OnValueChange -= UpdateEvents; } - - m_EventRegistered = false; - m_RegisteredEventName = string.Empty; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/HasReceivedEvent.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/HasReceivedEvent.cs.meta deleted file mode 100644 index 67b2e30..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/HasReceivedEvent.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3c2c0606584fdc345a81cf527b283e30 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/HasValue.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/HasValue.cs deleted file mode 100644 index b6f4998..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/HasValue.cs +++ /dev/null @@ -1,38 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using System.Collections; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Returns true if the specified variable has a value.")] - public class HasValue : Conditional - { - [Tooltip("The variable to compare.")] - [SerializeField] protected SharedVariable m_Variable; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - object variableValue = null; - if (m_Variable == null || (variableValue = m_Variable.GetValue()) == null || variableValue.Equals(null)) { - return TaskStatus.Failure; - } - - if (variableValue is IList listValue) { - return listValue.Count > 0 ? TaskStatus.Success : TaskStatus.Failure; - } - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/HasValue.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/HasValue.cs.meta deleted file mode 100644 index fd2ccaf..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/HasValue.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e1e162d80f7bf49419493fe43c33c0a5 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/IsBehaviorTreeActive.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/IsBehaviorTreeActive.cs deleted file mode 100644 index 2a4a9f2..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/IsBehaviorTreeActive.cs +++ /dev/null @@ -1,29 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals -{ - using Opsive.GraphDesigner.Runtime; - - [NodeIcon("e0a8f1df788b6274a9a24003859dfa7e")] - [Opsive.Shared.Utility.Description("Returns true if the specified behavior tree is active.")] - public class IsBehaviorTreeActive : TargetBehaviorTreeConditional - { - /// - /// Executes the task logic. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - if (m_ResolvedBehaviorTree == null) { - return TaskStatus.Failure; - } - - return m_ResolvedBehaviorTree.IsActive() ? TaskStatus.Success : TaskStatus.Failure; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/IsBehaviorTreeActive.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/IsBehaviorTreeActive.cs.meta deleted file mode 100644 index df7d026..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/IsBehaviorTreeActive.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 2d23ca37ee86b15428911307549ab429 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math.meta deleted file mode 100644 index 0891ce0..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a1963b538eafb4144b6fdd080af86056 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/BoolComparison.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/BoolComparison.cs deleted file mode 100644 index faf2ab2..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/BoolComparison.cs +++ /dev/null @@ -1,32 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals.Math -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Compares two boolean values.")] - [Shared.Utility.Category("Math")] - public class BoolComparison : Conditional - { - [Tooltip("The first boolean.")] - [SerializeField] protected SharedVariable m_Bool1; - [Tooltip("The second boolean.")] - [SerializeField] protected SharedVariable m_Bool2; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - return m_Bool1.Value == m_Bool2.Value ? TaskStatus.Success : TaskStatus.Failure; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/BoolComparison.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/BoolComparison.cs.meta deleted file mode 100644 index 62ddc3a..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/BoolComparison.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 20df1d25d6eab8b429d6c8fe6af5a87a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/FloatComparison.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/FloatComparison.cs deleted file mode 100644 index 90c09d3..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/FloatComparison.cs +++ /dev/null @@ -1,60 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals.Math -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Compares two float values.")] - [Shared.Utility.Category("Math")] - public class FloatComparison : Conditional - { - /// - /// Specifies the type of comparison that should be performed. - /// - protected enum Operation - { - LessThan, - LessThanOrEqualTo, - EqualTo, - NotEqualTo, - GreaterThanOrEqualTo, - GreaterThan - } - - [Tooltip("The operation that should be performed.")] - [SerializeField] protected SharedVariable m_Operation; - [Tooltip("The first float.")] - [SerializeField] protected SharedVariable m_Float1; - [Tooltip("The second float.")] - [SerializeField] protected SharedVariable m_Float2; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - switch (m_Operation.Value) { - case Operation.LessThan: - return m_Float1.Value < m_Float2.Value ? TaskStatus.Success : TaskStatus.Failure; - case Operation.LessThanOrEqualTo: - return m_Float1.Value <= m_Float2.Value ? TaskStatus.Success : TaskStatus.Failure; - case Operation.EqualTo: - return m_Float1.Value == m_Float2.Value ? TaskStatus.Success : TaskStatus.Failure; - case Operation.NotEqualTo: - return m_Float1.Value != m_Float2.Value ? TaskStatus.Success : TaskStatus.Failure; - case Operation.GreaterThanOrEqualTo: - return m_Float1.Value >= m_Float2.Value ? TaskStatus.Success : TaskStatus.Failure; - case Operation.GreaterThan: - return m_Float1.Value > m_Float2.Value ? TaskStatus.Success : TaskStatus.Failure; - } - return TaskStatus.Failure; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/FloatComparison.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/FloatComparison.cs.meta deleted file mode 100644 index 119bcde..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/FloatComparison.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a440ba0c2e06f5c4aaeaf7921c721c69 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/GameObjectComparison.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/GameObjectComparison.cs deleted file mode 100644 index 1835a4c..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/GameObjectComparison.cs +++ /dev/null @@ -1,32 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals.Math -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Compares two GameObject values.")] - [Shared.Utility.Category("Math")] - public class GameObjectComparison : Conditional - { - [Tooltip("The first GameObject.")] - [SerializeField] protected SharedVariable m_GameObject1; - [Tooltip("The second GameObject.")] - [SerializeField] protected SharedVariable m_GameObject2; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - return m_GameObject1.Value == m_GameObject2.Value ? TaskStatus.Success : TaskStatus.Failure; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/GameObjectComparison.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/GameObjectComparison.cs.meta deleted file mode 100644 index 37f83d3..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/GameObjectComparison.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3462716a0f02f06448a43ed06afe8ea8 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/IntComparison.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/IntComparison.cs deleted file mode 100644 index 4e57e26..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/IntComparison.cs +++ /dev/null @@ -1,61 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals.Math -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Compares two integer values.")] - [Shared.Utility.Category("Math")] - public class IntComparison : Conditional - { - /// - /// Specifies the type of comparison that should be performed. - /// - protected enum Operation - { - LessThan, - LessThanOrEqualTo, - EqualTo, - NotEqualTo, - GreaterThanOrEqualTo, - GreaterThan - } - - [Tooltip("The operation that should be performed.")] - [SerializeField] protected SharedVariable m_Operation; - [Tooltip("The first integer.")] - [SerializeField] protected SharedVariable m_Integer1; - [Tooltip("The second integer.")] - [SerializeField] protected SharedVariable m_Integer2; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - switch (m_Operation.Value) { - case Operation.LessThan: - return m_Integer1.Value < m_Integer2.Value ? TaskStatus.Success : TaskStatus.Failure; - case Operation.LessThanOrEqualTo: - return m_Integer1.Value <= m_Integer2.Value ? TaskStatus.Success : TaskStatus.Failure; - case Operation.EqualTo: - return m_Integer1.Value == m_Integer2.Value ? TaskStatus.Success : TaskStatus.Failure; - case Operation.NotEqualTo: - return m_Integer1.Value != m_Integer2.Value ? TaskStatus.Success : TaskStatus.Failure; - case Operation.GreaterThanOrEqualTo: - return m_Integer1.Value >= m_Integer2.Value ? TaskStatus.Success : TaskStatus.Failure; - case Operation.GreaterThan: - return m_Integer1.Value > m_Integer2.Value ? TaskStatus.Success : TaskStatus.Failure; - } - return TaskStatus.Failure; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/IntComparison.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/IntComparison.cs.meta deleted file mode 100644 index ed8efa1..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/IntComparison.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a375a939d653fe147a5a14a0c2bef1ff -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/Vector2Comparison.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/Vector2Comparison.cs deleted file mode 100644 index 53d317c..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/Vector2Comparison.cs +++ /dev/null @@ -1,32 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals.Math -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Compares two Vector2 values.")] - [Shared.Utility.Category("Math")] - public class Vector2Comparison : Conditional - { - [Tooltip("The first Vector2.")] - [SerializeField] protected SharedVariable m_Vector1; - [Tooltip("The second Vector2.")] - [SerializeField] protected SharedVariable m_Vector2; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - return m_Vector1.Value == m_Vector2.Value ? TaskStatus.Success : TaskStatus.Failure; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/Vector2Comparison.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/Vector2Comparison.cs.meta deleted file mode 100644 index ec6e6d8..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/Vector2Comparison.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7c2b3d80126bb1f4d861fd3179310f4e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/Vector3Comparison.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/Vector3Comparison.cs deleted file mode 100644 index 9602914..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/Vector3Comparison.cs +++ /dev/null @@ -1,32 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals.Math -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Compares two Vector3 values.")] - [Shared.Utility.Category("Math")] - public class Vector3Comparison : Conditional - { - [Tooltip("The first Vector3.")] - [SerializeField] protected SharedVariable m_Vector1; - [Tooltip("The second Vector3.")] - [SerializeField] protected SharedVariable m_Vector2; - - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - { - return m_Vector1.Value == m_Vector2.Value ? TaskStatus.Success : TaskStatus.Failure; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/Vector3Comparison.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/Vector3Comparison.cs.meta deleted file mode 100644 index 5fdfc3e..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Math/Vector3Comparison.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 56a06b56642c23e41be3a6ed24331bc4 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics.meta deleted file mode 100644 index 8015fc8..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 61662c8f56bf6ff448ec2a4c8761613a -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredCollision.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredCollision.cs deleted file mode 100644 index 07b4688..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredCollision.cs +++ /dev/null @@ -1,61 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals.Physics -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Returns success when a collision starts. This task will only receive the physics callback if it is being reevaluated (with a conditional abort or under a parallel task).")] - [Shared.Utility.Category("Physics")] - public class HasEnteredCollision : Conditional - { - [Tooltip("The tag of the GameObject that the collision should be checked against.")] - [SerializeField] protected SharedVariable m_Tag; - [Tooltip("The collided GameObject.")] - [SerializeField] protected SharedVariable m_StoredCollisionGameObject; - - protected override bool ReceiveCollisionEnterCallback => true; - - private bool m_EnteredCollision; - - /// - /// Returns true when the agent has caused a collision. - /// - /// True when the agent has caused a collision. - public override TaskStatus OnUpdate() - { - return m_EnteredCollision ? TaskStatus.Success : TaskStatus.Failure; - } - - /// - /// The task has ended. - /// - public override void OnEnd() - { - base.OnEnd(); - - m_EnteredCollision = false; - } - - /// - /// The agent has caused a collision. - /// - /// The collision that caused the event. - protected override void OnCollisionEnter(Collision collision) - { - if (!string.IsNullOrEmpty(m_Tag.Value) && !collision.gameObject.CompareTag(m_Tag.Value)) { - return; - } - - if (m_StoredCollisionGameObject != null && m_StoredCollisionGameObject.IsShared) { m_StoredCollisionGameObject.Value = collision.gameObject; } - - m_EnteredCollision = true; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredCollision.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredCollision.cs.meta deleted file mode 100644 index 08dd55a..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredCollision.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9ce4017c15025f648a4a737683b98b18 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredCollision2D.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredCollision2D.cs deleted file mode 100644 index 4571b07..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredCollision2D.cs +++ /dev/null @@ -1,61 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals.Physics -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Returns success when a 2D collision starts. This task will only receive the physics callback if it is being reevaluated (with a conditional abort or under a parallel task).")] - [Shared.Utility.Category("Physics")] - public class HasEnteredCollision2D : Conditional - { - [Tooltip("The tag of the GameObject that the collision should be checked against.")] - [SerializeField] protected SharedVariable m_Tag; - [Tooltip("The collided GameObject.")] - [SerializeField] protected SharedVariable m_StoredCollisionGameObject; - - protected override bool ReceiveCollisionEnterCallback => true; - - private bool m_EnteredCollision; - - /// - /// Returns true when the agent has caused a collision. - /// - /// True when the agent has caused a collision. - public override TaskStatus OnUpdate() - { - return m_EnteredCollision ? TaskStatus.Success : TaskStatus.Failure; - } - - /// - /// The task has ended. - /// - public override void OnEnd() - { - base.OnEnd(); - - m_EnteredCollision = false; - } - - /// - /// The agent has caused a collision. - /// - /// The collision that caused the event. - protected override void OnCollisionEnter2D(Collision2D collision) - { - if (!string.IsNullOrEmpty(m_Tag.Value) && !collision.gameObject.CompareTag(m_Tag.Value)) { - return; - } - - if (m_StoredCollisionGameObject != null && m_StoredCollisionGameObject.IsShared) { m_StoredCollisionGameObject.Value = collision.gameObject; } - - m_EnteredCollision = true; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredCollision2D.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredCollision2D.cs.meta deleted file mode 100644 index 50d55e5..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredCollision2D.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 37fa749cbcf6f7c459159eba18e9ca31 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredTrigger.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredTrigger.cs deleted file mode 100644 index ec16868..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredTrigger.cs +++ /dev/null @@ -1,60 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals.Physics -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Returns success when an object enters the trigger. This task will only receive the physics callback if it is being reevaluated (with a conditional abort or under a parallel task).")] - [Shared.Utility.Category("Physics")] - public class HasEnteredTrigger : Conditional - { - [Tooltip("The tag of the GameObject that the trigger should be checked against.")] - [SerializeField] protected SharedVariable m_Tag; - [Tooltip("The entered trigger.")] - [SerializeField] protected SharedVariable m_StoredOtherCollider; - - protected override bool ReceiveTriggerEnterCallback => true; - - private bool m_EnteredTrigger; - - /// - /// Returns true when the agent has entered a trigger. - /// - /// True when the agent has entered a trigger. - public override TaskStatus OnUpdate() - { - return m_EnteredTrigger ? TaskStatus.Success : TaskStatus.Failure; - } - - /// - /// The task has ended. - /// - public override void OnEnd() - { - base.OnEnd(); - - m_EnteredTrigger = false; - } - - /// - /// The agent has entered a trigger. - /// - /// The trigger that the agent entered. - protected override void OnTriggerEnter(Collider other) - { - if (!string.IsNullOrEmpty(m_Tag.Value) && !other.gameObject.CompareTag(m_Tag.Value)) { - return; - } - - if (m_StoredOtherCollider != null && m_StoredOtherCollider.IsShared) { m_StoredOtherCollider.Value = other; } - - m_EnteredTrigger = true; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredTrigger.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredTrigger.cs.meta deleted file mode 100644 index 4298a2a..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredTrigger.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: fe018fbcfb4b7404f865318125440626 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredTrigger2D.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredTrigger2D.cs deleted file mode 100644 index 1d91e69..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredTrigger2D.cs +++ /dev/null @@ -1,61 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals.Physics -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Returns success when an object enters the 2D trigger. This task will only receive the physics callback if it is being reevaluated (with a conditional abort or under a parallel task).")] - [Shared.Utility.Category("Physics")] - public class HasEnteredTrigger2D : Conditional - { - [Tooltip("The tag of the GameObject that the trigger should be checked against.")] - [SerializeField] protected SharedVariable m_Tag; - [Tooltip("The entered trigger.")] - [SerializeField] protected SharedVariable m_StoredOtherCollider; - - protected override bool ReceiveTriggerEnter2DCallback => true; - - private bool m_EnteredTrigger; - - /// - /// Returns true when the agent has entered a trigger. - /// - /// True when the agent has entered a trigger. - public override TaskStatus OnUpdate() - { - return m_EnteredTrigger ? TaskStatus.Success : TaskStatus.Failure; - } - - /// - /// The task has ended. - /// - public override void OnEnd() - { - base.OnEnd(); - - m_EnteredTrigger = false; - } - - /// - /// The agent has entered a trigger. - /// - /// The trigger that the agent entered. - protected override void OnTriggerEnter2D(Collider2D other) - { - if (!string.IsNullOrEmpty(m_Tag.Value) && !other.gameObject.CompareTag(m_Tag.Value)) { - return; - } - - if (m_StoredOtherCollider != null && m_StoredOtherCollider.IsShared) { m_StoredOtherCollider.Value = other; } - - m_EnteredTrigger = true; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredTrigger2D.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredTrigger2D.cs.meta deleted file mode 100644 index cd89048..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasEnteredTrigger2D.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 83caefa20e976f047b96f600eecffaed -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedCollision.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedCollision.cs deleted file mode 100644 index 2bba301..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedCollision.cs +++ /dev/null @@ -1,61 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals.Physics -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Returns success when a collision ends. This task will only receive the physics callback if it is being reevaluated (with a conditional abort or under a parallel task).")] - [Shared.Utility.Category("Physics")] - public class HasExitedCollision : Conditional - { - [Tooltip("The tag of the GameObject that the collision should be checked against.")] - [SerializeField] protected SharedVariable m_Tag; - [Tooltip("The collided GameObject.")] - [SerializeField] protected SharedVariable m_StoredCollisionGameObject; - - protected override bool ReceiveCollisionExitCallback => true; - - private bool m_ExitedCollision; - - /// - /// Returns true when the agent has left a collision. - /// - /// True when the agent has left a collision. - public override TaskStatus OnUpdate() - { - return m_ExitedCollision ? TaskStatus.Success : TaskStatus.Failure; - } - - /// - /// The task has ended. - /// - public override void OnEnd() - { - base.OnEnd(); - - m_ExitedCollision = false; - } - - /// - /// The agent has left a collision. - /// - /// The collision that caused the event. - protected override void OnCollisionExit(Collision collision) - { - if (!string.IsNullOrEmpty(m_Tag.Value) && !collision.gameObject.CompareTag(m_Tag.Value)) { - return; - } - - if (m_StoredCollisionGameObject != null && m_StoredCollisionGameObject.IsShared) { m_StoredCollisionGameObject.Value = collision.gameObject; } - - m_ExitedCollision = true; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedCollision.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedCollision.cs.meta deleted file mode 100644 index 4c94e62..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedCollision.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: c3ac7ec5199af7049b246d4eabfb0d51 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedCollision2D.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedCollision2D.cs deleted file mode 100644 index 81ed530..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedCollision2D.cs +++ /dev/null @@ -1,61 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals.Physics -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Returns success when a 2D collision ends. This task will only receive the physics callback if it is being reevaluated (with a conditional abort or under a parallel task).")] - [Shared.Utility.Category("Physics")] - public class HasExitedCollision2D : Conditional - { - [Tooltip("The tag of the GameObject that the collision should be checked against.")] - [SerializeField] protected SharedVariable m_Tag; - [Tooltip("The collided GameObject.")] - [SerializeField] protected SharedVariable m_StoredCollisionGameObject; - - protected override bool ReceiveCollisionExit2DCallback => true; - - private bool m_ExitedCollision; - - /// - /// Returns true when the agent has left a collision. - /// - /// True when the agent has left a collision. - public override TaskStatus OnUpdate() - { - return m_ExitedCollision ? TaskStatus.Success : TaskStatus.Failure; - } - - /// - /// The task has ended. - /// - public override void OnEnd() - { - base.OnEnd(); - - m_ExitedCollision = false; - } - - /// - /// The agent has left a collision. - /// - /// The collision that caused the event. - protected override void OnCollisionExit2D(Collision2D collision) - { - if (!string.IsNullOrEmpty(m_Tag.Value) && !collision.gameObject.CompareTag(m_Tag.Value)) { - return; - } - - if (m_StoredCollisionGameObject != null && m_StoredCollisionGameObject.IsShared) { m_StoredCollisionGameObject.Value = collision.gameObject; } - - m_ExitedCollision = true; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedCollision2D.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedCollision2D.cs.meta deleted file mode 100644 index 7d886ec..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedCollision2D.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5fdb5f736525568428350e746b5b6d59 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedTrigger.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedTrigger.cs deleted file mode 100644 index c92f1b5..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedTrigger.cs +++ /dev/null @@ -1,61 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals.Physics -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Returns success when an object exits the trigger. This task will only receive the physics callback if it is being reevaluated (with a conditional abort or under a parallel task).")] - [Shared.Utility.Category("Physics")] - public class HasExitedTrigger : Conditional - { - [Tooltip("The tag of the GameObject that the trigger should be checked against.")] - [SerializeField] protected SharedVariable m_Tag; - [Tooltip("The exited trigger.")] - [SerializeField] protected SharedVariable m_StoredOtherCollider; - - protected override bool ReceiveTriggerExitCallback => true; - - private bool m_ExitedTrigger; - - /// - /// Returns true when the agent has exited a trigger. - /// - /// True when the agent has exited a trigger. - public override TaskStatus OnUpdate() - { - return m_ExitedTrigger ? TaskStatus.Success : TaskStatus.Failure; - } - - /// - /// The task has ended. - /// - public override void OnEnd() - { - base.OnEnd(); - - m_ExitedTrigger = false; - } - - /// - /// The agent has exited a trigger. - /// - /// The trigger that the agent exited. - protected override void OnTriggerExit(Collider other) - { - if (!string.IsNullOrEmpty(m_Tag.Value) && !other.gameObject.CompareTag(m_Tag.Value)) { - return; - } - - if (m_StoredOtherCollider != null && m_StoredOtherCollider.IsShared) { m_StoredOtherCollider.Value = other; } - - m_ExitedTrigger = true; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedTrigger.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedTrigger.cs.meta deleted file mode 100644 index 3457e09..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedTrigger.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9bde13c58ab44304da9e904934375552 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedTrigger2D.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedTrigger2D.cs deleted file mode 100644 index c9c2b4d..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedTrigger2D.cs +++ /dev/null @@ -1,61 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals.Physics -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [Opsive.Shared.Utility.Description("Returns success when an object exits the 2D trigger. This task will only receive the physics callback if it is being reevaluated (with a conditional abort or under a parallel task).")] - [Shared.Utility.Category("Physics")] - public class HasExitedTrigger2D : Conditional - { - [Tooltip("The tag of the GameObject that the trigger should be checked against.")] - [SerializeField] protected SharedVariable m_Tag; - [Tooltip("The exited trigger.")] - [SerializeField] protected SharedVariable m_StoredOtherCollider; - - protected override bool ReceiveTriggerExit2DCallback => true; - - private bool m_ExitedTrigger; - - /// - /// Returns true when the agent has exited a trigger. - /// - /// True when the agent has exited a trigger. - public override TaskStatus OnUpdate() - { - return m_ExitedTrigger ? TaskStatus.Success : TaskStatus.Failure; - } - - /// - /// The task has ended. - /// - public override void OnEnd() - { - base.OnEnd(); - - m_ExitedTrigger = false; - } - - /// - /// The agent has exited a trigger. - /// - /// The trigger that the agent exited. - protected override void OnTriggerExit2D(Collider2D other) - { - if (!string.IsNullOrEmpty(m_Tag.Value) && !other.gameObject.CompareTag(m_Tag.Value)) { - return; - } - - if (m_StoredOtherCollider != null && m_StoredOtherCollider.IsShared) { m_StoredOtherCollider.Value = other; } - - m_ExitedTrigger = true; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedTrigger2D.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedTrigger2D.cs.meta deleted file mode 100644 index 168f1d5..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/Physics/HasExitedTrigger2D.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 74c369fe788ddbb4ab2b9265bdf4e9c0 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/RandomProbability.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/RandomProbability.cs deleted file mode 100644 index f27b287..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/RandomProbability.cs +++ /dev/null @@ -1,229 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using Unity.Burst; - using Unity.Entities; - using UnityEngine; - using System; - - /// - /// A node representation of the random probability task. - /// - [NodeIcon("69bf50f8923f54c4c8bb8e258883a411", "6c5770241610a4c4aae4ac3af0ac8bf8")] - [Opsive.Shared.Utility.Description("The random probability task will return success when the random probability is below the succeed probability. It will otherwise return failure.")] - public class RandomProbability : ECSConditionalTask, IReevaluateResponder, ICloneable - { - [Tooltip("The probability of the task returning success.")] - [SerializeField] [Range(0, 1)] float m_SuccessProbability; - [Tooltip("The seed of the random number generator. Set to 0 to use the entity index as the seed.")] - [SerializeField] uint m_Seed; - - public float SuccessProbability { get => m_SuccessProbability; set => m_SuccessProbability = value; } - public uint Seed { get => m_Seed; set => m_Seed = value; } - - public override ComponentType Flag { get => typeof(RandomProbabilityFlag); } - public ComponentType ReevaluateFlag { get => typeof(RandomProbabilityReevaluateFlag); } - public System.Type ReevaluateSystemType { get => typeof(RandomProbabilityReevaluateTaskSystem); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override RandomProbabilityComponent GetBufferElement() - { - return new RandomProbabilityComponent() - { - Index = RuntimeIndex, - SuccessProbability = m_SuccessProbability, - Seed = m_Seed, - }; - } - - /// - /// Resets the task to its default values. - /// - public override void Reset() - { - m_SuccessProbability = 1; - } - - /// - /// Creates a deep clone of the component. - /// - /// A deep clone of the component. - public object Clone() - { - var clone = Activator.CreateInstance(); - clone.Index = Index; - clone.ParentIndex = ParentIndex; - clone.SiblingIndex = SiblingIndex; - clone.SuccessProbability = SuccessProbability; - return clone; - } - } - - /// - /// The DOTS data structure for the RandomProbability class. - /// - public struct RandomProbabilityComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - public ushort Index; - [Tooltip("The probability of the task returning success.")] - public float SuccessProbability; - [Tooltip("The seed of the random number generator.")] - public uint Seed; - [Tooltip("The random number generator for the task.")] - public Unity.Mathematics.Random RandomNumberGenerator; - } - - /// - /// A DOTS tag indicating when a RandomProbability node is active. - /// - public struct RandomProbabilityFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the RandomProbability logic. - /// - [DisableAutoCreation] - public partial struct RandomProbabilityTaskSystem : ISystem - { - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAll().Build(); - state.Dependency = new RandomProbabilityJob().ScheduleParallel(query, state.Dependency); - } - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct RandomProbabilityJob : IJobEntity - { - /// - /// Executes the random probability logic. - /// - /// The entity that is running the logic. - /// An array of TaskComponents. - /// An array of RandomProbabilityComponents. - [BurstCompile] - public void Execute(Entity entity, ref DynamicBuffer taskComponents, ref DynamicBuffer randomProbabilityComponents) - { - for (int i = 0; i < randomProbabilityComponents.Length; ++i) { - var randomProbabilityComponent = randomProbabilityComponents[i]; - var taskComponent = taskComponents[randomProbabilityComponent.Index]; - if (taskComponent.Status == TaskStatus.Queued) { - // Generate a new random number seed for each entity. - if (randomProbabilityComponent.RandomNumberGenerator.state == 0) { - randomProbabilityComponent.RandomNumberGenerator = Unity.Mathematics.Random.CreateFromIndex(randomProbabilityComponent.Seed != 0 ? randomProbabilityComponent.Seed : (uint)entity.Index); - } - // NextFloat updates the RandomNumberGenerator so the component must be replaced. - var probability = randomProbabilityComponent.RandomNumberGenerator.NextFloat(); - var randomProbabilityBuffer = randomProbabilityComponents; - randomProbabilityBuffer[i] = randomProbabilityComponent; - - // The task will always change status. - taskComponent.Status = probability < randomProbabilityComponent.SuccessProbability ? TaskStatus.Success : TaskStatus.Failure; - taskComponents[randomProbabilityComponent.Index] = taskComponent; - } else if (taskComponent.Status == TaskStatus.Running) { - // A status of running means the task is being resumed from a conditional abort. Return success. - taskComponent.Status = TaskStatus.Success; - taskComponents[randomProbabilityComponent.Index] = taskComponent; - } - } - } - } - } - - - /// - /// A DOTS tag indicating when an RandomProbability node needs to be reevaluated. - /// - public struct RandomProbabilityReevaluateFlag : IComponentData, IEnableableComponent - { - } - - /// - /// Runs the RandomProbability reevaluation logic. - /// - [DisableAutoCreation] - public partial struct RandomProbabilityReevaluateTaskSystem : ISystem - { - /// - /// Updates the reevaluation logic. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - foreach (var (taskComponents, randomProbabilityComponents, entity) in - SystemAPI.Query, DynamicBuffer>().WithAll().WithEntityAccess()) { - for (int i = 0; i < randomProbabilityComponents.Length; ++i) { - var randomProbabilityComponent = randomProbabilityComponents[i]; - var taskComponent = taskComponents[randomProbabilityComponent.Index]; - if (!taskComponent.Reevaluate) { - continue; - } - - // NextFloat updates the RandomNumberGenerator so the component must be replaced. - var probability = randomProbabilityComponent.RandomNumberGenerator.NextFloat(); - var randomProbabilityBuffer = randomProbabilityComponents; - randomProbabilityBuffer[i] = randomProbabilityComponent; - - var status = probability < randomProbabilityComponent.SuccessProbability ? TaskStatus.Success : TaskStatus.Failure; - if (status != taskComponent.Status) { - taskComponent.Status = status; - var buffer = taskComponents; - buffer[taskComponent.Index] = taskComponent; - } - } - } - } - } - - [NodeIcon("69bf50f8923f54c4c8bb8e258883a411", "6c5770241610a4c4aae4ac3af0ac8bf8")] - [Opsive.Shared.Utility.Description("The random probability task will return success when the random probability is below the succeed probability. It will otherwise return failure.")] - public class SharedRandomProbability : Conditional - { - [Tooltip("The probability of the task returning success.")] - [SerializeField] SharedVariable m_SuccessProbability; - [Tooltip("The seed of the random number generator. Set to 0 to disable.")] - [SerializeField] int m_Seed; - - public SharedVariable SuccessProbability { get => m_SuccessProbability; set => m_SuccessProbability = value; } - public int Seed { get => m_Seed; set => m_Seed = value; } - - /// - /// Callback when the task is initialized. - /// - public override void OnAwake() - { - if (m_Seed != 0) { - UnityEngine.Random.InitState(m_Seed); - } - } - - /// - /// Executes the task logic. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - return UnityEngine.Random.value < m_SuccessProbability.Value ? TaskStatus.Success : TaskStatus.Failure; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/RandomProbability.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/RandomProbability.cs.meta deleted file mode 100644 index a9ad684..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/RandomProbability.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b6240825104968e44a250a717de2f39a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/StackedConditional.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/StackedConditional.cs deleted file mode 100644 index 3e42088..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/StackedConditional.cs +++ /dev/null @@ -1,49 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals -{ - using Opsive.GraphDesigner.Runtime; - - /// - /// The StackedConditional task allows for multiple conditionals to be added to the same node. - /// - [NodeIcon("b2368834b8b80144a8b1ab97b609e966", "86fbf527a2c761e45bc4a47cf4894902")] - [Opsive.Shared.Utility.Description("Allows multiple conditional tasks to be added to a single node.")] - public class StackedConditional : StackedTask, IConditional, IConditionalReevaluation - { - /// - /// Reevaluates the task logic. Returns a TaskStatus indicating how the behavior tree flow should proceed. - /// - /// The status of the task during the reevaluation phase. - public TaskStatus OnReevaluateUpdate() - { - if (m_Tasks == null) { - return TaskStatus.Failure; - } - - for (int i = 0; i < m_Tasks.Length; ++i) { - if (m_Tasks[i] == null) { - continue; - } - - TaskStatus executionStatus; - if (m_Tasks[i] is IConditionalReevaluation reevaluateTask) { - executionStatus = reevaluateTask.OnReevaluateUpdate(); - } else { // Use the regular update method if the task isn't designed for conditional aborts. - executionStatus = m_Tasks[i].OnUpdate(); - } - if (m_ComparisonType == ComparisonType.Sequence && executionStatus == TaskStatus.Failure) { - return TaskStatus.Failure; - } else if (m_ComparisonType == ComparisonType.Selector && executionStatus == TaskStatus.Success) { - return TaskStatus.Success; - } - } - return m_ComparisonType == ComparisonType.Sequence ? TaskStatus.Success : TaskStatus.Failure; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/StackedConditional.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/StackedConditional.cs.meta deleted file mode 100644 index 7355b1b..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/StackedConditional.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 73c25e0bc2411614e950faaf32f8cfa1 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/TargetBehaviorTreeConditional.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/TargetBehaviorTreeConditional.cs deleted file mode 100644 index 3f45e65..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/TargetBehaviorTreeConditional.cs +++ /dev/null @@ -1,71 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - /// - /// A TaskObject Conditional task which implements the shared TargetGameObject/TreeUserID objects. - /// - public abstract class TargetBehaviorTreeConditional : Conditional - { - [Tooltip("The GameObject of the target behavior tree. If the value is null the current GameObject will be used.")] - [SerializeField] protected SharedVariable m_TargetGameObject; - [Tooltip("The index of the tree if there are multiple behavior trees on the same GameObject.")] - [SerializeField] protected SharedVariable m_TreeIndex; - - protected BehaviorTree m_ResolvedBehaviorTree; - - /// - /// Initializes the task. - /// - public override void OnAwake() - { - m_TargetGameObject.OnValueChange += InitializeTarget; - m_TreeIndex.OnValueChange += InitializeTarget; - - InitializeTarget(); - } - - /// - /// Initializes the target behavior tree. - /// - protected virtual void InitializeTarget() - { - if (m_TargetGameObject.Value == null) { - m_ResolvedBehaviorTree = m_BehaviorTree; - } else { - var behaviorTrees = m_TargetGameObject.Value.GetComponents(); - if (behaviorTrees.Length == 1) { - m_ResolvedBehaviorTree = behaviorTrees[0]; - } else if (behaviorTrees.Length > 1) { - for (int i = 0; i < behaviorTrees.Length; ++i) { - if (behaviorTrees[i].Index == m_TreeIndex.Value) { - m_ResolvedBehaviorTree = behaviorTrees[i]; - break; - } - } - // If the UserID can't be found then use the first behavior tree. - if (m_ResolvedBehaviorTree == null) { - m_ResolvedBehaviorTree = behaviorTrees[0]; - } - } - } - } - - /// - /// The behavior tree has been destroyed. - /// - public override void OnDestroy() - { - m_TargetGameObject.OnValueChange -= InitializeTarget; - m_TreeIndex.OnValueChange -= InitializeTarget; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/TargetBehaviorTreeConditional.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/TargetBehaviorTreeConditional.cs.meta deleted file mode 100644 index c02b23b..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/TargetBehaviorTreeConditional.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8829f667141e1c04d95d5f9f2f68c7e2 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/TargetGameObjectConditional.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/TargetGameObjectConditional.cs deleted file mode 100644 index 087bdb9..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/TargetGameObjectConditional.cs +++ /dev/null @@ -1,53 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals -{ - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - /// - /// A TaskObject Conditional task which returns the current GameObject if the target is null. - /// - public abstract class TargetGameObjectConditional : Conditional - { - [Tooltip("The GameObject of the target behavior tree. If the value is null the current GameObject will be used.")] - [SerializeField] protected SharedVariable m_TargetGameObject; - protected override GameObject gameObject => m_ResolvedGameObject; - protected override Transform transform => m_ResolvedTransform; - - protected GameObject m_ResolvedGameObject; - protected Transform m_ResolvedTransform; - - /// - /// Initializes the task. - /// - public override void OnAwake() - { - m_TargetGameObject.OnValueChange += InitializeTarget; - - InitializeTarget(); - } - - /// - /// Initializes the target GameObject. - /// - protected virtual void InitializeTarget() - { - m_ResolvedGameObject = (m_TargetGameObject.Value == null || m_TargetGameObject.Value.Equals(null)) ? m_GameObject : m_TargetGameObject.Value; - m_ResolvedTransform = m_ResolvedGameObject.transform; - } - - /// - /// The behavior tree has been destroyed. - /// - public override void OnDestroy() - { - m_TargetGameObject.OnValueChange -= InitializeTarget; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/TargetGameObjectConditional.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/TargetGameObjectConditional.cs.meta deleted file mode 100644 index f05cbf1..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Conditionals/TargetGameObjectConditional.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e53a3005031301c4c9f7c723c82763ce -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators.meta deleted file mode 100644 index 4278c3b..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1ae3ab6e20912c24eb56a8bc711e7688 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ConditionalEvaluator.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ConditionalEvaluator.cs deleted file mode 100644 index 7c63b51..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ConditionalEvaluator.cs +++ /dev/null @@ -1,176 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Decorators -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals; - using Opsive.BehaviorDesigner.Runtime.Utility; - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Utility; - using Opsive.Shared.Utility; - using Unity.Entities; - using UnityEngine; - - /// - /// The Conditional Evaluator is a decorator that will evaluate the specified conditional task. This conditional task can be reevaluated while the current task is active. - /// - [NodeIcon("63d6a403c13816a49b58d1de830ca51e", "3d3c18273075b3f40b6c921943f33964")] - [Opsive.Shared.Utility.Description("Evaluates the specified conditional task. If the conditional task returns success then the child task is run and the child status is returned. If the conditional task does not " + - "return success then the child task is not run and a failure status is immediately returned.")] - public class ConditionalEvaluator : DecoratorNode - { - [Tooltip("The target conditional task that should be evaluated.")] - [SerializeField] [InspectNode] protected Conditional m_Task; - - /// - /// Resets the task values back to their default. - /// - public override void Reset() - { - m_Task = null; - } - - /// - /// Initializes the base task parameters. - /// - /// A reference to the owning BehaviorTree. - /// The runtime index of the node. - internal override void Initialize(BehaviorTree behaviorTree, ushort runtimeIndex) - { - if (m_Task != null) { - m_Task.Initialize(behaviorTree, runtimeIndex); - - if (behaviorTree.World != null) { - ComponentUtility.AddInterruptComponents(behaviorTree.World.EntityManager, behaviorTree.Entity); - } - } - - base.Initialize(behaviorTree, runtimeIndex); - } - - /// - /// The behavior tree has been initialized. - /// - public override void OnAwake() - { - if (m_Task == null) { - Debug.LogError("Error: The task is null within the conditional evaluator."); - return; - } - - m_Task.OnAwake(); - } - - /// - /// The tree has been started. - /// - public override void OnBehaviorTreeStarted() - { - m_Task?.OnBehaviorTreeStarted(); - } - - /// - /// Starts evaluating the specified task. - /// - public override void OnStart() - { - m_Task?.OnStart(); - } - - /// - /// Updates the task. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - if (m_Task == null) { - return TaskStatus.Failure; - } - var status = m_Task.OnUpdate(); - if (status == TaskStatus.Failure) { - return TaskStatus.Failure; - } - - // If the child task returns success or failure then that status should be returned. Otherwise return running. - var taskComponents = m_BehaviorTree.World.EntityManager.GetBuffer(m_BehaviorTree.Entity); - var childStatus = taskComponents[RuntimeIndex + 1].Status; // RuntimeIndex + 1 will always be the task's only child. - if (childStatus == TaskStatus.Success || childStatus == TaskStatus.Failure) { - return childStatus; - } - return TaskStatus.Running; - } - - /// - /// The task has stopped execution. - /// - public override void OnEnd() - { - m_Task?.OnEnd(); - } - - /// - /// The tree has been stopped. - /// - /// Is the behavior tree paused? - public override void OnBehaviorTreeStopped(bool paused) - { - m_Task?.OnBehaviorTreeStopped(paused); - } - - /// - /// The tree has been destroyed. - /// - public override void OnDestroy() - { - m_Task?.OnDestroy(); - } - - /// - /// Specifies the type of reflection that should be used to save the task. - /// - /// The index of the sub-task. This is used for the task set allowing each contained task to have their own save type. - public override MemberVisibility GetSaveReflectionType(int index) - { - if (m_Task == null) { - return MemberVisibility.None; - } - - return m_Task.GetSaveReflectionType(index); - } - - /// - /// Returns the current task state. - /// - /// The DOTS world. - /// The DOTS entity. - /// The current task state. - public override object Save(World world, Entity entity) - { - if (m_Task == null) { - return null; - } - - return m_Task.Save(world, entity); - } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - public override void Load(object saveData, World world, Entity entity) - { - if (m_Task == null) { - return; - } - - m_Task.Load(saveData, world, entity); - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ConditionalEvaluator.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ConditionalEvaluator.cs.meta deleted file mode 100644 index 30ecb07..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ConditionalEvaluator.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8421ea18ed1f62349ac95e1b448b2a7f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Cooldown.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Cooldown.cs deleted file mode 100644 index 763f29e..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Cooldown.cs +++ /dev/null @@ -1,226 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Decorators -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.GraphDesigner.Runtime; - using Opsive.Shared.Utility; - using System; - using Unity.Burst; - using Unity.Entities; - using UnityEngine; - - /// - /// A node representation of the cooldown task. - /// - [NodeIcon("b5459f67bc5033e49ad7a763cdb885bb", "480c79a18119d2a488b5d984211463f1")] - [Opsive.Shared.Utility.Description("Waits the specified duration after the child has completed before returning the child's status of success or failure.")] - public class Cooldown : ECSDecoratorTask, IParentNode - { - [Tooltip("The duration of the cooldown.")] - [SerializeField] float m_Duration; - - public float Duration { get => m_Duration; set => m_Duration = value; } - - private ushort m_ComponentIndex; - - public override ComponentType Flag { get => typeof(CooldownFlag); } - - /// - /// Resets the task to its default values. - /// - public override void Reset() { m_Duration = 1; } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override CooldownComponent GetBufferElement() - { - return new CooldownComponent() - { - Index = RuntimeIndex, - Duration = m_Duration, - StartTime = -1, - }; - } - - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The index of the element within the buffer. - public override int AddBufferElement(World world, Entity entity, GameObject gameObject) - { - m_ComponentIndex = (ushort)base.AddBufferElement(world, entity, gameObject); - return m_ComponentIndex; - } - - /// - /// Specifies the type of reflection that should be used to save the task. - /// - /// The index of the sub-task. This is used for the task set allowing each contained task to have their own save type. - public MemberVisibility GetSaveReflectionType(int index) { return MemberVisibility.None; } - - /// - /// Returns the current task state. - /// - /// The DOTS world. - /// The DOTS entity. - /// The current task state. - public object Save(World world, Entity entity) - { - var cooldownComponents = world.EntityManager.GetBuffer(entity); - var cooldownComponent = cooldownComponents[m_ComponentIndex]; - - // Save the elapsed time. - return Time.time - cooldownComponent.StartTime; - } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - public void Load(object saveData, World world, Entity entity) - { - var cooldownComponents = world.EntityManager.GetBuffer(entity); - var cooldownComponent = cooldownComponents[m_ComponentIndex]; - - // saveData is the elapsed amount of time. - var data = (object[])saveData; - cooldownComponent.StartTime = Time.time - (double)saveData; - cooldownComponents[m_ComponentIndex] = cooldownComponent; - } - - /// - /// Creates a deep clone of the component. - /// - /// A deep clone of the component. - public object Clone() - { - var clone = Activator.CreateInstance(); - clone.Index = Index; - clone.ParentIndex = ParentIndex; - clone.SiblingIndex = SiblingIndex; - clone.Duration = Duration; - return clone; - } - } - - /// - /// The DOTS data structure for the Cooldown class. - /// - public struct CooldownComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - public ushort Index; - [Tooltip("The duration of the cooldown.")] - public float Duration; - [Tooltip("The time the cooldown started.")] - public double StartTime; - } - - /// - /// A DOTS tag indicating when an Cooldown node is active. - /// - public struct CooldownFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the Cooldown logic. - /// - [DisableAutoCreation] - public partial struct CooldownTaskSystem : ISystem - { - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW().WithAll().Build(); - state.Dependency = new CooldownJob() - { - Time = SystemAPI.Time.ElapsedTime - }.ScheduleParallel(query, state.Dependency); - } - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct CooldownJob : IJobEntity - { - [Tooltip("The elapsed time.")] - public double Time; - - /// - /// Executes the cooldown logic. - /// - /// An array of BranchComponents. - /// An array of TaskComponents. - /// An array of CooldownComponents. - [BurstCompile] - public void Execute(ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer cooldownComponents) - { - for (int i = 0; i < cooldownComponents.Length; ++i) { - var cooldownComponent = cooldownComponents[i]; - var taskComponent = taskComponents[cooldownComponent.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - if (!branchComponent.CanExecute) { - continue; - } - - TaskComponent childTaskComponent; - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Running; - taskComponents[taskComponent.Index] = taskComponent; - - childTaskComponent = taskComponents[taskComponent.Index + 1]; - childTaskComponent.Status = TaskStatus.Queued; - taskComponents[taskComponent.Index + 1] = childTaskComponent; - - branchComponent.NextIndex = (ushort)(taskComponent.Index + 1); - branchComponents[taskComponent.BranchIndex] = branchComponent; - - continue; - } else if (taskComponent.Status != TaskStatus.Running) { - continue; - } - - // The cooldown task is currently active. Check the first child. - childTaskComponent = taskComponents[taskComponent.Index + 1]; - if (childTaskComponent.Status == TaskStatus.Queued || childTaskComponent.Status == TaskStatus.Running) { - // The child should keep running. - continue; - } - - // The child has completed. Start the timer if it hasn't already started. If it has started then complete when the duration has elapsed. - if (cooldownComponent.StartTime == -1) { - cooldownComponent.StartTime = Time; - cooldownComponents[i] = cooldownComponent; - } else if (cooldownComponent.StartTime + cooldownComponent.Duration <= Time) { - taskComponent.Status = childTaskComponent.Status; - taskComponents[taskComponent.Index] = taskComponent; - - cooldownComponent.StartTime = -1; - var cooldownComponentsBuffer = cooldownComponents; - cooldownComponentsBuffer[i] = cooldownComponent; - - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponents[taskComponent.BranchIndex] = branchComponent; - } - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Cooldown.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Cooldown.cs.meta deleted file mode 100644 index 1cbbd0c..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Cooldown.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: c27e1444ff9ead74a89c45ce81873aca -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/DecoratorNode.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/DecoratorNode.cs deleted file mode 100644 index 5df9f80..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/DecoratorNode.cs +++ /dev/null @@ -1,35 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Decorators -{ - using Opsive.BehaviorDesigner.Runtime.Systems; - using Opsive.GraphDesigner.Runtime; - using UnityEngine; - - /// - /// A TaskObject implementation of the Decorator task. - /// - [NodeIcon("9abc6c99a8db43b49b2b0d48cca90105", "1ee7d6a0873e3d942b556d3093d8173f")] - public abstract class DecoratorNode : Task, ITreeLogicNode, IParentNode, IDecorator, ITaskObjectParentNode - { - [Tooltip("The index of the node.")] - [SerializeField] ushort m_Index; - [Tooltip("The parent index of the node. ushort.MaxValue indicates no parent.")] - [SerializeField] ushort m_ParentIndex; - [Tooltip("The sibling index of the node. ushort.MaxValue indicates no sibling.")] - [SerializeField] ushort m_SiblingIndex; - - public ushort Index { get => m_Index; set => m_Index = value; } - public ushort ParentIndex { get => m_ParentIndex; set => m_ParentIndex = value; } - public ushort SiblingIndex { get => m_SiblingIndex; set => m_SiblingIndex = value; } - public ushort RuntimeIndex { get; set; } - - public int MaxChildCount { get => 1; } - public ushort NextChildIndex { get => (ushort)(RuntimeIndex + 1); } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/DecoratorNode.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/DecoratorNode.cs.meta deleted file mode 100644 index 360f18d..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/DecoratorNode.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8fe6a83d84731a045a4c789e05b85214 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Inverter.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Inverter.cs deleted file mode 100644 index f712e6a..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Inverter.cs +++ /dev/null @@ -1,126 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Decorators -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.GraphDesigner.Runtime; - using Unity.Burst; - using Unity.Entities; - using UnityEngine; - - /// - /// A node representation of the inverter task. - /// - [NodeIcon("53fe4de81c20e924095bdb5f3447acdc", "8d991ea2b725c214c85580d5647c578c")] - [Opsive.Shared.Utility.Description("The inverter task will invert the return value of the child task after it has finished executing. " + - "If the child returns success, the inverter task will return failure. If the child returns failure, the inverter task will return success.")] - public class Inverter : ECSDecoratorTask, IParentNode - { - public override ComponentType Flag { get => typeof(InverterFlag); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override InverterComponent GetBufferElement() - { - return new InverterComponent() - { - Index = RuntimeIndex, - }; - } - } - - /// - /// The DOTS data structure for the Inverter class. - /// - public struct InverterComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - public ushort Index; - } - - /// - /// A DOTS tag indicating when an Inverter node is active. - /// - public struct InverterFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the Inverter logic. - /// - [DisableAutoCreation] - public partial struct InverterTaskSystem : ISystem - { - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW().WithAll().Build(); - state.Dependency = new InverterJob().ScheduleParallel(query, state.Dependency); - } - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct InverterJob : IJobEntity - { - /// - /// Executes the inverter logic. - /// - /// An array of BranchComponents. - /// An array of TaskComponents. - /// An array of InverterComponents. - [BurstCompile] - public void Execute(ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer inverterComponents) - { - for (int i = 0; i < inverterComponents.Length; ++i) { - var inverterComponent = inverterComponents[i]; - var taskComponent = taskComponents[inverterComponent.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - if (!branchComponent.CanExecute) { - continue; - } - - TaskComponent childTaskComponent; - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Running; - taskComponents[taskComponent.Index] = taskComponent; - - childTaskComponent = taskComponents[taskComponent.Index + 1]; - childTaskComponent.Status = TaskStatus.Queued; - taskComponents[taskComponent.Index + 1] = childTaskComponent; - - branchComponent.NextIndex = (ushort)(taskComponent.Index + 1); - branchComponents[taskComponent.BranchIndex] = branchComponent; - continue; - } else if (taskComponent.Status != TaskStatus.Running) { - continue; - } - - // The inverter task is currently active. Check the first child. - childTaskComponent = taskComponents[taskComponent.Index + 1]; - if (childTaskComponent.Status == TaskStatus.Queued || childTaskComponent.Status == TaskStatus.Running) { - // The child should keep running. - continue; - } - - // The child has completed. Invert the status. - taskComponent.Status = childTaskComponent.Status == TaskStatus.Success ? TaskStatus.Failure : TaskStatus.Success; - taskComponents[taskComponent.Index] = taskComponent; - - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponents[taskComponent.BranchIndex] = branchComponent; - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Inverter.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Inverter.cs.meta deleted file mode 100644 index 60c9b95..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Inverter.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5ee17779b73c2264485dda14bde477cd -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Iterator.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Iterator.cs deleted file mode 100644 index a996056..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Iterator.cs +++ /dev/null @@ -1,109 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Decorators -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using System.Collections; - using Unity.Entities; - using UnityEngine; - - [NodeIcon("3c1366e1dc8fe0b46b4a6c8724194cdd", "5b924a7ff18f0544aaa585af94ac536c")] - [Opsive.Shared.Utility.Description("Iterates through each element of the list. For each execution the Iterator task will set the next Element within the specified List.")] - public class Iterator : DecoratorNode - { - [Tooltip("The list that should be iterated upon.")] - [SerializeField] protected SharedVariable m_List; - [Tooltip("The current element within the list.")] - [SerializeField] [RequireShared] protected SharedVariable m_Element; - [Tooltip("Should the interator end on a failure?")] - [SerializeField] protected SharedVariable m_EndOnFailure; - - private int m_Index; - - /// - /// Resets the task values back to their default. - /// - public override void Reset() - { - m_List = null; - m_Element = null; - m_EndOnFailure = false; - } - - /// - /// Callback when the task is started. - /// - public override void OnStart() - { - base.OnStart(); - m_Index = 0; - } - - /// - /// Executes the task logic. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - if (m_List == null) { - return TaskStatus.Failure; - } - var list = m_List.GetValue() as IList; - if (list == null || list.Count == 0) { - return TaskStatus.Failure; - } - - var taskComponents = m_BehaviorTree.World.EntityManager.GetBuffer(m_BehaviorTree.Entity); - if (taskComponents[Index + 1].Status == TaskStatus.Queued || taskComponents[Index + 1].Status == TaskStatus.Running) { - return TaskStatus.Running; - } - - if (taskComponents[Index + 1].Status == TaskStatus.Failure && m_EndOnFailure.Value) { - return TaskStatus.Failure; - } - - // End when there are no more list elements. - if (m_Index >= list.Count) { - return taskComponents[Index + 1].Status; // Index + 1 will always be the task's only child. - } - - m_Element.SetValue(list[m_Index]); - m_Index++; - - return TaskStatus.Running; - } - - /// - /// Returns the current task state. - /// - /// The DOTS world. - /// The DOTS entity. - /// The current task state. - public override object Save(World world, Entity entity) - { - return m_Index; - } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - public override void Load(object saveData, World world, Entity entity) - { - m_Index = (int)saveData; - var list = m_List.GetValue() as IList; - if (list != null && m_Index < list.Count) { - m_Element.SetValue(list[m_Index]); - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Iterator.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Iterator.cs.meta deleted file mode 100644 index 68ad6bd..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Iterator.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5af8e0ebe3541fb4ba56854fa8a6bd62 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/PriorityEvaluator.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/PriorityEvaluator.cs deleted file mode 100644 index 53e11e6..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/PriorityEvaluator.cs +++ /dev/null @@ -1,113 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Decorators -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Groups; - using Opsive.BehaviorDesigner.Runtime.Tasks.Composites; - using Opsive.GraphDesigner.Runtime; - using Unity.Entities; - - /// - /// Provides a PriorityValueComponent implementation that returns a priority value. - /// - public abstract class PriorityEvaluator : DecoratorNode - { - /// - /// Returns the priority of the decorator. The higher the priority the more likely the task will run next. - /// - /// The priority of the decorator. - public abstract float GetPriorityValue(); - - /// - /// Adds the task to the behavior tree buffer. - /// - /// The world that the task runs in. - /// The entity that the task is connected to. - /// The ID of the behavior tree running the task. - /// The index of the task. - public override void AddBufferElement(World world, Entity entity, int behaviorTreeID, ushort index) - { - base.AddBufferElement(world, entity, behaviorTreeID, index); - - DynamicBuffer buffer; - if (world.EntityManager.HasBuffer(entity)) { - buffer = world.EntityManager.GetBuffer(entity); - } else { - buffer = world.EntityManager.AddBuffer(entity); - } - buffer.Add(new PriorityValueComponent() - { - Index = index, - }); - var traversalTaskSystems = world.GetOrCreateSystemManaged(); - traversalTaskSystems.AddSystemToUpdateList(world.GetOrCreateSystem(typeof(PriorityEvaluatorSystem))); - } - - /// - /// Clears all component buffers from the behavior tree buffer. - /// - /// The world that the task runs in. - /// The entity that the task is connected to. - public override void ClearBufferElement(World world, Entity entity) - { - base.ClearBufferElement(world, entity); - - DynamicBuffer buffer; - if (world.EntityManager.HasBuffer(entity)) { - buffer = world.EntityManager.GetBuffer(entity); - buffer.Clear(); - } - } - - /// - /// Executes the task logic. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - var taskComponents = m_BehaviorTree.World.EntityManager.GetBuffer(m_BehaviorTree.Entity); - var childStatus = taskComponents[RuntimeIndex + 1].Status; // Index + 1 will always be the task's only child. - if (childStatus == TaskStatus.Success || childStatus == TaskStatus.Failure) { - return childStatus; - } - return TaskStatus.Running; - } - } - - /// - /// Sets the PriorityValueComponent value. - /// - [DisableAutoCreation] - [UpdateBefore(typeof(PrioritySelectorTaskSystem))] - public partial struct PriorityEvaluatorSystem : ISystem - { - /// - /// Updates the logic. - /// - /// The current state of the system. - private void OnUpdate(ref SystemState state) - { - foreach (var (priorityValueComponents, taskComponents, entity) in - SystemAPI.Query, DynamicBuffer>().WithAll().WithEntityAccess()) { - - for (int i = 0; i < priorityValueComponents.Length; ++i) { - var priorityValueComponent = priorityValueComponents[i]; - var priorityEvaluator = BehaviorTree.GetBehaviorTree(entity).GetTask(priorityValueComponent.Index) as PriorityEvaluator; - if (priorityEvaluator == null) { - continue; - } - - priorityValueComponent.Value = priorityEvaluator.GetPriorityValue(); - var priorityValueComponentBuffer = priorityValueComponents; - priorityValueComponentBuffer[i] = priorityValueComponent; - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/PriorityEvaluator.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/PriorityEvaluator.cs.meta deleted file mode 100644 index a82df67..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/PriorityEvaluator.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: fa0f2261dad25fe4695811e9513527c8 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/PriorityVariableEvaluator.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/PriorityVariableEvaluator.cs deleted file mode 100644 index 6292da7..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/PriorityVariableEvaluator.cs +++ /dev/null @@ -1,29 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Decorators -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - /// - /// Implements the PriorityEvaluator returning a SharedVariable value. - /// - [Opsive.Shared.Utility.Description("Sets the priority value to the specified SharedVariable float value.")] - public class PriorityVariableEvaluator : PriorityEvaluator - { - [Tooltip("The priority of the decorator.")] - [SerializeField] SharedVariable m_Priority; - - /// - /// Returns the priority of the decorator. The higher the priority the more likely the task will run next. - /// - /// The priority of the decorator. - public override float GetPriorityValue() { return m_Priority.Value; } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/PriorityVariableEvaluator.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/PriorityVariableEvaluator.cs.meta deleted file mode 100644 index 9d0ed5f..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/PriorityVariableEvaluator.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5620437f8c0efed48a49fd477ba18a91 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Repeater.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Repeater.cs deleted file mode 100644 index 1e005b5..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Repeater.cs +++ /dev/null @@ -1,304 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Decorators -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using Opsive.Shared.Utility; - using Unity.Burst; - using Unity.Entities; - using UnityEngine; - - /// - /// A node representation of the repeater task. - /// - [NodeIcon("ceb6f3e7f67cde640b28b2a15ec13ffe", "bb415ca6de87c3d49ab9a94fe8a6fca8")] - [Opsive.Shared.Utility.Description(@"The repeater task will repeat execution of its child task until the child task has been run a specified number of times. " + - "It has the option of continuing to execute the child task even if the child task returns a failure.")] - public class Repeater : ECSDecoratorTask, IParentNode, ISavableTask - { - [Tooltip("Should the task be repeated forever?")] - [SerializeField] bool m_RepeatForever; - [Tooltip("The number of times the task should repeat.")] - [SerializeField] ushort m_RepeatCount; - [Tooltip("Should the repeater end if the child task fails?")] - [SerializeField] bool m_EndOnFailure; - - private ushort m_ComponentIndex; - - public bool RepeatForever { get => m_RepeatForever; set => m_RepeatForever = value; } - public ushort RepeatCount { get => m_RepeatCount; set => m_RepeatCount = value; } - public bool EndOnFailure { get => m_EndOnFailure; set => m_EndOnFailure = value; } - - public override ComponentType Flag { get => typeof(RepeaterFlag); } - - /// - /// Resets the task to its default values. - /// - public override void Reset() { m_RepeatForever = true; } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override RepeaterComponent GetBufferElement() - { - return new RepeaterComponent() { - Index = RuntimeIndex, - RepeatCount = m_RepeatForever ? -1 : m_RepeatCount, - EndOnFailure = m_EndOnFailure, - }; - } - - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The index of the element within the buffer. - public override int AddBufferElement(World world, Entity entity, GameObject gameObject) - { - m_ComponentIndex = (ushort)base.AddBufferElement(world, entity, gameObject); - return m_ComponentIndex; - } - - /// - /// Specifies the type of reflection that should be used to save the task. - /// - /// The index of the sub-task. This is used for the task set allowing each contained task to have their own save type. - public MemberVisibility GetSaveReflectionType(int index) { return MemberVisibility.None; } - - /// - /// Returns the current task state. - /// - /// The DOTS world. - /// The DOTS entity. - /// The current task state. - public object Save(World world, Entity entity) - { - var repeaterComponents = world.EntityManager.GetBuffer(entity); - var repeaterComponent = repeaterComponents[m_ComponentIndex]; - - // Save the current count. - return repeaterComponent.CurrentCount; - } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - public void Load(object saveData, World world, Entity entity) - { - var repeaterComponents = world.EntityManager.GetBuffer(entity); - var repeaterComponent = repeaterComponents[m_ComponentIndex]; - - // saveData is the current count. - repeaterComponent.CurrentCount = (uint)saveData; - repeaterComponents[m_ComponentIndex] = repeaterComponent; - } - } - - /// - /// The DOTS data structure for the Repeater class. - /// - public struct RepeaterComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - public ushort Index; - [Tooltip("The number of times the child task can repeat.")] - public int RepeatCount; - [Tooltip("The number of times the child task has been repeated.")] - public uint CurrentCount; - [Tooltip("Should the task end when the child returns failure?")] - public bool EndOnFailure; - } - - /// - /// A DOTS tag indicating when a Repeater node is active. - /// - public struct RepeaterFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the Repeater logic. - /// - [DisableAutoCreation] - public partial struct RepeaterTaskSystem : ISystem - { - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW().WithAll().Build(); - state.Dependency = new RepeaterJob().ScheduleParallel(query, state.Dependency); - } - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct RepeaterJob : IJobEntity - { - /// - /// Executes the repeater logic. - /// - /// An array of BranchComponents. - /// An array of TaskComponents. - /// An array of RepeaterComponents. - [BurstCompile] - public void Execute(ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer repeaterComponents) - { - for (int i = 0; i < repeaterComponents.Length; ++i) { - var repeaterComponent = repeaterComponents[i]; - var taskComponent = taskComponents[repeaterComponent.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - if (!branchComponent.CanExecute) { - continue; - } - - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Running; - taskComponents[taskComponent.Index] = taskComponent; - - repeaterComponent.CurrentCount = 1; - var repeaterBuffer = repeaterComponents; - repeaterBuffer[i] = repeaterComponent; - - branchComponent.NextIndex = (ushort)(taskComponent.Index + 1); - branchComponents[taskComponent.BranchIndex] = branchComponent; - - // Start the child. - var nextChildTaskComponent = taskComponents[branchComponent.NextIndex]; - nextChildTaskComponent.Status = TaskStatus.Queued; - taskComponents[branchComponent.NextIndex] = nextChildTaskComponent; - } else if (taskComponent.Status != TaskStatus.Running) { - continue; - } - - // The repeater task is currently active. Check the first child. - var childTaskComponent = taskComponents[taskComponent.Index + 1]; - if (childTaskComponent.Status == TaskStatus.Queued || childTaskComponent.Status == TaskStatus.Running) { - // The child should keep running. - continue; - } - - branchComponent = branchComponents[childTaskComponent.BranchIndex]; - if ((repeaterComponent.RepeatCount == -1 || repeaterComponent.CurrentCount <= repeaterComponent.RepeatCount) && - (childTaskComponent.Status == TaskStatus.Success || (!repeaterComponent.EndOnFailure && childTaskComponent.Status == TaskStatus.Failure))) { - // Restart the child if the branch should repeat again. - childTaskComponent.Status = TaskStatus.Queued; - taskComponents[childTaskComponent.Index] = childTaskComponent; - - repeaterComponent.CurrentCount++; - var repeaterBuffer = repeaterComponents; - repeaterBuffer[i] = repeaterComponent; - - branchComponent.NextIndex = childTaskComponent.Index; - branchComponents[childTaskComponent.BranchIndex] = branchComponent; - } else { - // End with the child status if there should not be any more repeats. An inactive status will be returned if the child is disabled. - taskComponent.Status = childTaskComponent.Status == TaskStatus.Inactive ? TaskStatus.Success : childTaskComponent.Status; - taskComponents[taskComponent.Index] = taskComponent; - - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponents[childTaskComponent.BranchIndex] = branchComponent; - } - } - } - } - } - /// - /// A node representation of the repeater task. - /// - [NodeIcon("ceb6f3e7f67cde640b28b2a15ec13ffe", "bb415ca6de87c3d49ab9a94fe8a6fca8")] - [Opsive.Shared.Utility.Description(@"The repeater task will repeat execution of its child task until the child task has been run a specified number of times. " + - "It has the option of continuing to execute the child task even if the child task returns a failure. Uses the GameObject workflow.")] - public class SharedRepeater : DecoratorNode - { - [Tooltip("Should the task be repeated forever?")] - [SerializeField] SharedVariable m_RepeatForever = true; - [Tooltip("The number of times the task should repeat.")] - [SerializeField] SharedVariable m_RepeatCount; - [Tooltip("Should the repeater end if the child task fails?")] - [SerializeField] SharedVariable m_EndOnFailure; - - public SharedVariable RepeatForever { get => m_RepeatForever; set => m_RepeatForever = value; } - public SharedVariable RepeatCount { get => m_RepeatCount; set => m_RepeatCount = value; } - public SharedVariable EndOnFailure { get => m_EndOnFailure; set => m_EndOnFailure = value; } - - private uint m_CurrentCount; - - /// - /// Callback when the task is started. - /// - public override void OnStart() - { - base.OnStart(); - m_CurrentCount = 0; - } - - /// - /// Executes the task logic. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - var taskComponents = m_BehaviorTree.World.EntityManager.GetBuffer(m_BehaviorTree.Entity); - if (taskComponents[Index + 1].Status == TaskStatus.Running || taskComponents[Index + 1].Status == TaskStatus.Queued) { - return TaskStatus.Running; - } - - if (taskComponents[Index + 1].Status == TaskStatus.Failure && m_EndOnFailure.Value) { - return TaskStatus.Failure; - } - - // The child isn't running. Repeat - if (m_RepeatForever.Value || m_CurrentCount <= m_RepeatCount.Value) { - m_CurrentCount++; - return TaskStatus.Running; - } - - return taskComponents[Index + 1].Status; - } - - /// - /// Specifies the type of reflection that should be used to save the task. - /// - /// The index of the sub-task. This is used for the task set allowing each contained task to have their own save type. - public override MemberVisibility GetSaveReflectionType(int index) { return MemberVisibility.None; } - - /// - /// Returns the current task state. - /// - /// The DOTS world. - /// The DOTS entity. - /// The current task state. - public override object Save(World world, Entity entity) - { - // Save the current count. - return m_CurrentCount; - } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - public override void Load(object saveData, World world, Entity entity) - { - m_CurrentCount = (uint)saveData; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Repeater.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Repeater.cs.meta deleted file mode 100644 index 8dffca9..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/Repeater.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 19b46aa4b55e8994bae2c60e08040863 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ReturnFailure.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ReturnFailure.cs deleted file mode 100644 index cc8ceed..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ReturnFailure.cs +++ /dev/null @@ -1,125 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Decorators -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.GraphDesigner.Runtime; - using Unity.Burst; - using Unity.Entities; - using UnityEngine; - - /// - /// A node representation of the return failure task. - /// - [NodeIcon("667a475ceee05824188a36b24ec8d392", "7d32c9b05505df24a94069606f3b823d")] - [Opsive.Shared.Utility.Description("The return failure task will always return failure except when the child task is running.")] - public class ReturnFailure : ECSDecoratorTask, IParentNode - { - public override ComponentType Flag { get => typeof(ReturnFailureFlag); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override ReturnFailureComponent GetBufferElement() - { - return new ReturnFailureComponent() - { - Index = RuntimeIndex, - }; - } - } - - /// - /// The DOTS data structure for the ReturnFailure class. - /// - public struct ReturnFailureComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - public ushort Index; - } - - /// - /// A DOTS tag indicating when an ReturnFailure node is active. - /// - public struct ReturnFailureFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the ReturnFailure logic. - /// - [DisableAutoCreation] - public partial struct ReturnFailureTaskSystem : ISystem - { - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW().WithAll().Build(); - state.Dependency = new ReturnFailureJob().ScheduleParallel(query, state.Dependency); - } - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct ReturnFailureJob : IJobEntity - { - /// - /// Executes the return failure logic. - /// - /// An array of BranchComponents. - /// An array of TaskComponents. - /// An array of ReturnFailureComponents. - [BurstCompile] - public void Execute(ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer returnFailureComponents) - { - for (int i = 0; i < returnFailureComponents.Length; ++i) { - var returnFailureComponent = returnFailureComponents[i]; - var taskComponent = taskComponents[returnFailureComponent.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - if (!branchComponent.CanExecute) { - continue; - } - - TaskComponent childTaskComponent; - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Running; - taskComponents[taskComponent.Index] = taskComponent; - - childTaskComponent = taskComponents[taskComponent.Index + 1]; - childTaskComponent.Status = TaskStatus.Queued; - taskComponents[taskComponent.Index + 1] = childTaskComponent; - - branchComponent.NextIndex = (ushort)(taskComponent.Index + 1); - branchComponents[taskComponent.BranchIndex] = branchComponent; - continue; - } else if (taskComponent.Status != TaskStatus.Running) { - continue; - } - - // The return failure task is currently active. Check the first child. - childTaskComponent = taskComponents[taskComponent.Index + 1]; - if (childTaskComponent.Status == TaskStatus.Queued || childTaskComponent.Status == TaskStatus.Running) { - // The child should keep running. - continue; - } - - // The child has completed. Return failure. - taskComponent.Status = TaskStatus.Failure; - taskComponents[taskComponent.Index] = taskComponent; - - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponents[taskComponent.BranchIndex] = branchComponent; - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ReturnFailure.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ReturnFailure.cs.meta deleted file mode 100644 index a49e108..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ReturnFailure.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 52ce11b290bb0b240a985296c757fcd5 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ReturnSuccess.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ReturnSuccess.cs deleted file mode 100644 index 2019e3b..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ReturnSuccess.cs +++ /dev/null @@ -1,125 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Decorators -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.GraphDesigner.Runtime; - using Unity.Burst; - using Unity.Entities; - using UnityEngine; - - /// - /// A node representation of the return success task. - /// - [NodeIcon("66f47acff1d46f848bc8c22b221ee1d0", "3eb990b93a7fd6e479d6b032c7e6973f")] - [Opsive.Shared.Utility.Description("The return success task will always return success except when the child task is running.")] - public class ReturnSuccess : ECSDecoratorTask, IParentNode - { - public override ComponentType Flag { get => typeof(ReturnSuccessFlag); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override ReturnSuccessComponent GetBufferElement() - { - return new ReturnSuccessComponent() - { - Index = RuntimeIndex, - }; - } - } - - /// - /// The DOTS data structure for the ReturnSuccess class. - /// - public struct ReturnSuccessComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - public ushort Index; - } - - /// - /// A DOTS tag indicating when an ReturnSuccess node is active. - /// - public struct ReturnSuccessFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the ReturnSuccess logic. - /// - [DisableAutoCreation] - public partial struct ReturnSuccessTaskSystem : ISystem - { - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW().WithAll().Build(); - state.Dependency = new ReturnSuccessJob().ScheduleParallel(query, state.Dependency); - } - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct ReturnSuccessJob : IJobEntity - { - /// - /// Executes the return success logic. - /// - /// An array of BranchComponents. - /// An array of TaskComponents. - /// An array of ReturnSuccessComponents. - [BurstCompile] - public void Execute(ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer returnSuccessComponents) - { - for (int i = 0; i < returnSuccessComponents.Length; ++i) { - var returnSuccessComponent = returnSuccessComponents[i]; - var taskComponent = taskComponents[returnSuccessComponent.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - if (!branchComponent.CanExecute) { - continue; - } - - TaskComponent childTaskComponent; - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Running; - taskComponents[taskComponent.Index] = taskComponent; - - childTaskComponent = taskComponents[taskComponent.Index + 1]; - childTaskComponent.Status = TaskStatus.Queued; - taskComponents[taskComponent.Index + 1] = childTaskComponent; - - branchComponent.NextIndex = (ushort)(taskComponent.Index + 1); - branchComponents[taskComponent.BranchIndex] = branchComponent; - continue; - } else if (taskComponent.Status != TaskStatus.Running) { - continue; - } - - // The return success task is currently active. Check the first child. - childTaskComponent = taskComponents[taskComponent.Index + 1]; - if (childTaskComponent.Status == TaskStatus.Queued || childTaskComponent.Status == TaskStatus.Running) { - // The child should keep running. - continue; - } - - // The child has completed. Return success. - taskComponent.Status = TaskStatus.Success; - taskComponents[taskComponent.Index] = taskComponent; - - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponents[taskComponent.BranchIndex] = branchComponent; - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ReturnSuccess.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ReturnSuccess.cs.meta deleted file mode 100644 index 3c5f548..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/ReturnSuccess.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ffe15b86a15ee5e4c9c4693ab315d6c6 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UntilFailure.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UntilFailure.cs deleted file mode 100644 index 51fe1dd..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UntilFailure.cs +++ /dev/null @@ -1,135 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Decorators -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.GraphDesigner.Runtime; - using Unity.Burst; - using Unity.Entities; - using UnityEngine; - - /// - /// A node representation of the until failure task. - /// - [NodeIcon("60da350fd1f5b48428e466b79cb85cb2", "3d29cc3223984f44291c0e423a0aa6c6")] - [Opsive.Shared.Utility.Description("The until failure task will keep executing its child task until the child task returns failure.")] - public class UntilFailure : ECSDecoratorTask, IParentNode - { - public override ComponentType Flag { get => typeof(UntilFailureFlag); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override UntilFailureComponent GetBufferElement() - { - return new UntilFailureComponent() - { - Index = RuntimeIndex, - }; - } - } - - /// - /// The DOTS data structure for the UntilFailure class. - /// - public struct UntilFailureComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - public ushort Index; - } - - /// - /// A DOTS tag indicating when an UntilFailure node is active. - /// - public struct UntilFailureFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the UntilFailure logic. - /// - [DisableAutoCreation] - public partial struct UntilFailureTaskSystem : ISystem - { - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW().WithAll().Build(); - state.Dependency = new UntilFailureJob().ScheduleParallel(query, state.Dependency); - } - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct UntilFailureJob : IJobEntity - { - /// - /// Executes the until failure logic. - /// - /// An array of BranchComponents. - /// An array of TaskComponents. - /// An array of UntilFailureComponents. - [BurstCompile] - public void Execute(ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer untilFailureComponents) - { - for (int i = 0; i < untilFailureComponents.Length; ++i) { - var untilFailureComponent = untilFailureComponents[i]; - var taskComponent = taskComponents[untilFailureComponent.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - if (!branchComponent.CanExecute) { - continue; - } - - TaskComponent childTaskComponent; - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Running; - taskComponents[taskComponent.Index] = taskComponent; - - childTaskComponent = taskComponents[taskComponent.Index + 1]; - childTaskComponent.Status = TaskStatus.Queued; - taskComponents[taskComponent.Index + 1] = childTaskComponent; - - branchComponent.NextIndex = (ushort)(taskComponent.Index + 1); - branchComponents[taskComponent.BranchIndex] = branchComponent; - continue; - } else if (taskComponent.Status != TaskStatus.Running) { - continue; - } - - // The until failure task is currently active. Check the first child. - childTaskComponent = taskComponents[taskComponent.Index + 1]; - if (childTaskComponent.Status == TaskStatus.Queued || childTaskComponent.Status == TaskStatus.Running) { - // The child should keep running. - continue; - } - - // If the child returns success then it should be queued again. - if (childTaskComponent.Status == TaskStatus.Success) { - childTaskComponent.Status = TaskStatus.Queued; - taskComponents[taskComponent.Index + 1] = childTaskComponent; - - branchComponent.NextIndex = (ushort)(taskComponent.Index + 1); - branchComponents[taskComponent.BranchIndex] = branchComponent; - continue; - } - - // The child has returned failure. - taskComponent.Status = TaskStatus.Failure; - taskComponents[taskComponent.Index] = taskComponent; - - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponents[taskComponent.BranchIndex] = branchComponent; - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UntilFailure.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UntilFailure.cs.meta deleted file mode 100644 index 9876f2b..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UntilFailure.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8b8878b781010e04b87748609a6ac6d3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UntilSuccess.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UntilSuccess.cs deleted file mode 100644 index 36c8841..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UntilSuccess.cs +++ /dev/null @@ -1,135 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Decorators -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.GraphDesigner.Runtime; - using Unity.Burst; - using Unity.Entities; - using UnityEngine; - - /// - /// A node representation of the until success task. - /// - [NodeIcon("f2e750025a5812640919385b75319d6f", "4e9ac4f2dd8bfe741a5f889efb1ade67")] - [Opsive.Shared.Utility.Description("The until success task will keep executing its child task until the child task returns success.")] - public class UntilSuccess : ECSDecoratorTask, IParentNode - { - public override ComponentType Flag { get => typeof(UntilSuccessFlag); } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public override UntilSuccessComponent GetBufferElement() - { - return new UntilSuccessComponent() - { - Index = RuntimeIndex, - }; - } - } - - /// - /// The DOTS data structure for the UntilSuccess class. - /// - public struct UntilSuccessComponent : IBufferElementData - { - [Tooltip("The index of the node.")] - public ushort Index; - } - - /// - /// A DOTS tag indicating when an UntilSuccess node is active. - /// - public struct UntilSuccessFlag : IComponentData, IEnableableComponent { } - - /// - /// Runs the UntilSuccess logic. - /// - [DisableAutoCreation] - public partial struct UntilSuccessTaskSystem : ISystem - { - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW().WithAll().Build(); - state.Dependency = new UntilSuccessJob().ScheduleParallel(query, state.Dependency); - } - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct UntilSuccessJob : IJobEntity - { - /// - /// Executes the until success logic. - /// - /// An array of BranchComponents. - /// An array of TaskComponents. - /// An array of UntilSuccessComponents. - [BurstCompile] - public void Execute(ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer untilSuccessComponents) - { - for (int i = 0; i < untilSuccessComponents.Length; ++i) { - var untilSuccessComponent = untilSuccessComponents[i]; - var taskComponent = taskComponents[untilSuccessComponent.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - if (!branchComponent.CanExecute) { - continue; - } - - TaskComponent childTaskComponent; - if (taskComponent.Status == TaskStatus.Queued) { - taskComponent.Status = TaskStatus.Running; - taskComponents[taskComponent.Index] = taskComponent; - - childTaskComponent = taskComponents[taskComponent.Index + 1]; - childTaskComponent.Status = TaskStatus.Queued; - taskComponents[taskComponent.Index + 1] = childTaskComponent; - - branchComponent.NextIndex = (ushort)(taskComponent.Index + 1); - branchComponents[taskComponent.BranchIndex] = branchComponent; - continue; - } else if (taskComponent.Status != TaskStatus.Running) { - continue; - } - - // The until success task is currently active. Check the first child. - childTaskComponent = taskComponents[taskComponent.Index + 1]; - if (childTaskComponent.Status == TaskStatus.Queued || childTaskComponent.Status == TaskStatus.Running ) { - // The child should keep running. - continue; - } - - // If the child returns failure then it should be queued again. - if (childTaskComponent.Status == TaskStatus.Failure) { - childTaskComponent.Status = TaskStatus.Queued; - taskComponents[taskComponent.Index + 1] = childTaskComponent; - - branchComponent.NextIndex = (ushort)(taskComponent.Index + 1); - branchComponents[taskComponent.BranchIndex] = branchComponent; - continue; - } - - // The child has returned success. The task can end. - taskComponent.Status = TaskStatus.Success; - taskComponents[taskComponent.Index] = taskComponent; - - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponents[taskComponent.BranchIndex] = branchComponent; - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UntilSuccess.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UntilSuccess.cs.meta deleted file mode 100644 index b906293..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UntilSuccess.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b11a4f9197ec0964cb1f620368654a53 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityCurveEvaluator.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityCurveEvaluator.cs deleted file mode 100644 index f2f72a0..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityCurveEvaluator.cs +++ /dev/null @@ -1,65 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Decorators -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - using UnityEngine.Serialization; - - /// - /// Implements the UtilityEvaluator returning a SharedVariable value. - /// - [Opsive.Shared.Utility.Description("Sets the utility value to the evaluated curve value.")] - public class UtilityCurveEvaluator : UtilityEvaluator - { - [Tooltip("The curve that should be evaluated for the utility value.")] - [FormerlySerializedAs("m_Utility")] - [SerializeField] SharedVariable m_UtilityValue; - [Tooltip("The time to evaluate the curve at. Set it to -1 to use Time.time.")] - [SerializeField] SharedVariable m_Time; - [Tooltip("Should the time be reset after the task stops running?")] - [SerializeField] SharedVariable m_ResetTimeOnEnd; - - private float m_ResetTime = -1; - - /// - /// Resets the task values back to their default. - /// - public override void Reset() - { - base.Reset(); - - m_UtilityValue = AnimationCurve.Linear(0, 0, 1, 1); - m_Time = -1; - m_ResetTimeOnEnd = false; - } - - /// - /// Returns the utility of the decorator. The higher the utility the more likely the task will run next. - /// - /// The utility of the decorator. - public override float GetUtilityValue() - { - var evaluateTime = m_Time.Value == -1 ? Time.time : m_Time.Value; - if (m_ResetTimeOnEnd.Value && m_ResetTime != -1) { - evaluateTime = Time.time - m_ResetTime; - } - - return m_UtilityValue.Value.Evaluate(evaluateTime); - } - - /// - /// The task has ended. - /// - public override void OnEnd() - { - m_ResetTime = Time.time; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityCurveEvaluator.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityCurveEvaluator.cs.meta deleted file mode 100644 index b2c6f4a..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityCurveEvaluator.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6052dd7dfb15b574eaba0db3729bbee4 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityEvaluator.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityEvaluator.cs deleted file mode 100644 index db5bb86..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityEvaluator.cs +++ /dev/null @@ -1,130 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Decorators -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Groups; - using Opsive.BehaviorDesigner.Runtime.Tasks.Composites; - using Unity.Entities; - using UnityEngine; - - /// - /// Provides a UtilityValueComponent implementation that returns a utility value. - /// - public abstract class UtilityEvaluator : DecoratorNode - { - [Tooltip("Should an infinite utility value be returned while the child is running?")] - [SerializeField] protected bool m_BlockDuringExecution = true; - - public bool BlockDuringExecution { get => m_BlockDuringExecution; set => m_BlockDuringExecution = value; } - - /// - /// Returns the utility of the decorator. The higher the utility the more likely the task will run next. - /// - /// The utility of the decorator. - public abstract float GetUtilityValue(); - - /// - /// Adds the task to the behavior tree buffer. - /// - /// The world that the task runs in. - /// The entity that the task is connected to. - /// The ID of the behavior tree running the task. - /// The index of the task. - public override void AddBufferElement(World world, Entity entity, int behaviorTreeID, ushort index) - { - base.AddBufferElement(world, entity, behaviorTreeID, index); - - DynamicBuffer buffer; - if (world.EntityManager.HasBuffer(entity)) { - buffer = world.EntityManager.GetBuffer(entity); - } else { - buffer = world.EntityManager.AddBuffer(entity); - } - - buffer.Add(new UtilityValueComponent() - { - Index = index, - }); - var traversalTaskSystems = world.GetOrCreateSystemManaged(); - traversalTaskSystems.AddSystemToUpdateList(world.GetOrCreateSystem(typeof(UtilityEvaluatorSystem))); - } - - /// - /// Clears all component buffers from the behavior tree buffer. - /// - /// The world that the task runs in. - /// The entity that the task is connected to. - public override void ClearBufferElement(World world, Entity entity) - { - base.ClearBufferElement(world, entity); - - DynamicBuffer buffer; - if (world.EntityManager.HasBuffer(entity)) { - buffer = world.EntityManager.GetBuffer(entity); - buffer.Clear(); - } - } - - /// - /// Executes the task logic. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - var taskComponents = m_BehaviorTree.World.EntityManager.GetBuffer(m_BehaviorTree.Entity); - var childStatus = taskComponents[RuntimeIndex + 1].Status; // Index + 1 will always be the task's only child. - if (childStatus == TaskStatus.Success || childStatus == TaskStatus.Failure) { - return childStatus; - } - return TaskStatus.Running; - } - } - - /// - /// Sets the UtilityValueComponent value. - /// - [DisableAutoCreation] - [UpdateBefore(typeof(UtilitySelectorTaskSystem))] - public partial struct UtilityEvaluatorSystem : ISystem - { - /// - /// Updates the logic. - /// - /// The current state of the system. - private void OnUpdate(ref SystemState state) - { - foreach (var (utilityValueComponents, taskComponents, entity) in - SystemAPI.Query, DynamicBuffer>().WithAll().WithEntityAccess()) { - - for (int i = 0; i < utilityValueComponents.Length; ++i) { - var utilityValueComponent = utilityValueComponents[i]; - var utilityEvaluator = BehaviorTree.GetBehaviorTree(entity).GetTask(utilityValueComponent.Index) as UtilityEvaluator; - if (utilityEvaluator == null) { - continue; - } - - // If the branch is currently active then it should return an infinite utility value until the branch has completed. This will allow the entire - // branch to execute. - if (utilityEvaluator.BlockDuringExecution) { - var taskComponent = taskComponents[utilityValueComponent.Index + 1]; - if (taskComponent.Status == TaskStatus.Running) { - utilityValueComponent.Value = float.PositiveInfinity; - } else { - utilityValueComponent.Value = utilityEvaluator.GetUtilityValue(); - } - } else { - utilityValueComponent.Value = utilityEvaluator.GetUtilityValue(); - } - var utilityValueComponentBuffer = utilityValueComponents; - utilityValueComponentBuffer[i] = utilityValueComponent; - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityEvaluator.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityEvaluator.cs.meta deleted file mode 100644 index b6de0e1..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityEvaluator.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 74c275bf295659342be09f83dcacd5cd -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityVariableEvaluator.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityVariableEvaluator.cs deleted file mode 100644 index 52c6ca5..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityVariableEvaluator.cs +++ /dev/null @@ -1,29 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Decorators -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - /// - /// Implements the UtilityEvaluator returning a SharedVariable value. - /// - [Opsive.Shared.Utility.Description("Sets the utility value to the specified SharedVariable float value.")] - public class UtilityVariableEvaluator : UtilityEvaluator - { - [Tooltip("The utility of the decorator.")] - [SerializeField] SharedVariable m_Utility; - - /// - /// Returns the utility of the decorator. The higher the utility the more likely the task will run next. - /// - /// The utility of the decorator. - public override float GetUtilityValue() { return m_Utility.Value; } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityVariableEvaluator.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityVariableEvaluator.cs.meta deleted file mode 100644 index 7c5d953..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Decorators/UtilityVariableEvaluator.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: fa1905f557f151b45b17a10ffb0a44f3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ECSTask.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ECSTask.cs deleted file mode 100644 index e8fd977..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ECSTask.cs +++ /dev/null @@ -1,132 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks -{ - using Opsive.GraphDesigner.Runtime; - using Unity.Entities; - using UnityEngine; - - /// - /// Base class for a boilerplate ECS task. - /// - public abstract class ECSTask : ITreeLogicNode, IAuthoringTask where TBufferElement : unmanaged, IBufferElementData - { - [Tooltip("The index of the node.")] - [SerializeField] ushort m_Index; - [Tooltip("The parent index of the node. ushort.MaxValue indicates no parent.")] - [SerializeField] ushort m_ParentIndex; - [Tooltip("The sibling index of the node. ushort.MaxValue indicates no sibling.")] - [SerializeField] ushort m_SiblingIndex; - - /// - /// The type of flag that should be enabled when the task is running. - /// - public abstract ComponentType Flag { get; } - /// - /// The system type that the component uses. - /// - public System.Type SystemType => typeof(TSystem); - - public ushort Index - { - get => m_Index; - set => m_Index = value; - } - - public ushort ParentIndex - { - get => m_ParentIndex; - set => m_ParentIndex = value; - } - - public ushort SiblingIndex - { - get => m_SiblingIndex; - set => m_SiblingIndex = value; - } - - public ushort RuntimeIndex { get; set; } - - /// - /// Resets the node values back to their default. - /// - public virtual void Reset() { } - - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The index of the element within the buffer. - public virtual int AddBufferElement(World world, Entity entity, GameObject gameObject) - { - DynamicBuffer buffer; - if (world.EntityManager.HasBuffer(entity)) { - buffer = world.EntityManager.GetBuffer(entity); - } else { - buffer = world.EntityManager.AddBuffer(entity); - } - - buffer.Add(GetBufferElement()); - return buffer.Length - 1; - } - - /// - /// Returns a new TBufferElement for use by the system. - /// - /// A new TBufferElement for use by the system. - public abstract TBufferElement GetBufferElement(); - - /// - /// Clears the IBufferElementData from the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be cleared from. - public void ClearBufferElement(World world, Entity entity) - { - DynamicBuffer buffer; - if (world.EntityManager.HasBuffer(entity)) { - buffer = world.EntityManager.GetBuffer(entity); - buffer.Clear(); - } - } - } - - /// - /// Base class for an ECS action task. - /// - public abstract class ECSActionTask : ECSTask, IAction where TComponent : unmanaged, IBufferElementData { } - - /// - /// Base class for an ECS composite task. - /// - public abstract class ECSCompositeTask : ECSTask, IComposite, IParentNode where TComponent : unmanaged, IBufferElementData - { - /// - /// The maximum number of children the node can have. - /// - public virtual int MaxChildCount { get => ushort.MaxValue; } - } - - /// - /// Base class for an ECS conditional task. - /// - public abstract class ECSConditionalTask : ECSTask, IConditional where TComponent : unmanaged, IBufferElementData { } - - /// - /// Base class for an ECS decorator task. - /// - public abstract class ECSDecoratorTask : ECSTask, IDecorator, IParentNode where TComponent : unmanaged, IBufferElementData - { - /// - /// The maximum number of children the node can have. - /// - public int MaxChildCount { get => 1; } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ECSTask.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ECSTask.cs.meta deleted file mode 100644 index 37c6a40..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ECSTask.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5ab224e1523f7bf41a1bf128e4e1c02a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events.meta deleted file mode 100644 index f01189c..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 77a6adc251fa2434892e5e0d483f1fb0 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/EventNode.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/EventNode.cs deleted file mode 100644 index aac502e..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/EventNode.cs +++ /dev/null @@ -1,35 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Events -{ - using Opsive.GraphDesigner.Runtime; - using UnityEngine; - - /// - /// A base IEventNode implementation. - /// - [NodeIcon("9041375773f69454792084ab67820b7e", "b1382ad24c668174c9a6e0bd00f229e3")] - public abstract class EventNode : IEventNode, IEventNodeGameObjectReceiver - { - [Tooltip("The index of the ITreeLogicNode that the IEventNode is connected to. ushort.MaxValue indicates no connection.")] - [SerializeField] protected ushort m_ConnectedIndex; - - public ushort ConnectedIndex { get => m_ConnectedIndex; set => m_ConnectedIndex = value; } - - protected BehaviorTree m_BehaviorTree; - - /// - /// Initializes the node to the specified graph. - /// - /// The graph that is initializing the task. - public virtual void Initialize(IGraph graph) - { - m_BehaviorTree = graph as BehaviorTree; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/EventNode.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/EventNode.cs.meta deleted file mode 100644 index 4056695..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/EventNode.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ae332159f8bb5f14c8a6d12075be9bab -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionEnter.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionEnter.cs deleted file mode 100644 index a03fe26..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionEnter.cs +++ /dev/null @@ -1,60 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Events -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [AllowMultipleTypes] - [NodeIcon("06864c37115f11445b04701c616d0e14", "8b8a2793322238240b4f25171d772003")] - [Opsive.Shared.Utility.Description("Invoked when the agent causes a collision.")] - public class OnCollisionEnter : EventNode - { - [Tooltip("The tag of the GameObject that the collision should be checked against.")] - [SerializeField] protected SharedVariable m_Tag; - [Tooltip("The collided GameObject.")] - [SerializeField] protected SharedVariable m_StoredCollisionGameObject; - - /// - /// Initializes the node to the specified graph. - /// - /// The graph that is initializing the task. - public override void Initialize(IGraph graph) - { - base.Initialize(graph); - - m_BehaviorTree.OnBehaviorTreeDestroyed += Destroy; - m_BehaviorTree.OnBehaviorTreeCollisionEnter += EnteredCollision; - } - - /// - /// The agent has caused a collision. - /// - /// The collision that caused the event. - private void EnteredCollision(Collision collision) - { - if (!string.IsNullOrEmpty(m_Tag.Value) && !collision.gameObject.CompareTag(m_Tag.Value)) { - return; - } - - if (m_StoredCollisionGameObject != null && m_StoredCollisionGameObject.IsShared) { m_StoredCollisionGameObject.Value = collision.gameObject; } - - m_BehaviorTree.StartBranch(this); - } - - /// - /// The behavior tree has been destroyed. - /// - private void Destroy() - { - m_BehaviorTree.OnBehaviorTreeDestroyed -= Destroy; - m_BehaviorTree.OnBehaviorTreeCollisionEnter -= EnteredCollision; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionEnter.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionEnter.cs.meta deleted file mode 100644 index 66c7494..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionEnter.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8e38ab2e4d966814f8b760b1f9d64416 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionEnter2D.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionEnter2D.cs deleted file mode 100644 index bce7dc4..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionEnter2D.cs +++ /dev/null @@ -1,60 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Events -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [AllowMultipleTypes] - [NodeIcon("06864c37115f11445b04701c616d0e14", "8b8a2793322238240b4f25171d772003")] - [Opsive.Shared.Utility.Description("Invoked when the agent causes a 2D collision.")] - public class OnCollisionEnter2D : EventNode - { - [Tooltip("The tag of the GameObject that the collision should be checked against.")] - [SerializeField] protected SharedVariable m_Tag; - [Tooltip("The collided GameObject.")] - [SerializeField] protected SharedVariable m_StoredCollisionGameObject; - - /// - /// Initializes the node to the specified graph. - /// - /// The graph that is initializing the task. - public override void Initialize(IGraph graph) - { - base.Initialize(graph); - - m_BehaviorTree.OnBehaviorTreeDestroyed += Destroy; - m_BehaviorTree.OnBehaviorTreeCollisionEnter2D += EnteredCollision2D; - } - - /// - /// The agent has caused a 2D collision. - /// - /// The collision that caused the event. - private void EnteredCollision2D(Collision2D collision) - { - if (!string.IsNullOrEmpty(m_Tag.Value) && !collision.gameObject.CompareTag(m_Tag.Value)) { - return; - } - - if (m_StoredCollisionGameObject != null && m_StoredCollisionGameObject.IsShared) { m_StoredCollisionGameObject.Value = collision.gameObject; } - - m_BehaviorTree.StartBranch(this); - } - - /// - /// The behavior tree has been destroyed. - /// - private void Destroy() - { - m_BehaviorTree.OnBehaviorTreeDestroyed -= Destroy; - m_BehaviorTree.OnBehaviorTreeCollisionEnter2D -= EnteredCollision2D; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionEnter2D.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionEnter2D.cs.meta deleted file mode 100644 index e4775e0..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionEnter2D.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 2280b16f94f390e43a89c0550eac22cc -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionExit.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionExit.cs deleted file mode 100644 index f964c29..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionExit.cs +++ /dev/null @@ -1,60 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Events -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [AllowMultipleTypes] - [NodeIcon("06864c37115f11445b04701c616d0e14", "8b8a2793322238240b4f25171d772003")] - [Opsive.Shared.Utility.Description("Invoked when the agent leaves a collision.")] - public class OnCollisionExit : EventNode - { - [Tooltip("The tag of the GameObject that the collision should be checked against.")] - [SerializeField] protected SharedVariable m_Tag; - [Tooltip("The collided GameObject.")] - [SerializeField] protected SharedVariable m_StoredCollisionGameObject; - - /// - /// Initializes the node to the specified graph. - /// - /// The graph that is initializing the task. - public override void Initialize(IGraph graph) - { - base.Initialize(graph); - - m_BehaviorTree.OnBehaviorTreeDestroyed += Destroy; - m_BehaviorTree.OnBehaviorTreeCollisionExit += ExitedCollision; - } - - /// - /// The agent has left a collision. - /// - /// The collision that caused the event. - private void ExitedCollision(Collision collision) - { - if (!string.IsNullOrEmpty(m_Tag.Value) && !collision.gameObject.CompareTag(m_Tag.Value)) { - return; - } - - if (m_StoredCollisionGameObject != null && m_StoredCollisionGameObject.IsShared) { m_StoredCollisionGameObject.Value = collision.gameObject; } - - m_BehaviorTree.StartBranch(this); - } - - /// - /// The behavior tree has been destroyed. - /// - private void Destroy() - { - m_BehaviorTree.OnBehaviorTreeDestroyed -= Destroy; - m_BehaviorTree.OnBehaviorTreeCollisionExit -= ExitedCollision; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionExit.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionExit.cs.meta deleted file mode 100644 index 01c0100..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionExit.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: fee2099d2a111594eadaee56c4998a20 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionExit2D.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionExit2D.cs deleted file mode 100644 index 84dc7e5..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionExit2D.cs +++ /dev/null @@ -1,60 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Events -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [AllowMultipleTypes] - [NodeIcon("06864c37115f11445b04701c616d0e14", "8b8a2793322238240b4f25171d772003")] - [Opsive.Shared.Utility.Description("Invoked when the agent leaves a 2D collision.")] - public class OnCollisionExit2D : EventNode - { - [Tooltip("The tag of the GameObject that the collision should be checked against.")] - [SerializeField] protected SharedVariable m_Tag; - [Tooltip("The collided GameObject.")] - [SerializeField] protected SharedVariable m_StoredCollisionGameObject; - - /// - /// Initializes the node to the specified graph. - /// - /// The graph that is initializing the task. - public override void Initialize(IGraph graph) - { - base.Initialize(graph); - - m_BehaviorTree.OnBehaviorTreeDestroyed += Destroy; - m_BehaviorTree.OnBehaviorTreeCollisionExit2D += ExitedCollision2D; - } - - /// - /// The agent has left a 2D collision. - /// - /// The collision that caused the event. - private void ExitedCollision2D(Collision2D collision) - { - if (!string.IsNullOrEmpty(m_Tag.Value) && !collision.gameObject.CompareTag(m_Tag.Value)) { - return; - } - - if (m_StoredCollisionGameObject != null && m_StoredCollisionGameObject.IsShared) { m_StoredCollisionGameObject.Value = collision.gameObject; } - - m_BehaviorTree.StartBranch(this); - } - - /// - /// The behavior tree has been destroyed. - /// - private void Destroy() - { - m_BehaviorTree.OnBehaviorTreeDestroyed -= Destroy; - m_BehaviorTree.OnBehaviorTreeCollisionExit2D -= ExitedCollision2D; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionExit2D.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionExit2D.cs.meta deleted file mode 100644 index ce342dd..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnCollisionExit2D.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 2bcef3a2041a6144fb9692d1244330af -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnInterrupt.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnInterrupt.cs deleted file mode 100644 index eeb6f7e..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnInterrupt.cs +++ /dev/null @@ -1,130 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Events -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Groups; - using Opsive.GraphDesigner.Runtime; - using Unity.Burst; - using Unity.Entities; - using UnityEngine; - - [AllowMultipleTypes] - [NodeIcon("10ed9753a0870c84889dc42a7de397a8", "98f584ca47ddad64d9878314395ce160")] - [Opsive.Shared.Utility.Description("EventNode that is invoked when an interrupt occurs.")] - public class OnInterrupt : IEventNode, IEventNodeEntityReceiver - { - [Tooltip("The index of the ITreeLogicNode that the IEventNode is connected to. ushort.MaxValue indicates no connection.")] - [SerializeField] protected ushort m_ConnectedIndex; - [Tooltip("The node that caused the interruption.")] - [SerializeField] ILogicNode m_InterruptionSource; - public ushort ConnectedIndex { get => m_ConnectedIndex; set => m_ConnectedIndex = value; } - - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The offset between the connected index and the runtime index. - public void AddBufferElement(World world, Entity entity, GameObject gameObject, ushort taskOffset) - { - if (m_InterruptionSource == null || m_InterruptionSource.Index < 0) { - Debug.LogError("Error: An Interruption Source task must be specified within the OnInterrupt node."); - return; - } - - DynamicBuffer buffer; - if (world.EntityManager.HasBuffer(entity)) { - buffer = world.EntityManager.GetBuffer(entity); - } else { - buffer = world.EntityManager.AddBuffer(entity); - } - buffer.Add(new OnInterruptEventComponent() { - ConnectedIndex = (ushort)(m_ConnectedIndex - taskOffset), - InterruptionSourceIndex = m_InterruptionSource.RuntimeIndex, - }); - - var interruptSystemGroup = world.GetOrCreateSystemManaged(); - interruptSystemGroup.AddSystemToUpdateList(world.GetOrCreateSystem()); - } - - /// - /// Clears the IBufferElementData from the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be cleared from. - public void ClearBufferElement(World world, Entity entity) - { - DynamicBuffer buffer; - if (world.EntityManager.HasBuffer(entity)) { - buffer = world.EntityManager.GetBuffer(entity); - buffer.Clear(); - } - } - } - - /// - /// The DOTS data structure for the OnInterrupt class. - /// - public struct OnInterruptEventComponent : IBufferElementData - { - [Tooltip("The index of the ILogicNode that the IEventNode is connected to.")] - public ushort ConnectedIndex; - [Tooltip("The index of the node that can invoke the interrupt.")] - public ushort InterruptionSourceIndex; - } - - /// - /// Processes any interrupts. - /// - [DisableAutoCreation] - public partial struct OnInterruptSystem : ISystem - { - /// - /// Updates the logic. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - { - foreach (var (branchComponents, taskComponents, onInterruptEvents, entity) in - SystemAPI.Query, DynamicBuffer, DynamicBuffer>().WithAll().WithEntityAccess()) { - for (int i = 0; i < branchComponents.Length; ++i) { - var branchComponent = branchComponents[i]; - if (branchComponent.InterruptType != InterruptType.None) { - // The branch is going to cause an interrupt. - for (int j = 0; j < onInterruptEvents.Length; ++j) { - var onInterruptEvent = onInterruptEvents[j]; - if (branchComponent.ActiveIndex >= onInterruptEvent.InterruptionSourceIndex && - branchComponent.ActiveIndex < taskComponents[onInterruptEvent.InterruptionSourceIndex].SiblingIndex) { - // Trigger the callback. - var startTask = taskComponents[onInterruptEvent.ConnectedIndex]; - if (startTask.Status != TaskStatus.Queued && startTask.Status != TaskStatus.Running) { - startTask.Status = TaskStatus.Queued; - var taskComponentsBuffer = taskComponents; - taskComponentsBuffer[onInterruptEvent.ConnectedIndex] = startTask; - - var activeTag = taskComponents[onInterruptEvent.ConnectedIndex].FlagComponentType; - state.EntityManager.SetComponentEnabled(entity, activeTag, true); - - var connectedBranchIndex = taskComponents[onInterruptEvent.ConnectedIndex].BranchIndex; - branchComponent = branchComponents[connectedBranchIndex]; - branchComponent.ActiveIndex = branchComponent.NextIndex = onInterruptEvent.ConnectedIndex; - branchComponent.ActiveFlagComponentType = activeTag; - var branchComponentsBuffer = branchComponents; - branchComponentsBuffer[connectedBranchIndex] = branchComponent; - } - } - } - } - } - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnInterrupt.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnInterrupt.cs.meta deleted file mode 100644 index 290bfea..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnInterrupt.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 29da32620f380b34aa56ef14a1088104 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnReceivedEvent.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnReceivedEvent.cs deleted file mode 100644 index f92ba4d..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnReceivedEvent.cs +++ /dev/null @@ -1,167 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Events -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using Opsive.Shared.Events; - using UnityEngine; - - [AllowMultipleTypes] - [Opsive.Shared.Utility.Description("Invoked when the specified event is received.")] - public class OnReceivedEvent : EventNode - { - [Tooltip("The name of the event that starts the branch.")] - [SerializeField] protected SharedVariable m_EventName; - [Tooltip("Optionally store the first sent argument.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoredValue1; - [Tooltip("Optionally store the second sent argument.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoredValue2; - [Tooltip("Optionally store the third sent argument.")] - [RequireShared] [SerializeField] protected SharedVariable m_StoredValue3; - - private string m_RegisteredEventName; - private bool m_Initialized; - - /// - /// Initializes the node to the specified graph. - /// - /// The graph that is initializing the task. - public override void Initialize(IGraph graph) - { - if (m_Initialized) { - return; - } - m_Initialized = true; - - base.Initialize(graph); - - m_BehaviorTree.OnBehaviorTreeDestroyed += Destroy; - - m_EventName.OnValueChange += UpdateEvents; - if (m_StoredValue1 != null) { m_StoredValue1.OnValueChange += UpdateEvents; } - if (m_StoredValue2 != null) { m_StoredValue2.OnValueChange += UpdateEvents; } - if (m_StoredValue3 != null) { m_StoredValue3.OnValueChange += UpdateEvents; } - - RegisterEvents(); - } - - /// - /// Registers for the events. - /// - private void RegisterEvents() - { - if (m_StoredValue1 == null || !m_StoredValue1.IsShared) { - EventHandler.RegisterEvent(m_BehaviorTree, m_EventName.Value, ReceivedEvent); - } else { - if (m_StoredValue2 == null || !m_StoredValue2.IsShared) { - EventHandler.RegisterEvent(m_BehaviorTree, m_EventName.Value, ReceivedEvent); - } else { - if (m_StoredValue3 == null || !m_StoredValue3.IsShared) { - EventHandler.RegisterEvent(m_BehaviorTree, m_EventName.Value, ReceivedEvent); - } else { - EventHandler.RegisterEvent(m_BehaviorTree, m_EventName.Value, ReceivedEvent); - } - } - } - - m_RegisteredEventName = m_EventName.Value; - } - - /// - /// Unregisters for the events that were registered. - /// - private void UnregisterEvents() - { - // The events must be registered first in order to be unregistered. - if (string.IsNullOrEmpty(m_RegisteredEventName)) { - return; - } - - // Unregister from all parameters. This will ensure no events are subscribed if the parameters change. - EventHandler.UnregisterEvent(m_BehaviorTree, m_RegisteredEventName, ReceivedEvent); - EventHandler.UnregisterEvent(m_BehaviorTree, m_RegisteredEventName, ReceivedEvent); - EventHandler.UnregisterEvent(m_BehaviorTree, m_RegisteredEventName, ReceivedEvent); - EventHandler.UnregisterEvent(m_BehaviorTree, m_RegisteredEventName, ReceivedEvent); - - m_RegisteredEventName = string.Empty; - } - - /// - /// The event name or parameter count has changed. Update the events. - /// - private void UpdateEvents() - { - UnregisterEvents(); - RegisterEvents(); - } - - /// - /// The event has been received. - /// - private void ReceivedEvent() - { - m_BehaviorTree.StartBranch(this); - } - - /// - /// A single parameter event has been received. - /// - /// The first parameter. - private void ReceivedEvent(object arg1) - { - if (m_StoredValue1 != null && m_StoredValue1.IsShared) { m_StoredValue1.SetValue(arg1); } - - m_BehaviorTree.StartBranch(this); - } - - /// - /// A two parameter event has been received. - /// - /// The first parameter. - /// The second parameter. - private void ReceivedEvent(object arg1, object arg2) - { - if (m_StoredValue1 != null && m_StoredValue1.IsShared) { m_StoredValue1.SetValue(arg1); } - if (m_StoredValue2 != null && m_StoredValue2.IsShared) { m_StoredValue2.SetValue(arg2); } - - m_BehaviorTree.StartBranch(this); - } - - /// - /// A three parameter event has been received. - /// - /// The first parameter. - /// The second parameter. - /// The third parameter. - private void ReceivedEvent(object arg1, object arg2, object arg3) - { - if (m_StoredValue1 != null && m_StoredValue1.IsShared) { m_StoredValue1.SetValue(arg1); } - if (m_StoredValue2 != null && m_StoredValue2.IsShared) { m_StoredValue2.SetValue(arg2); } - if (m_StoredValue3 != null && m_StoredValue3.IsShared) { m_StoredValue3.SetValue(arg3); } - - m_BehaviorTree.StartBranch(this); - } - - /// - /// The behavior tree has been destroyed. - /// - private void Destroy() - { - m_BehaviorTree.OnBehaviorTreeDestroyed -= Destroy; - - m_EventName.OnValueChange -= UpdateEvents; - if (m_StoredValue1 != null) { m_StoredValue1.OnValueChange -= UpdateEvents; } - if (m_StoredValue2 != null) { m_StoredValue2.OnValueChange -= UpdateEvents; } - if (m_StoredValue3 != null) { m_StoredValue3.OnValueChange -= UpdateEvents; } - - UnregisterEvents(); - m_Initialized = false; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnReceivedEvent.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnReceivedEvent.cs.meta deleted file mode 100644 index 97cf5db..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnReceivedEvent.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 08f3abf304431564faa9a446da5525be -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerEnter.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerEnter.cs deleted file mode 100644 index 5b47237..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerEnter.cs +++ /dev/null @@ -1,60 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Events -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [AllowMultipleTypes] - [NodeIcon("06864c37115f11445b04701c616d0e14", "8b8a2793322238240b4f25171d772003")] - [Opsive.Shared.Utility.Description("Invoked when the agent enters a trigger.")] - public class OnTriggerEnter : EventNode - { - [Tooltip("The tag of the GameObject that the trigger should be checked against.")] - [SerializeField] protected SharedVariable m_Tag; - [Tooltip("The entered trigger GameObject.")] - [SerializeField] protected SharedVariable m_StoredOtherColliderGameObject; - - /// - /// Initializes the node to the specified graph. - /// - /// The graph that is initializing the task. - public override void Initialize(IGraph graph) - { - base.Initialize(graph); - - m_BehaviorTree.OnBehaviorTreeDestroyed += Destroy; - m_BehaviorTree.OnBehaviorTreeTriggerEnter += EnteredTrigger; - } - - /// - /// The agent has entered a trigger. - /// - /// The trigger that the agent entered. - private void EnteredTrigger(Collider other) - { - if (!string.IsNullOrEmpty(m_Tag.Value) && !other.gameObject.CompareTag(m_Tag.Value)) { - return; - } - - if (m_StoredOtherColliderGameObject != null && m_StoredOtherColliderGameObject.IsShared) { m_StoredOtherColliderGameObject.Value = other.gameObject; } - - m_BehaviorTree.StartBranch(this); - } - - /// - /// The behavior tree has been destroyed. - /// - private void Destroy() - { - m_BehaviorTree.OnBehaviorTreeDestroyed -= Destroy; - m_BehaviorTree.OnBehaviorTreeTriggerEnter -= EnteredTrigger; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerEnter.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerEnter.cs.meta deleted file mode 100644 index d8045b1..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerEnter.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: fedf6996bd7cfba4395c582ba40e2b47 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerEnter2D.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerEnter2D.cs deleted file mode 100644 index f0b0a70..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerEnter2D.cs +++ /dev/null @@ -1,60 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Events -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [AllowMultipleTypes] - [NodeIcon("06864c37115f11445b04701c616d0e14", "8b8a2793322238240b4f25171d772003")] - [Opsive.Shared.Utility.Description("Invoked when the agent enters a 2D trigger.")] - public class OnTriggerEnter2D : EventNode - { - [Tooltip("The tag of the GameObject that the trigger should be checked against.")] - [SerializeField] protected SharedVariable m_Tag; - [Tooltip("The entered trigger GameObject.")] - [SerializeField] protected SharedVariable m_StoredOtherColliderGameObject; - - /// - /// Initializes the node to the specified graph. - /// - /// The graph that is initializing the task. - public override void Initialize(IGraph graph) - { - base.Initialize(graph); - - m_BehaviorTree.OnBehaviorTreeDestroyed += Destroy; - m_BehaviorTree.OnBehaviorTreeTriggerEnter2D += EnteredTrigger2D; - } - - /// - /// The agent has entered a 2D trigger. - /// - /// The trigger that the agent entered. - private void EnteredTrigger2D(Collider2D other) - { - if (!string.IsNullOrEmpty(m_Tag.Value) && !other.gameObject.CompareTag(m_Tag.Value)) { - return; - } - - if (m_StoredOtherColliderGameObject != null && m_StoredOtherColliderGameObject.IsShared) { m_StoredOtherColliderGameObject.Value = other.gameObject; } - - m_BehaviorTree.StartBranch(this); - } - - /// - /// The behavior tree has been destroyed. - /// - private void Destroy() - { - m_BehaviorTree.OnBehaviorTreeDestroyed -= Destroy; - m_BehaviorTree.OnBehaviorTreeTriggerEnter2D -= EnteredTrigger2D; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerEnter2D.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerEnter2D.cs.meta deleted file mode 100644 index 5ca6b73..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerEnter2D.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1d33b9315f8977947bcb04bd9eced13e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerExit.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerExit.cs deleted file mode 100644 index db4fbae..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerExit.cs +++ /dev/null @@ -1,60 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Events -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [AllowMultipleTypes] - [NodeIcon("06864c37115f11445b04701c616d0e14", "8b8a2793322238240b4f25171d772003")] - [Opsive.Shared.Utility.Description("Invoked when the agent exits a trigger.")] - public class OnTriggerExit : EventNode - { - [Tooltip("The tag of the GameObject that the trigger should be checked against.")] - [SerializeField] protected SharedVariable m_Tag; - [Tooltip("The exited trigger GameObject.")] - [SerializeField] protected SharedVariable m_StoredOtherColliderGameObject; - - /// - /// Initializes the node to the specified graph. - /// - /// The graph that is initializing the task. - public override void Initialize(IGraph graph) - { - base.Initialize(graph); - - m_BehaviorTree.OnBehaviorTreeDestroyed += Destroy; - m_BehaviorTree.OnBehaviorTreeTriggerExit += ExitedTrigger; - } - - /// - /// The agent has exited a trigger. - /// - /// The trigger that the agent exited. - private void ExitedTrigger(Collider other) - { - if (!string.IsNullOrEmpty(m_Tag.Value) && !other.gameObject.CompareTag(m_Tag.Value)) { - return; - } - - if (m_StoredOtherColliderGameObject != null && m_StoredOtherColliderGameObject.IsShared) { m_StoredOtherColliderGameObject.Value = other.gameObject; } - - m_BehaviorTree.StartBranch(this); - } - - /// - /// The behavior tree has been destroyed. - /// - private void Destroy() - { - m_BehaviorTree.OnBehaviorTreeDestroyed -= Destroy; - m_BehaviorTree.OnBehaviorTreeTriggerExit -= ExitedTrigger; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerExit.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerExit.cs.meta deleted file mode 100644 index 58d4ef4..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerExit.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ee0ed271175ff684c8999ca1427a3f43 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerExit2D.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerExit2D.cs deleted file mode 100644 index 366604a..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerExit2D.cs +++ /dev/null @@ -1,60 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Events -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using UnityEngine; - - [AllowMultipleTypes] - [NodeIcon("06864c37115f11445b04701c616d0e14", "8b8a2793322238240b4f25171d772003")] - [Opsive.Shared.Utility.Description("Invoked when the agent exits a 2D trigger.")] - public class OnTriggerExit2D : EventNode - { - [Tooltip("The tag of the GameObject that the trigger should be checked against.")] - [SerializeField] protected SharedVariable m_Tag; - [Tooltip("The exited trigger GameObject.")] - [SerializeField] protected SharedVariable m_StoredOtherColliderGameObject; - - /// - /// Initializes the node to the specified graph. - /// - /// The graph that is initializing the task. - public override void Initialize(IGraph graph) - { - base.Initialize(graph); - - m_BehaviorTree.OnBehaviorTreeDestroyed += Destroy; - m_BehaviorTree.OnBehaviorTreeTriggerExit2D += ExitedTrigger2D; - } - - /// - /// The agent has exited a 2D trigger. - /// - /// The trigger that the agent exited. - private void ExitedTrigger2D(Collider2D other) - { - if (!string.IsNullOrEmpty(m_Tag.Value) && !other.gameObject.CompareTag(m_Tag.Value)) { - return; - } - - if (m_StoredOtherColliderGameObject != null && m_StoredOtherColliderGameObject.IsShared) { m_StoredOtherColliderGameObject.Value = other.gameObject; } - - m_BehaviorTree.StartBranch(this); - } - - /// - /// The behavior tree has been destroyed. - /// - private void Destroy() - { - m_BehaviorTree.OnBehaviorTreeDestroyed -= Destroy; - m_BehaviorTree.OnBehaviorTreeTriggerExit2D -= ExitedTrigger2D; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerExit2D.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerExit2D.cs.meta deleted file mode 100644 index 5f51139..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/OnTriggerExit2D.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: da04e1db385cc9d4ba72bccc9450531c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/Start.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/Start.cs deleted file mode 100644 index 693169a..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/Start.cs +++ /dev/null @@ -1,24 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks.Events -{ - using Opsive.GraphDesigner.Runtime; - using UnityEngine; - - /// - /// The EventNode that is invoked when the behavior tree starts. - /// - [NodeIcon("8c35407905159694e8b83df15d3b039b", "df820d6e71423194188c7dcb1c1ae2e2")] - public class Start : IEventNode - { - [Tooltip("The index of the ITreeLogicNode that the IEventNode is connected to. ushort.MaxValue indicates no connection.")] - [SerializeField] protected ushort m_ConnectedIndex; - - public ushort ConnectedIndex { get => m_ConnectedIndex; set => m_ConnectedIndex = value; } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/Start.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/Start.cs.meta deleted file mode 100644 index 86749e5..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Events/Start.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a59ed1fcf4540d54fbc57ff4e2a3fe04 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ISubtreeReference.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ISubtreeReference.cs deleted file mode 100644 index 1cf90f3..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ISubtreeReference.cs +++ /dev/null @@ -1,34 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - - /// - /// Interface for tasks that can load subtrees. - /// - public interface ISubtreeReference - { - /// - /// A list of mapped SharedVariables. These variables can override the subtree. - /// - SharedVariableOverride[] SharedVariableOverrides { get; set; } - - /// - /// Performs any runtime operations to evaluate the array of subtrees that should be returned. - /// - /// The component that the node is attached to. - void EvaluateSubtrees(IGraphComponent graphComponent); - - /// - /// The Subtrees that should be used at runtime. - /// - Subtree[] Subtrees { get; } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ISubtreeReference.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ISubtreeReference.cs.meta deleted file mode 100644 index 63289de..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/ISubtreeReference.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 831e8b55811df1749b0416880fc74492 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/PlaceholderTasks.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/PlaceholderTasks.cs deleted file mode 100644 index cbdea11..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/PlaceholderTasks.cs +++ /dev/null @@ -1,71 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks -{ - using Opsive.BehaviorDesigner.Runtime.Tasks.Actions; - using Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals; - using Opsive.BehaviorDesigner.Runtime.Tasks.Composites; - using Opsive.BehaviorDesigner.Runtime.Tasks.Decorators; - using Opsive.GraphDesigner.Runtime; - using Opsive.Shared.Utility; - using UnityEngine; - - [HideInFilterWindow] - [Opsive.Shared.Utility.Description("A temporary placeholder node that represents an action node being created from a template. This node will be replaced with the actual action node after Unity has finished compiling the generated script.")] - public class PlaceholderActionNode : ActionNode, IPlaceholderNode - { - [Tooltip("The type name of the target task that will replace this placeholder.")] - [SerializeField] [HideInInspector] private string m_TargetType; - public string TargetType { get => m_TargetType; set => m_TargetType = value; } - } - - [HideInFilterWindow] - [Opsive.Shared.Utility.Description("A temporary placeholder node that represents a conditional node being created from a template. This node will be replaced with the actual conditional node after Unity has finished compiling the generated script.")] - public class PlaceholderConditionalNode : ConditionalNode, IPlaceholderNode - { - [Tooltip("The type name of the target task that will replace this placeholder.")] - [SerializeField] [HideInInspector] private string m_TargetType; - public string TargetType { get => m_TargetType; set => m_TargetType = value; } - } - - [HideInFilterWindow] - [Opsive.Shared.Utility.Description("A temporary placeholder task that represents an action task being created from a template. This task will be replaced with the actual action task after Unity has finished compiling the generated script.")] - public class PlaceholderAction : Action, IPlaceholderNode - { - [Tooltip("The type name of the target task that will replace this placeholder.")] - [SerializeField] [HideInInspector] private string m_TargetType; - public string TargetType { get => m_TargetType; set => m_TargetType = value; } - } - - [HideInFilterWindow] - [Opsive.Shared.Utility.Description("A temporary placeholder node that represents a composite node being created from a template. This node will be replaced with the actual composite node after Unity has finished compiling the generated script.")] - public class PlaceholderCompositeNode : CompositeNode, IPlaceholderNode - { - [Tooltip("The type name of the target task that will replace this placeholder.")] - [SerializeField] [HideInInspector] private string m_TargetType; - public string TargetType { get => m_TargetType; set => m_TargetType = value; } - } - - [HideInFilterWindow] - [Opsive.Shared.Utility.Description("A temporary placeholder task that represents a conditional task being created from a template. This task will be replaced with the actual conditional task after Unity has finished compiling the generated script.")] - public class PlaceholderConditional : Conditional, IPlaceholderNode - { - [Tooltip("The type name of the target task that will replace this placeholder.")] - [SerializeField] [HideInInspector] private string m_TargetType; - public string TargetType { get => m_TargetType; set => m_TargetType = value; } - } - - [HideInFilterWindow] - [Opsive.Shared.Utility.Description("A temporary placeholder node that represents a decorator node being created from a template. This node will be replaced with the actual decorator node after Unity has finished compiling the generated script.")] - public class PlaceholderDecoratorNode : DecoratorNode, IPlaceholderNode - { - [Tooltip("The type name of the target task that will replace this placeholder.")] - [SerializeField] [HideInInspector] private string m_TargetType; - public string TargetType { get => m_TargetType; set => m_TargetType = value; } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/PlaceholderTasks.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/PlaceholderTasks.cs.meta deleted file mode 100644 index 04e3a73..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/PlaceholderTasks.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 55f5ed5135933ae499f48deb2efdbb9e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/StackedTask.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/StackedTask.cs deleted file mode 100644 index 10e6093..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/StackedTask.cs +++ /dev/null @@ -1,407 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks -{ - using Opsive.BehaviorDesigner.Runtime; - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using Opsive.Shared.Utility; - using System; - using System.Collections.Generic; - using Unity.Entities; - using UnityEngine; - using static Opsive.BehaviorDesigner.Runtime.BehaviorTreeData; - - /// - /// The StackedTask task allows for multiple tasks to be added to a single node. - /// - [HideInFilterWindow] - [NodeIcon("e0a8f1df788b6274a9a24003859dfa7e")] - public abstract class StackedTask : Task, ITreeLogicNode, IContainerNode - { - [Tooltip("The index of the node.")] - [SerializeField] ushort m_Index; - [Tooltip("The parent index of the node. ushort.MaxValue indicates no parent.")] - [SerializeField] ushort m_ParentIndex; - [Tooltip("The sibling index of the node. ushort.MaxValue indicates no sibling.")] - [SerializeField] ushort m_SiblingIndex; - - public ushort Index { get => m_Index; set => m_Index = value; } - public ushort ParentIndex { get => m_ParentIndex; set => m_ParentIndex = value; } - public ushort SiblingIndex { get => m_SiblingIndex; set => m_SiblingIndex = value; } - public ushort RuntimeIndex { get; set; } - - /// - /// Specifies how the tasks should be compared. - /// - public enum ComparisonType - { - Sequence, // AND. - Selector // OR. - } - - [Tooltip("The tasks that should run.")] - [SerializeField] protected Task[] m_Tasks; - [Tooltip("Specifies if the tasks should be traversed with an AND (Sequence) or an OR (Selector).")] - [SerializeField] protected ComparisonType m_ComparisonType; - - private ushort m_ActiveIndex; - private bool[] m_TaskStarted; - private bool[] m_TaskEnded; - - public ushort ActiveIndex { get => m_ActiveIndex; } - public object[] Nodes { get => m_Tasks; } - public Task[] Tasks { get => m_Tasks; set => m_Tasks = value; } - - /// - /// Adds the object to the action array. - /// - /// The object that should be added. - public void Add(object obj) - { - Task task; - if (obj is System.Reflection.MethodInfo) { - // A delegate action needs to be created. - var methodInfo = obj as System.Reflection.MethodInfo; - var parameters = methodInfo.GetParameters(); - var types = new Type[(parameters != null ? parameters.Length : 0) + ((methodInfo.ReturnType != typeof(void)) ? 1 : 0)]; - if (parameters != null) { - for (int i = 0; i < parameters.Length; ++i) { - types[i] = parameters[i].ParameterType; - } - } - - Type baseType; - if (methodInfo.ReturnType == typeof(void)) { - if (parameters != null && parameters.Length > 0) { - if (parameters.Length == 1) { baseType = typeof(TaskDelegate<>); } - else if (parameters.Length == 2) { baseType = typeof(TaskDelegate<,>); } - else if (parameters.Length == 3) { baseType = typeof(TaskDelegate<,,>); } - else if (parameters.Length == 4) { baseType = typeof(TaskDelegate<,,,>); } - else if (parameters.Length == 5) { baseType = typeof(TaskDelegate<,,,,>); } - else if (parameters.Length == 6) { baseType = typeof(TaskDelegate<,,,,,>); } - else if (parameters.Length == 7) { baseType = typeof(TaskDelegate<,,,,,,>); } - else if (parameters.Length == 8) { baseType = typeof(TaskDelegate<,,,,,,,>); } - else if (parameters.Length == 9) { baseType = typeof(TaskDelegate<,,,,,,,,>); } - else if (parameters.Length == 10) { baseType = typeof(TaskDelegate<,,,,,,,,,>); } - else { Debug.LogError($"Error: Unable to create TaskDelegate with {parameters.Length}. Please send this error to support@opsive.com."); return; } - } else { - baseType = typeof(TaskDelegate); - } - } else { - // The method has a returned parameter. - types[types.Length - 1] = methodInfo.ReturnType; - if (parameters != null && parameters.Length > 0) { - if (parameters.Length == 1) { baseType = typeof(TaskValueDelegate<,>); } - else if (parameters.Length == 2) { baseType = typeof(TaskValueDelegate<,,>); } - else if (parameters.Length == 3) { baseType = typeof(TaskValueDelegate<,,,>); } - else if (parameters.Length == 4) { baseType = typeof(TaskValueDelegate<,,,,>); } - else if (parameters.Length == 5) { baseType = typeof(TaskValueDelegate<,,,,,>); } - else if (parameters.Length == 6) { baseType = typeof(TaskValueDelegate<,,,,,,>); } - else if (parameters.Length == 7) { baseType = typeof(TaskValueDelegate<,,,,,,,>); } - else if (parameters.Length == 8) { baseType = typeof(TaskValueDelegate<,,,,,,,,>); } - else if (parameters.Length == 9) { baseType = typeof(TaskValueDelegate<,,,,,,,,,>); } - else if (parameters.Length == 10) { baseType = typeof(TaskValueDelegate<,,,,,,,,,>); } - else { Debug.LogError($"Error: Unable to create TaskValueDelegate with {parameters.Length}. Please send this error to support@opsive.com."); return; } - } else { - baseType = typeof(TaskValueDelegate<>); - } - } - - Type actionDelegateType; - if (types.Length > 0) { - actionDelegateType = baseType.MakeGenericType(types); - } else { - actionDelegateType = baseType; - } - - // The Action Delegate needs to be initialized to the method. - var actionDelegate = Activator.CreateInstance(actionDelegateType) as TaskDelegateBase; - actionDelegate.Bind(methodInfo); - - task = actionDelegate; - } else if (obj is Type) { - task = Activator.CreateInstance((Type)obj) as Task; - } else { // Task. - task = obj as Task; - } - - task.Reset(); - - if (m_Tasks == null) { - m_Tasks = new Task[] { task }; - } else { - Array.Resize(ref m_Tasks, m_Tasks.Length + 1); - m_Tasks[m_Tasks.Length - 1] = task; - } - } - - /// - /// Removes the action at the specified index. - /// - /// The index of the action that should be removed. - public void Remove(int index) - { - if (index < 0 || index >= m_Tasks.Length) { - return; - } - - m_Tasks[index].OnDestroy(); - for (int i = index; i < m_Tasks.Length - 1; ++i) { - m_Tasks[i] = m_Tasks[i + 1]; - } - Array.Resize(ref m_Tasks, m_Tasks.Length - 1); - } - - /// - /// Resets the task values back to their default. - /// - public override void Reset() - { - if (m_Tasks == null) { - return; - } - - for (int i = 0; i < m_Tasks.Length; ++i) { - m_Tasks[i].Reset(); - } - } - - /// - /// Initializes the base task parameters. - /// - /// A reference to the owning BehaviorTree. - /// The runtime index of the node. - internal override void Initialize(BehaviorTree behaviorTree, ushort runtimeIndex) - { - if (m_Tasks != null) { - m_TaskStarted = new bool[m_Tasks.Length]; - m_TaskEnded = new bool[m_Tasks.Length]; - for (int i = 0; i < m_Tasks.Length; ++i) { - if (m_Tasks[i] == null) { - m_Tasks[i] = new UnknownTask(); - } - if (m_Tasks[i] is TaskDelegateBase taskDelegate) { - taskDelegate.Initialize(behaviorTree, runtimeIndex, this is IConditional); - } else { - m_Tasks[i].Initialize(behaviorTree, runtimeIndex); - } - } - } - - base.Initialize(behaviorTree, runtimeIndex); - } - - /// - /// Called when the task is started. - /// - public override void OnStart() - { - if (m_Tasks == null) { - return; - } - - for (int i = 0; i < m_Tasks.Length; ++i) { - if (m_Tasks[i] == null) { - continue; - } - - m_TaskStarted[i] = false; - m_TaskEnded[i] = false; - } - } - - /// - /// Updates all of the child tasks. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - if (m_Tasks == null || m_Tasks.Length == 0) { - return TaskStatus.Failure; - } - - while (m_ActiveIndex < m_Tasks.Length) { - // Call start when the local task is started, not when the StackedTask starts. - if (!m_TaskStarted[m_ActiveIndex]) { - m_Tasks[m_ActiveIndex].OnStart(); - m_TaskStarted[m_ActiveIndex] = true; - } - - var executionStatus = m_Tasks[m_ActiveIndex].OnUpdate(); - if (executionStatus == TaskStatus.Running) { - return TaskStatus.Running; - } - - if (m_ComparisonType == ComparisonType.Sequence && executionStatus == TaskStatus.Failure) { - return TaskStatus.Failure; - } else if (m_ComparisonType == ComparisonType.Selector && executionStatus == TaskStatus.Success) { - return TaskStatus.Success; - } - - if (!m_TaskEnded[m_ActiveIndex]) { - m_Tasks[m_ActiveIndex].OnEnd(); - m_TaskEnded[m_ActiveIndex] = true; - } - m_ActiveIndex++; - } - - return m_ComparisonType == ComparisonType.Sequence ? TaskStatus.Success : TaskStatus.Failure; - } - - /// - /// Called when the task stops. - /// - public override void OnEnd() - { - if (m_TaskEnded == null) { - return; - } - - for (int i = 0; i < m_Tasks.Length; ++i) { - if (m_Tasks[i] == null) { - continue; - } - if (!m_TaskEnded[i]) { - m_Tasks[i].OnEnd(); - } - - m_TaskStarted[i] = false; - m_TaskEnded[i] = false; - } - m_ActiveIndex = 0; - } - - /// - /// Specifies the type of reflection that should be used to save the task. - /// - /// The index of the sub-task. This is used for the task set allowing each contained task to have their own save type. - public override MemberVisibility GetSaveReflectionType(int index) { return index < 0 || index >= m_Tasks.Length ? MemberVisibility.None : m_Tasks[index].GetSaveReflectionType(index); } - - /// - /// Returns the current task state. - /// - /// The DOTS world. - /// The DOTS entity. - /// The current task state. - public override object Save(World world, Entity entity) - { - if (m_Tasks == null) { - return null; - } - - var saveData = new object[m_Tasks.Length + 1]; - for (int i = 0; i < m_Tasks.Length; ++i) { - if (m_Tasks[i] == null) { - continue; - } - var reflectionType = m_Tasks[i].GetSaveReflectionType(i); - if (reflectionType != MemberVisibility.None) { - saveData[i] = Serialization.Serialize(m_Tasks[i], reflectionType, BehaviorTreeData.ValidateSerializedObject); - } else { - saveData[i] = m_Tasks[i].Save(world, entity); - } - } - saveData[m_Tasks.Length] = m_ActiveIndex; - - return saveData; - } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - /// A reference to the map between the VariableAssignment and SharedVariable. - /// A reference to the list of task references that need to be resolved later. - public override void Load(object saveData, World world, Entity entity, Dictionary variableByNameMap, - ref ResizableArray taskReferences) - { - if (m_Tasks == null || saveData == null) { - return; - } - - var taskData = (object[])saveData; - if (taskData.Length != m_Tasks.Length + 1) { - Debug.LogError("Error: The save data does not match the task data length."); - return; - } - - for (int i = 0; i < m_Tasks.Length; ++i) { - if (taskData[i] == null) { - continue; - } - - Load(m_Tasks[i], i, taskData[i], world, entity, variableByNameMap, ref taskReferences); - } - m_ActiveIndex = (ushort)taskData[m_Tasks.Length]; - } - - /// - /// Loads the previous task state. - /// - /// The task that the saveData belongs to. - /// The index of the task within the Tasks array. - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - /// A reference to the map between the VariableAssignment and SharedVariable. - /// A reference to the list of task references that need to be resolved later. - protected virtual void Load(Task task, int index, object saveData, World world, Entity entity, - Dictionary variableByNameMap, ref ResizableArray taskReferences) - { - var reflectionType = task.GetSaveReflectionType(index); - if (reflectionType != MemberVisibility.None) { - var localTaskReferences = taskReferences; - (saveData as Serialization).DeserializeFields(task, reflectionType, BehaviorTreeData.ValidateDeserializedTypeObject, - (object fieldInfoObj, object task, object value) => - { - return BehaviorTreeData.ValidateDeserializedObject(fieldInfoObj, task, value, ref variableByNameMap, ref localTaskReferences); - }); - taskReferences = localTaskReferences; - } else { - task.Load(saveData, world, entity, variableByNameMap, ref taskReferences); - } - } - - /// - /// Callback when OnDrawGizmos is triggered. - /// - protected override void OnDrawGizmos() - { - if (m_Tasks == null) { - return; - } - - for (int i = 0; i < m_Tasks.Length; ++i) { - if (m_Tasks[i] == null) { - continue; - } - m_Tasks[i].OnDrawGizmos(m_BehaviorTree); - } - } - - /// - /// Callback when OnDrawGizmosSelected is triggered. - /// - protected override void OnDrawGizmosSelected() - { - if (m_Tasks == null) { - return; - } - - for (int i = 0; i < m_Tasks.Length; ++i) { - if (m_Tasks[i] == null) { - continue; - } - m_Tasks[i].OnDrawGizmosSelected(m_BehaviorTree); - } - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/StackedTask.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/StackedTask.cs.meta deleted file mode 100644 index daf5e5e..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/StackedTask.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f7e3a1fa96850394ab09c7ebf309b0ed -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Task.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Task.cs deleted file mode 100644 index 7e49501..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Task.cs +++ /dev/null @@ -1,371 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks -{ - using Opsive.BehaviorDesigner.Runtime.Systems; - using Opsive.GraphDesigner.Runtime.Variables; - using Opsive.Shared.Utility; - using System.Collections.Generic; - using Unity.Entities; - using UnityEngine; - using static Opsive.BehaviorDesigner.Runtime.BehaviorTreeData; - - /// - /// The base class for a GameObject task. - /// - public abstract class Task : ISavableTask - { - protected GameObject m_GameObject; - protected Transform m_Transform; - protected BehaviorTree m_BehaviorTree; - protected ushort m_RuntimeIndex; - - protected virtual GameObject gameObject { get => m_GameObject; } - protected virtual Transform transform { get => m_Transform; } - - private TaskStatus m_Status; - internal TaskStatus Status { get => m_Status; set => m_Status = value; } - - /// - /// Adds the task to the behavior tree buffer. - /// - /// The world that the task runs in. - /// The entity that the task is connected to. - /// The ID of the behavior tree running the task. - /// The index of the task. - public virtual void AddBufferElement(World world, Entity entity, int behaviorTreeID, ushort index) - { - DynamicBuffer buffer; - if (world.EntityManager.HasBuffer(entity)) { - buffer = world.EntityManager.GetBuffer(entity); - } else { - buffer = world.EntityManager.AddBuffer(entity); - } - buffer.Add(new TaskObjectComponent() - { - Index = index, - }); - } - - /// - /// Clears all component buffers from the behavior tree buffer. - /// - /// The world that the task runs in. - /// The entity that the task is connected to. - public virtual void ClearBufferElement(World world, Entity entity) - { - DynamicBuffer buffer; - if (world.EntityManager.HasBuffer(entity)) { - buffer = world.EntityManager.GetBuffer(entity); - buffer.Clear(); - } - } - - /// - /// Resets the task values back to their default. - /// - public virtual void Reset() { } - - /// - /// Initializes the base task parameters. - /// - /// A reference to the owning BehaviorTree. - /// The runtime index of the node. - internal virtual void Initialize(BehaviorTree behaviorTree, ushort runtimeIndex) - { - if (!Application.isPlaying) { - return; - } - - m_BehaviorTree = behaviorTree; - m_GameObject = m_BehaviorTree.gameObject; - m_Transform = m_BehaviorTree.transform; - m_RuntimeIndex = runtimeIndex; - - m_BehaviorTree.OnBehaviorTreeStarted += OnBehaviorTreeStarted; - m_BehaviorTree.OnBehaviorTreeStopped += OnBehaviorTreeStopped; - m_BehaviorTree.OnBehaviorTreeDestroyed += OnDestroy; - if (ReceiveCollisionEnterCallback) { m_BehaviorTree.OnBehaviorTreeCollisionEnter += OnCollisionEnter; } - if (ReceiveCollisionExitCallback) { m_BehaviorTree.OnBehaviorTreeCollisionExit += OnCollisionExit; } - if (ReceiveCollisionEnter2DCallback) { m_BehaviorTree.OnBehaviorTreeCollisionEnter2D += OnCollisionEnter2D; } - if (ReceiveCollisionExit2DCallback) { m_BehaviorTree.OnBehaviorTreeCollisionExit2D += OnCollisionExit2D; } - if (ReceiveTriggerEnterCallback) { m_BehaviorTree.OnBehaviorTreeTriggerEnter += OnTriggerEnter; } - if (ReceiveTriggerExitCallback) { m_BehaviorTree.OnBehaviorTreeTriggerExit += OnTriggerExit; } - if (ReceiveTriggerEnter2DCallback) { m_BehaviorTree.OnBehaviorTreeTriggerEnter2D += OnTriggerEnter2D; } - if (ReceiveTriggerExit2DCallback) { m_BehaviorTree.OnBehaviorTreeTriggerExit2D += OnTriggerExit2D; } - if (ReceiveControllerColliderHitCallback) { m_BehaviorTree.OnBehaviorTreeControllerColliderHit += OnControllerColliderHit; } - - OnAwake(); - } - - /// - /// Callback when the behavior tree is initialized. - /// - public virtual void OnAwake() { } - - /// - /// Callback when the behavior tree is started. - /// - public virtual void OnBehaviorTreeStarted() { } - - /// - /// Callback when the behavior tree is started. - /// - [System.Obsolete("Task.OnStarted has been deprecated. Use Task.OnBehaviorTreeStarted instead.")] - public virtual void OnStarted() { } - - /// - /// Callback when the task is started. - /// - public virtual void OnStart() { } - - /// - /// Executes the task logic. Returns a TaskStatus indicating how the behavior tree flow should proceed. - /// - /// The status of the task. - public virtual TaskStatus OnUpdate() { return TaskStatus.Success; } - - /// - /// Callback when the task stops. - /// - public virtual void OnEnd() { } - - /// - /// Calls Unity's GetComponent method. - /// - /// The retrieved component (can be null). - protected T GetComponent() - { - return gameObject.GetComponent(); - } - - /// - /// Calls Unity's GetComponent method. - /// - /// The component type that should be retrieved. - /// The retrieved component (can be null). - protected Component GetComponent(System.Type type) - { - return gameObject.GetComponent(type); - } - - /// - /// Calls Unity's TryGetComponent method. - /// - /// The type of component that should be retireved. - /// The retrieved component. - protected void TryGetComponent(out T component) where T : Component - { - gameObject.TryGetComponent(out component); - } - - /// - /// Calls Unity's TryGetComponent method. - /// - /// The type of component to get. - /// The retrieved component. - protected void TryGetComponent(System.Type type, out Component component) - { - gameObject.TryGetComponent(type, out component); - } - protected void StartCoroutine(string methodName) { m_BehaviorTree.StartTaskCoroutine(this, methodName); } - protected Coroutine StartCoroutine(System.Collections.IEnumerator routine) { return m_BehaviorTree.StartCoroutine(routine); } - protected Coroutine StartCoroutine(string methodName, object value) { return m_BehaviorTree.StartTaskCoroutine(this, methodName, value); } - protected void StopCoroutine(string methodName) { m_BehaviorTree.StopTaskCoroutine(methodName); } - protected void StopCoroutine(System.Collections.IEnumerator routine) { m_BehaviorTree.StopCoroutine(routine); } - protected void StopAllCoroutines() { m_BehaviorTree.StopAllTaskCoroutines(); } - - protected virtual bool ReceiveCollisionEnterCallback => false; - /// - /// Callback when OnCollisionEnter is triggered. This callback will only be received when ReceiveCollisionEnterCallback is true. - /// - /// The resulting collision. - protected virtual void OnCollisionEnter(Collision collision) { } - - protected virtual bool ReceiveCollisionExitCallback => false; - /// - /// Callback when OnCollisionExit is triggered. This callback will only be received when ReceiveCollisionExitCallback is true. - /// - /// The resulting collision. - protected virtual void OnCollisionExit(Collision collision) { } - - protected virtual bool ReceiveCollisionEnter2DCallback => false; - /// - /// Callback when OnCollisionEnter2D is triggered. This callback will only be received when ReceiveCollisionEnter2DCallback is true. - /// - /// The resulting collision. - protected virtual void OnCollisionEnter2D(Collision2D collision) { } - - protected virtual bool ReceiveCollisionExit2DCallback => false; - /// - /// Callback when OnCollisionExit2D is triggered. This callback will only be received when ReceiveCollisionExit2DCallback is true. - /// - /// The resulting collision. - protected virtual void OnCollisionExit2D(Collision2D collision) { } - - protected virtual bool ReceiveTriggerEnterCallback => false; - /// - /// Callback when OnTriggerEnter is triggered. This callback will only be received when ReceiveTriggerEnterCallback is true. - /// - /// The overlapping collider. - protected virtual void OnTriggerEnter(Collider other) { } - - protected virtual bool ReceiveTriggerExitCallback => false; - /// - /// Callback when OnTriggerExit is triggered. This callback will only be received when ReceiveTriggerExitCallback is true. - /// - /// The overlapping collider. - protected virtual void OnTriggerExit(Collider other) { } - - protected virtual bool ReceiveTriggerEnter2DCallback => false; - /// - /// Callback when OnTriggerEnter2D is triggered. This callback will only be received when ReceiveTriggerEnter2DCallback is true. - /// - /// The overlapping collider. - protected virtual void OnTriggerEnter2D(Collider2D other) { } - - protected virtual bool ReceiveTriggerExit2DCallback => false; - /// - /// Callback when OnTriggerExit2D is triggered. This callback will only be received when ReceiveTriggerExit2DCallback is true. - /// - /// The overlapping collider. - protected virtual void OnTriggerExit2D(Collider2D other) { } - - protected virtual bool ReceiveControllerColliderHitCallback => false; - /// - /// Callback when OnControllerColliderHit is triggered. This callback will only be received when ReceiveControllerColliderHitCallback is true. - /// - /// The hit result. - protected virtual void OnControllerColliderHit(ControllerColliderHit hit) { } - - /// - /// Editor method which will draw the gizmos. - /// - /// A reference to the behavior tree component. - internal void OnDrawGizmos(BehaviorTree behaviorTree) - { - if (m_BehaviorTree == null) { - m_BehaviorTree = behaviorTree; - m_Transform = behaviorTree.transform; - m_GameObject = behaviorTree.gameObject; - } - - OnDrawGizmos(); - } - - /// - /// Callback when OnDrawGizmos is triggered. - /// - - protected virtual void OnDrawGizmos() { } - - /// - /// Editor method which will draw the selected gizmos. - /// - /// A reference to the behavior tree component. - internal void OnDrawGizmosSelected(BehaviorTree behaviorTree) - { - if (m_BehaviorTree == null) { - m_BehaviorTree = behaviorTree; - m_Transform = behaviorTree.transform; - m_GameObject = behaviorTree.gameObject; - } - - OnDrawGizmosSelected(); - } - - /// - /// Callback when OnDrawGizmosSelected is triggered. - /// - protected virtual void OnDrawGizmosSelected() { } - - /// - /// Callback when the behavior tree is stopped. - /// - /// Is the behavior tree paused? - public virtual void OnBehaviorTreeStopped(bool paused) { } - - /// - /// Callback when the behavior tree is stopped. - /// - /// Is the behavior tree paused? - [System.Obsolete("Task.OnStopped has been deprecated. Use Task.OnBehaviorTreeStopped instead.")] - public virtual void OnStopped(bool paused) { } - - /// - /// Callback when the behavior tree is destroyed. - /// - public virtual void OnDestroy() - { - if (m_BehaviorTree == null) { - return; - } - - m_BehaviorTree.OnBehaviorTreeStarted -= OnBehaviorTreeStarted; - m_BehaviorTree.OnBehaviorTreeStopped -= OnBehaviorTreeStopped; - m_BehaviorTree.OnBehaviorTreeDestroyed -= OnDestroy; - if (ReceiveCollisionEnterCallback) { m_BehaviorTree.OnBehaviorTreeCollisionEnter -= OnCollisionEnter; } - if (ReceiveCollisionExitCallback) { m_BehaviorTree.OnBehaviorTreeCollisionExit -= OnCollisionExit; } - if (ReceiveCollisionEnter2DCallback) { m_BehaviorTree.OnBehaviorTreeCollisionEnter2D -= OnCollisionEnter2D; } - if (ReceiveCollisionExit2DCallback) { m_BehaviorTree.OnBehaviorTreeCollisionExit2D -= OnCollisionExit2D; } - if (ReceiveTriggerEnterCallback) { m_BehaviorTree.OnBehaviorTreeTriggerEnter -= OnTriggerEnter; } - if (ReceiveTriggerExitCallback) { m_BehaviorTree.OnBehaviorTreeTriggerExit -= OnTriggerExit; } - if (ReceiveTriggerEnter2DCallback) { m_BehaviorTree.OnBehaviorTreeTriggerEnter2D -= OnTriggerEnter2D; } - if (ReceiveTriggerExit2DCallback) { m_BehaviorTree.OnBehaviorTreeTriggerExit2D -= OnTriggerExit2D; } - if (ReceiveControllerColliderHitCallback) { m_BehaviorTree.OnBehaviorTreeControllerColliderHit -= OnControllerColliderHit; } - } - - /// - /// Overrides ToString providing a nicer string value of the task. - /// - /// The overloaded ToString value. - public override string ToString() - { - return GetType().Name; - } - - /// - /// Specifies the type of reflection that should be used to save the task. - /// - /// The index of the sub-task. This is used for the task set allowing each contained task to have their own save type. - public virtual MemberVisibility GetSaveReflectionType(int index) { return MemberVisibility.Public; } - - /// - /// Returns the current task state. - /// - /// The DOTS world. - /// The DOTS entity. - /// The current task state. - public virtual object Save(World world, Entity entity) - { - return null; - } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - public virtual void Load(object saveData, World world, Entity entity) { } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - /// A reference to the map between the VariableAssignment and SharedVariable. - /// A reference to the list of task references that need to be resolved later. - public virtual void Load(object saveData, World world, Entity entity, Dictionary variableByNameMap, - ref ResizableArray taskReferences) - { - Load(saveData, world, entity); - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Task.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Task.cs.meta deleted file mode 100644 index dc9c35f..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Task.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8ddfd58bb4de183448b245f6fb314fbe -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskCoroutine.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskCoroutine.cs deleted file mode 100644 index f0b131e..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskCoroutine.cs +++ /dev/null @@ -1,63 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime -{ - using UnityEngine; - using System.Collections; - - /// - /// A wrapper for the coroutine object in order to add support for coroutines within Tasks. - /// - public class TaskCoroutine - { - private BehaviorTree m_BehaviorTree; - - private IEnumerator m_CoroutineEnumerator; - private Coroutine m_Coroutine; - private string m_Name; - private bool m_Stop; - - public Coroutine Coroutine { get => m_Coroutine; } - - /// - /// Initializes and starts a coroutine. - /// - /// The BehaviorTree that the coroutine has been added to. - /// A reference to the coroutine. - /// The name of the coroutine. - public TaskCoroutine(BehaviorTree behaviorTree, IEnumerator coroutine, string name) - { - m_BehaviorTree = behaviorTree; - m_CoroutineEnumerator = coroutine; - m_Name = name; - - m_Coroutine = m_BehaviorTree.StartCoroutine(RunCoroutine()); - } - - /// - /// Runs the coroutine until it is complete or has been stopped. - /// - /// The active coroutine. - public IEnumerator RunCoroutine() - { - while (!m_Stop) { - if (m_CoroutineEnumerator != null && m_CoroutineEnumerator.MoveNext()) { - yield return m_CoroutineEnumerator.Current; - } else { - break; - } - } - m_BehaviorTree.TaskCoroutineEnded(this, m_Name); - } - - /// - /// Stops the coroutine. - /// - public void Stop() { m_Stop = true; } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskCoroutine.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskCoroutine.cs.meta deleted file mode 100644 index 9a39aab..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskCoroutine.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5fcbd45134954664fb7f14527343dfae -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskDelegateBase.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskDelegateBase.cs deleted file mode 100644 index 25983ec..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskDelegateBase.cs +++ /dev/null @@ -1,1259 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks -{ - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using Opsive.Shared.Utility; - using System; - using System.Reflection; - using UnityEngine; - - /// - /// The TaskDelegateBase task is an abstract class used for any action classes that use reflection to execute the action. - /// - [HideInFilterWindow] - public abstract class TaskDelegateBase : Task, IAction - { - [Tooltip("The object that the delegate belongs to. Can be null for static variables.")] - [SerializeField] [HideInInspector] protected SharedVariable m_Target; - [Tooltip("The type of delegate that should be created.")] - [SerializeField] [HideInInspector] protected string m_ReflectedType; - [Tooltip("The type of parameters that the delegate uses.")] - [SerializeField] [HideInInspector] protected string[] m_ParameterTypes; - [Tooltip("The name of the method that should be called by the delegate.")] - [SerializeField] [HideInInspector] protected string m_MethodName; - - public SharedVariable Target => m_Target; - public string ReflectedType => m_ReflectedType; - public string[] ParameterTypes => m_ParameterTypes; - public string MethodName => m_MethodName; - - protected bool m_ConditionalTask; - - /// - /// Binds the task to the specified method. - /// - /// The MethodInfo to bind the task to. - internal void Bind(MethodInfo methodInfo) - { - m_ReflectedType = methodInfo.ReflectedType.FullName; - var parameters = methodInfo.GetParameters(); - if (parameters != null && parameters.Length > 0) { - m_ParameterTypes = new string[parameters.Length]; - for (int i = 0; i < parameters.Length; ++i) { - m_ParameterTypes[i] = parameters[i].ParameterType.FullName; - } - } - m_MethodName = methodInfo.Name; - } - - /// - /// Initializes the task. - /// - /// A reference to the owning BehaviorTree. - /// Does the delegate belong to an IConditional task? - /// The runtime index of the node. - internal void Initialize(BehaviorTree behaviorTree, ushort runtimeIndex, bool conditionalTask) - { - m_ConditionalTask = conditionalTask; - - base.Initialize(behaviorTree, runtimeIndex); - } - - /// - /// Callback when the behavior tree is initialized. - /// - public override void OnAwake() - { - base.OnAwake(); - - CreateDelegate(); - if (m_Target != null) { - m_Target.OnValueChange += CreateDelegate; - } - } - - /// - /// Creates the task delegate. - /// - protected virtual void CreateDelegate() { } - - /// - /// Returns the target value. - /// - /// The target value. - protected object GetTargetValue() - { - // The target will be null if no SharedVariable value has been assigned. - var target = m_Target.GetValue(); - if (target == null) { - var targetType = m_ReflectedType.Replace("UnityEngine.", string.Empty); - if (string.Equals(targetType, "GameObject")) { - return m_GameObject; - } - var value = m_GameObject.GetComponent(targetType); - if (value == null) { - var splitType = m_ReflectedType.Split("."); - value = m_GameObject.GetComponent(splitType[splitType.Length - 1]); - if (value == null) { - Debug.LogError($"Error: Unable to find the component {m_ReflectedType} on the {m_GameObject.name} GameObject."); - } - } - return value; - } - return target; - } - - /// - /// Returns the method from the given type and name. - /// - /// The object type that the method belongs to. - /// The name of the method. - /// The types of parameters that the method uses. - /// The method from the given type and name. - protected static MethodInfo GetMethod(string reflectedType, string methodName, string[] parameterTypeNames) - { - var type = TypeUtility.GetType(reflectedType); - if (type == null) { - Debug.LogError($"Error: Unable to find the type {reflectedType}."); - return null; - } - - Type[] parameterTypes; - if (parameterTypeNames != null) { - parameterTypes = new Type[parameterTypeNames.Length]; - for (int i = 0; i < parameterTypeNames.Length; ++i) { - parameterTypes[i] = TypeUtility.GetType(parameterTypeNames[i]); - if (parameterTypes[i] == null) { - Debug.LogError($"Error: Unable to find the parameter type {parameterTypeNames[i]}."); - return null; - } - } - } else { - parameterTypes = new Type[0]; - } - - // Get the method based on the type and parameter types. - var method = type.GetMethod(methodName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static, null, parameterTypes, null); - if (method == null) { - Debug.LogError($"Error: Unable to find the method {methodName} on type {type}. If you are using code stripping you can prevent Unity from stripping the " + - $"method with a link.xml file: https://docs.unity3d.com/6000.1/Documentation/Manual/managed-code-stripping-xml-formatting.html"); - return null; - } - - return method; - } - - /// - /// Specifies the type of reflection that should be used to save the task. - /// - /// The index of the sub-task. This is used for the task set allowing each contained task to have their own save type. - public override MemberVisibility GetSaveReflectionType(int index) - { - return MemberVisibility.Public; - } - - /// - /// Returns a friendly name for the task. - /// - /// A friendly name for the task. - public override string ToString() - { - return m_MethodName; - } - } - - /// - /// Task which executes a delegate with no parameters. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskDelegate : TaskDelegateBase - { - private Action m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(System.Action)) as System.Action; - } else { - m_Delegate = method.CreateDelegate(typeof(System.Action), GetTargetValue()) as System.Action; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Delegate(); - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with no parameters but a returned value. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskValueDelegate : TaskDelegateBase - { - [Tooltip("The returned result.")] - [SerializeField] [RequireShared] protected SharedVariable m_Result; - - private Func m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Func)) as Func; - } else { - m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Result.Value = m_Delegate(); - if (m_ConditionalTask) { - return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure; - } - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with one parameter. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - - private Action m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Action)) as Action; - } else { - m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Delegate(m_Parameter1.Value); - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with one parameter and a returned value. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskValueDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The returned result.")] - [SerializeField] [RequireShared] protected SharedVariable m_Result; - - private Func m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Func)) as Func; - } else { - m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Result.Value = m_Delegate(m_Parameter1.Value); - if (m_ConditionalTask) { - return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure; - } - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with two parameters. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - - private Action m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Action)) as Action; - } else { - m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Delegate(m_Parameter1.Value, m_Parameter2.Value); - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with two parameters and a returned value. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskValueDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The returned result.")] - [SerializeField] [RequireShared] protected SharedVariable m_Result; - - private Func m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Func)) as Func; - } else { - m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value); - if (m_ConditionalTask) { - return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure; - } - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with three parameters. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The third parameter.")] - [SerializeField] protected SharedVariable m_Parameter3; - - private Action m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Action)) as Action; - } else { - m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value); - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with three parameters and a returned value. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskValueDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The third parameter.")] - [SerializeField] protected SharedVariable m_Parameter3; - [Tooltip("The returned result.")] - [SerializeField] [RequireShared] protected SharedVariable m_Result; - - private Func m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Func)) as Func; - } else { - m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value); - if (m_ConditionalTask) { - return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure; - } - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with four parameters. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The third parameter.")] - [SerializeField] protected SharedVariable m_Parameter3; - [Tooltip("The fourth parameter.")] - [SerializeField] protected SharedVariable m_Parameter4; - - private Action m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Action)) as Action; - } else { - m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value); - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with four parameters and a returned value. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskValueDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The third parameter.")] - [SerializeField] protected SharedVariable m_Parameter3; - [Tooltip("The fourth parameter.")] - [SerializeField] protected SharedVariable m_Parameter4; - [Tooltip("The returned result.")] - [SerializeField] [RequireShared] protected SharedVariable m_Result; - - private Func m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Func)) as Func; - } else { - m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value); - if (m_ConditionalTask) { - return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure; - } - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with five parameters. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The third parameter.")] - [SerializeField] protected SharedVariable m_Parameter3; - [Tooltip("The fourth parameter.")] - [SerializeField] protected SharedVariable m_Parameter4; - [Tooltip("The fifth parameter.")] - [SerializeField] protected SharedVariable m_Parameter5; - - private Action m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Action)) as Action; - } else { - m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value); - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with five parameters and a returned value. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskValueDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The third parameter.")] - [SerializeField] protected SharedVariable m_Parameter3; - [Tooltip("The fourth parameter.")] - [SerializeField] protected SharedVariable m_Parameter4; - [Tooltip("The fifth parameter.")] - [SerializeField] protected SharedVariable m_Parameter5; - [Tooltip("The returned result.")] - [SerializeField] [RequireShared] protected SharedVariable m_Result; - - private Func m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Func)) as Func; - } else { - m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value); - if (m_ConditionalTask) { - return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure; - } - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with six parameters. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The third parameter.")] - [SerializeField] protected SharedVariable m_Parameter3; - [Tooltip("The fourth parameter.")] - [SerializeField] protected SharedVariable m_Parameter4; - [Tooltip("The fifth parameter.")] - [SerializeField] protected SharedVariable m_Parameter5; - [Tooltip("The sixth parameter.")] - [SerializeField] protected SharedVariable m_Parameter6; - - private Action m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Action)) as Action; - } else { - m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value); - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with six parameters and a returned value. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskValueDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The third parameter.")] - [SerializeField] protected SharedVariable m_Parameter3; - [Tooltip("The fourth parameter.")] - [SerializeField] protected SharedVariable m_Parameter4; - [Tooltip("The fifth parameter.")] - [SerializeField] protected SharedVariable m_Parameter5; - [Tooltip("The sixth parameter.")] - [SerializeField] protected SharedVariable m_Parameter6; - [Tooltip("The returned result.")] - [SerializeField] [RequireShared] protected SharedVariable m_Result; - - private Func m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Func)) as Func; - } else { - m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value); - if (m_ConditionalTask) { - return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure; - } - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with seven parameters. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The third parameter.")] - [SerializeField] protected SharedVariable m_Parameter3; - [Tooltip("The fourth parameter.")] - [SerializeField] protected SharedVariable m_Parameter4; - [Tooltip("The fifth parameter.")] - [SerializeField] protected SharedVariable m_Parameter5; - [Tooltip("The sixth parameter.")] - [SerializeField] protected SharedVariable m_Parameter6; - [Tooltip("The seventh parameter.")] - [SerializeField] protected SharedVariable m_Parameter7; - - private Action m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Action)) as Action; - } else { - m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value, m_Parameter7.Value); - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with seven parameters and a returned value. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskValueDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The third parameter.")] - [SerializeField] protected SharedVariable m_Parameter3; - [Tooltip("The fourth parameter.")] - [SerializeField] protected SharedVariable m_Parameter4; - [Tooltip("The fifth parameter.")] - [SerializeField] protected SharedVariable m_Parameter5; - [Tooltip("The sixth parameter.")] - [SerializeField] protected SharedVariable m_Parameter6; - [Tooltip("The seventh parameter.")] - [SerializeField] protected SharedVariable m_Parameter7; - [Tooltip("The returned result.")] - [SerializeField] [RequireShared] protected SharedVariable m_Result; - - private Func m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Func)) as Func; - } else { - m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value, m_Parameter7.Value); - if (m_ConditionalTask) { - return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure; - } - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with eight parameters. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The third parameter.")] - [SerializeField] protected SharedVariable m_Parameter3; - [Tooltip("The fourth parameter.")] - [SerializeField] protected SharedVariable m_Parameter4; - [Tooltip("The fifth parameter.")] - [SerializeField] protected SharedVariable m_Parameter5; - [Tooltip("The sixth parameter.")] - [SerializeField] protected SharedVariable m_Parameter6; - [Tooltip("The seventh parameter.")] - [SerializeField] protected SharedVariable m_Parameter7; - [Tooltip("The eigth parameter.")] - [SerializeField] protected SharedVariable m_Parameter8; - - private Action m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Action)) as Action; - } else { - m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value, m_Parameter7.Value, m_Parameter8.Value); - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with eight parameters and a returned value. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskValueDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The third parameter.")] - [SerializeField] protected SharedVariable m_Parameter3; - [Tooltip("The fourth parameter.")] - [SerializeField] protected SharedVariable m_Parameter4; - [Tooltip("The fifth parameter.")] - [SerializeField] protected SharedVariable m_Parameter5; - [Tooltip("The sixth parameter.")] - [SerializeField] protected SharedVariable m_Parameter6; - [Tooltip("The seventh parameter.")] - [SerializeField] protected SharedVariable m_Parameter7; - [Tooltip("The eigth parameter.")] - [SerializeField] protected SharedVariable m_Parameter8; - [Tooltip("The returned result.")] - [SerializeField] [RequireShared] protected SharedVariable m_Result; - - private Func m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Func)) as Func; - } else { - m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value, m_Parameter7.Value, m_Parameter8.Value); - if (m_ConditionalTask) { - return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure; - } - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with nine parameters. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The third parameter.")] - [SerializeField] protected SharedVariable m_Parameter3; - [Tooltip("The fourth parameter.")] - [SerializeField] protected SharedVariable m_Parameter4; - [Tooltip("The fifth parameter.")] - [SerializeField] protected SharedVariable m_Parameter5; - [Tooltip("The sixth parameter.")] - [SerializeField] protected SharedVariable m_Parameter6; - [Tooltip("The seventh parameter.")] - [SerializeField] protected SharedVariable m_Parameter7; - [Tooltip("The eigth parameter.")] - [SerializeField] protected SharedVariable m_Parameter8; - [Tooltip("The ninth parameter.")] - [SerializeField] protected SharedVariable m_Parameter9; - - private Action m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Action)) as Action; - } else { - m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value, m_Parameter7.Value, m_Parameter8.Value, m_Parameter9.Value); - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with nine parameters and a returned value. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskValueDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The third parameter.")] - [SerializeField] protected SharedVariable m_Parameter3; - [Tooltip("The fourth parameter.")] - [SerializeField] protected SharedVariable m_Parameter4; - [Tooltip("The fifth parameter.")] - [SerializeField] protected SharedVariable m_Parameter5; - [Tooltip("The sixth parameter.")] - [SerializeField] protected SharedVariable m_Parameter6; - [Tooltip("The seventh parameter.")] - [SerializeField] protected SharedVariable m_Parameter7; - [Tooltip("The eigth parameter.")] - [SerializeField] protected SharedVariable m_Parameter8; - [Tooltip("The ninth parameter.")] - [SerializeField] protected SharedVariable m_Parameter9; - [Tooltip("The returned result.")] - [SerializeField] [RequireShared] protected SharedVariable m_Result; - - private Func m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Func)) as Func; - } else { - m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value, m_Parameter7.Value, m_Parameter8.Value, m_Parameter9.Value); - if (m_ConditionalTask) { - return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure; - } - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with ten parameters. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The third parameter.")] - [SerializeField] protected SharedVariable m_Parameter3; - [Tooltip("The fourth parameter.")] - [SerializeField] protected SharedVariable m_Parameter4; - [Tooltip("The fifth parameter.")] - [SerializeField] protected SharedVariable m_Parameter5; - [Tooltip("The sixth parameter.")] - [SerializeField] protected SharedVariable m_Parameter6; - [Tooltip("The seventh parameter.")] - [SerializeField] protected SharedVariable m_Parameter7; - [Tooltip("The eigth parameter.")] - [SerializeField] protected SharedVariable m_Parameter8; - [Tooltip("The ninth parameter.")] - [SerializeField] protected SharedVariable m_Parameter9; - [Tooltip("The tenth parameter.")] - [SerializeField] protected SharedVariable m_Parameter10; - - private Action m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Action)) as Action; - } else { - m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value, m_Parameter7.Value, m_Parameter8.Value, m_Parameter9.Value, m_Parameter10.Value); - return TaskStatus.Success; - } - } - - /// - /// Task which executes a delegate with ten parameters and a returned value. - /// - [NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")] - public class TaskValueDelegate : TaskDelegateBase - { - [Tooltip("The first parameter.")] - [SerializeField] protected SharedVariable m_Parameter1; - [Tooltip("The second parameter.")] - [SerializeField] protected SharedVariable m_Parameter2; - [Tooltip("The third parameter.")] - [SerializeField] protected SharedVariable m_Parameter3; - [Tooltip("The fourth parameter.")] - [SerializeField] protected SharedVariable m_Parameter4; - [Tooltip("The fifth parameter.")] - [SerializeField] protected SharedVariable m_Parameter5; - [Tooltip("The sixth parameter.")] - [SerializeField] protected SharedVariable m_Parameter6; - [Tooltip("The seventh parameter.")] - [SerializeField] protected SharedVariable m_Parameter7; - [Tooltip("The eigth parameter.")] - [SerializeField] protected SharedVariable m_Parameter8; - [Tooltip("The ninth parameter.")] - [SerializeField] protected SharedVariable m_Parameter9; - [Tooltip("The tenth parameter.")] - [SerializeField] protected SharedVariable m_Parameter10; - [Tooltip("The returned result.")] - [SerializeField] [RequireShared] protected SharedVariable m_Result; - - private Func m_Delegate; - - /// - /// Creates the task delegate. - /// - protected override void CreateDelegate() - { - var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes); - if (method == null) { - return; - } - - if (method.IsStatic) { - m_Delegate = method.CreateDelegate(typeof(Func)) as Func; - } else { - m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func; - } - } - - /// - /// Invokes the delegate. - /// - /// The status of the task. - public override TaskStatus OnUpdate() - { - m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value, m_Parameter7.Value, m_Parameter8.Value, m_Parameter9.Value, m_Parameter10.Value); - if (m_ConditionalTask) { - return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure; - } - return TaskStatus.Success; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskDelegateBase.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskDelegateBase.cs.meta deleted file mode 100644 index e7868a8..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskDelegateBase.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f432dc82c1de72e4dbb4662cbee75a4b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskInterfaces.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskInterfaces.cs deleted file mode 100644 index e8875f4..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskInterfaces.cs +++ /dev/null @@ -1,204 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks -{ - using Opsive.GraphDesigner.Runtime.Variables; - using Opsive.Shared.Utility; - using System.Collections.Generic; - using Unity.Entities; - using static Opsive.BehaviorDesigner.Runtime.BehaviorTreeData; - - /// - /// Interface for action tasks. - /// - [ReflectedType] - [DisplayName("Actions")] - public interface IAction { } - - /// - /// Interface for composite tasks. - /// - [DisplayName("Composites")] - public interface IComposite { } - - /// - /// Interface for conditional tasks. - /// - [ReflectedType(typeof(bool))] - [DisplayName("Conditionals")] - public interface IConditional { } - - /// - /// Interface for reference-based conditional tasks that can be reevaluated. - /// - public interface IConditionalReevaluation - { - /// - /// Reevaluates the task logic. Returns a TaskStatus indicating how the behavior tree flow should proceed. - /// - /// The status of the task during the reevaluation phase. - public TaskStatus OnReevaluateUpdate(); - } - - /// - /// Interface for decorator tasks. - /// - [DisplayName("Decorators")] - public interface IDecorator { } - - /// - /// Interface which specifies that the object is a task. - /// - public interface IAuthoringTask - { - /// - /// The type of flag that should be enabled when the task is running. - /// - public ComponentType Flag { get; } - - /// - /// The system type that the component uses. - /// - public System.Type SystemType { get; } - - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The index of the element within the buffer. - public int AddBufferElement(World world, Entity entity, UnityEngine.GameObject gameObject); - - /// - /// Clears the IBufferElementData from the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be cleared from. - public void ClearBufferElement(World world, Entity entity); - } - - /// - /// Interface which specifies the IComponentData is a task. - /// - public interface ITaskComponentData - { - /// - /// The type of tag that should be enabled when the task is running. - /// - [System.Obsolete("ITaskComponentData.Tag is deprecated. It has been replaced with IAuthoringTask.Flag.")] - public ComponentType Tag { get; } - - /// - /// The system type that the component uses. - /// - public System.Type SystemType { get; } - - /// - /// Adds the IBufferElementData to the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be assigned to. - /// The GameObject that the entity is attached to. - /// The index of the element within the buffer. - public int AddBufferElement(World world, Entity entity, UnityEngine.GameObject gameObject); - - /// - /// Clears the IBufferElementData from the entity. - /// - /// The world that the entity exists in. - /// The entity that the IBufferElementData should be cleared from. - public void ClearBufferElement(World world, Entity entity); - } - - /// - /// Interface describing tasks that can be reevaluated. - /// - public interface IReevaluateResponder - { - /// - /// The type of flag that should be enabled when the task is being reevaluated. - /// - public ComponentType ReevaluateFlag { get; } - - /// - /// The system type that the reevaluation component uses. - /// - public System.Type ReevaluateSystemType { get; } - } - - /// - /// Interface describing tasks that can respond to interruptions. - /// - public interface IInterruptResponder - { - /// - /// The system type that the interrupt component uses. - /// - public System.Type InterruptSystemType { get; } - } - - /// - /// Represents a task that can be saved and restored later. - /// - public interface ISavableTask - { - /// - /// Specifies the type of reflection that should be used to save the task. - /// - /// The index of the sub-task. This is used for the task set allowing each contained task to have their own save type. - public MemberVisibility GetSaveReflectionType(int index); - - /// - /// Returns the current task state. - /// - /// The DOTS world. - /// The DOTS entity. - /// The current task state. - public object Save(World world, Entity entity) { return null; } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - public void Load(object saveData, World world, Entity entity) { } - - /// - /// Loads the previous task state. - /// - /// The previous task state. - /// The DOTS world. - /// The DOTS entity. - /// A reference to the map between the VariableAssignment and SharedVariable. - /// A reference to the list of task references that need to be resolved later. - public void Load(object saveData, World world, Entity entity, Dictionary variableByNameMap, - ref ResizableArray taskReferences) { Load(saveData, world, entity); } - } - - /// - /// Represents a task that can be paused and resumed later. - /// - public interface IPausableTask - { - /// - /// The task has been paused. - /// - /// The DOTS world. - /// The DOTS entity. - public void Pause(World world, Entity entity); - - /// - /// The task has been resumed. - /// - /// The DOTS world. - /// The DOTS entity. - public void Resume(World world, Entity entity); - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskInterfaces.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskInterfaces.cs.meta deleted file mode 100644 index 3a3dae8..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskInterfaces.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8ec88a004de82ad4d9307c474fd1e828 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskStatus.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskStatus.cs deleted file mode 100644 index 2325452..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskStatus.cs +++ /dev/null @@ -1,19 +0,0 @@ -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks -{ - /// - /// The execution status of the task. - /// - public enum TaskStatus : byte - { - Inactive, // The task is inactive and is not running. - Queued, // The task will run on the next update. - Running, // The task is currently running. - Success, // The task succeeded execution. - Failure, // The task failed execution. - } -} \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskStatus.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskStatus.cs.meta deleted file mode 100644 index 08aa71b..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/TaskStatus.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3b2fb3205262cd24c95aac6d0665a689 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates.meta deleted file mode 100644 index a7508f3..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 6f3fa88d23176d7409b82d946f3929b4 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates/ECSNodes.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates/ECSNodes.cs deleted file mode 100644 index 86ebe1e..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates/ECSNodes.cs +++ /dev/null @@ -1,541 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime -{ - using Opsive.BehaviorDesigner.Runtime.Tasks; - using Opsive.GraphDesigner.Runtime; - using Opsive.Shared.Utility; - using System; - - /// - /// Helper class for ECS node templates. - /// - public static class ECSNodeUtility - { - /// - /// Converts a name to camelCase format. - /// - /// The name to convert. - /// The name in camelCase format. - public static string ToCamelCase(string name) - { - if (string.IsNullOrEmpty(name)) - return name; - - return char.ToLowerInvariant(name[0]) + name.Substring(1); - } - } - - /// - /// Template for creating a custom action node. - /// - [Category("ECS")] - [DisplayName("Action")] - [Description("Create a new ECS action node.")] - public class ECSActionNode : INodeTemplate - { - public Type BaseType => typeof(IAction); - public bool IsLogicNode => true; - - /// - /// Returns the script that should be used for the template file. - /// - /// The name of the node. - /// The node script. - public string GetScript(string name) - { - var variableName = ECSNodeUtility.ToCamelCase(name); - return $@"using Opsive.BehaviorDesigner.Runtime.Components; -using Opsive.BehaviorDesigner.Runtime.Tasks; -using Opsive.GraphDesigner.Runtime; -using Unity.Entities; -using Unity.Burst; -using UnityEngine; - -/// -/// A custom ECS action node. -/// -public class {name} : ECSActionTask<{name}TaskSystem, {name}Component> -{{ - /// - /// The type of flag that should be enabled when the task is running. - /// - public override ComponentType Flag {{ get => typeof({name}Flag); }} - - /// - /// Returns a new {name}Component for use by the system. - /// - /// A new {name}Component for use by the system. - public override {name}Component GetBufferElement() - {{ - return new {name}Component() {{ - Index = RuntimeIndex, - }}; - }} -}} - -/// -/// The DOTS data structure for the {name} class. -/// -public struct {name}Component : IBufferElementData -{{ - [Tooltip(""The index of the node."")] - public ushort Index; -}} - -/// -/// A DOTS flag indicating when a {name} node is active. -/// -public struct {name}Flag : IComponentData, IEnableableComponent {{ }} - -/// -/// Runs the {name} logic. -/// -[DisableAutoCreation] -public partial struct {name}TaskSystem : ISystem -{{ - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - {{ - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW<{name}Component>().WithAll<{name}Flag, EvaluateFlag>().Build(); - state.Dependency = new {name}Job().ScheduleParallel(query, state.Dependency); - }} - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct {name}Job : IJobEntity - {{ - /// - /// Executes the {name} logic. - /// - /// An array of BranchComponents. - /// An array of TaskComponents. - /// An array of {name}Components. - [BurstCompile] - public void Execute(ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer<{name}Component> {variableName}Components) - {{ - for (int i = 0; i < {variableName}Components.Length; ++i) {{ - var {variableName}Component = {variableName}Components[i]; - var taskComponent = taskComponents[{variableName}Component.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - if (!branchComponent.CanExecute) {{ - continue; - }} - - if (taskComponent.Status == TaskStatus.Queued) {{ - taskComponent.Status = TaskStatus.Success; - taskComponents[{variableName}Component.Index] = taskComponent; - }} - }} - }} - }} -}}"; - } - } - - /// - /// Template for creating a custom composite node. - /// - [Category("ECS")] - [DisplayName("Composite")] - [Description("Create a new ECS composite node.")] - public class ECSCompositeNode : IParentNodeTemplate - { - public Type BaseType => typeof(IComposite); - public bool IsLogicNode => true; - - /// - /// Returns the script that should be used for the template file. - /// - /// The name of the node. - /// The node script. - public string GetScript(string name) - { - var variableName = ECSNodeUtility.ToCamelCase(name); - return $@"using Opsive.BehaviorDesigner.Runtime.Components; -using Opsive.BehaviorDesigner.Runtime.Tasks; -using Opsive.GraphDesigner.Runtime; -using Unity.Entities; -using Unity.Burst; -using UnityEngine; - -/// -/// A custom ECS composite node. -/// -public class {name} : ECSCompositeTask<{name}TaskSystem, {name}Component> -{{ - /// - /// The type of tag that should be enabled when the task is running. - /// - public override ComponentType Flag {{ get => typeof({name}Flag); }} - - /// - /// Returns a new {name}Component for use by the system. - /// - /// A new {name}Component for use by the system. - public override {name}Component GetBufferElement() - {{ - return new {name}Component() {{ - Index = RuntimeIndex, - }}; - }} -}} - -/// -/// The DOTS data structure for the {name} class. -/// -public struct {name}Component : IBufferElementData -{{ - [Tooltip(""The index of the node."")] - public ushort Index; - [Tooltip(""The index of the child that is currently active."")] - public ushort ActiveChildIndex; -}} - -/// -/// A DOTS flag indicating when a {name} node is active. -/// -public struct {name}Flag : IComponentData, IEnableableComponent {{ }} - -/// -/// Runs the {name} logic. -/// -[DisableAutoCreation] -public partial struct {name}TaskSystem : ISystem -{{ - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - {{ - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW<{name}Component>().WithAll<{name}Flag, EvaluateFlag>().Build(); - state.Dependency = new {name}Job().ScheduleParallel(query, state.Dependency); - }} - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct {name}Job : IJobEntity - {{ - /// - /// Executes the {name} logic. - /// - /// An array of BranchComponents. - /// An array of TaskComponents. - /// An array of {name}Components. - [BurstCompile] - public void Execute(ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer<{name}Component> {variableName}Components) - {{ - for (int i = 0; i < {variableName}Components.Length; ++i) {{ - var {variableName}Component = {variableName}Components[i]; - var taskComponent = taskComponents[{variableName}Component.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - if (!branchComponent.CanExecute) {{ - continue; - }} - - if (taskComponent.Status == TaskStatus.Queued) {{ - taskComponent.Status = TaskStatus.Success; - taskComponents[{variableName}Component.Index] = taskComponent; - - branchComponent.NextIndex = taskComponent.ParentIndex; - branchComponents[taskComponent.BranchIndex] = branchComponent; - }} - }} - }} - }} -}}"; - } - } - - /// - /// Template for creating a custom conditional node. - /// - [Category("ECS")] - [DisplayName("Conditional")] - [Description("Create a new ECS conditional node.")] - public class ECSConditionalNode : INodeTemplate - { - public Type BaseType => typeof(IConditional); - public bool IsLogicNode => true; - - /// - /// Returns the script that should be used for the template file. - /// - /// The name of the node. - /// The node script. - public string GetScript(string name) - { - var variableName = ECSNodeUtility.ToCamelCase(name); - return $@"using Opsive.BehaviorDesigner.Runtime.Components; -using Opsive.BehaviorDesigner.Runtime.Tasks; -using Opsive.GraphDesigner.Runtime; -using Unity.Burst; -using Unity.Entities; -using UnityEngine; - -/// -/// A custom ECS conditional node. -/// -public class {name} : ECSConditionalTask<{name}TaskSystem, {name}Component>, IReevaluateResponder -{{ - /// - /// The type of flag that should be enabled when the task is running. - /// - public override ComponentType Flag {{ get => typeof({name}Flag); }} - /// - /// The type of flag that should be enabled when the task is being reevaluated. - /// - public ComponentType ReevaluateFlag {{ get => typeof({name}ReevaluateFlag); }} - /// - /// The system type that the reevaluation component uses. - /// - public System.Type ReevaluateSystemType {{ get => typeof({name}ReevaluateTaskSystem); }} - - /// - /// Returns a new {name}Component for use by the system. - /// - /// A new {name}Component for use by the system. - public override {name}Component GetBufferElement() - {{ - return new {name}Component() {{ - Index = RuntimeIndex, - }}; - }} -}} - -/// -/// The DOTS data structure for the {name} class. -/// -public struct {name}Component : IBufferElementData -{{ - [Tooltip(""The index of the node."")] - public ushort Index; -}} - -/// -/// A DOTS flag indicating when a {name} node is active. -/// -public struct {name}Flag : IComponentData, IEnableableComponent {{ }} - -/// -/// Runs the {name} logic. -/// -[DisableAutoCreation] -public partial struct {name}TaskSystem : ISystem -{{ - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - {{ - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW<{name}Component>().WithAll<{name}Flag, EvaluateFlag>().Build(); - state.Dependency = new {name}Job().ScheduleParallel(query, state.Dependency); - }} - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct {name}Job : IJobEntity - {{ - /// - /// Executes the {name} logic. - /// - /// An array of BranchComponents. - /// An array of TaskComponents. - /// An array of {name}Components. - [BurstCompile] - public void Execute(ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer<{name}Component> {variableName}Components) - {{ - for (int i = 0; i < {variableName}Components.Length; ++i) {{ - var {variableName}Component = {variableName}Components[i]; - var taskComponent = taskComponents[{variableName}Component.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - if (!branchComponent.CanExecute) {{ - continue; - }} - - if (taskComponent.Status == TaskStatus.Queued || taskComponent.Status == TaskStatus.Running) {{ // Conditional aborts can set the status to Running. - taskComponent.Status = TaskStatus.Success; - taskComponents[{variableName}Component.Index] = taskComponent; - }} - }} - }} - }} -}} - -/// -/// A DOTS flag indicating when an {name} node needs to be reevaluated. -/// -public struct {name}ReevaluateFlag : IComponentData, IEnableableComponent {{ }} - -/// -/// Runs the {name} reevaluation logic. -/// -[DisableAutoCreation] -public partial struct {name}ReevaluateTaskSystem : ISystem -{{ - /// - /// Updates the reevaluation logic. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - {{ - foreach (var (branchComponents, taskComponents, {variableName}Components) in - SystemAPI.Query, DynamicBuffer, DynamicBuffer<{name}Component>>().WithAll<{name}ReevaluateFlag, EvaluateFlag>()) {{ - for (int i = 0; i < {variableName}Components.Length; ++i) {{ - var {variableName}Component = {variableName}Components[i]; - var taskComponent = taskComponents[{variableName}Component.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - if (!branchComponent.CanExecute) {{ - continue; - }} - - if (!taskComponent.Reevaluate) {{ - continue; - }} - - var status = TaskStatus.Success; - if (status != taskComponent.Status) {{ - taskComponent.Status = status; - var buffer = taskComponents; - buffer[taskComponent.Index] = taskComponent; - }} - }} - }} - }} -}}"; - } - } - - /// - /// Template for creating a custom decorator node. - /// - [Category("ECS")] - [DisplayName("Decorator")] - [Description("Create a new ECS decorator node.")] - public class ECSDecoratorNode : IParentNodeTemplate - { - public Type BaseType => typeof(IDecorator); - public bool IsLogicNode => true; - - /// - /// Returns the script that should be used for the template file. - /// - /// The name of the node. - /// The node script. - public string GetScript(string name) - { - var variableName = ECSNodeUtility.ToCamelCase(name); - return $@"using Opsive.BehaviorDesigner.Runtime.Components; -using Opsive.BehaviorDesigner.Runtime.Tasks; -using Opsive.GraphDesigner.Runtime; -using Unity.Entities; -using Unity.Burst; -using UnityEngine; - -/// -/// A custom ECS decorator node. -/// -public class {name} : ECSDecoratorTask<{name}TaskSystem, {name}Component> -{{ - /// - /// The type of flag that should be enabled when the task is running. - /// - public override ComponentType Flag {{ get => typeof({name}Flag); }} - - /// - /// Returns a new {name}Component for use by the system. - /// - /// A new {name}Component for use by the system. - public override {name}Component GetBufferElement() - {{ - return new {name}Component() {{ - Index = RuntimeIndex, - }}; - }} -}} - -/// -/// The DOTS data structure for the {name} class. -/// -public struct {name}Component : IBufferElementData -{{ - [Tooltip(""The index of the node."")] - public ushort Index; -}} - -/// -/// A DOTS flag indicating when a {name} node is active. -/// -public struct {name}Flag : IComponentData, IEnableableComponent {{ }} - -/// -/// Runs the {name} logic. -/// -[DisableAutoCreation] -public partial struct {name}TaskSystem : ISystem -{{ - /// - /// Creates the job. - /// - /// The current state of the system. - [BurstCompile] - private void OnUpdate(ref SystemState state) - {{ - var query = SystemAPI.QueryBuilder().WithAllRW().WithAllRW().WithAllRW<{name}Component>().WithAll<{name}Flag, EvaluateFlag>().Build(); - state.Dependency = new {name}Job().ScheduleParallel(query, state.Dependency); - }} - - /// - /// Job which executes the task logic. - /// - [BurstCompile] - private partial struct {name}Job : IJobEntity - {{ - /// - /// Executes the {name} logic. - /// - /// An array of BranchComponents. - /// An array of TaskComponents. - /// An array of {name}Components. - [BurstCompile] - public void Execute(ref DynamicBuffer branchComponents, ref DynamicBuffer taskComponents, ref DynamicBuffer<{name}Component> {variableName}Components) - {{ - for (int i = 0; i < {variableName}Components.Length; ++i) {{ - var {variableName}Component = {variableName}Components[i]; - var taskComponent = taskComponents[{variableName}Component.Index]; - var branchComponent = branchComponents[taskComponent.BranchIndex]; - if (!branchComponent.CanExecute) {{ - continue; - }} - - if (taskComponent.Status == TaskStatus.Queued) {{ - taskComponent.Status = TaskStatus.Success; - taskComponents[{variableName}Component.Index] = taskComponent; - }} - }} - }} - }} -}}"; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates/ECSNodes.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates/ECSNodes.cs.meta deleted file mode 100644 index b390d52..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates/ECSNodes.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7fc528e1a6212314cb23a55b5a274d49 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates/GameObjectNodes.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates/GameObjectNodes.cs deleted file mode 100644 index 44b32b5..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates/GameObjectNodes.cs +++ /dev/null @@ -1,242 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime -{ - using Opsive.BehaviorDesigner.Runtime.Tasks; - using Opsive.GraphDesigner.Runtime; - using Opsive.Shared.Utility; - using System; - - /// - /// Template for creating a custom action node. - /// - [Category("GameObjects")] - [DisplayName("Action")] - [Description("Create a new action node.")] - public class GameObjectActionNode : INodeTemplate - { - public Type BaseType => typeof(IAction); - public bool IsLogicNode => true; - - /// - /// Returns the script that should be used for the template file. - /// - /// The name of the node. - /// The node script. - public string GetScript(string name) - { - return $@"using Opsive.BehaviorDesigner.Runtime.Tasks; -using Opsive.BehaviorDesigner.Runtime.Tasks.Actions; - -/// -/// A custom action node. -/// -public class {name} : ActionNode -{{ - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - {{ - return TaskStatus.Success; - }} -}}"; - } - } - - /// - /// Template for creating a custom action task. - /// - [Category("GameObjects")] - [DisplayName("Stacked Action")] - [Description("Create a new stacked action node.")] - public class GameObjectAction : INodeTemplate - { - public Type BaseType => typeof(IAction); - public bool IsLogicNode => false; - - /// - /// Returns the script that should be used for the template file. - /// - /// The name of the node. - /// The node script. - public string GetScript(string name) - { - return $@"using Opsive.BehaviorDesigner.Runtime.Tasks; -using Opsive.BehaviorDesigner.Runtime.Tasks.Actions; - -/// -/// A custom action task. -/// -public class {name} : Action -{{ - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - {{ - return TaskStatus.Success; - }} -}}"; - } - } - - /// - /// Template for creating a custom composite node. - /// - [Category("GameObjects")] - [DisplayName("Composite")] - [Description("Create a new composite node.")] - public class GameObjectCompositeNode : IParentNodeTemplate - { - public Type BaseType => typeof(IComposite); - public bool IsLogicNode => true; - - /// - /// Returns the script that should be used for the template file. - /// - /// The name of the node. - /// The node script. - public string GetScript(string name) - { - return $@"using Opsive.BehaviorDesigner.Runtime.Tasks; -using Opsive.BehaviorDesigner.Runtime.Tasks.Composites; - -/// -/// A custom composite task. -/// -public class {name} : CompositeNode -{{ - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - {{ - return TaskStatus.Success; - }} -}}"; - } - } - - /// - /// Template for creating a custom conditional node. - /// - [Category("GameObjects")] - [DisplayName("Conditional")] - [Description("Create a new conditional node.")] - public class GameObjectConditionalNode : INodeTemplate - { - public Type BaseType => typeof(IConditional); - public bool IsLogicNode => true; - - /// - /// Returns the script that should be used for the template file. - /// - /// The name of the node. - /// The node script. - public string GetScript(string name) - { - return $@"using Opsive.BehaviorDesigner.Runtime.Tasks; -using Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals; - -/// -/// A custom conditional node. -/// -public class {name} : ConditionalNode -{{ - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - {{ - return TaskStatus.Success; - }} -}}"; - } - } - - /// - /// Template for creating a custom conditional task. - /// - [Category("GameObjects")] - [DisplayName("Stacked Conditional")] - [Description("Create a new stacked conditional node.")] - public class GameObjectConditional : INodeTemplate - { - public Type BaseType => typeof(IConditional); - public bool IsLogicNode => false; - - /// - /// Returns the script that should be used for the template file. - /// - /// The name of the node. - /// The node script. - public string GetScript(string name) - { - return $@"using Opsive.BehaviorDesigner.Runtime.Tasks; -using Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals; - -/// -/// A custom conditional task. -/// -public class {name} : Conditional -{{ - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - {{ - return TaskStatus.Success; - }} -}}"; - } - } - - /// - /// Template for creating a custom decorator node. - /// - [Category("GameObjects")] - [DisplayName("Decorator")] - [Description("Create a new decorator node.")] - public class GameObjectDecoratorNode : IParentNodeTemplate - { - public Type BaseType => typeof(IDecorator); - public bool IsLogicNode => true; - - /// - /// Returns the script that should be used for the template file. - /// - /// The name of the node. - /// The node script. - public string GetScript(string name) - { - return $@"using Opsive.BehaviorDesigner.Runtime.Tasks; -using Opsive.BehaviorDesigner.Runtime.Tasks.Decorators; - -/// -/// A custom decorator task. -/// -public class {name} : DecoratorNode -{{ - /// - /// Executes the task. - /// - /// The execution status of the task. - public override TaskStatus OnUpdate() - {{ - return TaskStatus.Success; - }} -}}"; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates/GameObjectNodes.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates/GameObjectNodes.cs.meta deleted file mode 100644 index 7a1d03f..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/Templates/GameObjectNodes.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 930aae40e5a83b84ba865fcf660bcdd7 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/UnknownTasks.cs b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/UnknownTasks.cs deleted file mode 100644 index c404b53..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/UnknownTasks.cs +++ /dev/null @@ -1,107 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Tasks -{ - using Opsive.BehaviorDesigner.Runtime.Tasks.Actions; - using Opsive.BehaviorDesigner.Runtime.Tasks.Composites; - using Opsive.GraphDesigner.Runtime; - using Opsive.Shared.Utility; - using UnityEngine; - - /// - /// Represents a task node that can no longer be found. - /// - [HideInFilterWindow] - public class UnknownTaskNode : ActionNode - { - private string m_UnknownType; - - /// - /// Default constructor. - /// - public UnknownTaskNode() { } - - /// - /// UnknownTaskNode constructor. - /// - /// The type that cannot be found. - public UnknownTaskNode(string unknownType) - { - m_UnknownType = unknownType; - } - - /// - /// Called once when the behavior tree is initialized. - /// - public override void OnAwake() - { - base.OnAwake(); - - Debug.LogWarning($"Warning: Unable to find the task of type {m_UnknownType}. An unknown task has been replaced with it."); - } - } - - /// - /// Represents a task that can no longer be found. - /// - [HideInFilterWindow] - public class UnknownTask : Action - { - /// - /// Called once when the behavior tree is initialized. - /// - public override void OnAwake() - { - base.OnAwake(); - - Debug.LogWarning($"Warning: Unable to find the original task. An unknown task has been replaced with it."); - } - } - - /// - /// Represents a parent task node that can no longer be found. - /// - [HideInFilterWindow] - public class UnknownParentTaskNode : CompositeNode - { - private string m_UnknownType; - - /// - /// Default constructor. - /// - public UnknownParentTaskNode() { } - - /// - /// UnknownParentTaskNode constructor. - /// - /// The type that cannot be found. - public UnknownParentTaskNode(string unknownType) - { - m_UnknownType = unknownType; - } - - /// - /// Called once when the behavior tree is initialized. - /// - public override void OnAwake() - { - base.OnAwake(); - - Debug.LogWarning($"Warning: Unable to find the task of type {m_UnknownType}. An unknown task has been replaced with it."); - } - } - - /// - /// Represents an event node that can no longer be found. - /// - [HideInFilterWindow] - public class UnknownEventTask : IEventNode - { - public ushort ConnectedIndex { get => ushort.MaxValue; set { } } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/UnknownTasks.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Tasks/UnknownTasks.cs.meta deleted file mode 100644 index bcc9d81..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Tasks/UnknownTasks.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 291d6f08a99331f48b9f7967ec344afd -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Utility.meta b/Packages/com.opsive.behaviordesigner/Runtime/Utility.meta deleted file mode 100644 index 244736e..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Utility.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 863e492baa6c6c84e9b200e8e99f575b -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Utility/ComponentUtility.cs b/Packages/com.opsive.behaviordesigner/Runtime/Utility/ComponentUtility.cs deleted file mode 100644 index e21a6c0..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Utility/ComponentUtility.cs +++ /dev/null @@ -1,162 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Utility -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Unity.Collections; - using Unity.Entities; - - /// - /// Utility functions that are used throughout the behavior tree execution. - /// - public static class ComponentUtility - { - /// - /// The size of a ulong in bits. - /// - public static int ulongBitSize => sizeof(ulong) * 8; - - /// - /// Adds an evaluation component to the specified entity based on the task count and evaluation type. - /// - /// The ECS world to add the component to. - /// The entity to add the evaluation component to. - /// The total number of tasks in the behavior tree. - /// The type of evaluation to perform. - /// The maximum number of evaluations allowed. - public static void AddEvaluationComponent(World world, Entity entity, int taskCount, EvaluationType evaluationType, int maxEvaluationCount) - { - // Both EvaluationType.EntireTree and EvaluationType.Count use a bitmask to track evaluated tasks. - // For Count mode, an additional element is reserved at the end to store the execution count. - var bitmaskElementCount = taskCount / ulongBitSize + 1; - var countModeExtraElement = evaluationType == EvaluationType.Count ? 1 : 0; - - if (taskCount < 192) { - world.EntityManager.AddComponent(entity); - var evaluatedTasks = new FixedList32Bytes(); - for (int i = 0; i < bitmaskElementCount + countModeExtraElement; ++i) { - evaluatedTasks.Add(0); - } - world.EntityManager.AddComponentData(entity, new EvaluationComponent32() { EvaluationType = evaluationType, MaxEvaluationCount = (ushort)UnityEngine.Mathf.Max(1, maxEvaluationCount), EvaluatedTasks = evaluatedTasks }); - } else if (taskCount < 448) { - world.EntityManager.AddComponent(entity); - var evaluatedTasks = new FixedList64Bytes(); - for (int i = 0; i < bitmaskElementCount + countModeExtraElement; ++i) { - evaluatedTasks.Add(0); - } - world.EntityManager.AddComponentData(entity, new EvaluationComponent64() { EvaluationType = evaluationType, MaxEvaluationCount = (ushort)UnityEngine.Mathf.Max(1, maxEvaluationCount), EvaluatedTasks = evaluatedTasks }); - } else if (taskCount < 960) { - world.EntityManager.AddComponent(entity); - var evaluatedTasks = new FixedList128Bytes(); - for (int i = 0; i < bitmaskElementCount + countModeExtraElement; ++i) { - evaluatedTasks.Add(0); - } - world.EntityManager.AddComponentData(entity, new EvaluationComponent128() { EvaluationType = evaluationType, MaxEvaluationCount = (ushort)UnityEngine.Mathf.Max(1, maxEvaluationCount), EvaluatedTasks = evaluatedTasks }); - } else if (taskCount < 4032) { - world.EntityManager.AddComponent(entity); - var evaluatedTasks = new FixedList512Bytes(); - for (int i = 0; i < bitmaskElementCount + countModeExtraElement; ++i) { - evaluatedTasks.Add(0); - } - world.EntityManager.AddComponentData(entity, new EvaluationComponent512() { EvaluationType = evaluationType, MaxEvaluationCount = (ushort)UnityEngine.Mathf.Max(1, maxEvaluationCount), EvaluatedTasks = evaluatedTasks }); - } else if (taskCount < 32704) { - world.EntityManager.AddComponent(entity); - var evaluatedTasks = new FixedList4096Bytes(); - for (int i = 0; i < bitmaskElementCount + countModeExtraElement; ++i) { - evaluatedTasks.Add(0); - } - world.EntityManager.AddComponentData(entity, new EvaluationComponent4096() { EvaluationType = evaluationType, MaxEvaluationCount = (ushort)UnityEngine.Mathf.Max(1, maxEvaluationCount), EvaluatedTasks = evaluatedTasks }); - } else { - UnityEngine.Debug.LogError("Error: Trees with more than 32,703 tasks are not supported. Please email support@opsive.com."); - } - } - - /// - /// Resets the evaluation component data for the specified entity by clearing all evaluated task flags. - /// - /// The ECS world containing the entity. - /// The entity whose evaluation component should be reset. - public static void ResetEvaluationComponent(World world, Entity entity) - { - if (world.EntityManager.HasComponent(entity)) { - var evaluateComponent = world.EntityManager.GetComponentData(entity); - var evaluatedTasks = evaluateComponent.EvaluatedTasks; - for (int i = 0; i < evaluatedTasks.Length; ++i) { - evaluatedTasks[i] = 0; - } - evaluateComponent.EvaluatedTasks = evaluatedTasks; - world.EntityManager.SetComponentData(entity, evaluateComponent); - } else if (world.EntityManager.HasComponent(entity)) { - var evaluateComponent = world.EntityManager.GetComponentData(entity); - var evaluatedTasks = evaluateComponent.EvaluatedTasks; - for (int i = 0; i < evaluatedTasks.Length; ++i) { - evaluatedTasks[i] = 0; - } - evaluateComponent.EvaluatedTasks = evaluatedTasks; - world.EntityManager.SetComponentData(entity, evaluateComponent); - } else if (world.EntityManager.HasComponent(entity)) { - var evaluateComponent = world.EntityManager.GetComponentData(entity); - var evaluatedTasks = evaluateComponent.EvaluatedTasks; - for (int i = 0; i < evaluatedTasks.Length; ++i) { - evaluatedTasks[i] = 0; - } - evaluateComponent.EvaluatedTasks = evaluatedTasks; - world.EntityManager.SetComponentData(entity, evaluateComponent); - } else if (world.EntityManager.HasComponent(entity)) { - var evaluateComponent = world.EntityManager.GetComponentData(entity); - var evaluatedTasks = evaluateComponent.EvaluatedTasks; - for (int i = 0; i < evaluatedTasks.Length; ++i) { - evaluatedTasks[i] = 0; - } - evaluateComponent.EvaluatedTasks = evaluatedTasks; - world.EntityManager.SetComponentData(entity, evaluateComponent); - } else if (world.EntityManager.HasComponent(entity)) { - var evaluateComponent = world.EntityManager.GetComponentData(entity); - var evaluatedTasks = evaluateComponent.EvaluatedTasks; - for (int i = 0; i < evaluatedTasks.Length; ++i) { - evaluatedTasks[i] = 0; - } - evaluateComponent.EvaluatedTasks = evaluatedTasks; - world.EntityManager.SetComponentData(entity, evaluateComponent); - } - } - - /// - /// Removes the evaluation component from the specified entity. - /// - /// The ECS world containing the entity. - /// The entity whose evaluation component should be removed. - public static void RemoveEvaluationComponent(World world, Entity entity) - { - if (world.EntityManager.HasComponent(entity)) { - world.EntityManager.RemoveComponent(entity); - } else if (world.EntityManager.HasComponent(entity)) { - world.EntityManager.RemoveComponent(entity); - } else if (world.EntityManager.HasComponent(entity)) { - world.EntityManager.RemoveComponent(entity); - } else if (world.EntityManager.HasComponent(entity)) { - world.EntityManager.RemoveComponent(entity); - } else if (world.EntityManager.HasComponent(entity)) { - world.EntityManager.RemoveComponent(entity); - } - } - - /// - /// Adds the components necessary in order to trigger an interrupt. - /// - /// The EntityManager that the entity belongs to. - /// The entity that should have the components added. - public static void AddInterruptComponents(EntityManager entityManager, Entity entity) - { - entityManager.AddComponent(entity); - entityManager.SetComponentEnabled(entity, false); - entityManager.AddComponent(entity); - entityManager.SetComponentEnabled(entity, false); - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Utility/ComponentUtility.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Utility/ComponentUtility.cs.meta deleted file mode 100644 index 1a1e278..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Utility/ComponentUtility.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1bfee368f88aa6e4a81281d10c71072d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Utility/SaveManager.cs b/Packages/com.opsive.behaviordesigner/Runtime/Utility/SaveManager.cs deleted file mode 100644 index 08a810b..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Utility/SaveManager.cs +++ /dev/null @@ -1,651 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Utility -{ - using Opsive.BehaviorDesigner.Runtime; - using Opsive.BehaviorDesigner.Runtime.Components; - using Opsive.BehaviorDesigner.Runtime.Tasks; - using Opsive.GraphDesigner.Runtime; - using Opsive.GraphDesigner.Runtime.Variables; - using Opsive.Shared.Utility; - using System; - using System.Collections; - using System.Collections.Generic; - using System.IO; - using Unity.Entities; - using UnityEngine; - using static Opsive.BehaviorDesigner.Runtime.BehaviorTreeData; - - /// - /// Helper class which will save and load behavior tree tasks. - /// - public static class SaveManager - { - /// - /// Specifies which objects should be saved. - /// - public enum VariableSaveScope : byte - { - GameObjectVariables = 1, // Saves the GameObjectVariables. - SceneVariables = 2, // Saves the SceneVariables. - ProjectVariables = 4 // Saves the ProjectVariables. - } - - /// - /// The save data associated with the behavior tree and shared variables. - /// - [System.Serializable] - public struct SaveData - { - [Tooltip("The behavior tree save data.")] - public BehaviorTreeSaveData[] BehaviorTreeSaveData; - [Tooltip("The external shared variable save data.")] - public VariableSaveData[] VariableSaveData; - } - - /// - /// The save data associated with the behavior tree. - /// - [System.Serializable] - public struct BehaviorTreeSaveData - { - [Tooltip("The unique ID of the save data. This will change each time the data is serialized")] - public int UniqueID; - [Tooltip("The loaded task components.")] - public Serialization[] TaskComponents; - [Tooltip("The loaded branch components.")] - public Serialization[] BranchComponents; - [Tooltip("The loaded reevaluate task components.")] - public Serialization[] ReevaluateTaskComponents; - [Tooltip("The user task data.")] - public TaskSaveData[] TaskData; - [Tooltip("The values of the graph SharedVariables.")] - public VariableSaveData GraphSharedVariables; - } - - /// - /// The save data associated with the shared variables. - /// - [System.Serializable] - public struct VariableSaveData - { - [Tooltip("The unique ID of the variable data. This will change each time the data is serialized")] - public int UniqueID; - [Tooltip("The values of the SharedVariables.")] - public Serialization[] Values; - [Tooltip("The scope of the variables.")] - public SharedVariable.SharingScope Scope; - } - - /// - /// Container for the task save data. Allows for nested tasks. - /// - [System.Serializable] - public struct TaskSaveData - { - [Tooltip("The save data associated with each task.")] - public Serialization[] Value; - } - - /// - /// Gets the save data from the specified behavior trees. - /// - /// The behavior trees that should be saved. - /// Specifies which variables should be saved. Graph variables will automatically be saved. - /// The resulting save data. Can be null. - public static SaveData? Save(BehaviorTree[] behaviorTrees, VariableSaveScope variableSaveScope = 0) - { - if (!Application.isPlaying) { - Debug.LogWarning($"Warning: Behavior trees can only be saved at runtime."); - return null; - } - - if (behaviorTrees.Length == 0) { - return null; - } - - // Assume all behavior trees can be saved. - var saveData = new SaveData(); - saveData.BehaviorTreeSaveData = new BehaviorTreeSaveData[behaviorTrees.Length]; - var variableSaveDataList = new List(); - HashSet savedGameObjectVariables = null; - var behaviorTreeSaveCount = 0; - for (int i = 0; i < behaviorTrees.Length; ++i) { - if (behaviorTrees[i] == null) { - continue; - } - - // Add the save data to the array if the save is valid. - var behaviorTreeSaveData = Save(behaviorTrees[i]); - if (behaviorTreeSaveData.HasValue) { - saveData.BehaviorTreeSaveData[behaviorTreeSaveCount] = behaviorTreeSaveData.Value; - behaviorTreeSaveCount++; - - // The associated GameObject variables may also need to be saved. - if ((variableSaveScope & VariableSaveScope.GameObjectVariables) != 0) { - // Only save the GameObject variables once. - if (savedGameObjectVariables == null) { - savedGameObjectVariables = new HashSet(); - } - - if (savedGameObjectVariables.Contains(behaviorTrees[i].gameObject)) { - continue; - } - savedGameObjectVariables.Add(behaviorTrees[i].gameObject); - - // The GameObject variables can be saved. - var gameObjectSharedVariables = behaviorTrees[i].gameObject.GetComponent(); - if (gameObjectSharedVariables != null) { - var variableSaveData = Save(gameObjectSharedVariables); - if (variableSaveData.HasValue) { - variableSaveDataList.Add(variableSaveData.Value); - } - } - } - } - } - - // Not all behavior trees can be saved. - if (behaviorTrees.Length != behaviorTreeSaveCount) { - var behaviorTreesSaveData = saveData.BehaviorTreeSaveData; - System.Array.Resize(ref behaviorTreesSaveData, behaviorTreeSaveCount); - saveData.BehaviorTreeSaveData = behaviorTreesSaveData; - } - - // The scene variables can be saved. - if ((variableSaveScope & VariableSaveScope.SceneVariables) != 0) { - if (SceneSharedVariables.Instance != null) { - var variableSaveData = Save(SceneSharedVariables.Instance); - if (variableSaveData.HasValue) { - variableSaveDataList.Add(variableSaveData.Value); - } - } - } - - // The project variables can be saved. - if ((variableSaveScope & VariableSaveScope.ProjectVariables) != 0) { - if (ProjectSharedVariables.Instance != null) { - var variableSaveData = Save(ProjectSharedVariables.Instance); - if (variableSaveData.HasValue) { - variableSaveDataList.Add(variableSaveData.Value); - } - } - } - - // There has to be something to be saved. - if (behaviorTreeSaveCount == 0 && variableSaveDataList.Count == 0) { - return null; - } - - // Persist the variable save data. - if (variableSaveDataList != null && variableSaveDataList.Count > 0) { - saveData.VariableSaveData = variableSaveDataList.ToArray(); - } - - return saveData; - } - - /// - /// Saves the save data from the specified behavior trees to the specified file. - /// - /// The behavior trees that should be saved. - /// The save data path. - /// Specifies which variables should be saved. Graph variables will automatically be saved. - /// True if at least one behavior tree's save data was saved. - public static bool Save(BehaviorTree[] behaviorTrees, string filePath, VariableSaveScope variableSaveScope = 0) - { - var saveData = Save(behaviorTrees, variableSaveScope); - if (!saveData.HasValue) { - return false; - } - - // Save the save data. - if (File.Exists(filePath)) { - File.Delete(filePath); - } - try { - if (!Directory.Exists(Path.GetDirectoryName(filePath))) { - Directory.CreateDirectory(Path.GetDirectoryName(filePath)); - } - var fileStream = File.Create(filePath); - using (var streamWriter = new StreamWriter(fileStream)) { - streamWriter.Write(JsonUtility.ToJson(saveData)); - } - fileStream.Close(); - } catch (System.Exception e) { - Debug.LogException(e); - return false; - } - - return true; - } - - /// - /// Returns the save data associated with the behavior tree. - /// - /// The behavior tree that should be saved. - /// The save data associated with the behavior tree. - private static BehaviorTreeSaveData? Save(BehaviorTree behaviorTree) - { - if (behaviorTree.Entity.Index == 0) { - Debug.LogWarning($"Warning: The behavior tree {behaviorTree.name} must be active in order to be saved.", behaviorTree); - return null; - } - - if (behaviorTree.LogicNodes == null || behaviorTree.LogicNodes.Length == 0) { - Debug.LogWarning($"Warning: The behavior tree {behaviorTree.name} must have tasks in order to be saved.", behaviorTree); - return null; - } - - // The current task status must be serialized. - var taskComponents = behaviorTree.World.EntityManager.GetBuffer(behaviorTree.Entity); - var serializedTaskComponents = new Serialization[taskComponents.Length]; - for (int i = 0; i < taskComponents.Length; ++i) { - serializedTaskComponents[i] = Serialization.Serialize(taskComponents[i]); - } - - // The branch info must be serialized. - var branchComponents = behaviorTree.World.EntityManager.GetBuffer(behaviorTree.Entity); - var serializedBranchComponents = new Serialization[branchComponents.Length]; - for (int i = 0; i < branchComponents.Length; ++i) { - serializedBranchComponents[i] = Serialization.Serialize(branchComponents[i]); - } - - // The reevaluation status must be serialized. - Serialization[] serializedReevaluateTaskComponents = null; - if (behaviorTree.World.EntityManager.HasBuffer(behaviorTree.Entity)) { - var reevaluateTaskComponents = behaviorTree.World.EntityManager.GetBuffer(behaviorTree.Entity); - serializedReevaluateTaskComponents = new Serialization[reevaluateTaskComponents.Length]; - for (int i = 0; i < reevaluateTaskComponents.Length; ++i) { - serializedReevaluateTaskComponents[i] = Serialization.Serialize(reevaluateTaskComponents[i]); - } - } - - // Each task can serialize their own data. - var tasks = behaviorTree.LogicNodes; - var serializedTaskData = new List(); - for (int i = 0; i < tasks.Length; ++i) { - if (!(tasks[i] is ISavableTask)) { - continue; - } - - var saveableTask = tasks[i] as ISavableTask; - var reflectionType = saveableTask.GetSaveReflectionType(-1); - if (reflectionType != MemberVisibility.None) { - var serializedData = Serialization.Serialize(saveableTask, reflectionType, BehaviorTreeData.ValidateSerializedObject); - serializedTaskData.Add(new TaskSaveData() { Value = new Serialization[] { serializedData } }); - } else { - var taskData = saveableTask.Save(behaviorTree.World, behaviorTree.Entity); - if (taskData == null) { - continue; - } - - // Tasks can contain more tasks. Serialize each task element separately. - if (typeof(IList).IsAssignableFrom(taskData.GetType())) { - var taskDataList = taskData as IList; - var taskSaveData = new Serialization[taskDataList.Count]; - for (int j = 0; j < taskDataList.Count; ++j) { - if (taskDataList[j] is Serialization) { - taskSaveData[j] = taskDataList[j] as Serialization; - } else { - taskSaveData[j] = Serialization.Serialize(taskDataList[j]); - } - } - - serializedTaskData.Add(new TaskSaveData() { Value = taskSaveData }); - } else { - var serializedValue = new Serialization[] { (taskData is Serialization) ? (taskData as Serialization) : Serialization.Serialize(taskData) }; - serializedTaskData.Add(new TaskSaveData() { Value = serializedValue }); - } - } - } - - var behaviorTreeSaveData = new BehaviorTreeSaveData() { - UniqueID = behaviorTree.UniqueID, - TaskComponents = serializedTaskComponents, - BranchComponents = serializedBranchComponents, - ReevaluateTaskComponents = serializedReevaluateTaskComponents, - TaskData = serializedTaskData.ToArray(), - }; - var variableSaveData = Save(behaviorTree as ISharedVariableContainer); - if (variableSaveData.HasValue) { - behaviorTreeSaveData.GraphSharedVariables = variableSaveData.Value; - } - return behaviorTreeSaveData; - } - - /// - /// Returns the save data associated with the variable container. - /// - /// The variable container that should be saved. - /// The save data associated with the variable container. - private static VariableSaveData? Save(ISharedVariableContainer variableContainer) - { - if (variableContainer == null) { - return null; - } - - var sharedVariables = variableContainer.SharedVariables; - if (sharedVariables == null || sharedVariables.Length == 0) { - return null; - } - - Serialization[] serializedSharedVariablesData = null; - if (sharedVariables != null) { - serializedSharedVariablesData = new Serialization[sharedVariables.Length]; - for (int i = 0; i < sharedVariables.Length; ++i) { - serializedSharedVariablesData[i] = Serialization.Serialize(sharedVariables[i].GetValue(), BehaviorTreeData.ValidateSerializedObject); - } - } - - return new VariableSaveData() { - UniqueID = variableContainer.UniqueID, - Values = serializedSharedVariablesData, - Scope = variableContainer.VariableScope - }; - } - - /// - /// Loads the save data contained within the specified file. - /// - /// The behavior trees that should be loaded. - /// The save data path. - /// Optional callback after the graph variables have been restored. - /// True if at least one behavior tree's save data was loaded. - public static bool Load(BehaviorTree[] behaviorTrees, string filePath, Action afterVariablesRestored = null) - { - if (!Application.isPlaying) { - Debug.LogWarning($"Warning: Behavior trees can only be loaded at runtime."); - return false; - } - - if (!File.Exists(filePath)) { - Debug.LogWarning($"Warning: The file at path {filePath} does not exist."); - return false; - } - - var fileStream = File.Open(filePath, FileMode.Open); - var saveData = new SaveData(); - using (var streamReader = new StreamReader(fileStream)) { - var fileData = streamReader.ReadToEnd(); - saveData = JsonUtility.FromJson(fileData); - } - fileStream.Close(); - - return Load(behaviorTrees, saveData, afterVariablesRestored); - } - - /// - /// Loads the save data. - /// - /// The behavior trees that should be loaded. - /// The loaded save data. - /// Optional callback after the graph variables have been restored. - /// True if at least one behavior tree's save data was loaded. - public static bool Load(BehaviorTree[] behaviorTrees, SaveData saveData, Action afterVariablesRestored = null) - { - // Load the shared variables before the behavior trees so the trees can reference the variables. - var loadedSceneVariables = false; - var loadedProjectVariables = false; - var loadCount = 0; - Dictionary variableSaveDataByID = null; - if (saveData.VariableSaveData != null && saveData.VariableSaveData.Length > 0) { - // The save data is unique to the variable container specified by the unique ID. - for (int i = 0; i < saveData.VariableSaveData.Length; ++i) { - // Remember the scope to determine if the variable scope needs to be checked again when loading. - if (saveData.VariableSaveData[i].Scope == SharedVariable.SharingScope.GameObject) { - // The GameObject SharedVariables will be loaded with the behavior tree. - if (variableSaveDataByID == null) { - variableSaveDataByID = new Dictionary(); - } - variableSaveDataByID.Add(saveData.VariableSaveData[i].UniqueID, saveData.VariableSaveData[i]); - } else if (saveData.VariableSaveData[i].Scope == SharedVariable.SharingScope.Scene) { - // Restore the SceneSharedVariables if it hasn't already been loaded. - if (!loadedSceneVariables) { - if (SceneSharedVariables.Instance != null) { - if (Load(SceneSharedVariables.Instance, saveData.VariableSaveData[i])) { - loadCount++; - } - } - loadedSceneVariables = true; - } - } else if (saveData.VariableSaveData[i].Scope == SharedVariable.SharingScope.Project) { - // Restore the ProjectSharedVariables if it hasn't already been loaded. - if (!loadedProjectVariables) { - if (ProjectSharedVariables.Instance != null) { - if (Load(ProjectSharedVariables.Instance, saveData.VariableSaveData[i])) { - loadCount++; - } - } - } - } - } - } - - if (saveData.BehaviorTreeSaveData != null && saveData.BehaviorTreeSaveData.Length > 0) { - // The save data is unique to the behavior tree specified by the unique ID. - var behaviorTreeSaveDataByID = new Dictionary(); - for (int i = 0; i < saveData.BehaviorTreeSaveData.Length; ++i) { - behaviorTreeSaveDataByID.Add(saveData.BehaviorTreeSaveData[i].UniqueID, saveData.BehaviorTreeSaveData[i]); - } - - // Load the save data for each behavior tree. - for (int i = 0; i < behaviorTrees.Length; ++i) { - var behaviorTree = behaviorTrees[i]; - if (behaviorTreeSaveDataByID.TryGetValue(behaviorTree.UniqueID, out var behaviorTreeSaveData)) { - // Restore the GameObjectSharedVariables if they haven't already been restored. - if (variableSaveDataByID != null) { - var gameObjectSharedVariables = behaviorTree.GetComponent(); - if (gameObjectSharedVariables != null) { - if (variableSaveDataByID.TryGetValue(gameObjectSharedVariables.UniqueID, out var variableSaveData)) { - if (Load(gameObjectSharedVariables, variableSaveData)) { - loadCount++; - } - // Remove the ID after it has been loaded so the variables aren't loaded again. This can happen if multiple - // trees on the same GameObject reference the same GameObject variable. - variableSaveDataByID.Remove(gameObjectSharedVariables.UniqueID); - } - } - } - - // Restore the Graph SharedVariables. - if (Load(behaviorTree, behaviorTreeSaveData.GraphSharedVariables)) { - loadCount++; - } - - // Callback after the variables have been restored. - afterVariablesRestored?.Invoke(behaviorTree); - - // Populate the variables in an internal mapping for quick lookup. - var variableByNameMap = BehaviorTreeData.PopulateSharedVariablesMapping(behaviorTree, true); - - // Restore the tree after the variables have been restored. - if (Load(behaviorTree, behaviorTreeSaveData, afterVariablesRestored, variableByNameMap)) { - loadCount++; - } - } - } - } - - return loadCount > 0; - } - - /// - /// Loads the behavior tree from the specified save data. - /// - /// The behavior tree that should be restored. - /// The save data associated with the behavior tree. - /// Optional callback after the graph variables have been restored. - /// A mapping between the variable name and the variable reference. - /// True if the behavior tree was successfully loaded. - private static bool Load(BehaviorTree behaviorTree, BehaviorTreeSaveData saveData, Action afterVariablesRestored, Dictionary variableByNameMap) - { - // The ID must match. - if (behaviorTree.UniqueID != saveData.UniqueID) { - Debug.LogError($"Error: The behavior tree {behaviorTree.name} cannot be loaded due to being saved in a different version of the behavior tree."); - return false; - } - - // The behavior tree must be initialized in order to be loaded. - if (!behaviorTree.InitializeTree()) { - return false; - } - - // Stop the behavior tree so all tasks issue their end callback. - var enableEntity = behaviorTree.World.EntityManager.HasComponent(behaviorTree.Entity) && behaviorTree.World.EntityManager.IsComponentEnabled(behaviorTree.Entity); - var evaluateEntity = behaviorTree.World.EntityManager.HasComponent(behaviorTree.Entity) && behaviorTree.World.EntityManager.IsComponentEnabled(behaviorTree.Entity); - var active = behaviorTree.IsActive(); - if (active) { - behaviorTree.StopBehavior(); - } - - // Restore the task component status. - var taskComponents = behaviorTree.World.EntityManager.GetBuffer(behaviorTree.Entity); - for (int i = 0; i < saveData.TaskComponents.Length; ++i) { - taskComponents[i] = (TaskComponent)saveData.TaskComponents[i].DeserializeFields(MemberVisibility.Public); - } - - var branchComponents = behaviorTree.World.EntityManager.GetBuffer(behaviorTree.Entity); - // Restore the branch info components. - for (int i = 0; i < saveData.BranchComponents.Length; ++i) { - branchComponents[i] = (BranchComponent)saveData.BranchComponents[i].DeserializeFields(MemberVisibility.Public); - if (branchComponents[i].ActiveFlagComponentType.TypeIndex == TypeIndex.Null) { - continue; - } - behaviorTree.World.EntityManager.SetComponentEnabled(behaviorTree.Entity, branchComponents[i].ActiveFlagComponentType, true); - } - - if (behaviorTree.World.EntityManager.HasBuffer(behaviorTree.Entity)) { - var reevaluatedTaskComponents = behaviorTree.World.EntityManager.GetBuffer(behaviorTree.Entity); - // Restore the reevaluated components. - for (int i = 0; i < saveData.ReevaluateTaskComponents.Length; ++i) { - reevaluatedTaskComponents[i] = (ReevaluateTaskComponent)saveData.ReevaluateTaskComponents[i].DeserializeFields(MemberVisibility.Public); - if (reevaluatedTaskComponents[i].ReevaluateFlagComponentType.TypeIndex == TypeIndex.Null) { - continue; - } - behaviorTree.World.EntityManager.SetComponentEnabled(behaviorTree.Entity, reevaluatedTaskComponents[i].ReevaluateFlagComponentType, true); - } - } - - // Each task can serialize their own data. - var tasks = behaviorTree.LogicNodes; - var saveDataIndex = 0; - ResizableArray taskReferences = null; - for (int i = 0; i < tasks.Length; ++i) { - if (!(tasks[i] is ISavableTask)) { - if (tasks[i] is Task) { - (tasks[i] as Task).Initialize(behaviorTree, (ushort)i); - } - continue; - } - - var taskSaveData = saveData.TaskData[saveDataIndex]; - saveDataIndex++; - if (taskSaveData.Value == null || taskSaveData.Value.Length == 0) { - if (tasks[i] is Task) { - (tasks[i] as Task).Initialize(behaviorTree, (ushort)i); - } - continue; - } - - var saveableTask = tasks[i] as ISavableTask; - var reflectionType = saveableTask.GetSaveReflectionType(-1); - if (reflectionType != MemberVisibility.None) { - taskSaveData.Value[0].DeserializeFields(saveableTask, saveableTask.GetSaveReflectionType(0), BehaviorTreeData.ValidateDeserializedTypeObject, - (object fieldInfoObj, object task, object value) => - { - return BehaviorTreeData.ValidateDeserializedObject(fieldInfoObj, task, value, ref variableByNameMap, ref taskReferences); - }); - } else { - if (taskSaveData.Value.Length == 1) { - if (saveableTask.GetSaveReflectionType(0) != MemberVisibility.None) { - saveableTask.Load(taskSaveData.Value[0], behaviorTree.World, behaviorTree.Entity, variableByNameMap, ref taskReferences); - } else { - saveableTask.Load(taskSaveData.Value[0].DeserializeFields(MemberVisibility.Public, BehaviorTreeData.ValidateDeserializedTypeObject, - (object fieldInfoObj, object task, object value) => - { - return BehaviorTreeData.ValidateDeserializedObject(fieldInfoObj, task, value, ref variableByNameMap, ref taskReferences); - }), behaviorTree.World, behaviorTree.Entity, variableByNameMap, ref taskReferences); - } - } else { - var taskData = new object[taskSaveData.Value.Length]; - for (int j = 0; j < taskSaveData.Value.Length; ++j) { - if (taskSaveData.Value[j] == null) { - continue; - } - - if (saveableTask.GetSaveReflectionType(j) != MemberVisibility.None) { - // The task is responsible for deserializing the fields. - taskData[j] = taskSaveData.Value[j]; - } else { - taskData[j] = taskSaveData.Value[j].DeserializeFields(MemberVisibility.Public, BehaviorTreeData.ValidateDeserializedTypeObject, - (object fieldInfoObj, object task, object value) => - { - return BehaviorTreeData.ValidateDeserializedObject(fieldInfoObj, task, value, ref variableByNameMap, ref taskReferences); - }); - } - } - saveableTask.Load(taskData, behaviorTree.World, behaviorTree.Entity, variableByNameMap, ref taskReferences); - } - } - if (tasks[i] is Task) { - (tasks[i] as Task).Initialize(behaviorTree, (ushort)i); - } - } - - // After the tree has been loaded the task references need to be assigned. - BehaviorTreeData.AssignTaskReferences(behaviorTree.LogicNodes, taskReferences); - - if (active) { - behaviorTree.StartBehavior(); - } - if (enableEntity) { - behaviorTree.World.EntityManager.SetComponentEnabled(behaviorTree.Entity, true); - } - if (evaluateEntity) { - behaviorTree.World.EntityManager.SetComponentEnabled(behaviorTree.Entity, true); - } - - return true; - } - - /// - /// Loads the variable from the specified file path. - /// - /// The variable container that should be restored. - /// The save data associated with the variable container. - /// True if the variable container was successfully loaded. - private static bool Load(ISharedVariableContainer variableContainer, VariableSaveData saveData) - { - // There may not be any variables saved. - if (saveData.UniqueID == 0) { - return false; - } - - // The ID must match. - if (variableContainer.UniqueID != saveData.UniqueID) { - Debug.LogError($"Error: The variables {variableContainer} cannot be loaded due to being saved in a different version of the variable container."); - return false; - } - - var sharedVariables = variableContainer.SharedVariables; - if (sharedVariables != null) { - for (int i = 0; i < saveData.Values.Length; ++i) { - if (saveData.Values[i] == null) { - continue; - } - - var sharedVariableValue = saveData.Values[i].DeserializeFields(MemberVisibility.Public); - sharedVariables[i].SetValue(sharedVariableValue); - } - } - - return true; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Utility/SaveManager.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Utility/SaveManager.cs.meta deleted file mode 100644 index 7e9425d..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Utility/SaveManager.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6c5777d50e5756a4b85d335f81c9d301 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Utility/TraversalUtility.cs b/Packages/com.opsive.behaviordesigner/Runtime/Utility/TraversalUtility.cs deleted file mode 100644 index 0cfbb97..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Utility/TraversalUtility.cs +++ /dev/null @@ -1,108 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Utility -{ - using Opsive.BehaviorDesigner.Runtime.Components; - using Unity.Burst; - using Unity.Entities; - - /// - /// Utility functions that are used throughout the behavior tree execution. - /// - [BurstCompile] - public static class TraversalUtility - { - /// - /// Returns true if the specified index is a child of the parent index. - /// - /// The index to determine if it is a child. - /// The index of the parent. - /// The array of nodes. - /// True if the specified index is a child of the parent index. - [BurstCompile] - public static bool IsParent(ushort index, ushort parentIndex, ref DynamicBuffer taskComponents) - { - if (parentIndex == ushort.MaxValue || index == ushort.MaxValue) { - return false; - } - - // The child can be considered a parent of itself. - if (parentIndex == index) { - return true; - } - - // Return true as soon as there is a parent. - while (index != ushort.MaxValue) { - if (index == parentIndex) { - return true; - } - - index = taskComponents[index].ParentIndex; - } - - return false; - } - - /// - /// Returns the total number of children belonging to the specified node. - /// - /// The index of the task to retrieve the child count of. - /// The array of nodes. - /// The total number of children belonging to the specified node. - public static int GetChildCount(int index, ref DynamicBuffer taskComponents) - { - if (index == ushort.MaxValue) { - return 0; - } - - var taskComponent = taskComponents[index]; - if (taskComponent.SiblingIndex != ushort.MaxValue) { - return taskComponent.SiblingIndex - taskComponent.Index - 1; - } - - if (taskComponent.Index + 1 == taskComponents.Length) { - return 0; - } - - var childTaskComponent = taskComponents[taskComponent.Index + 1]; - if (childTaskComponent.ParentIndex != taskComponent.Index) { - return 0; - } - - // Determine the child count based off of the sibling index. - var lastChildTaskComponent = childTaskComponent; - while (childTaskComponent.ParentIndex == taskComponent.Index) { - lastChildTaskComponent = childTaskComponent; - if (childTaskComponent.SiblingIndex == ushort.MaxValue) { - break; - } - childTaskComponent = taskComponents[childTaskComponent.SiblingIndex]; - } - - return lastChildTaskComponent.Index - taskComponent.Index + GetChildCount(lastChildTaskComponent.Index, ref taskComponents); - } - - /// - /// Returns the immediate number of children belonging to the specified task. - /// - /// The task to retrieve the children of. - /// The list of tasks. - /// The number of immediate children belonging to the specified task. - [BurstCompile] - public static int GetImmediateChildCount(ref TaskComponent task, ref DynamicBuffer taskComponents) - { - var count = 0; - var siblingIndex = task.Index + 1; - while (siblingIndex < taskComponents.Length && taskComponents[siblingIndex].ParentIndex == task.Index) { - count++; - siblingIndex = taskComponents[siblingIndex].SiblingIndex; - } - return count; - } - } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Utility/TraversalUtility.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Utility/TraversalUtility.cs.meta deleted file mode 100644 index 9b59ceb..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Utility/TraversalUtility.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: be274f359e2db764998eb36f2adeaed9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Utility/Types.cs b/Packages/com.opsive.behaviordesigner/Runtime/Utility/Types.cs deleted file mode 100644 index d3906be..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Utility/Types.cs +++ /dev/null @@ -1,42 +0,0 @@ -#if GRAPH_DESIGNER -/// --------------------------------------------- -/// Behavior Designer -/// Copyright (c) Opsive. All Rights Reserved. -/// https://www.opsive.com -/// --------------------------------------------- -namespace Opsive.BehaviorDesigner.Runtime.Utility -{ - using UnityEngine; - using System; - - /// - /// Specifies a range between two floats. - /// - public struct RangeFloat - { - [Tooltip("The minimal float value (inclusive).")] - [SerializeField] public float Min; - [Tooltip("The maximum float value (inclusive).")] - [SerializeField] public float Max; - - public float RandomValue { get => UnityEngine.Random.Range(Min, Max); } - - /// - /// RangeFloat constructor. - /// - /// The minimal float value. - /// The maximal float value. - public RangeFloat(float min, float max) - { - Min = min; - Max = max; - } - } - - /// - /// Specifies that the task name should be hidden in the node view. - /// - [AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = false)] - public class HideNameInTaskControlAttribute : Attribute { } -} -#endif \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/Runtime/Utility/Types.cs.meta b/Packages/com.opsive.behaviordesigner/Runtime/Utility/Types.cs.meta deleted file mode 100644 index 6ef0ed1..0000000 --- a/Packages/com.opsive.behaviordesigner/Runtime/Utility/Types.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9d76db679b119fe4c9359f9b9b0c2869 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.opsive.behaviordesigner/package.json b/Packages/com.opsive.behaviordesigner/package.json deleted file mode 100644 index 9310dd6..0000000 --- a/Packages/com.opsive.behaviordesigner/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "com.opsive.behaviordesigner", - "version": "2.1.12", - "displayName": "Opsive Behavior Designer", - "description": "A behavior tree implementation based on DOTS.", - "documentationUrl": "https://opsive.com/support/documentation/behavior-designer-pro/", - "author": { - "name": "Opsive", - "email": "support@opsive.com", - "url": "https://opsive.com" - }, - "dependencies": { - "com.opsive.shared": "2.0.0", - "com.opsive.graphdesigner": "2.0.0", - "com.unity.burst": "1.8.17", - "com.unity.entities": "1.3.8" - }, - "samples": [ - { - "displayName": "Sample", - "description": "Sample scenes that show a variety of use cases.", - "path": "Samples~" - } - ] -} \ No newline at end of file diff --git a/Packages/com.opsive.behaviordesigner/package.json.meta b/Packages/com.opsive.behaviordesigner/package.json.meta deleted file mode 100644 index 264d86b..0000000 --- a/Packages/com.opsive.behaviordesigner/package.json.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: af982e6bd82bf7b4893755d01662c156 -PackageManifestImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index c0592c6..785cdcc 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -15,17 +15,6 @@ "com.unity.modules.animation": "1.0.0" } }, - "com.opsive.behaviordesigner": { - "version": "file:com.opsive.behaviordesigner", - "depth": 0, - "source": "embedded", - "dependencies": { - "com.opsive.shared": "2.0.0", - "com.opsive.graphdesigner": "2.0.0", - "com.unity.burst": "1.8.17", - "com.unity.entities": "1.3.8" - } - }, "com.opsive.graphdesigner": { "version": "file:com.opsive.graphdesigner", "depth": 0, @@ -178,42 +167,18 @@ "url": "https://packages.unity.cn" }, "com.unity.collections": { - "version": "2.5.1", + "version": "1.2.4", "depth": 2, "source": "registry", "dependencies": { - "com.unity.burst": "1.8.17", - "com.unity.nuget.mono-cecil": "1.11.4", - "com.unity.test-framework": "1.4.5", - "com.unity.test-framework.performance": "3.0.3" - }, - "url": "https://packages.unity.cn" - }, - "com.unity.entities": { - "version": "1.3.8", - "depth": 1, - "source": "registry", - "dependencies": { - "com.unity.burst": "1.8.18", - "com.unity.collections": "2.5.1", - "com.unity.mathematics": "1.3.2", - "com.unity.modules.audio": "1.0.0", - "com.unity.serialization": "3.1.1", - "com.unity.profiling.core": "1.0.2", - "com.unity.modules.physics": "1.0.0", - "com.unity.nuget.mono-cecil": "1.11.4", - "com.unity.modules.uielements": "1.0.0", - "com.unity.modules.assetbundle": "1.0.0", - "com.unity.modules.unityanalytics": "1.0.0", - "com.unity.modules.unitywebrequest": "1.0.0", - "com.unity.scriptablebuildpipeline": "1.21.21", - "com.unity.test-framework.performance": "3.0.3" + "com.unity.burst": "1.6.6", + "com.unity.test-framework": "1.1.31" }, "url": "https://packages.unity.cn" }, "com.unity.ext.nunit": { - "version": "2.0.3", - "depth": 4, + "version": "1.0.6", + "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.cn" @@ -261,15 +226,8 @@ "url": "https://packages.unity.cn" }, "com.unity.mathematics": { - "version": "1.3.2", - "depth": 2, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.cn" - }, - "com.unity.nuget.mono-cecil": { - "version": "1.11.4", - "depth": 2, + "version": "1.2.6", + "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.cn" @@ -281,13 +239,6 @@ "dependencies": {}, "url": "https://packages.unity.cn" }, - "com.unity.profiling.core": { - "version": "1.0.2", - "depth": 2, - "source": "registry", - "dependencies": {}, - "url": "https://packages.unity.cn" - }, "com.unity.render-pipelines.core": { "version": "14.0.12", "depth": 1, @@ -333,16 +284,6 @@ "dependencies": {}, "url": "https://packages.unity.cn" }, - "com.unity.serialization": { - "version": "3.1.1", - "depth": 2, - "source": "registry", - "dependencies": { - "com.unity.collections": "2.1.4", - "com.unity.burst": "1.7.2" - }, - "url": "https://packages.unity.cn" - }, "com.unity.settings-manager": { "version": "2.1.0", "depth": 2, @@ -371,26 +312,16 @@ "url": "https://packages.unity.cn" }, "com.unity.test-framework": { - "version": "1.4.5", - "depth": 3, + "version": "1.1.33", + "depth": 0, "source": "registry", "dependencies": { - "com.unity.ext.nunit": "2.0.3", + "com.unity.ext.nunit": "1.0.6", "com.unity.modules.imgui": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0" }, "url": "https://packages.unity.cn" }, - "com.unity.test-framework.performance": { - "version": "3.0.3", - "depth": 2, - "source": "registry", - "dependencies": { - "com.unity.test-framework": "1.1.31", - "com.unity.modules.jsonserialize": "1.0.0" - }, - "url": "https://packages.unity.cn" - }, "com.unity.textmeshpro": { "version": "3.0.9", "depth": 0, diff --git a/zeling_v2.sln b/zeling_v2.sln index e509af5..7ef6349 100644 --- a/zeling_v2.sln +++ b/zeling_v2.sln @@ -7,8 +7,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Micosmo.SensorToolkit", "Mi EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kybernetik.Animancer", "Kybernetik.Animancer.csproj", "{EB7355A3-BDAA-C485-B7C1-9B903FA5AD60}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Opsive.BehaviorDesigner.Runtime", "Opsive.BehaviorDesigner.Runtime.csproj", "{AB534E4D-E307-E5F5-29A3-E636CA9EA9B7}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BaseGames.Equipment", "BaseGames.Equipment.csproj", "{5D5E5DE0-4DD3-2C37-6721-825F717F5BB3}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Kybernetik.Animancer.Editor", "Kybernetik.Animancer.Editor.csproj", "{651ACFAE-F0CD-6ABB-E0CE-10529F18B4DB}" @@ -53,8 +51,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BaseGames.Player", "BaseGam EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BaseGames.Audio", "BaseGames.Audio.csproj", "{F9D314BA-E5AD-4A05-04AB-93799B5E95AE}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Opsive.BehaviorDesigner.Editor.Managers", "Opsive.BehaviorDesigner.Editor.Managers.csproj", "{14945582-FEE1-FBE7-F2F4-63A8E55E6EB6}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BaseGames.Parry", "BaseGames.Parry.csproj", "{CFD59BED-321E-6F34-65CA-408816F768FA}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BaseGames.Quest", "BaseGames.Quest.csproj", "{4D3050DE-F729-61B6-5E21-4D4D1BAA9DD5}" @@ -79,8 +75,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Opsive.GraphDesigner.Runtim EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BaseGames.EventChain", "BaseGames.EventChain.csproj", "{E66CCC51-3F0E-5321-D038-01CE529A5818}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Opsive.BehaviorDesigner.Editor.Controls.NodeViews", "Opsive.BehaviorDesigner.Editor.Controls.NodeViews.csproj", "{8BAE8B7D-DF32-F95B-4854-25895C8AF89E}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BaseGames.Combat", "BaseGames.Combat.csproj", "{8BEFFA97-0E4E-2B59-7C2F-634A5BA5B0E5}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BaseGames.Tests.PlayMode", "BaseGames.Tests.PlayMode.csproj", "{E3F8AFC1-C10D-B715-91EF-4AD9F9B46B1F}" @@ -141,10 +135,6 @@ Global {EB7355A3-BDAA-C485-B7C1-9B903FA5AD60}.Debug|Any CPU.Build.0 = Debug|Any CPU {EB7355A3-BDAA-C485-B7C1-9B903FA5AD60}.Release|Any CPU.ActiveCfg = Release|Any CPU {EB7355A3-BDAA-C485-B7C1-9B903FA5AD60}.Release|Any CPU.Build.0 = Release|Any CPU - {AB534E4D-E307-E5F5-29A3-E636CA9EA9B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AB534E4D-E307-E5F5-29A3-E636CA9EA9B7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AB534E4D-E307-E5F5-29A3-E636CA9EA9B7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AB534E4D-E307-E5F5-29A3-E636CA9EA9B7}.Release|Any CPU.Build.0 = Release|Any CPU {5D5E5DE0-4DD3-2C37-6721-825F717F5BB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5D5E5DE0-4DD3-2C37-6721-825F717F5BB3}.Debug|Any CPU.Build.0 = Debug|Any CPU {5D5E5DE0-4DD3-2C37-6721-825F717F5BB3}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -233,10 +223,6 @@ Global {F9D314BA-E5AD-4A05-04AB-93799B5E95AE}.Debug|Any CPU.Build.0 = Debug|Any CPU {F9D314BA-E5AD-4A05-04AB-93799B5E95AE}.Release|Any CPU.ActiveCfg = Release|Any CPU {F9D314BA-E5AD-4A05-04AB-93799B5E95AE}.Release|Any CPU.Build.0 = Release|Any CPU - {14945582-FEE1-FBE7-F2F4-63A8E55E6EB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {14945582-FEE1-FBE7-F2F4-63A8E55E6EB6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {14945582-FEE1-FBE7-F2F4-63A8E55E6EB6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {14945582-FEE1-FBE7-F2F4-63A8E55E6EB6}.Release|Any CPU.Build.0 = Release|Any CPU {CFD59BED-321E-6F34-65CA-408816F768FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CFD59BED-321E-6F34-65CA-408816F768FA}.Debug|Any CPU.Build.0 = Debug|Any CPU {CFD59BED-321E-6F34-65CA-408816F768FA}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -285,10 +271,6 @@ Global {E66CCC51-3F0E-5321-D038-01CE529A5818}.Debug|Any CPU.Build.0 = Debug|Any CPU {E66CCC51-3F0E-5321-D038-01CE529A5818}.Release|Any CPU.ActiveCfg = Release|Any CPU {E66CCC51-3F0E-5321-D038-01CE529A5818}.Release|Any CPU.Build.0 = Release|Any CPU - {8BAE8B7D-DF32-F95B-4854-25895C8AF89E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8BAE8B7D-DF32-F95B-4854-25895C8AF89E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8BAE8B7D-DF32-F95B-4854-25895C8AF89E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8BAE8B7D-DF32-F95B-4854-25895C8AF89E}.Release|Any CPU.Build.0 = Release|Any CPU {8BEFFA97-0E4E-2B59-7C2F-634A5BA5B0E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8BEFFA97-0E4E-2B59-7C2F-634A5BA5B0E5}.Debug|Any CPU.Build.0 = Debug|Any CPU {8BEFFA97-0E4E-2B59-7C2F-634A5BA5B0E5}.Release|Any CPU.ActiveCfg = Release|Any CPU