summaryrefslogtreecommitdiff
path: root/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem')
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Clear.cs41
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Clear.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetDuration.cs45
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetDuration.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetEmissionRate.cs49
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetEmissionRate.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetEnableEmission.cs49
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetEnableEmission.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetGravityModifier.cs45
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetGravityModifier.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetLoop.cs45
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetLoop.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetMaxParticles.cs45
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetMaxParticles.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetParticleCount.cs45
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetParticleCount.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetPlaybackSpeed.cs45
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetPlaybackSpeed.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetTime.cs45
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetTime.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsAlive.cs39
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsAlive.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsPaused.cs39
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsPaused.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsPlaying.cs39
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsPlaying.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsStopped.cs39
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsStopped.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Pause.cs41
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Pause.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Play.cs41
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Play.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetEmissionRate.cs48
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetEmissionRate.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetEnableEmission.cs49
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetEnableEmission.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetGravityModifier.cs44
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetGravityModifier.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetLoop.cs44
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetLoop.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetMaxParticles.cs44
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetMaxParticles.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetPlaybackSpeed.cs44
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetPlaybackSpeed.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartColor.cs44
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartColor.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartDelay.cs44
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartDelay.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartLifetime.cs44
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartLifetime.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartRotation.cs44
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartRotation.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartSize.cs44
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartSize.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartSpeed.cs44
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartSpeed.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetTime.cs44
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetTime.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Simulate.cs44
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Simulate.cs.meta8
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Stop.cs41
-rw-r--r--Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Stop.cs.meta8
62 files changed, 1606 insertions, 0 deletions
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Clear.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Clear.cs
new file mode 100644
index 00000000..38988c82
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Clear.cs
@@ -0,0 +1,41 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Clear the Particle System.")]
+ public class Clear : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ particleSystem.Clear();
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Clear.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Clear.cs.meta
new file mode 100644
index 00000000..63db0e0c
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Clear.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: de273e542591d5946a8728190438ae27
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetDuration.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetDuration.cs
new file mode 100644
index 00000000..304497d5
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetDuration.cs
@@ -0,0 +1,45 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Stores the duration of the Particle System.")]
+ public class GetDuration : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The duration of the ParticleSystem")]
+ [RequiredField]
+ public SharedFloat storeResult;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ storeResult.Value = particleSystem.main.duration;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ storeResult = 0;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetDuration.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetDuration.cs.meta
new file mode 100644
index 00000000..f41e7cee
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetDuration.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 02a4d610e82f1854c87701c4d51957fb
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetEmissionRate.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetEmissionRate.cs
new file mode 100644
index 00000000..c13c0470
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetEmissionRate.cs
@@ -0,0 +1,49 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Stores the emission rate of the Particle System.")]
+ public class GetEmissionRate : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The emission rate of the ParticleSystem")]
+ [RequiredField]
+ public SharedFloat storeResult;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+#if !(UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2)
+ Debug.Log("Warning: GetEmissionRate is not used in Unity 5.3 or later.");
+#else
+ storeResult.Value = particleSystem.emissionRate;
+#endif
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ storeResult = 0;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetEmissionRate.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetEmissionRate.cs.meta
new file mode 100644
index 00000000..1658d847
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetEmissionRate.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3adb98115d27ec64da9b5f56391570be
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetEnableEmission.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetEnableEmission.cs
new file mode 100644
index 00000000..f0a01b0e
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetEnableEmission.cs
@@ -0,0 +1,49 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Stores if the Particle System is emitting particles.")]
+ public class GetEnableEmission : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("Is the Particle System emitting particles?")]
+ [RequiredField]
+ public SharedBool storeResult;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+#if !(UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2)
+ storeResult.Value = particleSystem.emission.enabled;
+#else
+ storeResult.Value = particleSystem.enableEmission;
+#endif
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ storeResult = false;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetEnableEmission.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetEnableEmission.cs.meta
new file mode 100644
index 00000000..e894a6e4
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetEnableEmission.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 81dc1a241a2c872409a7919742df7581
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetGravityModifier.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetGravityModifier.cs
new file mode 100644
index 00000000..d967061a
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetGravityModifier.cs
@@ -0,0 +1,45 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Stores the gravity modifier of the Particle System.")]
+ public class GetGravityModifier : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The gravity modifier of the ParticleSystem")]
+ [RequiredField]
+ public SharedFloat storeResult;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ storeResult.Value = particleSystem.main.gravityModifierMultiplier;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ storeResult = 0;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetGravityModifier.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetGravityModifier.cs.meta
new file mode 100644
index 00000000..3412f534
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetGravityModifier.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7001d2ab41ef4e64190afc7f9bce1876
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetLoop.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetLoop.cs
new file mode 100644
index 00000000..aea4858e
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetLoop.cs
@@ -0,0 +1,45 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Stores if the Particle System should loop.")]
+ public class GetLoop : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("Should the ParticleSystem loop?")]
+ [RequiredField]
+ public SharedBool storeResult;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ storeResult.Value = particleSystem.main.loop;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ storeResult = false;
+ }
+ }
+}
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetLoop.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetLoop.cs.meta
new file mode 100644
index 00000000..bfa703a0
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetLoop.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 82f4ee8cf50887a4488fe6d0da18afc0
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetMaxParticles.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetMaxParticles.cs
new file mode 100644
index 00000000..7e71ccc0
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetMaxParticles.cs
@@ -0,0 +1,45 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Stores the max particles of the Particle System.")]
+ public class GetMaxParticles : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The max particles of the ParticleSystem")]
+ [RequiredField]
+ public SharedFloat storeResult;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ storeResult.Value = particleSystem.main.maxParticles;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ storeResult = 0;
+ }
+ }
+}
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetMaxParticles.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetMaxParticles.cs.meta
new file mode 100644
index 00000000..8e026028
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetMaxParticles.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 429771af65df81c49aaf4b34630473fe
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetParticleCount.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetParticleCount.cs
new file mode 100644
index 00000000..06c4fe96
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetParticleCount.cs
@@ -0,0 +1,45 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Stores the particle count of the Particle System.")]
+ public class GetParticleCount : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The particle count of the ParticleSystem")]
+ [RequiredField]
+ public SharedFloat storeResult;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ storeResult.Value = particleSystem.particleCount;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ storeResult = 0;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetParticleCount.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetParticleCount.cs.meta
new file mode 100644
index 00000000..c1cfbc05
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetParticleCount.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f32e2ff9de4ff7b47a256ac3b51123c6
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetPlaybackSpeed.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetPlaybackSpeed.cs
new file mode 100644
index 00000000..37b3e620
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetPlaybackSpeed.cs
@@ -0,0 +1,45 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Stores the playback speed of the Particle System.")]
+ public class GetPlaybackSpeed : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The playback speed of the ParticleSystem")]
+ [RequiredField]
+ public SharedFloat storeResult;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ storeResult.Value = particleSystem.main.simulationSpeed;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ storeResult = 0;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetPlaybackSpeed.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetPlaybackSpeed.cs.meta
new file mode 100644
index 00000000..12e27063
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetPlaybackSpeed.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f8f29f170ac706b498e7c933136d8036
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetTime.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetTime.cs
new file mode 100644
index 00000000..315474d5
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetTime.cs
@@ -0,0 +1,45 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Stores the time of the Particle System.")]
+ public class GetTime : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The time of the ParticleSystem")]
+ [RequiredField]
+ public SharedFloat storeResult;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ storeResult.Value = particleSystem.time;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ storeResult = 0;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetTime.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetTime.cs.meta
new file mode 100644
index 00000000..0cd924dc
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/GetTime.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9b15c7efbf98f7649adf8dd4474b0579
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsAlive.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsAlive.cs
new file mode 100644
index 00000000..49f56b98
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsAlive.cs
@@ -0,0 +1,39 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Is the Particle System alive?")]
+ public class IsAlive : Conditional
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ return particleSystem.IsAlive() ? TaskStatus.Success : TaskStatus.Failure;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsAlive.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsAlive.cs.meta
new file mode 100644
index 00000000..aa294a13
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsAlive.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3d554784e9a9fa040a2446402ba3f10e
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsPaused.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsPaused.cs
new file mode 100644
index 00000000..d0180464
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsPaused.cs
@@ -0,0 +1,39 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Is the Particle System paused?")]
+ public class IsPaused : Conditional
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ return particleSystem.isPaused ? TaskStatus.Success : TaskStatus.Failure;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsPaused.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsPaused.cs.meta
new file mode 100644
index 00000000..00a5c85f
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsPaused.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e4e9ab132f20dfa4095b3c90303ebf74
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsPlaying.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsPlaying.cs
new file mode 100644
index 00000000..ee9f9472
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsPlaying.cs
@@ -0,0 +1,39 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Is the Particle System playing?")]
+ public class IsPlaying : Conditional
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ return particleSystem.isPlaying ? TaskStatus.Success : TaskStatus.Failure;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsPlaying.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsPlaying.cs.meta
new file mode 100644
index 00000000..d3f13e4d
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsPlaying.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 654b51e99f64bfb489e12866a569f00e
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsStopped.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsStopped.cs
new file mode 100644
index 00000000..39642507
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsStopped.cs
@@ -0,0 +1,39 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Is the Particle System stopped?")]
+ public class IsStopped : Conditional
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ return particleSystem.isStopped ? TaskStatus.Success : TaskStatus.Failure;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsStopped.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsStopped.cs.meta
new file mode 100644
index 00000000..d0a054fb
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/IsStopped.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c719a7379c22b184380b4e63ccdfd064
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Pause.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Pause.cs
new file mode 100644
index 00000000..496b2db5
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Pause.cs
@@ -0,0 +1,41 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Pause the Particle System.")]
+ public class Pause : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ particleSystem.Pause();
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Pause.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Pause.cs.meta
new file mode 100644
index 00000000..d6e60239
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Pause.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c9c9cc56691817b49af4fd1cfbc3e363
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Play.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Play.cs
new file mode 100644
index 00000000..6797351c
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Play.cs
@@ -0,0 +1,41 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Play the Particle System.")]
+ public class Play : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ particleSystem.Play();
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Play.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Play.cs.meta
new file mode 100644
index 00000000..276c73c4
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Play.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a8ffb889d35074d4fb08d8502155c0b2
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetEmissionRate.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetEmissionRate.cs
new file mode 100644
index 00000000..c0d7a6d4
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetEmissionRate.cs
@@ -0,0 +1,48 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Sets the emission rate of the Particle System.")]
+ public class SetEmissionRate : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The emission rate of the ParticleSystem")]
+ public SharedFloat emissionRate;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+#if !(UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2)
+ Debug.Log("Warning: SetEmissionRate is not used in Unity 5.3 or later.");
+#else
+ particleSystem.emissionRate = emissionRate.Value;
+#endif
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ emissionRate = 0;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetEmissionRate.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetEmissionRate.cs.meta
new file mode 100644
index 00000000..ac56602a
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetEmissionRate.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a8300eee629ad77419f2eb91477a0b62
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetEnableEmission.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetEnableEmission.cs
new file mode 100644
index 00000000..1c47207e
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetEnableEmission.cs
@@ -0,0 +1,49 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Enables or disables the Particle System emission.")]
+ public class SetEnableEmission : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("Enable the ParticleSystem emissions?")]
+ public SharedBool enable;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+#if !(UNITY_4_6 || UNITY_4_7 || UNITY_5_0 || UNITY_5_1 || UNITY_5_2)
+ var emission = particleSystem.emission;
+ emission.enabled = enable.Value;
+#else
+ particleSystem.enableEmission = enable.Value;
+#endif
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ enable = false;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetEnableEmission.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetEnableEmission.cs.meta
new file mode 100644
index 00000000..d5d77a69
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetEnableEmission.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f7c295b4d24628146a885d21bf699993
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetGravityModifier.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetGravityModifier.cs
new file mode 100644
index 00000000..1082989d
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetGravityModifier.cs
@@ -0,0 +1,44 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Sets the gravity modifier of the Particle System.")]
+ public class SetGravityModifier : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The gravity modifier of the ParticleSystem")]
+ public SharedFloat gravityModifier;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+ ParticleSystem.MainModule main = particleSystem.main;
+ main.gravityModifierMultiplier = gravityModifier.Value;
+ //particleSystem.main = main;
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ gravityModifier = 0;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetGravityModifier.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetGravityModifier.cs.meta
new file mode 100644
index 00000000..8337a101
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetGravityModifier.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c1a6694791042df4ea2097a2508bd8de
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetLoop.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetLoop.cs
new file mode 100644
index 00000000..8706fe53
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetLoop.cs
@@ -0,0 +1,44 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Sets if the Particle System should loop.")]
+ public class SetLoop : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("Should the ParticleSystem loop?")]
+ public SharedBool loop;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+ ParticleSystem.MainModule main = particleSystem.main;
+ main.loop = loop.Value;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ loop = false;
+ }
+ }
+}
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetLoop.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetLoop.cs.meta
new file mode 100644
index 00000000..169ffad8
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetLoop.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b9fa90adc0377cc4592de00e410a4060
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetMaxParticles.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetMaxParticles.cs
new file mode 100644
index 00000000..a1d8730a
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetMaxParticles.cs
@@ -0,0 +1,44 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Sets the max particles of the Particle System.")]
+ public class SetMaxParticles : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The max particles of the ParticleSystem")]
+ public SharedInt maxParticles;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+ ParticleSystem.MainModule main = particleSystem.main;
+ main.maxParticles = maxParticles.Value;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ maxParticles = 0;
+ }
+ }
+}
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetMaxParticles.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetMaxParticles.cs.meta
new file mode 100644
index 00000000..8549f671
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetMaxParticles.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: eadca930ad32a404886060ee43e4d802
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetPlaybackSpeed.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetPlaybackSpeed.cs
new file mode 100644
index 00000000..0e3d23db
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetPlaybackSpeed.cs
@@ -0,0 +1,44 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Sets the playback speed of the Particle System.")]
+ public class SetPlaybackSpeed : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The playback speed of the ParticleSystem")]
+ public SharedFloat playbackSpeed = 1;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+ ParticleSystem.MainModule main = particleSystem.main;
+ main.simulationSpeed = playbackSpeed.Value;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ playbackSpeed = 1;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetPlaybackSpeed.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetPlaybackSpeed.cs.meta
new file mode 100644
index 00000000..1c0afbdb
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetPlaybackSpeed.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8f4d79e34ac8820458a2813895d3962d
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartColor.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartColor.cs
new file mode 100644
index 00000000..0af7d9bb
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartColor.cs
@@ -0,0 +1,44 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Sets the start color of the Particle System.")]
+ public class SetStartColor : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The start color of the ParticleSystem")]
+ public SharedColor startColor;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+ ParticleSystem.MainModule main = particleSystem.main;
+ main.startColor = startColor.Value;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ startColor = Color.white;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartColor.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartColor.cs.meta
new file mode 100644
index 00000000..12432173
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartColor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f91be163d0c01ec42bf120c267dcceea
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartDelay.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartDelay.cs
new file mode 100644
index 00000000..f814e540
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartDelay.cs
@@ -0,0 +1,44 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Sets the start delay of the Particle System.")]
+ public class SetStartDelay : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The start delay of the ParticleSystem")]
+ public SharedFloat startDelay;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+ ParticleSystem.MainModule main = particleSystem.main;
+ main.startDelayMultiplier = startDelay.Value;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ startDelay = 0;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartDelay.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartDelay.cs.meta
new file mode 100644
index 00000000..fb4c01f5
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartDelay.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 532026cf3b430c840897e66bdde5006e
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartLifetime.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartLifetime.cs
new file mode 100644
index 00000000..0bfec7a7
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartLifetime.cs
@@ -0,0 +1,44 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Sets the start lifetime of the Particle System.")]
+ public class SetStartLifetime : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The start lifetime of the ParticleSystem")]
+ public SharedFloat startLifetime;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+ ParticleSystem.MainModule main = particleSystem.main;
+ main.startLifetimeMultiplier = startLifetime.Value;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ startLifetime = 0;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartLifetime.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartLifetime.cs.meta
new file mode 100644
index 00000000..361689aa
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartLifetime.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 311b9ed850b4e2243ae44487b9ece819
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartRotation.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartRotation.cs
new file mode 100644
index 00000000..404acbf3
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartRotation.cs
@@ -0,0 +1,44 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Sets the start rotation of the Particle System.")]
+ public class SetStartRotation : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The start rotation of the ParticleSystem")]
+ public SharedFloat startRotation;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+ ParticleSystem.MainModule main = particleSystem.main;
+ main.startRotationMultiplier = startRotation.Value;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ startRotation = 0;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartRotation.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartRotation.cs.meta
new file mode 100644
index 00000000..c995958e
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartRotation.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ae611ab09913de6438aeb81d7a621c51
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartSize.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartSize.cs
new file mode 100644
index 00000000..bb6667e5
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartSize.cs
@@ -0,0 +1,44 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Sets the start size of the Particle System.")]
+ public class SetStartSize : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The start size of the ParticleSystem")]
+ public SharedFloat startSize;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+ ParticleSystem.MainModule main = particleSystem.main;
+ main.startSizeMultiplier = startSize.Value;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ startSize = 0;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartSize.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartSize.cs.meta
new file mode 100644
index 00000000..d697099c
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartSize.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d7be6a1da3f4f7a418e5739a6cc6e78e
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartSpeed.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartSpeed.cs
new file mode 100644
index 00000000..6e9b155c
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartSpeed.cs
@@ -0,0 +1,44 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Sets the start speed of the Particle System.")]
+ public class SetStartSpeed : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The start speed of the ParticleSystem")]
+ public SharedFloat startSpeed;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+ ParticleSystem.MainModule main = particleSystem.main;
+ main.startSpeedMultiplier = startSpeed.Value;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ startSpeed = 0;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartSpeed.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartSpeed.cs.meta
new file mode 100644
index 00000000..f87bf954
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetStartSpeed.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b7716318475d3854a96729d1a7540d4a
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetTime.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetTime.cs
new file mode 100644
index 00000000..41f2e9eb
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetTime.cs
@@ -0,0 +1,44 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Sets the time of the Particle System.")]
+ public class SetTime : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("The time of the ParticleSystem")]
+ public SharedFloat time;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ particleSystem.time = time.Value;
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ time = 0;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetTime.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetTime.cs.meta
new file mode 100644
index 00000000..2788eb15
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/SetTime.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 103e78e9c755fe3469e63115eb1c0d80
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Simulate.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Simulate.cs
new file mode 100644
index 00000000..fcf70cfb
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Simulate.cs
@@ -0,0 +1,44 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Simulate the Particle System.")]
+ public class Simulate : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+ [Tooltip("Time to fastfoward the Particle System to")]
+ public SharedFloat time;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ particleSystem.Simulate(time.Value);
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ time = 0;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Simulate.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Simulate.cs.meta
new file mode 100644
index 00000000..c703cb24
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Simulate.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 24d79d661acf61e44918320624b49dd5
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Stop.cs b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Stop.cs
new file mode 100644
index 00000000..2ed84c15
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Stop.cs
@@ -0,0 +1,41 @@
+using UnityEngine;
+
+namespace BehaviorDesigner.Runtime.Tasks.Basic.UnityParticleSystem
+{
+ [TaskCategory("Basic/ParticleSystem")]
+ [TaskDescription("Stop the Particle System.")]
+ public class Stop : Action
+ {
+ [Tooltip("The GameObject that the task operates on. If null the task GameObject is used.")]
+ public SharedGameObject targetGameObject;
+
+ private ParticleSystem particleSystem;
+ private GameObject prevGameObject;
+
+ public override void OnStart()
+ {
+ var currentGameObject = GetDefaultGameObject(targetGameObject.Value);
+ if (currentGameObject != prevGameObject) {
+ particleSystem = currentGameObject.GetComponent<ParticleSystem>();
+ prevGameObject = currentGameObject;
+ }
+ }
+
+ public override TaskStatus OnUpdate()
+ {
+ if (particleSystem == null) {
+ Debug.LogWarning("ParticleSystem is null");
+ return TaskStatus.Failure;
+ }
+
+ particleSystem.Stop();
+
+ return TaskStatus.Success;
+ }
+
+ public override void OnReset()
+ {
+ targetGameObject = null;
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Stop.cs.meta b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Stop.cs.meta
new file mode 100644
index 00000000..695ec19d
--- /dev/null
+++ b/Client/Assets/Behavior Designer/Runtime/Basic Tasks/ParticleSystem/Stop.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fd83617024d6bff44824a83b472db8e6
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData: