فهرست منبع

Tools.Instantiate ES6

sebavan 6 سال پیش
والد
کامیت
d612e41c19
48فایلهای تغییر یافته به همراه184 افزوده شده و 13 حذف شده
  1. 4 1
      gui/src/3D/materials/fluentMaterial.ts
  2. 3 0
      materialsLibrary/src/cell/cellMaterial.ts
  3. 3 0
      materialsLibrary/src/custom/customMaterial.ts
  4. 3 0
      materialsLibrary/src/fire/fireMaterial.ts
  5. 3 0
      materialsLibrary/src/fur/furMaterial.ts
  6. 3 0
      materialsLibrary/src/gradient/gradientMaterial.ts
  7. 4 1
      materialsLibrary/src/grid/gridMaterial.ts
  8. 3 0
      materialsLibrary/src/lava/lavaMaterial.ts
  9. 3 0
      materialsLibrary/src/mix/mixMaterial.ts
  10. 4 1
      materialsLibrary/src/normal/normalMaterial.ts
  11. 3 0
      materialsLibrary/src/shadowOnly/shadowOnlyMaterial.ts
  12. 3 0
      materialsLibrary/src/simple/simpleMaterial.ts
  13. 3 0
      materialsLibrary/src/sky/skyMaterial.ts
  14. 3 0
      materialsLibrary/src/terrain/terrainMaterial.ts
  15. 3 0
      materialsLibrary/src/triPlanar/triPlanarMaterial.ts
  16. 4 1
      materialsLibrary/src/water/waterMaterial.ts
  17. 4 1
      proceduralTexturesLibrary/src/brick/brickProceduralTexture.ts
  18. 4 1
      proceduralTexturesLibrary/src/cloud/cloudProceduralTexture.ts
  19. 4 1
      proceduralTexturesLibrary/src/fire/fireProceduralTexture.ts
  20. 3 0
      proceduralTexturesLibrary/src/grass/grassProceduralTexture.ts
  21. 4 1
      proceduralTexturesLibrary/src/marble/marbleProceduralTexture.ts
  22. 3 0
      proceduralTexturesLibrary/src/normalMap/normalMapProceduralTexture.ts
  23. 3 0
      proceduralTexturesLibrary/src/perlinNoise/perlinNoiseProceduralTexture.ts
  24. 4 1
      proceduralTexturesLibrary/src/road/roadProceduralTexture.ts
  25. 4 1
      proceduralTexturesLibrary/src/starfield/starfieldProceduralTexture.ts
  26. 4 1
      proceduralTexturesLibrary/src/wood/woodProceduralTexture.ts
  27. 3 0
      src/Actions/action.ts
  28. 11 0
      src/Actions/directActions.ts
  29. 4 1
      src/Actions/directAudioActions.ts
  30. 3 0
      src/Actions/interpolateValueAction.ts
  31. 3 0
      src/Layers/glowLayer.ts
  32. 3 0
      src/Layers/highlightLayer.ts
  33. 3 0
      src/Materials/Background/backgroundMaterial.ts
  34. 4 0
      src/Materials/PBR/pbrMaterial.ts
  35. 4 0
      src/Materials/PBR/pbrMetallicRoughnessMaterial.ts
  36. 4 0
      src/Materials/PBR/pbrSpecularGlossinessMaterial.ts
  37. 3 0
      src/Materials/Textures/Procedurals/noiseProceduralTexture.ts
  38. 4 0
      src/Materials/Textures/colorGradingTexture.ts
  39. 4 0
      src/Materials/Textures/hdrCubeTexture.ts
  40. 4 0
      src/Materials/multiMaterial.ts
  41. 3 0
      src/Materials/shaderMaterial.ts
  42. 3 0
      src/Materials/standardMaterial.ts
  43. 2 1
      src/Misc/index.ts
  44. 8 0
      src/Misc/tools.ts
  45. 13 0
      src/Misc/typeStore.ts
  46. 3 0
      src/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.ts
  47. 3 0
      src/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.ts
  48. 3 0
      src/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.ts

+ 4 - 1
gui/src/3D/materials/fluentMaterial.ts

@@ -11,6 +11,7 @@ import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
 import { Mesh } from "babylonjs/Meshes/mesh";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./shaders/fluent.vertex";
 import "./shaders/fluent.fragment";
@@ -309,4 +310,6 @@ export class FluentMaterial extends PushMaterial {
     public static Parse(source: any, scene: Scene, rootUrl: string): FluentMaterial {
         return SerializationHelper.Parse(() => new FluentMaterial(source.name, scene), source, scene, rootUrl);
     }
-}
+}
+
+_TypeStore.RegisteredTypes["BABYLON.GUI.FluentMaterial"] = FluentMaterial;

