Octave3DMeshCollider.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. namespace O3DWB
  4. {
  5. public class Octave3DMeshCollider : Octave3DCollider
  6. {
  7. #region Private Variables
  8. private Octave3DMesh _mesh;
  9. private TransformMatrix _meshTransform;
  10. #endregion
  11. #region Public Properties
  12. public Octave3DMesh Mesh { get { return _mesh; } }
  13. public TransformMatrix MeshTransform { get { return _meshTransform; } }
  14. #endregion
  15. #region Constructors
  16. public Octave3DMeshCollider(Octave3DMesh mesh, TransformMatrix meshTransform)
  17. {
  18. _mesh = mesh;
  19. _meshTransform = meshTransform;
  20. }
  21. #endregion
  22. #region Public Methods
  23. public override Octave3DColliderType GetColliderType()
  24. {
  25. return Octave3DColliderType.Mesh;
  26. }
  27. public override bool Raycast(Ray ray, out Octave3DColliderRayHit colliderRayHit)
  28. {
  29. colliderRayHit = null;
  30. MeshRayHit meshRayHit = Mesh.Raycast(ray, _meshTransform);
  31. if (meshRayHit != null) colliderRayHit = new Octave3DColliderRayHit(ray, meshRayHit.HitEnter, meshRayHit.HitPoint, meshRayHit.HitNormal, this);
  32. return colliderRayHit != null;
  33. }
  34. #endregion
  35. }
  36. }
  37. #endif