summaryrefslogtreecommitdiff
path: root/VRCSDK3AvatarsLegacy/Assets/Resources/DynamicBone/Scripts/DynamicBonePlaneCollider.cs
diff options
context:
space:
mode:
authortylermurphy534 <tylermurphy534@gmail.com>2022-11-06 15:12:42 -0500
committertylermurphy534 <tylermurphy534@gmail.com>2022-11-06 15:12:42 -0500
commiteb84bb298d2b95aec7b2ae12cbf25ac64f25379a (patch)
treeefd616a157df06ab661c6d56651853431ac6b08b /VRCSDK3AvatarsLegacy/Assets/Resources/DynamicBone/Scripts/DynamicBonePlaneCollider.cs
downloadunityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.tar.gz
unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.tar.bz2
unityprojects-eb84bb298d2b95aec7b2ae12cbf25ac64f25379a.zip
move to self host
Diffstat (limited to 'VRCSDK3AvatarsLegacy/Assets/Resources/DynamicBone/Scripts/DynamicBonePlaneCollider.cs')
-rw-r--r--VRCSDK3AvatarsLegacy/Assets/Resources/DynamicBone/Scripts/DynamicBonePlaneCollider.cs69
1 files changed, 69 insertions, 0 deletions
diff --git a/VRCSDK3AvatarsLegacy/Assets/Resources/DynamicBone/Scripts/DynamicBonePlaneCollider.cs b/VRCSDK3AvatarsLegacy/Assets/Resources/DynamicBone/Scripts/DynamicBonePlaneCollider.cs
new file mode 100644
index 00000000..1a75c320
--- /dev/null
+++ b/VRCSDK3AvatarsLegacy/Assets/Resources/DynamicBone/Scripts/DynamicBonePlaneCollider.cs
@@ -0,0 +1,69 @@
+using UnityEngine;
+
+[AddComponentMenu("Dynamic Bone/Dynamic Bone Plane Collider")]
+public class DynamicBonePlaneCollider : DynamicBoneColliderBase
+{
+ void OnValidate()
+ {
+ }
+
+ public override void Collide(ref Vector3 particlePosition, float particleRadius)
+ {
+ Vector3 normal = Vector3.up;
+ switch (m_Direction)
+ {
+ case Direction.X:
+ normal = transform.right;
+ break;
+ case Direction.Y:
+ normal = transform.up;
+ break;
+ case Direction.Z:
+ normal = transform.forward;
+ break;
+ }
+
+ Vector3 p = transform.TransformPoint(m_Center);
+ Plane plane = new Plane(normal, p);
+ float d = plane.GetDistanceToPoint(particlePosition);
+
+ if (m_Bound == Bound.Outside)
+ {
+ if (d < 0)
+ particlePosition -= normal * d;
+ }
+ else
+ {
+ if (d > 0)
+ particlePosition -= normal * d;
+ }
+ }
+
+ void OnDrawGizmosSelected()
+ {
+ if (!enabled)
+ return;
+
+ if (m_Bound == Bound.Outside)
+ Gizmos.color = Color.yellow;
+ else
+ Gizmos.color = Color.magenta;
+
+ Vector3 normal = Vector3.up;
+ switch (m_Direction)
+ {
+ case Direction.X:
+ normal = transform.right;
+ break;
+ case Direction.Y:
+ normal = transform.up;
+ break;
+ case Direction.Z:
+ normal = transform.forward;
+ break;
+ }
+
+ Vector3 p = transform.TransformPoint(m_Center);
+ Gizmos.DrawLine(p, p + normal);
+ }
+}