+ 3 - 0
materialsLibrary/src/cell/cellMaterial.ts

@@ -13,6 +13,7 @@ import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
 import { Mesh } from "babylonjs/Meshes/mesh";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./cell.fragment";
 import "./cell.vertex";
@@ -335,3 +336,5 @@ export class CellMaterial extends PushMaterial {
         return SerializationHelper.Parse(() => new CellMaterial(source.name, scene), source, scene, rootUrl);
     }
 }
+
+_TypeStore.RegisteredTypes["BABYLON.CellMaterial"] = CellMaterial;

+ 3 - 0
materialsLibrary/src/custom/customMaterial.ts

@@ -4,6 +4,7 @@ import { StandardMaterialDefines } from "babylonjs/Materials/standardMaterial";
 import { StandardMaterial } from "babylonjs/Materials/standardMaterial";
 import { Mesh } from "babylonjs/Meshes/mesh";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 export class CustomShaderStructure {
 
@@ -233,3 +234,5 @@ export class CustomMaterial extends StandardMaterial {
         return this;
     }
 }
+
+_TypeStore.RegisteredTypes["BABYLON.CustomMaterial"] = CustomMaterial;

+ 3 - 0
materialsLibrary/src/fire/fireMaterial.ts

@@ -15,6 +15,7 @@ import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
 import { Mesh } from "babylonjs/Meshes/mesh";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./fire.fragment";
 import "./fire.vertex";
@@ -396,3 +397,5 @@ export class FireMaterial extends PushMaterial {
         return material;
     }
 }
+
+_TypeStore.RegisteredTypes["BABYLON.FireMaterial"] = FireMaterial;

+ 3 - 0
materialsLibrary/src/fur/furMaterial.ts

@@ -16,6 +16,7 @@ import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
 import { Mesh } from "babylonjs/Meshes/mesh";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./fur.fragment";
 import "./fur.vertex";
@@ -548,3 +549,5 @@ export class FurMaterial extends PushMaterial {
         return meshes;
     }
 }
+
+_TypeStore.RegisteredTypes["BABYLON.FurMaterial"] = FurMaterial;

+ 3 - 0
materialsLibrary/src/gradient/gradientMaterial.ts

@@ -12,6 +12,7 @@ import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
 import { Mesh } from "babylonjs/Meshes/mesh";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./gradient.fragment";
 import "./gradient.vertex";
@@ -296,3 +297,5 @@ export class GradientMaterial extends PushMaterial {
         return SerializationHelper.Parse(() => new GradientMaterial(source.name, scene), source, scene, rootUrl);
     }
 }
+
+_TypeStore.RegisteredTypes["BABYLON.GradientMaterial"] = GradientMaterial;

+ 4 - 1
materialsLibrary/src/grid/gridMaterial.ts

@@ -10,6 +10,7 @@ import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
 import { Mesh } from "babylonjs/Meshes/mesh";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./grid.fragment";
 import "./grid.vertex";
@@ -267,4 +268,6 @@ export class GridMaterial extends PushMaterial {
     public static Parse(source: any, scene: Scene, rootUrl: string): GridMaterial {
         return SerializationHelper.Parse(() => new GridMaterial(source.name, scene), source, scene, rootUrl);
     }
-}
+}
+
+_TypeStore.RegisteredTypes["BABYLON.GridMaterial"] = GridMaterial;

+ 3 - 0
materialsLibrary/src/lava/lavaMaterial.ts

@@ -13,6 +13,7 @@ import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
 import { Mesh } from "babylonjs/Meshes/mesh";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./lava.fragment";
 import "./lava.vertex";
@@ -430,3 +431,5 @@ export class LavaMaterial extends PushMaterial {
         return SerializationHelper.Parse(() => new LavaMaterial(source.name, scene), source, scene, rootUrl);
     }
 }
+
+_TypeStore.RegisteredTypes["BABYLON.LavaMaterial"] = LavaMaterial;

+ 3 - 0
materialsLibrary/src/mix/mixMaterial.ts

@@ -14,6 +14,7 @@ import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
 import { Mesh } from "babylonjs/Meshes/mesh";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./mix.fragment";
 import "./mix.vertex";
@@ -533,3 +534,5 @@ export class MixMaterial extends PushMaterial {
         return SerializationHelper.Parse(() => new MixMaterial(source.name, scene), source, scene, rootUrl);
     }
 }
+
+_TypeStore.RegisteredTypes["BABYLON.MixMaterial"] = MixMaterial;

+ 4 - 1
materialsLibrary/src/normal/normalMaterial.ts

