|
@@ -1,82 +0,0 @@
|
|
|
-import { BarGraph } from "./barGraph";
|
|
|
-import { Scene, Material, PBRMaterial, Mesh, Vector3 } from "babylonjs";
|
|
|
-
|
|
|
-/** Class used to render bar graphs */
|
|
|
-export class GlassBarGraph extends BarGraph {
|
|
|
- private _innerMaterial: PBRMaterial;
|
|
|
-
|
|
|
- /**
|
|
|
- * Creates a new GlassBarGraph
|
|
|
- * @param name defines the name of the graph
|
|
|
- */
|
|
|
- constructor(name: string, scene?: Scene) {
|
|
|
- super(name, scene);
|
|
|
-
|
|
|
- this.onElementCreated.add(mesh => {
|
|
|
- // Clone the mesh
|
|
|
- var innerMesh = mesh.clone("Inner", mesh);
|
|
|
- innerMesh.material = this._innerMaterial;
|
|
|
-
|
|
|
- innerMesh.scaling = new Vector3(1, 1, 1);
|
|
|
- innerMesh.position = Vector3.Zero();
|
|
|
-
|
|
|
- mesh.alphaIndex = 0;
|
|
|
- innerMesh.alphaIndex = 1;
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- protected _createBarMesh(name: string, scene: Scene): Mesh {
|
|
|
- var path = [
|
|
|
- new BABYLON.Vector3(0, 0, 0),
|
|
|
- new BABYLON.Vector3(0, 1.0, 0.0),
|
|
|
- ];
|
|
|
-
|
|
|
- var tube = BABYLON.MeshBuilder.CreateTube("tube", {
|
|
|
- path: path,
|
|
|
- tessellation:16,
|
|
|
- cap: Mesh.CAP_ALL,
|
|
|
- radius: 0.5}, scene);
|
|
|
-
|
|
|
- return tube;
|
|
|
- }
|
|
|
-
|
|
|
- protected _createDefaultMaterial(scene: Scene): Material {
|
|
|
- var result = new PBRMaterial("OuterGlass", scene);
|
|
|
- const dataSource = this.dataSource;
|
|
|
-
|
|
|
- let reflectionTexture = scene.environmentTexture;
|
|
|
- if (!reflectionTexture) {
|
|
|
- reflectionTexture = BABYLON.CubeTexture.CreateFromPrefilteredData("https://assets.babylonjs.com/environments/environmentSpecular.env", scene);
|
|
|
- }
|
|
|
-
|
|
|
- // Outside material
|
|
|
- result.alphaMode = BABYLON.Engine.ALPHA_SCREENMODE;
|
|
|
- result.reflectionTexture = reflectionTexture;
|
|
|
- result.alpha = 0.0;
|
|
|
- result.directIntensity = 1.0;
|
|
|
- result.environmentIntensity = 1.0;
|
|
|
- result.microSurface = 1;
|
|
|
- result.useAlphaFresnel = true;
|
|
|
- result.reflectivityColor = new BABYLON.Color3(0.01, 0.01, 0.01);
|
|
|
- result.albedoColor = new BABYLON.Color3(0, 0, 0);
|
|
|
-
|
|
|
- this._innerMaterial = new PBRMaterial("InnerGlass", scene);;
|
|
|
- this._innerMaterial.alphaMode = BABYLON.Engine.ALPHA_MULTIPLY;
|
|
|
- this._innerMaterial.alpha = 0;
|
|
|
- this._innerMaterial.directIntensity = 1.0;
|
|
|
- this._innerMaterial.environmentIntensity = 1.0;
|
|
|
- this._innerMaterial.microSurface = 0.0;
|
|
|
- this._innerMaterial.reflectivityColor = new BABYLON.Color3(0, 0, 0);
|
|
|
-
|
|
|
- if (dataSource) {
|
|
|
- this._innerMaterial.albedoColor = dataSource.color;
|
|
|
- }
|
|
|
-
|
|
|
- return result;
|
|
|
- }
|
|
|
-
|
|
|
- public dispose() {
|
|
|
- super.dispose();
|
|
|
- this._innerMaterial.dispose();
|
|
|
- }
|
|
|
-}
|