DynamicGeometryBatch.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import AssociativeArray from '../Core/AssociativeArray.js';
  2. import defined from '../Core/defined.js';
  3. import BoundingSphereState from './BoundingSphereState.js';
  4. /**
  5. * @private
  6. */
  7. function DynamicGeometryBatch(primitives, orderedGroundPrimitives) {
  8. this._primitives = primitives;
  9. this._orderedGroundPrimitives = orderedGroundPrimitives;
  10. this._dynamicUpdaters = new AssociativeArray();
  11. }
  12. DynamicGeometryBatch.prototype.add = function(time, updater) {
  13. this._dynamicUpdaters.set(updater.id, updater.createDynamicUpdater(this._primitives, this._orderedGroundPrimitives));
  14. };
  15. DynamicGeometryBatch.prototype.remove = function(updater) {
  16. var id = updater.id;
  17. var dynamicUpdater = this._dynamicUpdaters.get(id);
  18. if (defined(dynamicUpdater)) {
  19. this._dynamicUpdaters.remove(id);
  20. dynamicUpdater.destroy();
  21. }
  22. };
  23. DynamicGeometryBatch.prototype.update = function(time) {
  24. var geometries = this._dynamicUpdaters.values;
  25. for (var i = 0, len = geometries.length; i < len; i++) {
  26. geometries[i].update(time);
  27. }
  28. return true;
  29. };
  30. DynamicGeometryBatch.prototype.removeAllPrimitives = function() {
  31. var geometries = this._dynamicUpdaters.values;
  32. for (var i = 0, len = geometries.length; i < len; i++) {
  33. geometries[i].destroy();
  34. }
  35. this._dynamicUpdaters.removeAll();
  36. };
  37. DynamicGeometryBatch.prototype.getBoundingSphere = function(updater, result) {
  38. updater = this._dynamicUpdaters.get(updater.id);
  39. if (defined(updater) && defined(updater.getBoundingSphere)) {
  40. return updater.getBoundingSphere(result);
  41. }
  42. return BoundingSphereState.FAILED;
  43. };
  44. export default DynamicGeometryBatch;