babylon.linesMesh.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. module BABYLON {
  2. export class LinesMesh extends Mesh {
  3. public color = new BABYLON.Color3(1, 1, 1);
  4. public alpha = 1;
  5. private _colorShader: ShaderMaterial;
  6. private _ib: WebGLBuffer;
  7. private _indicesLength: number;
  8. private _indices = new Array<number>();
  9. constructor(name: string, scene: Scene, updatable = false) {
  10. super(name, scene);
  11. this._colorShader = new ShaderMaterial("colorShader", scene, "color",
  12. {
  13. attributes: ["position"],
  14. uniforms: ["worldViewProjection", "color"],
  15. needAlphaBlending: true
  16. });
  17. }
  18. public get material(): Material {
  19. return this._colorShader;
  20. }
  21. public get isPickable(): boolean {
  22. return false;
  23. }
  24. public get checkCollisions(): boolean {
  25. return false;
  26. }
  27. public _bind(subMesh: SubMesh, effect: Effect, fillMode: number): void {
  28. var engine = this.getScene().getEngine();
  29. var indexToBind = this._geometry.getIndexBuffer();
  30. // VBOs
  31. engine.bindBuffers(this._geometry.getVertexBuffer(VertexBuffer.PositionKind).getBuffer(), indexToBind, [3], 3 * 4, this._colorShader.getEffect());
  32. // Color
  33. this._colorShader.setColor4("color", this.color.toColor4(this.alpha));
  34. }
  35. public _draw(subMesh: SubMesh, fillMode: number, instancesCount?: number): void {
  36. if (!this._geometry || !this._geometry.getVertexBuffers() || !this._geometry.getIndexBuffer()) {
  37. return;
  38. }
  39. var engine = this.getScene().getEngine();
  40. // Draw order
  41. engine.draw(false, subMesh.indexStart, subMesh.indexCount);
  42. }
  43. public intersects(ray: Ray, fastCheck?: boolean) {
  44. return null;
  45. }
  46. public dispose(doNotRecurse?: boolean): void {
  47. this._colorShader.dispose();
  48. super.dispose(doNotRecurse);
  49. }
  50. }
  51. }