@@ -13,6 +13,7 @@ import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
 import { Mesh } from "babylonjs/Meshes/mesh";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./normal.fragment";
 import "./normal.vertex";
@@ -371,4 +372,6 @@ export class NormalMaterial extends PushMaterial {
     public static Parse(source: any, scene: Scene, rootUrl: string): NormalMaterial {
         return SerializationHelper.Parse(() => new NormalMaterial(source.name, scene), source, scene, rootUrl);
     }
-}
+}
+
+_TypeStore.RegisteredTypes["BABYLON.NormalMaterial"] = NormalMaterial;

+ 3 - 0
materialsLibrary/src/shadowOnly/shadowOnlyMaterial.ts

@@ -12,6 +12,7 @@ import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
 import { Mesh } from "babylonjs/Meshes/mesh";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./shadowOnly.fragment";
 import "./shadowOnly.vertex";
@@ -256,3 +257,5 @@ export class ShadowOnlyMaterial extends PushMaterial {
         return SerializationHelper.Parse(() => new ShadowOnlyMaterial(source.name, scene), source, scene, rootUrl);
     }
 }
+
+_TypeStore.RegisteredTypes["BABYLON.ShadowOnlyMaterial"] = ShadowOnlyMaterial;

+ 3 - 0
materialsLibrary/src/simple/simpleMaterial.ts

@@ -13,6 +13,7 @@ import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
 import { Mesh } from "babylonjs/Meshes/mesh";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./simple.fragment";
 import "./simple.vertex";
@@ -328,3 +329,5 @@ export class SimpleMaterial extends PushMaterial {
         return SerializationHelper.Parse(() => new SimpleMaterial(source.name, scene), source, scene, rootUrl);
     }
 }
+
+_TypeStore.RegisteredTypes["BABYLON.SimpleMaterial"] = SimpleMaterial;

+ 3 - 0
materialsLibrary/src/sky/skyMaterial.ts

@@ -12,6 +12,7 @@ import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
 import { Mesh } from "babylonjs/Meshes/mesh";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./sky.fragment";
 import "./sky.vertex";
@@ -358,3 +359,5 @@ export class SkyMaterial extends PushMaterial {
         return SerializationHelper.Parse(() => new SkyMaterial(source.name, scene), source, scene, rootUrl);
     }
 }
+
+_TypeStore.RegisteredTypes["BABYLON.SkyMaterial"] = SkyMaterial;

+ 3 - 0
materialsLibrary/src/terrain/terrainMaterial.ts

@@ -14,6 +14,7 @@ import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
 import { Mesh } from "babylonjs/Meshes/mesh";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./terrain.fragment";
 import "./terrain.vertex";
@@ -450,3 +451,5 @@ export class TerrainMaterial extends PushMaterial {
         return SerializationHelper.Parse(() => new TerrainMaterial(source.name, scene), source, scene, rootUrl);
     }
 }
+
+_TypeStore.RegisteredTypes["BABYLON.TerrainMaterial"] = TerrainMaterial;

+ 3 - 0
materialsLibrary/src/triPlanar/triPlanarMaterial.ts

@@ -13,6 +13,7 @@ import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
 import { SubMesh } from "babylonjs/Meshes/subMesh";
 import { Mesh } from "babylonjs/Meshes/mesh";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./triplanar.fragment";
 import "./triplanar.vertex";
@@ -441,3 +442,5 @@ export class TriPlanarMaterial extends PushMaterial {
         return SerializationHelper.Parse(() => new TriPlanarMaterial(source.name, scene), source, scene, rootUrl);
     }
 }
+
+_TypeStore.RegisteredTypes["BABYLON.TriPlanarMaterial"] = TriPlanarMaterial;

+ 4 - 1
materialsLibrary/src/water/waterMaterial.ts

@@ -17,6 +17,7 @@ import { SubMesh } from "babylonjs/Meshes/subMesh";
 import { Mesh } from "babylonjs/Meshes/mesh";
 import { Camera } from "babylonjs/Cameras/camera";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./water.fragment";
 import "./water.vertex";
@@ -697,4 +698,6 @@ export class WaterMaterial extends PushMaterial {
         var mesh = Mesh.CreateGround(name, 512, 512, 32, scene, false);
         return mesh;
     }
-}
+}
+
+_TypeStore.RegisteredTypes["BABYLON.WaterMaterial"] = WaterMaterial;

+ 4 - 1
proceduralTexturesLibrary/src/brick/brickProceduralTexture.ts

@@ -3,6 +3,7 @@ import { Color3 } from "babylonjs/Maths/math";
 import { Texture } from "babylonjs/Materials/Textures/texture";
 import { ProceduralTexture } from "babylonjs/Materials/Textures/Procedurals/proceduralTexture";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./brickProceduralTexture.fragment";
 
