Box.hx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package h3d.scene;
  2. class Box extends Graphics {
  3. public var color : Int;
  4. public function new( ?color = 0xFFFF0000, ?depth = true, ?parent) {
  5. super(parent);
  6. this.color = color;
  7. if( !depth ) material.mainPass.depth(true,Always);
  8. }
  9. override function sync( ctx : RenderContext ) {
  10. super.sync(ctx);
  11. var dx = new h3d.col.Point(absPos._11, absPos._12, absPos._13);
  12. var dy = new h3d.col.Point(absPos._21, absPos._22, absPos._23);
  13. var dz = new h3d.col.Point(absPos._31, absPos._32, absPos._33);
  14. var p = absPos.pos().toPoint();
  15. p.x -= (dx.x + dy.x + dz.x) * 0.5;
  16. p.y -= (dx.y + dy.y + dz.y) * 0.5;
  17. p.z -= (dx.z + dy.z + dz.z) * 0.5;
  18. clear();
  19. lineStyle(1, color);
  20. drawLine(p, p.add(dx));
  21. drawLine(p, p.add(dy));
  22. drawLine(p, p.add(dz));
  23. drawLine(p.add(dx), p.add(dx).add(dz));
  24. drawLine(p.add(dy), p.add(dy).add(dz));
  25. drawLine(p.add(dx), p.add(dx).add(dy));
  26. drawLine(p.add(dy), p.add(dx).add(dy));
  27. drawLine(p.add(dx).add(dy), p.add(dx).add(dy).add(dz));
  28. p = p.add(dz);
  29. drawLine(p, p.add(dx));
  30. drawLine(p, p.add(dy));
  31. drawLine(p.add(dx), p.add(dx).add(dy));
  32. drawLine(p.add(dy), p.add(dx).add(dy));
  33. drawLine(p.add(dy), p.add(dx).add(dy));
  34. }
  35. public static function ofBounds( bounds : h3d.col.Bounds, ?parent : Object ) {
  36. var b = new Box();
  37. if( parent != null ) parent.addChild(b);
  38. b.x = (bounds.xMin + bounds.xMax) * 0.5;
  39. b.y = (bounds.yMin + bounds.yMax) * 0.5;
  40. b.z = (bounds.zMin + bounds.zMax) * 0.5;
  41. b.scaleX = bounds.xMax - bounds.xMin;
  42. b.scaleY = bounds.yMax - bounds.yMin;
  43. b.scaleZ = bounds.zMax - bounds.zMin;
  44. return b;
  45. }
  46. }