diff options
Diffstat (limited to 'Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Rigidbody')
| -rw-r--r-- | Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Rigidbody/RigidbodyNodes.cs | 104 | 
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; +		} +	} + +}  | 