@@ -87,4 +88,6 @@ export class BrickProceduralTexture extends ProceduralTexture {
 
         return texture;
     }
-}
+}
+
+_TypeStore.RegisteredTypes["BABYLON.BrickProceduralTexture"] = BrickProceduralTexture;

+ 4 - 1
proceduralTexturesLibrary/src/cloud/cloudProceduralTexture.ts

@@ -3,6 +3,7 @@ import { Color4 } from "babylonjs/Maths/math";
 import { Texture } from "babylonjs/Materials/Textures/texture";
 import { ProceduralTexture } from "babylonjs/Materials/Textures/Procedurals/proceduralTexture";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./cloudProceduralTexture.fragment";
 
@@ -63,4 +64,6 @@ export class CloudProceduralTexture extends ProceduralTexture {
 
         return texture;
     }
-}
+}
+
+_TypeStore.RegisteredTypes["BABYLON.CloudProceduralTexture"] = CloudProceduralTexture;

+ 4 - 1
proceduralTexturesLibrary/src/fire/fireProceduralTexture.ts

@@ -3,6 +3,7 @@ import { Vector2, Color3 } from "babylonjs/Maths/math";
 import { Texture } from "babylonjs/Materials/Textures/texture";
 import { ProceduralTexture } from "babylonjs/Materials/Textures/Procedurals/proceduralTexture";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./fireProceduralTexture.fragment";
 
@@ -167,4 +168,6 @@ export class FireProceduralTexture extends ProceduralTexture {
 
         return texture;
     }
-}
+}
+
+_TypeStore.RegisteredTypes["BABYLON.FireProceduralTexture"] = FireProceduralTexture;

+ 3 - 0
proceduralTexturesLibrary/src/grass/grassProceduralTexture.ts

@@ -3,6 +3,7 @@ import { Color3 } from "babylonjs/Maths/math";
 import { Texture } from "babylonjs/Materials/Textures/texture";
 import { ProceduralTexture } from "babylonjs/Materials/Textures/Procedurals/proceduralTexture";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./grassProceduralTexture.fragment";
 
@@ -84,3 +85,5 @@ export class GrassProceduralTexture extends ProceduralTexture {
         return texture;
     }
 }
+
+_TypeStore.RegisteredTypes["BABYLON.GrassProceduralTexture"] = GrassProceduralTexture;

+ 4 - 1
proceduralTexturesLibrary/src/marble/marbleProceduralTexture.ts

@@ -3,6 +3,7 @@ import { Color3 } from "babylonjs/Maths/math";
 import { Texture } from "babylonjs/Materials/Textures/texture";
 import { ProceduralTexture } from "babylonjs/Materials/Textures/Procedurals/proceduralTexture";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./marbleProceduralTexture.fragment";
 
@@ -87,4 +88,6 @@ export class MarbleProceduralTexture extends ProceduralTexture {
 
         return texture;
     }
-}
+}
+
+_TypeStore.RegisteredTypes["BABYLON.MarbleProceduralTexture"] = MarbleProceduralTexture;

+ 3 - 0
proceduralTexturesLibrary/src/normalMap/normalMapProceduralTexture.ts

@@ -2,6 +2,7 @@ import { serializeAsTexture, SerializationHelper } from "babylonjs/Misc/decorato
 import { Texture } from "babylonjs/Materials/Textures/texture";
 import { ProceduralTexture } from "babylonjs/Materials/Textures/Procedurals/proceduralTexture";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./normalMapProceduralTexture.fragment";
 
@@ -63,3 +64,5 @@ export class NormalMapProceduralTexture extends ProceduralTexture {
         return texture;
     }
 }
+
+_TypeStore.RegisteredTypes["BABYLON.NormalMapProceduralTexture"] = NormalMapProceduralTexture;

+ 3 - 0
proceduralTexturesLibrary/src/perlinNoise/perlinNoiseProceduralTexture.ts

@@ -2,6 +2,7 @@ import { serialize, SerializationHelper } from "babylonjs/Misc/decorators";
 import { Texture } from "babylonjs/Materials/Textures/texture";
 import { ProceduralTexture } from "babylonjs/Materials/Textures/Procedurals/proceduralTexture";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./perlinNoiseProceduralTexture.fragment";
 
@@ -72,3 +73,5 @@ export class PerlinNoiseProceduralTexture extends ProceduralTexture {
         return texture;
     }
 }
+
+_TypeStore.RegisteredTypes["BABYLON.PerlinNoiseProceduralTexture"] = PerlinNoiseProceduralTexture;

