summaryrefslogtreecommitdiff
path: root/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Rigidbody
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Rigidbody')
-rw-r--r--Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Rigidbody/RigidbodyNodes.cs104
1 files changed, 104 insertions, 0 deletions
diff --git a/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Rigidbody/RigidbodyNodes.cs b/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Rigidbody/RigidbodyNodes.cs
new file mode 100644
index 0000000..d151a62
--- /dev/null
+++ b/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Rigidbody/RigidbodyNodes.cs
@@ -0,0 +1,104 @@
+using UnityEngine;
+
+namespace UnityEngine.Graphs.LogicGraph
+{
+ public class RigidbodyNode
+ {
+ #if REIMPLEMENT_USING_CLASS_NODES
+ [Logic(typeof(Rigidbody), typeof(NodeLibrary.StartStopEvents))]
+ public static IEnumerator Force (Rigidbody self, ByRef<NodeLibrary.StartStopEvents> evt, Vector3 force, bool localSpace, bool ignoreMass)
+ {
+ if (evt.Value == NodeLibrary.StartStopEvents.Stop)
+ yield break;
+ if (self)
+ {
+ ForceMode mode = (ignoreMass ? ForceMode.Acceleration : ForceMode.Force);
+
+ if (localSpace)
+ {
+ while (evt.Value != NodeLibrary.StartStopEvents.Stop)
+ {
+ yield return new WaitForFixedUpdate();
+ self.AddRelativeForce(force, mode);
+ }
+ }
+ else
+ {
+ while (evt.Value != NodeLibrary.StartStopEvents.Stop)
+ {
+ yield return new WaitForFixedUpdate();
+ self.AddForce(force, mode);
+ }
+ }
+ }
+ else
+ Debug.LogWarning("Force self parameter is null");
+ }
+
+ [Logic(typeof(Rigidbody), typeof(NodeLibrary.StartStopEvents))]
+ public static IEnumerator Torque (Rigidbody self, ByRef<NodeLibrary.StartStopEvents> evt, Vector3 torque, bool localSpace, bool ignoreMass)
+ {
+ if (evt.Value == NodeLibrary.StartStopEvents.Stop)
+ yield break;
+ if (self)
+ {
+ ForceMode mode = (ignoreMass ? ForceMode.Acceleration : ForceMode.Force);
+
+ if (localSpace)
+ {
+ while (evt.Value != NodeLibrary.StartStopEvents.Stop)
+ {
+ yield return new WaitForFixedUpdate();
+ self.AddRelativeTorque(torque, mode);
+ }
+ }
+ else
+ {
+ while (evt.Value != NodeLibrary.StartStopEvents.Stop)
+ {
+ yield return new WaitForFixedUpdate();
+ self.AddTorque(torque, mode);
+ }
+ }
+ }
+ else
+ Debug.LogWarning("Torque self parameter is null");
+ }
+ #endif
+
+ [Logic(typeof(Rigidbody))]
+ public static void ApplyForce (Rigidbody self, Vector3 force, Space relativeTo, ForceMode forceMode)
+ {
+ if (relativeTo == Space.Self)
+ self.AddRelativeForce(force, forceMode);
+ else
+ self.AddForce(force, forceMode);
+ }
+
+ [Logic(typeof(Rigidbody))]
+ public static void ApplyTorque (Rigidbody self, Vector3 torque, Space relativeTo, ForceMode forceMode)
+ {
+ if (relativeTo == Space.Self)
+ self.AddRelativeTorque(torque, forceMode);
+ else
+ self.AddTorque(torque, forceMode);
+ }
+
+ [Logic(typeof(Rigidbody))]
+ public static void SetVelocity (Rigidbody self, Vector3 velocity, Space relativeTo)
+ {
+ if (relativeTo == Space.Self)
+ velocity = self.transform.rotation * velocity;
+ self.velocity = velocity;
+ }
+
+ [Logic(typeof(Rigidbody))]
+ public static void SetAngularVelocity (Rigidbody self, Vector3 angularVelocity, Space relativeTo)
+ {
+ if (relativeTo == Space.Self)
+ angularVelocity = self.transform.rotation * angularVelocity;
+ self.angularVelocity = angularVelocity;
+ }
+ }
+
+}