/src/away3d/bounds/NullBounds.as

http://github.com/away3d/away3d-core-fp11 · ActionScript · 81 lines · 54 code · 11 blank · 16 comment · 1 complexity · 8cd3b87660f0e9d370bcd787576087a2 MD5 · raw file

  1. package away3d.bounds
  2. {
  3. import away3d.core.base.*;
  4. import away3d.core.math.Plane3D;
  5. import away3d.core.math.PlaneClassification;
  6. import away3d.primitives.*;
  7. import flash.geom.*;
  8. /**
  9. * NullBounds represents a debug bounding "volume" that is either considered always in, or always out of the frustum.
  10. * NullBounds is useful for entities that are always considered in the frustum, such as directional lights or skyboxes.
  11. */
  12. public class NullBounds extends BoundingVolumeBase
  13. {
  14. private var _alwaysIn:Boolean;
  15. private var _renderable:WireframePrimitiveBase;
  16. public function NullBounds(alwaysIn:Boolean = true, renderable:WireframePrimitiveBase = null)
  17. {
  18. super();
  19. _alwaysIn = alwaysIn;
  20. _renderable = renderable;
  21. _max.x = _max.y = _max.z = Number.POSITIVE_INFINITY;
  22. _min.x = _min.y = _min.z = _alwaysIn? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY;
  23. }
  24. override public function clone():BoundingVolumeBase
  25. {
  26. return new NullBounds(_alwaysIn);
  27. }
  28. override protected function createBoundingRenderable():WireframePrimitiveBase
  29. {
  30. return _renderable || new WireframeSphere(100, 16, 12, 0xffffff, 0.5);
  31. }
  32. /**
  33. * @inheritDoc
  34. */
  35. override public function isInFrustum(planes:Vector.<Plane3D>, numPlanes:int):Boolean
  36. {
  37. planes = planes;
  38. numPlanes = numPlanes;
  39. return _alwaysIn;
  40. }
  41. /**
  42. * @inheritDoc
  43. */
  44. override public function fromGeometry(geometry:Geometry):void
  45. {
  46. }
  47. /**
  48. * @inheritDoc
  49. */
  50. override public function fromSphere(center:Vector3D, radius:Number):void
  51. {
  52. }
  53. /**
  54. * @inheritDoc
  55. */
  56. override public function fromExtremes(minX:Number, minY:Number, minZ:Number, maxX:Number, maxY:Number, maxZ:Number):void
  57. {
  58. }
  59. override public function classifyToPlane(plane:Plane3D):int
  60. {
  61. plane = plane;
  62. return PlaneClassification.INTERSECT;
  63. }
  64. override public function transformFrom(bounds:BoundingVolumeBase, matrix:Matrix3D):void
  65. {
  66. matrix = matrix;
  67. _alwaysIn = NullBounds(bounds)._alwaysIn;
  68. }
  69. }
  70. }