+ 4 - 1
proceduralTexturesLibrary/src/road/roadProceduralTexture.ts

@@ -3,6 +3,7 @@ import { Color3 } from "babylonjs/Maths/math";
 import { Texture } from "babylonjs/Materials/Textures/texture";
 import { ProceduralTexture } from "babylonjs/Materials/Textures/Procedurals/proceduralTexture";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./roadProceduralTexture.fragment";
 
@@ -51,4 +52,6 @@ export class RoadProceduralTexture extends ProceduralTexture {
 
         return texture;
     }
-}
+}
+
+_TypeStore.RegisteredTypes["BABYLON.RoadProceduralTexture"] = RoadProceduralTexture;

+ 4 - 1
proceduralTexturesLibrary/src/starfield/starfieldProceduralTexture.ts

@@ -2,6 +2,7 @@ import { serialize, SerializationHelper } from "babylonjs/Misc/decorators";
 import { Texture } from "babylonjs/Materials/Textures/texture";
 import { ProceduralTexture } from "babylonjs/Materials/Textures/Procedurals/proceduralTexture";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./starfieldProceduralTexture.fragment";
 
@@ -170,4 +171,6 @@ export class StarfieldProceduralTexture extends ProceduralTexture {
 
         return texture;
     }
-}
+}
+
+_TypeStore.RegisteredTypes["BABYLON.StarfieldProceduralTexture"] = StarfieldProceduralTexture;

+ 4 - 1
proceduralTexturesLibrary/src/wood/woodProceduralTexture.ts

@@ -3,6 +3,7 @@ import { Color3 } from "babylonjs/Maths/math";
 import { Texture } from "babylonjs/Materials/Textures/texture";
 import { ProceduralTexture } from "babylonjs/Materials/Textures/Procedurals/proceduralTexture";
 import { Scene } from "babylonjs/scene";
+import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 import "./woodProceduralTexture.fragment";
 
@@ -63,4 +64,6 @@ export class WoodProceduralTexture extends ProceduralTexture {
 
         return texture;
     }
-}
+}
+
+_TypeStore.RegisteredTypes["BABYLON.WoodProceduralTexture"] = WoodProceduralTexture;

+ 3 - 0
src/Actions/action.ts

@@ -1,6 +1,7 @@
 import { Observable } from "../Misc/observable";
 import { Vector2, Vector3, Color3, Color4 } from "../Maths/math";
 import { Condition } from "./condition";
+import { _TypeStore } from '../Misc/typeStore';
 
 declare type Scene = import("../scene").Scene;
 declare type ActionManager = import("./actionManager").ActionManager;
@@ -247,3 +248,5 @@ declare type Node = import("../node").Node;
             };
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.Action"] = Action;

+ 11 - 0
src/Actions/directActions.ts

@@ -3,6 +3,7 @@ import { Vector3 } from "../Maths/math";
 import { Action } from "./action";
 import { Condition } from "./condition";
 import { Constants } from "../Engines/constants";
+import { _TypeStore } from '../Misc/typeStore';
 
 declare type ActionEvent = import("./actionEvent").ActionEvent;
 
@@ -541,3 +542,13 @@ declare type ActionEvent = import("./actionEvent").ActionEvent;
             }, parent);
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.SetParentAction"] = SetParentAction;
+    _TypeStore.RegisteredTypes["BABYLON.ExecuteCodeAction"] = ExecuteCodeAction;
+    _TypeStore.RegisteredTypes["BABYLON.DoNothingAction"] = DoNothingAction;
+    _TypeStore.RegisteredTypes["BABYLON.StopAnimationAction"] = StopAnimationAction;
+    _TypeStore.RegisteredTypes["BABYLON.PlayAnimationAction"] = PlayAnimationAction;
+    _TypeStore.RegisteredTypes["BABYLON.IncrementValueAction"] = IncrementValueAction;
+    _TypeStore.RegisteredTypes["BABYLON.SetValueAction"] = SetValueAction;
+    _TypeStore.RegisteredTypes["BABYLON.SetStateAction"] = SetStateAction;
+    _TypeStore.RegisteredTypes["BABYLON.SetParentAction"] = SetParentAction;

+ 4 - 1
src/Actions/directAudioActions.ts

@@ -1,6 +1,6 @@
 import { Action } from "./action";
 import { Condition } from "./condition";
