Browse Source

started trying to update publishing

Trevor Baron 6 years ago
parent
commit
51d4c34547

+ 7 - 5
Tools/Config/config.js

@@ -52,7 +52,7 @@ config.additionalNpmPackages.forEach(package => {
     };
 });
 
-config.modules.map(function(module) {
+config.es6modules.map(function(module) {
     const settings = config[module];
 
     const mainDirectory = path.resolve(rootFolder, settings.build.mainFolder);
@@ -103,11 +103,13 @@ config.modules.map(function(module) {
         const tsGlob = srcDirectory.replace(/\\/g, "/") + "/**/*.ts*";
 
         for (let library of settings.libraries) {
-            const entryPath = path.join(srcDirectory, library.entry);
+            if(library.entry){
+                const entryPath = path.join(srcDirectory, library.entry);
 
-            library.computed = {
-                entryPath
-            };
+                library.computed = {
+                    entryPath
+                };
+            }
         }
 
         settings.computed.srcDirectory = srcDirectory;

+ 25 - 7
Tools/Config/config.json

@@ -44,6 +44,17 @@
         "gui",
         "inspector"
     ],
+    "es6modules": [
+        "core",
+        "materialsLibrary",
+        "postProcessesLibrary",
+        "proceduralTexturesLibrary",
+        "loaders",
+        "serializers",
+        "gui",
+        "inspector",
+        "viewer"
+    ],
     "lintModules": [
         "core",
         "materialsLibrary",
@@ -533,12 +544,11 @@
                 }
             },
             "es6": {
-                "webpackBuild": {
-                    "dependencies": [
-                        "node_modules/re-resizable/lib/index.es5.js",
-                        "Tools/**/*"
-                    ]
-                },
+                "webpackBuild": true,
+                "buildDependencies": [
+                    "node_modules/re-resizable/lib/index.es5.js",
+                    "Tools/**/*"
+                ],
                 "packageName": "@babylonjs/inspector",
                 "readme": "dist/preview release/inspector/readme-es6.md",
                 "packagesFiles": [
@@ -564,6 +574,7 @@
             }
         ],
         "build": {
+            "mainFolder": "./viewer/",
             "webpack": "../../../Viewer/webpack.gulp.config.js",
             "distOutputDirectory": "/viewer/",
             "dtsBundle": {
@@ -625,7 +636,14 @@
                     ]
                 }
             ],
-            "legacyPackageOutputDirectory": "../../../Viewer/build/src/"
+            "legacyPackageOutputDirectory": "../../../Viewer/build/src/",
+            "es6": {
+                "buildDependencies": [
+                    "node_modules/handlebars/**/*"
+                ],
+                "packageName": "@babylonjs/viewer",
+                "readme": "Viewer/README-ES6.md"
+            }
         }
     },
     "viewer-assets": {

+ 6 - 6
Tools/Gulp/tasks/gulpTasks-librariesES6.js

@@ -68,8 +68,8 @@ var dep = function(settings) {
         }
     }
 
-    if (settings.build.es6.webpackBuild && settings.build.es6.webpackBuild.dependencies) {
-        for (let pathName of settings.build.es6.webpackBuild.dependencies) {
+    if (settings.build.es6.buildDependencies) {
+        for (let pathName of settings.build.es6.buildDependencies) {
             const dependencyPath = path.join(config.computed.rootFolder, pathName);
             copyPaths.push(dependencyPath);
         }
@@ -91,7 +91,7 @@ var modifySources = function(settings) {
             pathName = pathName.replace("/*", "");
         }
 
-        for (var moduleName of config.modules) {
+        for (var moduleName of config.es6modules) {
             var module = config[moduleName];
             if (module.build.umd.packageName === pathName) {
                 if (module.build.es6.packageName) {
@@ -127,7 +127,7 @@ var modifyTsConfig = function(settings, cb) {
         }
 
         var mapped = false;
-        for (var moduleName of config.modules) {
+        for (var moduleName of config.es6modules) {
             var module = config[moduleName];
             if (module.build.umd.packageName === pathName) {
                 if (module.build.es6.packageName) {
@@ -286,7 +286,7 @@ function buildES6Library(settings, module) {
 /**
  * Dynamic es 6 module creation.
  */
-config.modules.map(function(module) {
+config.es6modules.map(function(module) {
     const settings = config[module];
     gulp.task(module + "-es6", buildES6Library(settings, module));
 });
@@ -294,4 +294,4 @@ config.modules.map(function(module) {
 /**
  * Build all es 6 libs.
  */
-gulp.task("typescript-es6", gulp.series(config.modules.map((module) => module + "-es6")));
+gulp.task("typescript-es6", gulp.series(config.es6modules.map((module) => module + "-es6")));

+ 1 - 1
Tools/Publisher/tasks/processUMDViewer.js

@@ -16,7 +16,7 @@ const config = require("../../Config/config.js");
  */
 function processUMDViewer(module, version) {
 
-    let projectPath = '../../../Viewer';
+    let projectPath = '../../Viewer';
     let buildPath = path.resolve(__dirname, projectPath + "/build/src/");
 
     if (module.build.umd.requiredFiles) {

+ 35 - 0
Viewer/README-ES6.md

@@ -0,0 +1,35 @@
+# BabylonJS Viewer
+
+This project is a 3d model viewer using babylonjs.
+
+Please note that this is an *initial release*. The API and project structure could (and probably SHOULD) be changed, so please don't rely on this yet in a productive environment.
+
+The viewer is using the latest Babylon from npm (3.1 alpha).
+
+This documentation is also not full. I will slowly add more and more exmplanations.
+
+## Basic usage
+
+See `basicExample.html` in `/dist`.
+
+Basically, all that is needed is an html tag, and the viewer.js, which includes everything needed to render a Scene:
+
+```html
+<babylon model="https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/BoomBox/glTF/BoomBox.gltf" default-viewer="true"></babylon>
+<script src="viewer.js"></script>
+``` 
+
+This will create a (default) viewer and will load the model in this URL using the gltf loader.
+
+The `babylon` tag will be automatically initialized. 
+
+## Configuration
+
+Configuration can be provided using html attributes or a JSON (at the moment). A configuration Mapper can be registered to create new configuration readers. 
+
+Before I finish a full documentation, take a look at `configuration.ts`
+
+## Templating
+
+The default templates are integrated in the viewer.js file. The current templates are located in `/assets/templates/default/` . Those templates can be extended and registered using the configuration file.
+

+ 2 - 0
Viewer/package.json

@@ -39,6 +39,8 @@
         "webpack-dev-server": "^3.1.4"
     },
     "dependencies": {
+        "@babylonjs/core": "^4.0.0-alpha.18",
+        "@babylonjs/loaders": "^4.0.0-alpha.18",
         "pepjs": "^0.4.3"
     }
 }

+ 1 - 1
Viewer/tsconfig.json

@@ -35,7 +35,7 @@
                 "./helper/deepmerge.d.ts"
             ],
             "handlebars": [
-                "./templates/handlebars.d.ts"
+                "./templating/handlebars.d.ts"
             ],
             "babylonjs-viewer-assets": [
                 "./assets/"

+ 49 - 9
dist/preview release/viewer/babylon.viewer.d.ts

@@ -5,8 +5,31 @@ declare module "babylonjs-loaders"{ export=BABYLON;}
 // Generated by dts-bundle v0.7.3
 // Dependencies for this module:
 //   ../../../../../Tools/Gulp/babylonjs
+//   ../../../../../Tools/Gulp/babylonjs/Misc/observable
+//   ../../../../../Tools/Gulp/babylonjs/Engines/engine
+//   ../../../../../Tools/Gulp/babylonjs/Loading/sceneLoader
+//   ../../../../../Tools/Gulp/babylonjs/scene
+//   ../../../../../Tools/Gulp/babylonjs/Meshes/abstractMesh
+//   ../../../../../Tools/Gulp/babylonjs/Particles/IParticleSystem
+//   ../../../../../Tools/Gulp/babylonjs/Bones/skeleton
+//   ../../../../../Tools/Gulp/babylonjs/Animations/animationGroup
+//   ../../../../../Tools/Gulp/babylonjs/Animations/index
+//   ../../../../../Tools/Gulp/babylonjs/types
+//   ../../../../../Tools/Gulp/babylonjs/Materials/material
 //   ../../../../../Tools/Gulp/babylonjs-gltf2interface
-//   ../../../../../Tools/Gulp/babylonjs-loaders
+//   ../../../../../Tools/Gulp/babylonjs/Maths/math
+//   ../../../../../Tools/Gulp/babylonjs-loaders/glTF/glTFFileLoader
+//   ../../../../../Tools/Gulp/babylonjs/Materials/Textures/baseTexture
+//   ../../../../../Tools/Gulp/babylonjs/Misc/sceneOptimizer
+//   ../../../../../Tools/Gulp/babylonjs/Cameras/arcRotateCamera
+//   ../../../../../Tools/Gulp/babylonjs/Lights/light
+//   ../../../../../Tools/Gulp/babylonjs/Helpers/environmentHelper
+//   ../../../../../Tools/Gulp/babylonjs/Cameras/VR/vrExperienceHelper
+//   ../../../../../Tools/Gulp/babylonjs/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline
+//   ../../../../../Tools/Gulp/babylonjs/Lights/shadowLight
+//   ../../../../../Tools/Gulp/babylonjs-loaders/glTF/2.0/glTFLoaderExtension
+//   ../../../../../Tools/Gulp/babylonjs/PostProcesses/depthOfFieldEffect
+//   ../../../../../Tools/Gulp/babylonjs/Materials/Textures/cubeTexture
 declare module BabylonViewer {
     /**
         * BabylonJS Viewer
@@ -128,8 +151,12 @@ declare module BabylonViewer {
         * The Default viewer is the default implementation of the AbstractViewer.
         * It uses the templating system to render a new canvas and controls.
         */
-    export class DefaultViewer extends AbstractViewer {
+    export class DefaultViewer extends AbstractViewerWithTemplate {
             containerElement: Element;
+            /**
+                * The corresponsing template manager of this viewer.
+                */
+            templateManager: TemplateManager;
             fullscreenElement?: Element;
             /**
                 * Create a new default viewer
@@ -141,7 +168,7 @@ declare module BabylonViewer {
             /**
                 * This will be executed when the templates initialize.
                 */
-            protected _onTemplatesLoaded(): Promise<AbstractViewer>;
+            protected _onTemplatesLoaded(): Promise<import("./viewer").AbstractViewer>;
             protected _initVR(): void;
             /**
                 * Toggle fullscreen of the entire viewer
@@ -207,10 +234,6 @@ declare module BabylonViewer {
     export abstract class AbstractViewer {
             containerElement: Element;
             /**
-                * The corresponsing template manager of this viewer.
-                */
-            templateManager: TemplateManager;
-            /**
                 * Babylon BABYLON.Engine corresponding with this viewer
                 */
             engine: BABYLON.Engine;
@@ -309,13 +332,14 @@ declare module BabylonViewer {
             /**
                 * The configuration loader of this viewer
                 */
-            protected _configurationLoader: ConfigurationLoader;
+            protected _configurationLoader: RenderOnlyConfigurationLoader;
             /**
                 * Is the viewer already initialized. for internal use.
                 */
             protected _isInit: boolean;
             protected _configurationContainer: ConfigurationContainer;
             readonly configurationContainer: ConfigurationContainer;
+            protected getConfigurationLoader(): RenderOnlyConfigurationLoader;
             constructor(containerElement: Element, initialConfiguration?: ViewerConfiguration);
             /**
                 * get the baseId of this viewer
@@ -1203,6 +1227,15 @@ declare module BabylonViewer {
     }
 }
 declare module BabylonViewer {
+    /**
+      * The AbstractViewer is the center of Babylon's viewer.
+      * It is the basic implementation of the default viewer and is responsible of loading and showing the model and the templates
+      */
+    export abstract class AbstractViewerWithTemplate extends AbstractViewer {
+        protected getConfigurationLoader(): ConfigurationLoader;
+    }
+}
+declare module BabylonViewer {
     export class ConfigurationContainer {
         configuration: ViewerConfiguration;
         viewerId: string;
@@ -1217,8 +1250,9 @@ declare module BabylonViewer {
         * parse the object and return a conform ViewerConfiguration.
         * It is a private member of the scene.
         */
-    export class ConfigurationLoader {
+    export class RenderOnlyConfigurationLoader {
             constructor(_enableCache?: boolean);
+            protected getExtendedConfig(type: string | undefined): ViewerConfiguration;
             /**
                 * load a configuration object that is defined in the initial configuration provided.
                 * The viewer configuration can extend different types of configuration objects and have an extra configuration defined.
@@ -1426,6 +1460,7 @@ declare module BabylonViewer {
             updateConfiguration(newConfiguration: Partial<ViewerConfiguration>): void;
             bloomEnabled: boolean;
             fxaaEnabled: boolean;
+            setDefaultMaterial(sceneConfig: ISceneConfiguration): void;
             /**
                 * internally configure the scene using the provided configuration.
                 * The scene will not be recreated, but just updated.
@@ -1615,6 +1650,11 @@ declare module BabylonViewer {
     }
 }
 declare module BabylonViewer {
+    export class ConfigurationLoader extends RenderOnlyConfigurationLoader {
+        protected getExtendedConfig(type: string | undefined): import("./configuration").ViewerConfiguration;
+    }
+}
+declare module BabylonViewer {
     /**
         * The ViewerLabs class will hold functions that are not (!) backwards compatible.
         * The APIs in all labs-related classes and configuration  might change.

File diff suppressed because it is too large
+ 31 - 31
dist/preview release/viewer/babylon.viewer.js


File diff suppressed because it is too large
+ 61 - 25
dist/preview release/viewer/babylon.viewer.max.js


+ 118 - 34
dist/preview release/viewer/babylon.viewer.module.d.ts

@@ -6,8 +6,31 @@ declare module "babylonjs-loaders"{ export=BABYLON;}
 // Generated by dts-bundle v0.7.3
 // Dependencies for this module:
 //   ../../../../../Tools/Gulp/babylonjs
+//   ../../../../../Tools/Gulp/babylonjs/Misc/observable
+//   ../../../../../Tools/Gulp/babylonjs/Engines/engine
+//   ../../../../../Tools/Gulp/babylonjs/Loading/sceneLoader
+//   ../../../../../Tools/Gulp/babylonjs/scene
+//   ../../../../../Tools/Gulp/babylonjs/Meshes/abstractMesh
+//   ../../../../../Tools/Gulp/babylonjs/Particles/IParticleSystem
+//   ../../../../../Tools/Gulp/babylonjs/Bones/skeleton
+//   ../../../../../Tools/Gulp/babylonjs/Animations/animationGroup
+//   ../../../../../Tools/Gulp/babylonjs/Animations/index
+//   ../../../../../Tools/Gulp/babylonjs/types
+//   ../../../../../Tools/Gulp/babylonjs/Materials/material
 //   ../../../../../Tools/Gulp/babylonjs-gltf2interface
-//   ../../../../../Tools/Gulp/babylonjs-loaders
+//   ../../../../../Tools/Gulp/babylonjs/Maths/math
+//   ../../../../../Tools/Gulp/babylonjs-loaders/glTF/glTFFileLoader
+//   ../../../../../Tools/Gulp/babylonjs/Materials/Textures/baseTexture
+//   ../../../../../Tools/Gulp/babylonjs/Misc/sceneOptimizer
+//   ../../../../../Tools/Gulp/babylonjs/Cameras/arcRotateCamera
+//   ../../../../../Tools/Gulp/babylonjs/Lights/light
+//   ../../../../../Tools/Gulp/babylonjs/Helpers/environmentHelper
+//   ../../../../../Tools/Gulp/babylonjs/Cameras/VR/vrExperienceHelper
+//   ../../../../../Tools/Gulp/babylonjs/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline
+//   ../../../../../Tools/Gulp/babylonjs/Lights/shadowLight
+//   ../../../../../Tools/Gulp/babylonjs-loaders/glTF/2.0/glTFLoaderExtension
+//   ../../../../../Tools/Gulp/babylonjs/PostProcesses/depthOfFieldEffect
+//   ../../../../../Tools/Gulp/babylonjs/Materials/Textures/cubeTexture
 
 declare module 'babylonjs-viewer' {
     import { mapperManager } from 'babylonjs-viewer/configuration/mappers';
@@ -95,7 +118,7 @@ declare module 'babylonjs-viewer/configuration/globals' {
 }
 
 declare module 'babylonjs-viewer/viewer/viewerManager' {
-    import { Observable } from 'babylonjs';
+    import { Observable } from 'babylonjs/Misc/observable';
     import { AbstractViewer } from 'babylonjs-viewer/viewer/viewer';
     /**
         * The viewer manager is the container for all viewers currently registered on this page.
@@ -153,15 +176,20 @@ declare module 'babylonjs-viewer/viewer/viewerManager' {
 declare module 'babylonjs-viewer/viewer/defaultViewer' {
     import { ViewerConfiguration, IModelConfiguration } from 'babylonjs-viewer/configuration';
     import { Template } from 'babylonjs-viewer/templating/templateManager';
-    import { AbstractViewer } from 'babylonjs-viewer/viewer/viewer';
+    import { TemplateManager } from 'babylonjs-viewer/templating/templateManager';
+    import { AbstractViewerWithTemplate } from 'babylonjs-viewer/viewer/viewerWithTemplate';
     import { ViewerModel } from 'babylonjs-viewer/model/viewerModel';
     import { IViewerTemplatePlugin } from 'babylonjs-viewer/templating/viewerTemplatePlugin';
     /**
         * The Default viewer is the default implementation of the AbstractViewer.
         * It uses the templating system to render a new canvas and controls.
         */
-    export class DefaultViewer extends AbstractViewer {
+    export class DefaultViewer extends AbstractViewerWithTemplate {
             containerElement: Element;
+            /**
+                * The corresponsing template manager of this viewer.
+                */
+            templateManager: TemplateManager;
             fullscreenElement?: Element;
             /**
                 * Create a new default viewer
@@ -173,7 +201,7 @@ declare module 'babylonjs-viewer/viewer/defaultViewer' {
             /**
                 * This will be executed when the templates initialize.
                 */
-            protected _onTemplatesLoaded(): Promise<AbstractViewer>;
+            protected _onTemplatesLoaded(): Promise<import("./viewer").AbstractViewer>;
             protected _initVR(): void;
             /**
                 * Toggle fullscreen of the entire viewer
@@ -233,15 +261,17 @@ declare module 'babylonjs-viewer/viewer/defaultViewer' {
 }
 
 declare module 'babylonjs-viewer/viewer/viewer' {
-    import { Engine, ISceneLoaderPlugin, ISceneLoaderPluginAsync, Observable, Scene, SceneLoaderProgressEvent } from 'babylonjs';
+    import { Engine } from 'babylonjs/Engines/engine';
+    import { ISceneLoaderPlugin, ISceneLoaderPluginAsync, SceneLoaderProgressEvent } from 'babylonjs/Loading/sceneLoader';
+    import { Observable } from 'babylonjs/Misc/observable';
+    import { Scene } from 'babylonjs/scene';
     import { IModelConfiguration, IObserversConfiguration, ViewerConfiguration } from 'babylonjs-viewer/configuration';
     import { ConfigurationContainer } from 'babylonjs-viewer/configuration/configurationContainer';
-    import { ConfigurationLoader } from 'babylonjs-viewer/configuration/loader';
+    import { RenderOnlyConfigurationLoader } from 'babylonjs-viewer/configuration/renderOnlyLoader';
     import { ModelLoader } from 'babylonjs-viewer/loader/modelLoader';
     import { ObservablesManager } from 'babylonjs-viewer/managers/observablesManager';
     import { SceneManager } from 'babylonjs-viewer/managers/sceneManager';
     import { ViewerModel } from 'babylonjs-viewer/model/viewerModel';
-    import { TemplateManager } from 'babylonjs-viewer/templating/templateManager';
     /**
         * The AbstractViewer is the center of Babylon's viewer.
         * It is the basic implementation of the default viewer and is responsible of loading and showing the model and the templates
@@ -249,10 +279,6 @@ declare module 'babylonjs-viewer/viewer/viewer' {
     export abstract class AbstractViewer {
             containerElement: Element;
             /**
-                * The corresponsing template manager of this viewer.
-                */
-            templateManager: TemplateManager;
-            /**
                 * Babylon Engine corresponding with this viewer
                 */
             engine: Engine;
@@ -351,13 +377,14 @@ declare module 'babylonjs-viewer/viewer/viewer' {
             /**
                 * The configuration loader of this viewer
                 */
-            protected _configurationLoader: ConfigurationLoader;
+            protected _configurationLoader: RenderOnlyConfigurationLoader;
             /**
                 * Is the viewer already initialized. for internal use.
                 */
             protected _isInit: boolean;
             protected _configurationContainer: ConfigurationContainer;
             readonly configurationContainer: ConfigurationContainer;
+            protected getConfigurationLoader(): RenderOnlyConfigurationLoader;
             constructor(containerElement: Element, initialConfiguration?: ViewerConfiguration);
             /**
                 * get the baseId of this viewer
@@ -481,7 +508,8 @@ declare module 'babylonjs-viewer/viewer/viewer' {
 }
 
 declare module 'babylonjs-viewer/managers/telemetryManager' {
-    import { Engine, Observable } from "babylonjs";
+    import { Observable } from "babylonjs/Misc/observable";
+    import { Engine } from "babylonjs/Engines/engine";
     /**
         * The data structure of a telemetry event.
         */
@@ -567,7 +595,17 @@ declare module 'babylonjs-viewer/loader/modelLoader' {
 }
 
 declare module 'babylonjs-viewer/model/viewerModel' {
-    import { ISceneLoaderPlugin, ISceneLoaderPluginAsync, AnimationGroup, AbstractMesh, Observable, SceneLoaderProgressEvent, IParticleSystem, Skeleton, IDisposable, Nullable, Animation, Material } from "babylonjs";
+    import { IDisposable } from "babylonjs/scene";
+    import { ISceneLoaderPlugin, ISceneLoaderPluginAsync } from "babylonjs/Loading/sceneLoader";
+    import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
+    import { IParticleSystem } from "babylonjs/Particles/IParticleSystem";
+    import { Skeleton } from "babylonjs/Bones/skeleton";
+    import { Observable } from "babylonjs/Misc/observable";
+    import { SceneLoaderProgressEvent } from "babylonjs/Loading/sceneLoader";
+    import { AnimationGroup } from "babylonjs/Animations/animationGroup";
+    import { Animation } from "babylonjs/Animations/index";
+    import { Nullable } from "babylonjs/types";
+    import { Material } from "babylonjs/Materials/material";
     import { IAsset } from "babylonjs-gltf2interface";
     import { IModelConfiguration } from "babylonjs-viewer/configuration/interfaces/modelConfiguration";
     import { IModelAnimation } from "babylonjs-viewer/model/modelAnimation";
@@ -734,7 +772,8 @@ declare module 'babylonjs-viewer/model/viewerModel' {
 }
 
 declare module 'babylonjs-viewer/model/modelAnimation' {
-    import { AnimationGroup, Vector3 } from 'babylonjs';
+    import { Vector3 } from "babylonjs/Maths/math";
+    import { AnimationGroup } from "babylonjs/Animations/index";
     /**
         * Animation play mode enum - is the animation looping or playing once
         */
@@ -941,8 +980,12 @@ declare module 'babylonjs-viewer/model/modelAnimation' {
 
 declare module 'babylonjs-viewer/loader/plugins/loaderPlugin' {
     import { ViewerModel } from "babylonjs-viewer/model/viewerModel";
-    import { IGLTFLoaderExtension, IGLTFLoaderData } from "babylonjs-loaders";
-    import { AbstractMesh, ISceneLoaderPlugin, ISceneLoaderPluginAsync, SceneLoaderProgressEvent, BaseTexture, Material } from "babylonjs";
+    import { IGLTFLoaderExtension, IGLTFLoaderData } from "babylonjs-loaders/glTF/glTFFileLoader";
+    import { ISceneLoaderPlugin, ISceneLoaderPluginAsync } from "babylonjs/Loading/sceneLoader";
+    import { SceneLoaderProgressEvent } from "babylonjs/Loading/sceneLoader";
+    import { AbstractMesh } from "babylonjs/Meshes/abstractMesh";
+    import { BaseTexture } from "babylonjs/Materials/Textures/baseTexture";
+    import { Material } from "babylonjs/Materials/material";
     /**
       * This interface defines the structure of a loader plugin.
       * Any of those functions will be called if (!) the loader supports those callbacks.
@@ -1017,7 +1060,7 @@ declare module 'babylonjs-viewer/configuration' {
 }
 
 declare module 'babylonjs-viewer/configuration/configuration' {
-    import { EngineOptions } from 'babylonjs';
+    import { EngineOptions } from 'babylonjs/Engines/engine';
     import { ICameraConfiguration, IDefaultRenderingPipelineConfiguration, IGroundConfiguration, ILightConfiguration, IModelConfiguration, IObserversConfiguration, ISceneConfiguration, ISceneOptimizerConfiguration, ISkyboxConfiguration, ITemplateConfiguration, IVRConfiguration } from 'babylonjs-viewer/configuration/interfaces';
     import { IEnvironmentMapConfiguration } from 'babylonjs-viewer/configuration/interfaces/environmentMapConfiguration';
     export function getConfigurationKey(key: string, configObject: any): any;
@@ -1116,7 +1159,7 @@ declare module 'babylonjs-viewer/configuration/configuration' {
 }
 
 declare module 'babylonjs-viewer/templating/templateManager' {
-    import { Observable } from 'babylonjs';
+    import { Observable } from 'babylonjs/Misc/observable';
     import { EventManager } from 'babylonjs-viewer/templating/eventManager';
     import { ITemplateConfiguration } from 'babylonjs-viewer/configuration/interfaces';
     /**
@@ -1284,9 +1327,22 @@ declare module 'babylonjs-viewer/templating/templateManager' {
     }
 }
 
+declare module 'babylonjs-viewer/viewer/viewerWithTemplate' {
+    import { AbstractViewer } from "babylonjs-viewer/viewer/viewer";
+    import { ConfigurationLoader } from "babylonjs-viewer/configuration/loader";
+    /**
+      * The AbstractViewer is the center of Babylon's viewer.
+      * It is the basic implementation of the default viewer and is responsible of loading and showing the model and the templates
+      */
+    export abstract class AbstractViewerWithTemplate extends AbstractViewer {
+        protected getConfigurationLoader(): ConfigurationLoader;
+    }
+}
+
 declare module 'babylonjs-viewer/configuration/configurationContainer' {
     import { ViewerConfiguration } from 'babylonjs-viewer/configuration/configuration';
-    import { Color3, Scene } from 'babylonjs';
+    import { Color3 } from 'babylonjs/Maths/math';
+    import { Scene } from 'babylonjs/scene';
     export class ConfigurationContainer {
         configuration: ViewerConfiguration;
         viewerId: string;
@@ -1296,15 +1352,16 @@ declare module 'babylonjs-viewer/configuration/configurationContainer' {
     }
 }
 
-declare module 'babylonjs-viewer/configuration/loader' {
+declare module 'babylonjs-viewer/configuration/renderOnlyLoader' {
     import { ViewerConfiguration } from 'babylonjs-viewer/configuration/configuration';
     /**
         * The configuration loader will load the configuration object from any source and will use the defined mapper to
         * parse the object and return a conform ViewerConfiguration.
         * It is a private member of the scene.
         */
-    export class ConfigurationLoader {
+    export class RenderOnlyConfigurationLoader {
             constructor(_enableCache?: boolean);
+            protected getExtendedConfig(type: string | undefined): ViewerConfiguration;
             /**
                 * load a configuration object that is defined in the initial configuration provided.
                 * The viewer configuration can extend different types of configuration objects and have an extra configuration defined.
@@ -1322,7 +1379,10 @@ declare module 'babylonjs-viewer/configuration/loader' {
 }
 
 declare module 'babylonjs-viewer/managers/observablesManager' {
-    import { Engine, ISceneLoaderPlugin, ISceneLoaderPluginAsync, Observable, Scene, SceneLoaderProgressEvent } from 'babylonjs';
+    import { Observable } from 'babylonjs/Misc/observable';
+    import { Scene } from 'babylonjs/scene';
+    import { Engine } from 'babylonjs/Engines/engine';
+    import { SceneLoaderProgressEvent, ISceneLoaderPlugin, ISceneLoaderPluginAsync } from 'babylonjs/Loading/sceneLoader';
     import { ViewerModel } from 'babylonjs-viewer/model/viewerModel';
     export class ObservablesManager {
             /**
@@ -1388,13 +1448,24 @@ declare module 'babylonjs-viewer/managers/observablesManager' {
 }
 
 declare module 'babylonjs-viewer/managers/sceneManager' {
-    import { Scene, ArcRotateCamera, Engine, Light, SceneOptimizer, EnvironmentHelper, Color3, Observable, DefaultRenderingPipeline, Nullable, VRExperienceHelper, IShadowLight } from 'babylonjs';
     import { ILightConfiguration, ISceneConfiguration, ISceneOptimizerConfiguration, ICameraConfiguration, ISkyboxConfiguration, ViewerConfiguration, IGroundConfiguration, IModelConfiguration, IVRConfiguration } from 'babylonjs-viewer/configuration';
     import { ViewerModel } from 'babylonjs-viewer/model/viewerModel';
     import { ViewerLabs } from 'babylonjs-viewer/labs/viewerLabs';
     import { ObservablesManager } from 'babylonjs-viewer/managers/observablesManager';
     import { ConfigurationContainer } from 'babylonjs-viewer/configuration/configurationContainer';
     import { IEnvironmentMapConfiguration } from 'babylonjs-viewer/configuration/interfaces/environmentMapConfiguration';
+    import { Observable } from 'babylonjs/Misc/observable';
+    import { SceneOptimizer } from 'babylonjs/Misc/sceneOptimizer';
+    import { ArcRotateCamera } from 'babylonjs/Cameras/arcRotateCamera';
+    import { Light } from 'babylonjs/Lights/light';
+    import { EnvironmentHelper } from 'babylonjs/Helpers/environmentHelper';
+    import { VRExperienceHelper } from 'babylonjs/Cameras/VR/vrExperienceHelper';
+    import { Color3 } from 'babylonjs/Maths/math';
+    import { Nullable } from 'babylonjs/types';
+    import { DefaultRenderingPipeline } from 'babylonjs/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline';
+    import { Engine } from 'babylonjs/Engines/engine';
+    import { IShadowLight } from 'babylonjs/Lights/shadowLight';
+    import { Scene } from 'babylonjs/scene';
     /**
         * This interface describes the structure of the variable sent with the configuration observables of the scene manager.
         * O - the type of object we are dealing with (Light, ArcRotateCamera, Scene, etc')
@@ -1523,6 +1594,7 @@ declare module 'babylonjs-viewer/managers/sceneManager' {
             updateConfiguration(newConfiguration: Partial<ViewerConfiguration>): void;
             bloomEnabled: boolean;
             fxaaEnabled: boolean;
+            setDefaultMaterial(sceneConfig: ISceneConfiguration): void;
             /**
                 * internally configure the scene using the provided configuration.
                 * The scene will not be recreated, but just updated.
@@ -1742,9 +1814,18 @@ declare module 'babylonjs-viewer/templating/eventManager' {
     }
 }
 
+declare module 'babylonjs-viewer/configuration/loader' {
+    import { RenderOnlyConfigurationLoader } from "babylonjs-viewer/configuration/renderOnlyLoader";
+    export class ConfigurationLoader extends RenderOnlyConfigurationLoader {
+        protected getExtendedConfig(type: string | undefined): import("./configuration").ViewerConfiguration;
+    }
+}
+
 declare module 'babylonjs-viewer/labs/viewerLabs' {
     import { PBREnvironment } from "babylonjs-viewer/labs/environmentSerializer";
-    import { ShadowLight, Vector3, Scene } from 'babylonjs';
+    import { Scene } from "babylonjs/scene";
+    import { Vector3 } from "babylonjs/Maths/math";
+    import { ShadowLight } from "babylonjs/Lights/shadowLight";
     /**
         * The ViewerLabs class will hold functions that are not (!) backwards compatible.
         * The APIs in all labs-related classes and configuration  might change.
@@ -1825,7 +1906,7 @@ declare module 'babylonjs-viewer/configuration/interfaces/modelAnimationConfigur
 declare module 'babylonjs-viewer/loader/plugins/telemetryLoaderPlugin' {
     import { ILoaderPlugin } from "babylonjs-viewer/loader/plugins/loaderPlugin";
     import { ViewerModel } from "babylonjs-viewer/model/viewerModel";
-    import { ISceneLoaderPlugin, ISceneLoaderPluginAsync } from "babylonjs";
+    import { ISceneLoaderPlugin, ISceneLoaderPluginAsync } from "babylonjs/Loading/sceneLoader";
     export class TelemetryLoaderPlugin implements ILoaderPlugin {
         onInit(loader: ISceneLoaderPlugin | ISceneLoaderPluginAsync, model: ViewerModel): void;
         onLoaded(model: ViewerModel): void;
@@ -1835,8 +1916,8 @@ declare module 'babylonjs-viewer/loader/plugins/telemetryLoaderPlugin' {
 }
 
 declare module 'babylonjs-viewer/loader/plugins/msftLodLoaderPlugin' {
-    import { ISceneLoaderPlugin, ISceneLoaderPluginAsync } from 'babylonjs';
-    import { IGLTFLoaderExtension } from 'babylonjs-loaders';
+    import { ISceneLoaderPlugin, ISceneLoaderPluginAsync } from 'babylonjs/Loading/sceneLoader';
+    import { IGLTFLoaderExtension } from 'babylonjs-loaders/glTF/2.0/glTFLoaderExtension';
     import { ViewerModel } from 'babylonjs-viewer/model/viewerModel';
     import { ILoaderPlugin } from 'babylonjs-viewer/loader/plugins/loaderPlugin';
     /**
@@ -1849,9 +1930,10 @@ declare module 'babylonjs-viewer/loader/plugins/msftLodLoaderPlugin' {
 }
 
 declare module 'babylonjs-viewer/loader/plugins/applyMaterialConfig' {
-    import { ISceneLoaderPlugin, ISceneLoaderPluginAsync, Material } from 'babylonjs';
     import { ViewerModel } from 'babylonjs-viewer/model/viewerModel';
     import { ILoaderPlugin } from 'babylonjs-viewer/loader/plugins/loaderPlugin';
+    import { ISceneLoaderPlugin, ISceneLoaderPluginAsync } from 'babylonjs/Loading/sceneLoader';
+    import { Material } from 'babylonjs/Materials/material';
     /**
       * Force-apply material configuration right after a material was loaded.
       */
@@ -1862,7 +1944,7 @@ declare module 'babylonjs-viewer/loader/plugins/applyMaterialConfig' {
 }
 
 declare module 'babylonjs-viewer/loader/plugins/extendedMaterialLoaderPlugin' {
-    import { Material } from 'babylonjs';
+    import { Material } from 'babylonjs/Materials/material';
     import { ILoaderPlugin } from 'babylonjs-viewer/loader/plugins/loaderPlugin';
     /**
       * A (PBR) material will be extended using this function.
@@ -1992,7 +2074,7 @@ declare module 'babylonjs-viewer/configuration/interfaces/colorGradingConfigurat
 }
 
 declare module 'babylonjs-viewer/configuration/interfaces/defaultRenderingPipelineConfiguration' {
-    import { DepthOfFieldEffectBlurLevel } from 'babylonjs';
+    import { DepthOfFieldEffectBlurLevel } from "babylonjs/PostProcesses/depthOfFieldEffect";
     export interface IDefaultRenderingPipelineConfiguration {
         sharpenEnabled?: boolean;
         bloomEnabled?: boolean;
@@ -2351,7 +2433,7 @@ declare module 'babylonjs-viewer/configuration/interfaces/vrConfiguration' {
 }
 
 declare module 'babylonjs-viewer/labs/environmentSerializer' {
-    import { Vector3 } from "babylonjs";
+    import { Vector3 } from 'babylonjs/Maths/math';
     import { TextureCube } from 'babylonjs-viewer/labs/texture';
     /**
         * Spherical polynomial coefficients (counter part to spherical harmonic coefficients used in shader irradiance calculation)
@@ -2460,7 +2542,9 @@ declare module 'babylonjs-viewer/labs/environmentSerializer' {
 }
 
 declare module 'babylonjs-viewer/labs/texture' {
-    import { Scene, CubeTexture, BaseTexture } from "babylonjs";
+    import { Scene } from "babylonjs/scene";
+    import { CubeTexture } from "babylonjs/Materials/Textures/cubeTexture";
+    import { BaseTexture } from "babylonjs/Materials/Textures/baseTexture";
     /**
         * WebGL Pixel Formats
         */