babylon.linesMesh.ts 2.0 KB

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