-
+import { _TypeStore } from '../Misc/typeStore';
 import { Sound } from "../Audio/sound";
 
     /**
@@ -88,3 +88,6 @@ import { Sound } from "../Audio/sound";
             }, parent);
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.PlaySoundAction"] = StopSoundAction;
+    _TypeStore.RegisteredTypes["BABYLON.StopSoundAction"] = StopSoundAction;

+ 3 - 0
src/Actions/interpolateValueAction.ts

@@ -5,6 +5,7 @@ import { Logger } from "../Misc/logger";
 import { Observable } from "../Misc/observable";
 import { Color3, Vector3, Matrix, Quaternion } from "../Maths/math";
 import { Animation } from "../Animations/animation";
+import { _TypeStore } from '../Misc/typeStore';
 
     /**
      * This defines an action responsible to change the value of a property
@@ -142,3 +143,5 @@ import { Animation } from "../Animations/animation";
             }, parent);
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.InterpolateValueAction"] = Action;

+ 3 - 0
src/Layers/glowLayer.ts

@@ -17,6 +17,7 @@ import { BlurPostProcess } from "../PostProcesses/blurPostProcess";
 import { EffectLayer } from "./effectLayer";
 import { AbstractScene } from "../abstractScene";
 import { Constants } from "../Engines/constants";
+import { _TypeStore } from '../Misc/typeStore';
 
 import "../Shaders/glowMapMerge.fragment";
 import "../Shaders/glowMapMerge.vertex";
@@ -576,3 +577,5 @@ declare module "../abstractScene" {
             return gl;
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.GlowLayer"] = GlowLayer;

+ 3 - 0
src/Layers/highlightLayer.ts

@@ -23,6 +23,7 @@ import { EffectLayer } from "./effectLayer";
 import { AbstractScene } from "../abstractScene";
 import { Constants } from "../Engines/constants";
 import { Logger } from "../Misc/logger";
+import { _TypeStore } from '../Misc/typeStore';
 
 import "../Shaders/glowMapMerge.fragment";
 import "../Shaders/glowMapMerge.vertex";
@@ -833,3 +834,5 @@ declare module "../abstractScene" {
             return hl;
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.HighlightLayer"] = HighlightLayer;

+ 3 - 0
src/Materials/Background/backgroundMaterial.ts

@@ -23,6 +23,7 @@ import { IShadowLight } from "../../Lights/shadowLight";
 import { _TimeToken } from "../../Instrumentation/timeToken";
 import { _DepthCullingState, _StencilState, _AlphaState } from "../../States/index";
 import { Constants } from "../../Engines/constants";
+import { _TypeStore } from '../../Misc/typeStore';
 
 import "../../Shaders/background.fragment";
 import "../../Shaders/background.vertex";
@@ -1198,3 +1199,5 @@ import "../../Shaders/background.vertex";
             return SerializationHelper.Parse(() => new BackgroundMaterial(source.name, scene), source, scene, rootUrl);
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.BackgroundMaterial"] = BackgroundMaterial;

+ 4 - 0
src/Materials/PBR/pbrMaterial.ts

@@ -9,6 +9,8 @@ import { ImageProcessingConfiguration } from "../../Materials/imageProcessingCon
 import { ColorCurves } from "../../Materials/colorCurves";
 import { BaseTexture } from "../../Materials/Textures/baseTexture";
 import { PBRBaseMaterial } from "./pbrBaseMaterial";
+import { _TypeStore } from '../../Misc/typeStore';
+
     /**
      * The Physically based material of BJS.
      *
@@ -822,3 +824,5 @@ import { PBRBaseMaterial } from "./pbrBaseMaterial";
             return SerializationHelper.Parse(() => new PBRMaterial(source.name, scene), source, scene, rootUrl);
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.PBRMaterial"] = PBRMaterial;

+ 4 - 0
src/Materials/PBR/pbrMetallicRoughnessMaterial.ts

@@ -5,6 +5,8 @@ import { _TimeToken } from "../../Instrumentation/timeToken";
 import { _DepthCullingState, _StencilState, _AlphaState } from "../../States/index";
 import { BaseTexture } from "../../Materials/Textures/baseTexture";
 import { PBRBaseSimpleMaterial } from "./pbrBaseSimpleMaterial";
+import { _TypeStore } from '../../Misc/typeStore';
+
     /**
      * The PBR material of BJS following the metal roughness convention.
      *
@@ -144,3 +146,5 @@ import { PBRBaseSimpleMaterial } from "./pbrBaseSimpleMaterial";
             return SerializationHelper.Parse(() => new PBRMetallicRoughnessMaterial(source.name, scene), source, scene, rootUrl);
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.PBRMetallicRoughnessMaterial"] = PBRMetallicRoughnessMaterial;

+ 4 - 0
src/Materials/PBR/pbrSpecularGlossinessMaterial.ts

@@ -5,6 +5,8 @@ import { _TimeToken } from "../../Instrumentation/timeToken";
 import { _DepthCullingState, _StencilState, _AlphaState } from "../../States/index";
 import { BaseTexture } from "../../Materials/Textures/baseTexture";
 import { PBRBaseSimpleMaterial } from "./pbrBaseSimpleMaterial";
+import { _TypeStore } from '../../Misc/typeStore';
+
     /**
      * The PBR material of BJS following the specular glossiness convention.
      *
@@ -134,3 +136,5 @@ import { PBRBaseSimpleMaterial } from "./pbrBaseSimpleMaterial";
             return SerializationHelper.Parse(() => new PBRSpecularGlossinessMaterial(source.name, scene), source, scene, rootUrl);
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.PBRSpecularGlossinessMaterial"] = PBRSpecularGlossinessMaterial;

+ 3 - 0
src/Materials/Textures/Procedurals/noiseProceduralTexture.ts

@@ -5,6 +5,7 @@ import { _TimeToken } from "../../../Instrumentation/timeToken";
 import { _DepthCullingState, _StencilState, _AlphaState } from "../../../States/index";
 import { Texture } from "../../../Materials/Textures/texture";
 import { ProceduralTexture } from "./proceduralTexture";
+import { _TypeStore } from '../../../Misc/typeStore';
 
 import "../../../Shaders/noise.fragment";
 
@@ -100,3 +101,5 @@ import "../../../Shaders/noise.fragment";
             return texture;
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.NoiseProceduralTexture"] = NoiseProceduralTexture;

+ 4 - 0
src/Materials/Textures/colorGradingTexture.ts

@@ -7,6 +7,8 @@ import { BaseTexture } from "../../Materials/Textures/baseTexture";
 import { _TimeToken } from "../../Instrumentation/timeToken";
 import { _DepthCullingState, _StencilState, _AlphaState } from "../../States/index";
 import { Constants } from "../../Engines/constants";
+import { _TypeStore } from '../../Misc/typeStore';
+
     /**
      * This represents a color grading texture. This acts as a lookup table LUT, useful during post process
      * It can help converting any input color in a desired output one. This can then be used to create effects
@@ -270,3 +272,5 @@ import { Constants } from "../../Engines/constants";
             return serializationObject;
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.ColorGradingTexture"] = ColorGradingTexture;

+ 4 - 0
src/Materials/Textures/hdrCubeTexture.ts

@@ -9,6 +9,8 @@ import { _TimeToken } from "../../Instrumentation/timeToken";
 import { _DepthCullingState, _StencilState, _AlphaState } from "../../States/index";
 import { HDRTools } from "../../Misc/HighDynamicRange/hdr";
 import { CubeMapToSphericalPolynomialTools } from "../../Misc/HighDynamicRange/cubemapToSphericalPolynomial";
+import { _TypeStore } from '../../Misc/typeStore';
+
     /**
      * This represents a texture coming from an HDR input.
      *
@@ -352,3 +354,5 @@ import { CubeMapToSphericalPolynomialTools } from "../../Misc/HighDynamicRange/c
             return serializationObject;
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.HDRCubeTexture"] = HDRCubeTexture;

+ 4 - 0
src/Materials/multiMaterial.ts

@@ -5,6 +5,8 @@ import { BaseSubMesh } from "../Meshes/subMesh";
 import { BaseTexture } from "../Materials/Textures/baseTexture";
 import { Material } from "../Materials/material";
 import { Tags } from "../Misc/tags";
+import { _TypeStore } from '../Misc/typeStore';
+
     /**
      * A multi-material is used to apply different materials to different parts of the same object without the need of
      * separate meshes. This can be use to improve performances.
@@ -232,3 +234,5 @@ import { Tags } from "../Misc/tags";
             return multiMaterial;
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.MultiMaterial"] = MultiMaterial;

+ 3 - 0
src/Materials/shaderMaterial.ts

@@ -9,6 +9,7 @@ import { Texture } from "../Materials/Textures/texture";
 import { MaterialHelper } from "./materialHelper";
 import { EffectFallbacks, EffectCreationOptions } from "./effect";
 import { Material } from "./material";
+import { _TypeStore } from '../Misc/typeStore';
 
     /**
      * Defines the options associated with the creation of a shader material.
@@ -920,3 +921,5 @@ import { Material } from "./material";
             return material;
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.ShaderMaterial"] = ShaderMaterial;

+ 3 - 0
src/Materials/standardMaterial.ts

@@ -24,6 +24,7 @@ import { BaseTexture } from "../Materials/Textures/baseTexture";
 import { Texture } from "../Materials/Textures/texture";
 import { CubeTexture } from "../Materials/Textures/cubeTexture";
 import { RenderTargetTexture } from "../Materials/Textures/renderTargetTexture";
+import { _TypeStore } from '../Misc/typeStore';
 
 import "../Shaders/default.fragment";
 import "../Shaders/default.vertex";
@@ -1890,3 +1891,5 @@ import { Constants } from "../Engines/constants";
             Engine.MarkAllMaterialsAsDirty(Constants.MATERIAL_FresnelDirtyFlag);
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.StandardMaterial"] = StandardMaterial;

+ 2 - 1
src/Misc/index.ts

@@ -21,4 +21,5 @@ export * from "./tools";
 export * from "./videoRecorder";
 export * from "./virtualJoystick";
 export * from "./workerPool";
-export * from "./logger";
+export * from "./logger";
+export * from "./typeStore";

+ 8 - 0
src/Misc/tools.ts

@@ -13,6 +13,7 @@ import { TGATools } from "./tga";
 import { Constants } from "../Engines/constants";
 import { DomManagement } from "./domManagement";
 import { Logger } from "./logger";
+import { _TypeStore } from './typeStore';
 
 declare type Engine = import("../Engines/engine").Engine;
 
@@ -304,6 +305,13 @@ declare type Engine = import("../Engines/engine").Engine;
                 return Tools.RegisteredExternalClasses[className];
             }
 
+            const internalClass = _TypeStore.GetClass(className);
+            if (internalClass) {
+                return internalClass;
+            }
+
+            Logger.Warn(className + " not found, you may have missed an import.");
+
             var arr = className.split(".");
 
             var fn: any = (window || this);

+ 13 - 0
src/Misc/typeStore.ts

@@ -0,0 +1,13 @@
+/** @hidden */
+export class _TypeStore {
+    /** @hidden */
+    public static RegisteredTypes: { [key: string]: Object } = { };
+
+    /** @hidden */
+    public static GetClass(fqdn: string): any {
+        if (this.RegisteredTypes && this.RegisteredTypes[fqdn]) {
+            return this.RegisteredTypes[fqdn];
+        }
+        return null;
+    }
+}

