ColliderBoxElement.cs 982 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using fun.Core;
  2. using System;
  3. using Environment = fun.Core.Environment;
  4. using OpenTK;
  5. using fun.Basics.Shapes;
  6. namespace fun.Basics
  7. {
  8. public sealed class ColliderBoxElement : Element, ICollider
  9. {
  10. private TransformElement transform;
  11. private Box box;
  12. public Vector3 Min
  13. {
  14. get { return box.Min; }
  15. set { box.Min = value; }
  16. }
  17. public Vector3 Max
  18. {
  19. get { return box.Max; }
  20. set { box.Max = value; }
  21. }
  22. public ColliderBoxElement(Environment environment, Entity entity)
  23. : base(environment, entity)
  24. {
  25. transform = entity.GetElement<TransformElement>() as TransformElement;
  26. }
  27. public float? Intersects(Ray ray)
  28. {
  29. var tempbox = new Box(
  30. box.Min + transform.Position,
  31. box.Max + transform.Position);
  32. return ray.Intersects(tempbox);
  33. }
  34. }
  35. }