diff options
| author | tylermurphy534 <tylermurphy534@gmail.com> | 2022-11-06 15:12:42 -0500 |
|---|---|---|
| committer | tylermurphy534 <tylermurphy534@gmail.com> | 2022-11-06 15:12:42 -0500 |
| commit | eb84bb298d2b95aec7b2ae12cbf25ac64f25379a (patch) | |
| tree | efd616a157df06ab661c6d56651853431ac6b08b /VRCSDK3AvatarsLegacy/Assets/Resources/DynamicBone/Scripts/DynamicBonePlaneCollider.cs | |
| download | unityprojects-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.cs | 69 |
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); + } +} |