+ 3 - 0
src/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.ts

@@ -22,6 +22,7 @@ import { PostProcessRenderPipeline } from "../../../PostProcesses/RenderPipeline
 import { PostProcessRenderEffect } from "../../../PostProcesses/RenderPipeline/postProcessRenderEffect";
 import { DepthOfFieldEffect, DepthOfFieldEffectBlurLevel } from "../../../PostProcesses/depthOfFieldEffect";
 import { BloomEffect } from "../../../PostProcesses/bloomEffect";
+import { _TypeStore } from '../../../Misc/typeStore';
 
     /**
 	 * The default rendering pipeline can be added to a scene to apply common post processing effects such as anti-aliasing or depth of field.
@@ -703,3 +704,5 @@ import { BloomEffect } from "../../../PostProcesses/bloomEffect";
             return SerializationHelper.Parse(() => new DefaultRenderingPipeline(source._name, source._name._hdr, scene), source, scene, rootUrl);
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.DefaultRenderingPipeline"] = DefaultRenderingPipeline;

+ 3 - 0
src/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.ts

@@ -12,6 +12,7 @@ import { PassPostProcess } from "../../../PostProcesses/passPostProcess";
 import { Engine } from "../../../Engines/engine";
 import { GeometryBufferRenderer } from "../../../Rendering/geometryBufferRenderer";
 import { Scene } from "../../../scene";
+import { _TypeStore } from '../../../Misc/typeStore';
 
 import "../../../Shaders/ssao2.fragment";
 import "../../../Shaders/ssaoCombine.fragment";
@@ -463,3 +464,5 @@ import "../../../Shaders/ssaoCombine.fragment";
             return SerializationHelper.Parse(() => new SSAO2RenderingPipeline(source._name, scene, source._ratio), source, scene, rootUrl);
         }
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.SSAO2RenderingPipeline"] = SSAO2RenderingPipeline;

+ 3 - 0
src/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.ts

@@ -19,6 +19,7 @@ import { GeometryBufferRenderer } from "../../../Rendering/geometryBufferRendere
 import { Scene } from "../../../scene";
 import { Animation } from "../../../Animations/animation";
 import { Constants } from "../../../Engines/constants";
+import { _TypeStore } from '../../../Misc/typeStore';
 
 import "../../../Shaders/standard.fragment";
     /**
@@ -1109,3 +1110,5 @@ import "../../../Shaders/standard.fragment";
          */
         public static LuminanceSteps: number = 6;
     }
+
+    _TypeStore.RegisteredTypes["BABYLON.StandardRenderingPipeline"] = StandardRenderingPipeline;