浏览代码

Merge branch 'master' of https://github.com/BabylonJS/Babylon.js into gltf-export-interfaces

Popov72 5 年之前
父节点
当前提交
dc02c15a7e
共有 100 个文件被更改,包括 1191 次插入729 次删除
  1. 8 6
      Viewer/README.md
  2. 3 3
      Viewer/src/configuration/interfaces/templateConfiguration.ts
  3. 12 10
      contributing.md
  4. 2 2
      dist/preview release/what's new.md
  5. 3 2
      gui/readme.md
  6. 7 7
      gui/src/2D/advancedDynamicTexture.ts
  7. 2 2
      gui/src/2D/controls/colorpicker.ts
  8. 1 1
      gui/src/2D/controls/container.ts
  9. 30 30
      gui/src/2D/controls/control.ts
  10. 4 4
      gui/src/2D/controls/image.ts
  11. 1 1
      gui/src/2D/controls/selector.ts
  12. 1 1
      gui/src/2D/valueAndUnit.ts
  13. 4 4
      gui/src/3D/controls/control3D.ts
  14. 1 1
      gui/src/3D/gui3DManager.ts
  15. 30 15
      inspector/src/components/actionTabs/tabs/propertyGrids/animations/animationCurveEditorComponent.tsx
  16. 373 160
      inspector/src/components/actionTabs/tabs/propertyGrids/animations/animationListTree.tsx
  17. 1 0
      inspector/src/components/actionTabs/tabs/propertyGrids/animations/animationPropertyGridComponent.tsx
  18. 20 8
      inspector/src/components/actionTabs/tabs/propertyGrids/animations/curveEditor.scss
  19. 34 2
      inspector/src/components/actionTabs/tabs/propertyGrids/animations/editorControls.tsx
  20. 95 20
      inspector/src/components/actionTabs/tabs/propertyGrids/animations/loadsnippet.tsx
  21. 1 1
      inspector/src/components/actionTabs/tabs/propertyGrids/animations/playhead.tsx
  22. 116 24
      inspector/src/components/actionTabs/tabs/propertyGrids/animations/saveSnippet.tsx
  23. 213 201
      inspector/src/components/actionTabs/tabs/propertyGrids/animations/svgDraggableArea.tsx
  24. 25 24
      inspector/src/components/actionTabs/tabs/propertyGrids/animations/targetedAnimationPropertyGridComponent.tsx
  25. 21 19
      inspector/src/components/actionTabs/tabs/propertyGrids/animations/timeline.tsx
  26. 3 1
      loaders/src/glTF/2.0/Extensions/KHR_materials_transmission.ts
  27. 1 1
      materialsLibrary/readme.md
  28. 1 1
      src/Actions/abstractActionManager.ts
  29. 1 1
      src/Actions/action.ts
  30. 18 18
      src/Actions/actionManager.ts
  31. 10 10
      src/Actions/directActions.ts
  32. 1 1
      src/Actions/interpolateValueAction.ts
  33. 2 2
      src/Animations/animatable.ts
  34. 3 3
      src/Animations/animationGroup.ts
  35. 14 14
      src/Animations/easing.ts
  36. 1 1
      src/Audio/analyser.ts
  37. 4 4
      src/Audio/audioEngine.ts
  38. 4 4
      src/Audio/audioSceneComponent.ts
  39. 15 15
      src/Audio/sound.ts
  40. 5 5
      src/Audio/soundTrack.ts
  41. 1 1
      src/Behaviors/Cameras/autoRotationBehavior.ts
  42. 1 1
      src/Behaviors/Cameras/bouncingBehavior.ts
  43. 1 1
      src/Behaviors/Cameras/framingBehavior.ts
  44. 1 1
      src/Bones/bone.ts
  45. 1 1
      src/Bones/boneIKController.ts
  46. 1 1
      src/Bones/boneLookController.ts
  47. 2 2
      src/Bones/skeleton.ts
  48. 1 1
      src/Cameras/Inputs/arcRotateCameraGamepadInput.ts
  49. 1 1
      src/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.ts
  50. 1 1
      src/Cameras/Inputs/arcRotateCameraMouseWheelInput.ts
  51. 1 1
      src/Cameras/Inputs/arcRotateCameraPointersInput.ts
  52. 1 1
      src/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.ts
  53. 1 1
      src/Cameras/Inputs/flyCameraKeyboardInput.ts
  54. 2 2
      src/Cameras/Inputs/flyCameraMouseInput.ts
  55. 1 1
      src/Cameras/Inputs/followCameraKeyboardMoveInput.ts
  56. 1 1
      src/Cameras/Inputs/followCameraMouseWheelInput.ts
  57. 1 1
      src/Cameras/Inputs/followCameraPointersInput.ts
  58. 2 2
      src/Cameras/Inputs/freeCameraDeviceOrientationInput.ts
  59. 1 1
      src/Cameras/Inputs/freeCameraGamepadInput.ts
  60. 1 1
      src/Cameras/Inputs/freeCameraKeyboardMoveInput.ts
  61. 2 2
      src/Cameras/Inputs/freeCameraMouseInput.ts
  62. 1 1
      src/Cameras/Inputs/freeCameraTouchInput.ts
  63. 1 1
      src/Cameras/Inputs/freeCameraVirtualJoystickInput.ts
  64. 1 1
      src/Cameras/Stereoscopic/anaglyphArcRotateCamera.ts
  65. 1 1
      src/Cameras/Stereoscopic/anaglyphFreeCamera.ts
  66. 1 1
      src/Cameras/Stereoscopic/anaglyphGamepadCamera.ts
  67. 1 1
      src/Cameras/Stereoscopic/anaglyphUniversalCamera.ts
  68. 1 1
      src/Cameras/Stereoscopic/stereoscopicArcRotateCamera.ts
  69. 1 1
      src/Cameras/Stereoscopic/stereoscopicFreeCamera.ts
  70. 1 1
      src/Cameras/Stereoscopic/stereoscopicGamepadCamera.ts
  71. 1 1
      src/Cameras/Stereoscopic/stereoscopicUniversalCamera.ts
  72. 1 1
      src/Cameras/VR/vrCameraMetrics.ts
  73. 1 1
      src/Cameras/VR/vrDeviceOrientationArcRotateCamera.ts
  74. 1 1
      src/Cameras/VR/vrDeviceOrientationFreeCamera.ts
  75. 1 1
      src/Cameras/VR/vrDeviceOrientationGamepadCamera.ts
  76. 2 2
      src/Cameras/VR/vrExperienceHelper.ts
  77. 1 1
      src/Cameras/VR/webVRCamera.ts
  78. 9 9
      src/Cameras/arcRotateCamera.ts
  79. 1 1
      src/Cameras/arcRotateCameraInputsManager.ts
  80. 4 4
      src/Cameras/camera.ts
  81. 2 2
      src/Cameras/cameraInputsManager.ts
  82. 1 1
      src/Cameras/flyCamera.ts
  83. 1 1
      src/Cameras/flyCameraInputsManager.ts
  84. 4 4
      src/Cameras/followCamera.ts
  85. 1 1
      src/Cameras/followCameraInputsManager.ts
  86. 3 3
      src/Cameras/freeCamera.ts
  87. 1 1
      src/Cameras/freeCameraInputsManager.ts
  88. 2 2
      src/Cameras/gamepadCamera.ts
  89. 2 2
      src/Cameras/targetCamera.ts
  90. 2 2
      src/Cameras/touchCamera.ts
  91. 2 2
      src/Cameras/universalCamera.ts
  92. 2 2
      src/Cameras/virtualJoysticksCamera.ts
  93. 1 1
      src/Culling/Octrees/octreeBlock.ts
  94. 4 4
      src/Culling/Octrees/octreeSceneComponent.ts
  95. 3 3
      src/Debug/debugLayer.ts
  96. 2 2
      src/Debug/rayHelper.ts
  97. 2 2
      src/Engines/Extensions/engine.alpha.ts
  98. 2 2
      src/Engines/Extensions/engine.multiRender.ts
  99. 7 7
      src/Engines/Extensions/engine.occlusionQuery.ts
  100. 0 0
      src/Engines/Extensions/engine.uniformBuffer.ts

+ 8 - 6
Viewer/README.md

@@ -2,7 +2,7 @@
 
 
 This project is a 3d model viewer using babylonjs.
 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.
+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).
 The viewer is using the latest Babylon from npm (3.1 alpha).
 
 
@@ -15,21 +15,23 @@ 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:
 Basically, all that is needed is an html tag, and the viewer.js, which includes everything needed to render a Scene:
 
 
 ```html
 ```html
-<babylon model="https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/BoomBox/glTF/BoomBox.gltf" default-viewer="true"></babylon>
+<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>
 <script src="viewer.js"></script>
-``` 
+```
 
 
 This will create a (default) viewer and will load the model in this URL using the gltf loader.
 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. 
+The `babylon` tag will be automatically initialized.
 
 
 ## Configuration
 ## 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. 
+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`
 Before I finish a full documentation, take a look at `configuration.ts`
 
 
 ## Templating
 ## 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.
 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.
-

+ 3 - 3
Viewer/src/configuration/interfaces/templateConfiguration.ts

@@ -4,12 +4,12 @@
 export interface ITemplateConfiguration {
 export interface ITemplateConfiguration {
     /**
     /**
      * can be either the id of the template's html element or a URL.
      * can be either the id of the template's html element or a URL.
-     * See - http://doc.babylonjs.com/extensions/the_templating_system#location-vs-html
+     * See - https://doc.babylonjs.com/extensions/the_templating_system#location-vs-html
      */
      */
     location?: string; // #template-id OR http://example.com/loading.html
     location?: string; // #template-id OR http://example.com/loading.html
     /**
     /**
      * If no location is provided you can provide here the raw html of this template.
      * If no location is provided you can provide here the raw html of this template.
-     * See http://doc.babylonjs.com/extensions/the_templating_system#location-vs-html
+     * See https://doc.babylonjs.com/extensions/the_templating_system#location-vs-html
      */
      */
     html?: string; // raw html string
     html?: string; // raw html string
     id?: string;
     id?: string;
@@ -22,7 +22,7 @@ export interface ITemplateConfiguration {
      * event name is the key. the value can either be a boolean (attach to the parent element)
      * event name is the key. the value can either be a boolean (attach to the parent element)
      * or a map of html id elements.
      * or a map of html id elements.
      *
      *
-     * See - http://doc.babylonjs.com/extensions/the_templating_system#event-binding
+     * See - https://doc.babylonjs.com/extensions/the_templating_system#event-binding
      */
      */
     events?: {
     events?: {
         // pointer events
         // pointer events

+ 12 - 10
contributing.md

@@ -18,18 +18,18 @@ Babylon.js is a 3D rendering engine. So every piece of code has to be scrutinize
 
 
 ### Simplicity
 ### Simplicity
 
 
-A developer should be able to quickly and easily learn to use the API. 
+A developer should be able to quickly and easily learn to use the API.
 
 
-Simplicity and a low barrier to entry are must-have features of every API. If you have any second thoughts about the complexity of a design, it is almost always much better to cut the feature from the current release and spend more time to get the design right for the next release. 
+Simplicity and a low barrier to entry are must-have features of every API. If you have any second thoughts about the complexity of a design, it is almost always much better to cut the feature from the current release and spend more time to get the design right for the next release.
 
 
 You can always add to an API, you cannot ever remove anything from one. If the design does not feel right, and you ship it anyway, you are likely to regret having done so.
 You can always add to an API, you cannot ever remove anything from one. If the design does not feel right, and you ship it anyway, you are likely to regret having done so.
 
 
 ## Forum and Github issues
 ## Forum and Github issues
 
 
-Since the very beginning, Babylon.js relies on a great forum and a tremendous community: https://forum.babylonjs.com/.
-Please use the forum for **ANY questions you may have**.
+Since the very beginning, Babylon.js relies on a great forum and a tremendous community: [https://forum.babylonjs.com/](https://forum.babylonjs.com/). Please use the forum for **ANY questions you may have**.
 
 
 Please use the Github issues (after discussing them on the forum) **only** for:
 Please use the Github issues (after discussing them on the forum) **only** for:
+
 - Bugs
 - Bugs
 - Feature requests
 - Feature requests
 
 
@@ -49,19 +49,21 @@ so that you can start straight away.
 
 
 ## Pull requests
 ## Pull requests
 
 
-We are not complicated people, but we still have some [coding guidelines](http://doc.babylonjs.com/how_to/approved_naming_conventions)
-Before submitting your PR, just check that everything goes well by [creating the minified version](http://doc.babylonjs.com/resources/creating_the_mini-fied_version)
+We are not complicated people, but we still have some [coding guidelines](https://doc.babylonjs.com/how_to/approved_naming_conventions)
+Before submitting your PR, just check that everything goes well by [creating the minified version](https://doc.babylonjs.com/resources/creating_the_mini-fied_version)
+
+You should read the [how to contribute documentation](https://doc.babylonjs.com/how_to/how_to_start) before working on your PR.
 
 
-You should read the [how to contribute documentation](http://doc.babylonjs.com/how_to/how_to_start) before working on your PR.
-  
 To validate your PR, please follow these steps:
 To validate your PR, please follow these steps:
+
 - Run "gulp" locally and make sure that no error is generated
 - Run "gulp" locally and make sure that no error is generated
 - Make sure that all public functions and classes are commented using JSDoc syntax
 - Make sure that all public functions and classes are commented using JSDoc syntax
 - Make sure to add a line about your PR in the [what's new](https://github.com/BabylonJS/Babylon.js/blob/master/dist/preview%20release/what's%20new.md)
 - Make sure to add a line about your PR in the [what's new](https://github.com/BabylonJS/Babylon.js/blob/master/dist/preview%20release/what's%20new.md)
-  
- ## What should go where?
+
+## What should go where
 
 
 In order to not bloat the core engine with unwanted or unnecessary features (that we will need to maintain forever), here is a list of questions you could ask yourself before submitting a new feature (or feature request) for Babylon.js core engine:
 In order to not bloat the core engine with unwanted or unnecessary features (that we will need to maintain forever), here is a list of questions you could ask yourself before submitting a new feature (or feature request) for Babylon.js core engine:
+
 - Does my feature belong to a framework library?
 - Does my feature belong to a framework library?
 - Can my feature be used by multiple different applications?
 - Can my feature be used by multiple different applications?
 - Is there a general use case for this feature?
 - Is there a general use case for this feature?

+ 2 - 2
dist/preview release/what's new.md

@@ -8,7 +8,7 @@
 - Added HDR texture filtering tools to the sandbox ([Sebavan](https://github.com/sebavan/))
 - Added HDR texture filtering tools to the sandbox ([Sebavan](https://github.com/sebavan/))
 - Reflection probes can now be used to give accurate shading with PBR ([CraigFeldpsar](https://github.com/craigfeldspar) and ([Sebavan](https://github.com/sebavan/)))
 - Reflection probes can now be used to give accurate shading with PBR ([CraigFeldpsar](https://github.com/craigfeldspar) and ([Sebavan](https://github.com/sebavan/)))
 - Added editing of PBR materials, Post processes and Particle fragment shaders in the node material editor ([Popov72](https://github.com/Popov72))
 - Added editing of PBR materials, Post processes and Particle fragment shaders in the node material editor ([Popov72](https://github.com/Popov72))
-- Added Curve editor to manage selected entity's animations and edit animation groups in Inspector ([pixelspace](https://github.com/devpixelspace))
+- Added Curve editor to manage entity's animations and edit animation groups in Inspector ([pixelspace](https://github.com/devpixelspace))
 - Added support in `ShadowGenerator` for fast fake soft transparent shadows ([Popov72](https://github.com/Popov72))
 - Added support in `ShadowGenerator` for fast fake soft transparent shadows ([Popov72](https://github.com/Popov72))
 - Added support for **thin instances** for faster mesh instances. [Doc](https://doc.babylonjs.com/how_to/how_to_use_thininstances) ([Popov72](https://github.com/Popov72))
 - Added support for **thin instances** for faster mesh instances. [Doc](https://doc.babylonjs.com/how_to/how_to_use_thininstances) ([Popov72](https://github.com/Popov72))
 
 
@@ -133,7 +133,7 @@
 - Default (XR-global) rendering group ID can be defined when initializing a default experience ([RaananW](https://github.com/RaananW))
 - Default (XR-global) rendering group ID can be defined when initializing a default experience ([RaananW](https://github.com/RaananW))
 - Added support for (experimental) haptic actuators ([#8068](https://github.com/BabylonJS/Babylon.js/issues/8068)) ([RaananW](https://github.com/RaananW))
 - Added support for (experimental) haptic actuators ([#8068](https://github.com/BabylonJS/Babylon.js/issues/8068)) ([RaananW](https://github.com/RaananW))
 - It is now possible to enable experimental (AR) features using the options of the default xr helper ([RaananW](https://github.com/RaananW))
 - It is now possible to enable experimental (AR) features using the options of the default xr helper ([RaananW](https://github.com/RaananW))
-- Full support for right handed systems ([#8132](https://github.com/BabylonJS/Babylon.js/issues/8132)) ([RaananW](https://github.com/RaananW))
+- Full support for right handed scenes ([#8132](https://github.com/BabylonJS/Babylon.js/issues/8132)) ([RaananW](https://github.com/RaananW))
 - WebXR anchors feature implemented ([#7917](https://github.com/BabylonJS/Babylon.js/issues/7917)) ([RaananW](https://github.com/RaananW))
 - WebXR anchors feature implemented ([#7917](https://github.com/BabylonJS/Babylon.js/issues/7917)) ([RaananW](https://github.com/RaananW))
 
 
 ### Collisions
 ### Collisions

+ 3 - 2
gui/readme.md

@@ -1,6 +1,7 @@
 # js GUI library
 # js GUI library
+
 The js GUI library is an extension you can use to generate interactive user interface.
 The js GUI library is an extension you can use to generate interactive user interface.
 It is build on top of the DynamicTexture.
 It is build on top of the DynamicTexture.
 
 
-Documentation: http://doc.babylonjs.com/how_to/gui
-API: http://doc.babylonjs.com/api/modules/gui
+Documentation: https://doc.babylonjs.com/how_to/gui
+API: https://doc.babylonjs.com/api/modules/gui

+ 7 - 7
gui/src/2D/advancedDynamicTexture.ts

@@ -46,7 +46,7 @@ export interface IFocusableControl {
 }
 }
 /**
 /**
 * Class used to create texture to support 2D GUI elements
 * Class used to create texture to support 2D GUI elements
-* @see http://doc.babylonjs.com/how_to/gui
+* @see https://doc.babylonjs.com/how_to/gui
 */
 */
 export class AdvancedDynamicTexture extends DynamicTexture {
 export class AdvancedDynamicTexture extends DynamicTexture {
     private _isDirty = false;
     private _isDirty = false;
@@ -161,7 +161,7 @@ export class AdvancedDynamicTexture extends DynamicTexture {
     /**
     /**
     * Gets or sets the ideal width used to design controls.
     * Gets or sets the ideal width used to design controls.
     * The GUI will then rescale everything accordingly
     * The GUI will then rescale everything accordingly
-    * @see http://doc.babylonjs.com/how_to/gui#adaptive-scaling
+    * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
     */
     */
     public get idealWidth(): number {
     public get idealWidth(): number {
         return this._idealWidth;
         return this._idealWidth;
@@ -177,7 +177,7 @@ export class AdvancedDynamicTexture extends DynamicTexture {
     /**
     /**
     * Gets or sets the ideal height used to design controls.
     * Gets or sets the ideal height used to design controls.
     * The GUI will then rescale everything accordingly
     * The GUI will then rescale everything accordingly
-    * @see http://doc.babylonjs.com/how_to/gui#adaptive-scaling
+    * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
     */
     */
     public get idealHeight(): number {
     public get idealHeight(): number {
         return this._idealHeight;
         return this._idealHeight;
@@ -192,7 +192,7 @@ export class AdvancedDynamicTexture extends DynamicTexture {
     }
     }
     /**
     /**
     * Gets or sets a boolean indicating if the smallest ideal value must be used if idealWidth and idealHeight are both set
     * Gets or sets a boolean indicating if the smallest ideal value must be used if idealWidth and idealHeight are both set
-    * @see http://doc.babylonjs.com/how_to/gui#adaptive-scaling
+    * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
     */
     */
     public get useSmallestIdeal(): boolean {
     public get useSmallestIdeal(): boolean {
         return this._useSmallestIdeal;
         return this._useSmallestIdeal;
@@ -207,7 +207,7 @@ export class AdvancedDynamicTexture extends DynamicTexture {
     }
     }
     /**
     /**
     * Gets or sets a boolean indicating if adaptive scaling must be used
     * Gets or sets a boolean indicating if adaptive scaling must be used
-    * @see http://doc.babylonjs.com/how_to/gui#adaptive-scaling
+    * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
     */
     */
     public get renderAtIdealSize(): boolean {
     public get renderAtIdealSize(): boolean {
         return this._renderAtIdealSize;
         return this._renderAtIdealSize;
@@ -222,7 +222,7 @@ export class AdvancedDynamicTexture extends DynamicTexture {
 
 
     /**
     /**
      * Gets the ratio used when in "ideal mode"
      * Gets the ratio used when in "ideal mode"
-    * @see http://doc.babylonjs.com/how_to/gui#adaptive-scaling
+    * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
      * */
      * */
     public get idealRatio(): number {
     public get idealRatio(): number {
         var rwidth: number = 0;
         var rwidth: number = 0;
@@ -432,7 +432,7 @@ export class AdvancedDynamicTexture extends DynamicTexture {
     /**
     /**
     * Helper function used to create a new style
     * Helper function used to create a new style
     * @returns a new style
     * @returns a new style
-    * @see http://doc.babylonjs.com/how_to/gui#styles
+    * @see https://doc.babylonjs.com/how_to/gui#styles
     */
     */
     public createStyle(): Style {
     public createStyle(): Style {
         return new Style(this);
         return new Style(this);

+ 2 - 2
gui/src/2D/controls/colorpicker.ts

@@ -87,7 +87,7 @@ export class ColorPicker extends Control {
 
 
     /**
     /**
      * Gets or sets control width
      * Gets or sets control width
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get width(): string | number {
     public get width(): string | number {
         return this._width.toString(this._host);
         return this._width.toString(this._host);
@@ -106,7 +106,7 @@ export class ColorPicker extends Control {
 
 
     /**
     /**
      * Gets or sets control height
      * Gets or sets control height
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get height(): string | number {
     public get height(): string | number {
         return this._height.toString(this._host);
         return this._height.toString(this._host);

+ 1 - 1
gui/src/2D/controls/container.ts

@@ -8,7 +8,7 @@ import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 
 /**
 /**
  * Root class for 2D containers
  * Root class for 2D containers
- * @see http://doc.babylonjs.com/how_to/gui#containers
+ * @see https://doc.babylonjs.com/how_to/gui#containers
  */
  */
 export class Container extends Control {
 export class Container extends Control {
     /** @hidden */
     /** @hidden */

+ 30 - 30
gui/src/2D/controls/control.ts

@@ -17,7 +17,7 @@ import { _TypeStore } from 'babylonjs/Misc/typeStore';
 
 
 /**
 /**
  * Root class used for all 2D controls
  * Root class used for all 2D controls
- * @see http://doc.babylonjs.com/how_to/gui#controls
+ * @see https://doc.babylonjs.com/how_to/gui#controls
  */
  */
 export class Control {
 export class Control {
     /**
     /**
@@ -332,7 +332,7 @@ export class Control {
     }
     }
 
 
     /** Gets or sets a value indicating the scale factor on X axis (1 by default)
     /** Gets or sets a value indicating the scale factor on X axis (1 by default)
-     * @see http://doc.babylonjs.com/how_to/gui#rotation-and-scaling
+     * @see https://doc.babylonjs.com/how_to/gui#rotation-and-scaling
     */
     */
     public get scaleX(): number {
     public get scaleX(): number {
         return this._scaleX;
         return this._scaleX;
@@ -349,7 +349,7 @@ export class Control {
     }
     }
 
 
     /** Gets or sets a value indicating the scale factor on Y axis (1 by default)
     /** Gets or sets a value indicating the scale factor on Y axis (1 by default)
-     * @see http://doc.babylonjs.com/how_to/gui#rotation-and-scaling
+     * @see https://doc.babylonjs.com/how_to/gui#rotation-and-scaling
     */
     */
     public get scaleY(): number {
     public get scaleY(): number {
         return this._scaleY;
         return this._scaleY;
@@ -366,7 +366,7 @@ export class Control {
     }
     }
 
 
     /** Gets or sets the rotation angle (0 by default)
     /** Gets or sets the rotation angle (0 by default)
-     * @see http://doc.babylonjs.com/how_to/gui#rotation-and-scaling
+     * @see https://doc.babylonjs.com/how_to/gui#rotation-and-scaling
     */
     */
     public get rotation(): number {
     public get rotation(): number {
         return this._rotation;
         return this._rotation;
@@ -383,7 +383,7 @@ export class Control {
     }
     }
 
 
     /** Gets or sets the transformation center on Y axis (0 by default)
     /** Gets or sets the transformation center on Y axis (0 by default)
-     * @see http://doc.babylonjs.com/how_to/gui#rotation-and-scaling
+     * @see https://doc.babylonjs.com/how_to/gui#rotation-and-scaling
     */
     */
     public get transformCenterY(): number {
     public get transformCenterY(): number {
         return this._transformCenterY;
         return this._transformCenterY;
@@ -400,7 +400,7 @@ export class Control {
     }
     }
 
 
     /** Gets or sets the transformation center on X axis (0 by default)
     /** Gets or sets the transformation center on X axis (0 by default)
-     * @see http://doc.babylonjs.com/how_to/gui#rotation-and-scaling
+     * @see https://doc.babylonjs.com/how_to/gui#rotation-and-scaling
     */
     */
     public get transformCenterX(): number {
     public get transformCenterX(): number {
         return this._transformCenterX;
         return this._transformCenterX;
@@ -418,7 +418,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets the horizontal alignment
      * Gets or sets the horizontal alignment
-     * @see http://doc.babylonjs.com/how_to/gui#alignments
+     * @see https://doc.babylonjs.com/how_to/gui#alignments
      */
      */
     public get horizontalAlignment(): number {
     public get horizontalAlignment(): number {
         return this._horizontalAlignment;
         return this._horizontalAlignment;
@@ -435,7 +435,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets the vertical alignment
      * Gets or sets the vertical alignment
-     * @see http://doc.babylonjs.com/how_to/gui#alignments
+     * @see https://doc.babylonjs.com/how_to/gui#alignments
      */
      */
     public get verticalAlignment(): number {
     public get verticalAlignment(): number {
         return this._verticalAlignment;
         return this._verticalAlignment;
@@ -452,7 +452,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets control width
      * Gets or sets control width
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get width(): string | number {
     public get width(): string | number {
         return this._width.toString(this._host);
         return this._width.toString(this._host);
@@ -470,7 +470,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets the control width in pixel
      * Gets or sets the control width in pixel
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get widthInPixels(): number {
     public get widthInPixels(): number {
         return this._width.getValueInPixel(this._host, this._cachedParentMeasure.width);
         return this._width.getValueInPixel(this._host, this._cachedParentMeasure.width);
@@ -485,7 +485,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets control height
      * Gets or sets control height
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get height(): string | number {
     public get height(): string | number {
         return this._height.toString(this._host);
         return this._height.toString(this._host);
@@ -503,7 +503,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets control height in pixel
      * Gets or sets control height in pixel
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get heightInPixels(): number {
     public get heightInPixels(): number {
         return this._height.getValueInPixel(this._host, this._cachedParentMeasure.height);
         return this._height.getValueInPixel(this._host, this._cachedParentMeasure.height);
@@ -563,7 +563,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets style
      * Gets or sets style
-     * @see http://doc.babylonjs.com/how_to/gui#styles
+     * @see https://doc.babylonjs.com/how_to/gui#styles
      */
      */
     public get style(): Nullable<Style> {
     public get style(): Nullable<Style> {
         return this._style;
         return this._style;
@@ -700,7 +700,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets a value indicating the padding to use on the left of the control
      * Gets or sets a value indicating the padding to use on the left of the control
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get paddingLeft(): string | number {
     public get paddingLeft(): string | number {
         return this._paddingLeft.toString(this._host);
         return this._paddingLeft.toString(this._host);
@@ -714,7 +714,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets a value indicating the padding in pixels to use on the left of the control
      * Gets or sets a value indicating the padding in pixels to use on the left of the control
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get paddingLeftInPixels(): number {
     public get paddingLeftInPixels(): number {
         return this._paddingLeft.getValueInPixel(this._host, this._cachedParentMeasure.width);
         return this._paddingLeft.getValueInPixel(this._host, this._cachedParentMeasure.width);
@@ -729,7 +729,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets a value indicating the padding to use on the right of the control
      * Gets or sets a value indicating the padding to use on the right of the control
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get paddingRight(): string | number {
     public get paddingRight(): string | number {
         return this._paddingRight.toString(this._host);
         return this._paddingRight.toString(this._host);
@@ -743,7 +743,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets a value indicating the padding in pixels to use on the right of the control
      * Gets or sets a value indicating the padding in pixels to use on the right of the control
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get paddingRightInPixels(): number {
     public get paddingRightInPixels(): number {
         return this._paddingRight.getValueInPixel(this._host, this._cachedParentMeasure.width);
         return this._paddingRight.getValueInPixel(this._host, this._cachedParentMeasure.width);
@@ -758,7 +758,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets a value indicating the padding to use on the top of the control
      * Gets or sets a value indicating the padding to use on the top of the control
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get paddingTop(): string | number {
     public get paddingTop(): string | number {
         return this._paddingTop.toString(this._host);
         return this._paddingTop.toString(this._host);
@@ -772,7 +772,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets a value indicating the padding in pixels to use on the top of the control
      * Gets or sets a value indicating the padding in pixels to use on the top of the control
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get paddingTopInPixels(): number {
     public get paddingTopInPixels(): number {
         return this._paddingTop.getValueInPixel(this._host, this._cachedParentMeasure.height);
         return this._paddingTop.getValueInPixel(this._host, this._cachedParentMeasure.height);
@@ -787,7 +787,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets a value indicating the padding to use on the bottom of the control
      * Gets or sets a value indicating the padding to use on the bottom of the control
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get paddingBottom(): string | number {
     public get paddingBottom(): string | number {
         return this._paddingBottom.toString(this._host);
         return this._paddingBottom.toString(this._host);
@@ -801,7 +801,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets a value indicating the padding in pixels to use on the bottom of the control
      * Gets or sets a value indicating the padding in pixels to use on the bottom of the control
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get paddingBottomInPixels(): number {
     public get paddingBottomInPixels(): number {
         return this._paddingBottom.getValueInPixel(this._host, this._cachedParentMeasure.height);
         return this._paddingBottom.getValueInPixel(this._host, this._cachedParentMeasure.height);
@@ -816,7 +816,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets a value indicating the left coordinate of the control
      * Gets or sets a value indicating the left coordinate of the control
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get left(): string | number {
     public get left(): string | number {
         return this._left.toString(this._host);
         return this._left.toString(this._host);
@@ -830,7 +830,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets a value indicating the left coordinate in pixels of the control
      * Gets or sets a value indicating the left coordinate in pixels of the control
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get leftInPixels(): number {
     public get leftInPixels(): number {
         return this._left.getValueInPixel(this._host, this._cachedParentMeasure.width);
         return this._left.getValueInPixel(this._host, this._cachedParentMeasure.width);
@@ -845,7 +845,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets a value indicating the top coordinate of the control
      * Gets or sets a value indicating the top coordinate of the control
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get top(): string | number {
     public get top(): string | number {
         return this._top.toString(this._host);
         return this._top.toString(this._host);
@@ -859,7 +859,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets a value indicating the top coordinate in pixels of the control
      * Gets or sets a value indicating the top coordinate in pixels of the control
-     * @see http://doc.babylonjs.com/how_to/gui#position-and-size
+     * @see https://doc.babylonjs.com/how_to/gui#position-and-size
      */
      */
     public get topInPixels(): number {
     public get topInPixels(): number {
         return this._top.getValueInPixel(this._host, this._cachedParentMeasure.height);
         return this._top.getValueInPixel(this._host, this._cachedParentMeasure.height);
@@ -874,7 +874,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets a value indicating the offset on X axis to the linked mesh
      * Gets or sets a value indicating the offset on X axis to the linked mesh
-     * @see http://doc.babylonjs.com/how_to/gui#tracking-positions
+     * @see https://doc.babylonjs.com/how_to/gui#tracking-positions
      */
      */
     public get linkOffsetX(): string | number {
     public get linkOffsetX(): string | number {
         return this._linkOffsetX.toString(this._host);
         return this._linkOffsetX.toString(this._host);
@@ -888,7 +888,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets a value indicating the offset in pixels on X axis to the linked mesh
      * Gets or sets a value indicating the offset in pixels on X axis to the linked mesh
-     * @see http://doc.babylonjs.com/how_to/gui#tracking-positions
+     * @see https://doc.babylonjs.com/how_to/gui#tracking-positions
      */
      */
     public get linkOffsetXInPixels(): number {
     public get linkOffsetXInPixels(): number {
         return this._linkOffsetX.getValueInPixel(this._host, this._cachedParentMeasure.width);
         return this._linkOffsetX.getValueInPixel(this._host, this._cachedParentMeasure.width);
@@ -903,7 +903,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets a value indicating the offset on Y axis to the linked mesh
      * Gets or sets a value indicating the offset on Y axis to the linked mesh
-     * @see http://doc.babylonjs.com/how_to/gui#tracking-positions
+     * @see https://doc.babylonjs.com/how_to/gui#tracking-positions
      */
      */
     public get linkOffsetY(): string | number {
     public get linkOffsetY(): string | number {
         return this._linkOffsetY.toString(this._host);
         return this._linkOffsetY.toString(this._host);
@@ -917,7 +917,7 @@ export class Control {
 
 
     /**
     /**
      * Gets or sets a value indicating the offset in pixels on Y axis to the linked mesh
      * Gets or sets a value indicating the offset in pixels on Y axis to the linked mesh
-     * @see http://doc.babylonjs.com/how_to/gui#tracking-positions
+     * @see https://doc.babylonjs.com/how_to/gui#tracking-positions
      */
      */
     public get linkOffsetYInPixels(): number {
     public get linkOffsetYInPixels(): number {
         return this._linkOffsetY.getValueInPixel(this._host, this._cachedParentMeasure.height);
         return this._linkOffsetY.getValueInPixel(this._host, this._cachedParentMeasure.height);
@@ -1127,7 +1127,7 @@ export class Control {
     /**
     /**
      * Link current control with a target mesh
      * Link current control with a target mesh
      * @param mesh defines the mesh to link with
      * @param mesh defines the mesh to link with
-     * @see http://doc.babylonjs.com/how_to/gui#tracking-positions
+     * @see https://doc.babylonjs.com/how_to/gui#tracking-positions
      */
      */
     public linkWithMesh(mesh: Nullable<AbstractMesh>): void {
     public linkWithMesh(mesh: Nullable<AbstractMesh>): void {
         if (!this._host || this.parent && this.parent !== this._host._rootContainer) {
         if (!this._host || this.parent && this.parent !== this._host._rootContainer) {

+ 4 - 4
gui/src/2D/controls/image.ts

@@ -239,7 +239,7 @@ export class Image extends Control {
 
 
     /**
     /**
      * Gets or sets a boolean indicating if the image can force its container to adapt its size
      * Gets or sets a boolean indicating if the image can force its container to adapt its size
-     * @see http://doc.babylonjs.com/how_to/gui#image
+     * @see https://doc.babylonjs.com/how_to/gui#image
      */
      */
     public get autoScale(): boolean {
     public get autoScale(): boolean {
         return this._autoScale;
         return this._autoScale;
@@ -560,7 +560,7 @@ export class Image extends Control {
 
 
     /**
     /**
      * Gets or sets the cell width to use when animation sheet is enabled
      * Gets or sets the cell width to use when animation sheet is enabled
-     * @see http://doc.babylonjs.com/how_to/gui#image
+     * @see https://doc.babylonjs.com/how_to/gui#image
      */
      */
     get cellWidth(): number {
     get cellWidth(): number {
         return this._cellWidth;
         return this._cellWidth;
@@ -576,7 +576,7 @@ export class Image extends Control {
 
 
     /**
     /**
      * Gets or sets the cell height to use when animation sheet is enabled
      * Gets or sets the cell height to use when animation sheet is enabled
-     * @see http://doc.babylonjs.com/how_to/gui#image
+     * @see https://doc.babylonjs.com/how_to/gui#image
      */
      */
     get cellHeight(): number {
     get cellHeight(): number {
         return this._cellHeight;
         return this._cellHeight;
@@ -592,7 +592,7 @@ export class Image extends Control {
 
 
     /**
     /**
      * Gets or sets the cell id to use (this will turn on the animation sheet mode)
      * Gets or sets the cell id to use (this will turn on the animation sheet mode)
-     * @see http://doc.babylonjs.com/how_to/gui#image
+     * @see https://doc.babylonjs.com/how_to/gui#image
      */
      */
     get cellId(): number {
     get cellId(): number {
         return this._cellId;
         return this._cellId;

+ 1 - 1
gui/src/2D/controls/selector.ts

@@ -278,7 +278,7 @@ export class SliderGroup extends SelectorGroup {
 }
 }
 
 
 /** Class used to hold the controls for the checkboxes, radio buttons and sliders
 /** Class used to hold the controls for the checkboxes, radio buttons and sliders
- * @see http://doc.babylonjs.com/how_to/selector
+ * @see https://doc.babylonjs.com/how_to/selector
 */
 */
 export class SelectionPanel extends Rectangle {
 export class SelectionPanel extends Rectangle {
     private _panel: StackPanel;
     private _panel: StackPanel;

+ 1 - 1
gui/src/2D/valueAndUnit.ts

@@ -8,7 +8,7 @@ export class ValueAndUnit {
     private _originalUnit: number;
     private _originalUnit: number;
     /**
     /**
      * Gets or sets a value indicating that this value will not scale accordingly with adaptive scaling property
      * Gets or sets a value indicating that this value will not scale accordingly with adaptive scaling property
-     * @see http://doc.babylonjs.com/how_to/gui#adaptive-scaling
+     * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
      */
      */
     public ignoreAdaptiveScaling = false;
     public ignoreAdaptiveScaling = false;
 
 

+ 4 - 4
gui/src/3D/controls/control3D.ts

@@ -106,7 +106,7 @@ export class Control3D implements IDisposable, IBehaviorAware<Control3D> {
 
 
     /**
     /**
      * Gets the list of attached behaviors
      * Gets the list of attached behaviors
-     * @see http://doc.babylonjs.com/features/behaviour
+     * @see https://doc.babylonjs.com/features/behaviour
      */
      */
     public get behaviors(): Behavior<Control3D>[] {
     public get behaviors(): Behavior<Control3D>[] {
         return this._behaviors;
         return this._behaviors;
@@ -114,7 +114,7 @@ export class Control3D implements IDisposable, IBehaviorAware<Control3D> {
 
 
     /**
     /**
      * Attach a behavior to the control
      * Attach a behavior to the control
-     * @see http://doc.babylonjs.com/features/behaviour
+     * @see https://doc.babylonjs.com/features/behaviour
      * @param behavior defines the behavior to attach
      * @param behavior defines the behavior to attach
      * @returns the current control
      * @returns the current control
      */
      */
@@ -142,7 +142,7 @@ export class Control3D implements IDisposable, IBehaviorAware<Control3D> {
 
 
     /**
     /**
      * Remove an attached behavior
      * Remove an attached behavior
-     * @see http://doc.babylonjs.com/features/behaviour
+     * @see https://doc.babylonjs.com/features/behaviour
      * @param behavior defines the behavior to attach
      * @param behavior defines the behavior to attach
      * @returns the current control
      * @returns the current control
      */
      */
@@ -162,7 +162,7 @@ export class Control3D implements IDisposable, IBehaviorAware<Control3D> {
     /**
     /**
      * Gets an attached behavior by name
      * Gets an attached behavior by name
      * @param name defines the name of the behavior to look for
      * @param name defines the name of the behavior to look for
-     * @see http://doc.babylonjs.com/features/behaviour
+     * @see https://doc.babylonjs.com/features/behaviour
      * @returns null if behavior was not found else the requested behavior
      * @returns null if behavior was not found else the requested behavior
      */
      */
     public getBehaviorByName(name: string): Nullable<Behavior<Control3D>> {
     public getBehaviorByName(name: string): Nullable<Behavior<Control3D>> {

+ 1 - 1
gui/src/3D/gui3DManager.ts

@@ -14,7 +14,7 @@ import { Control3D } from "./controls/control3D";
 
 
 /**
 /**
  * Class used to manage 3D user interface
  * Class used to manage 3D user interface
- * @see http://doc.babylonjs.com/how_to/gui3d
+ * @see https://doc.babylonjs.com/how_to/gui3d
  */
  */
 export class GUI3DManager implements IDisposable {
 export class GUI3DManager implements IDisposable {
     private _scene: Scene;
     private _scene: Scene;

+ 30 - 15
inspector/src/components/actionTabs/tabs/propertyGrids/animations/animationCurveEditorComponent.tsx

@@ -18,6 +18,7 @@ import { TargetedAnimation } from 'babylonjs/Animations/animationGroup';
 import { EditorControls } from './editorControls';
 import { EditorControls } from './editorControls';
 import { SelectedCoordinate } from './animationListTree';
 import { SelectedCoordinate } from './animationListTree';
 import { LockObject } from '../lockObject';
 import { LockObject } from '../lockObject';
+import { GlobalState } from '../../../../globalState';
 import { Nullable } from 'babylonjs/types';
 import { Nullable } from 'babylonjs/types';
 import { Observer } from 'babylonjs/Misc/observable';
 import { Observer } from 'babylonjs/Misc/observable';
 
 
@@ -29,6 +30,7 @@ interface IAnimationCurveEditorComponentProps {
   scene: Scene;
   scene: Scene;
   entity: IAnimatable | TargetedAnimation;
   entity: IAnimatable | TargetedAnimation;
   lockObject: LockObject;
   lockObject: LockObject;
+  globalState: GlobalState;
 }
 }
 
 
 interface ICanvasAxis {
 interface ICanvasAxis {
@@ -68,6 +70,7 @@ export class AnimationCurveEditorComponent extends React.Component<
     selectedCoordinate: number;
     selectedCoordinate: number;
   }
   }
 > {
 > {
+  private _snippetUrl = 'https://snippet.babylonjs.com';
   // Height scale *Review this functionaliy
   // Height scale *Review this functionaliy
   private _heightScale: number = 100;
   private _heightScale: number = 100;
   // Canvas Length *Review this functionality
   // Canvas Length *Review this functionality
@@ -692,6 +695,18 @@ export class AnimationCurveEditorComponent extends React.Component<
       case Animation.ANIMATIONTYPE_VECTOR2:
       case Animation.ANIMATIONTYPE_VECTOR2:
         type = Vector2.Zero();
         type = Vector2.Zero();
         break;
         break;
+      case Animation.ANIMATIONTYPE_QUATERNION:
+        type = Quaternion.Zero();
+        break;
+      case Animation.ANIMATIONTYPE_COLOR3:
+        type = new Color3(0, 0, 0);
+        break;
+      case Animation.ANIMATIONTYPE_COLOR4:
+        type = new Color4(0, 0, 0, 0);
+        break;
+      case Animation.ANIMATIONTYPE_SIZE:
+        type = new Size(0, 0);
+        break;
     }
     }
     return type;
     return type;
   }
   }
@@ -789,12 +804,12 @@ export class AnimationCurveEditorComponent extends React.Component<
               if (this.state !== undefined) {
               if (this.state !== undefined) {
                 let emptyTangents = keyframes.map((kf, i) => {
                 let emptyTangents = keyframes.map((kf, i) => {
                   if (i === 0) {
                   if (i === 0) {
-                    kf.outTangent = 0;
+                    kf.outTangent = this.returnZero(valueType);
                   } else if (i === keyframes.length - 1) {
                   } else if (i === keyframes.length - 1) {
-                    kf.inTangent = 0;
+                    kf.inTangent = this.returnZero(valueType);
                   } else {
                   } else {
-                    kf.inTangent = 0;
-                    kf.outTangent = 0;
+                    kf.inTangent = this.returnZero(valueType);
+                    kf.outTangent = this.returnZero(valueType);
                   }
                   }
                   return kf;
                   return kf;
                 });
                 });
@@ -1410,6 +1425,8 @@ export class AnimationCurveEditorComponent extends React.Component<
               setNotificationMessage={(message: string) => {
               setNotificationMessage={(message: string) => {
                 this.setState({ notification: message });
                 this.setState({ notification: message });
               }}
               }}
+              globalState={this.props.globalState}
+              snippetServer={this._snippetUrl}
             />
             />
 
 
             <div
             <div
@@ -1475,17 +1492,15 @@ export class AnimationCurveEditorComponent extends React.Component<
                     );
                     );
                   })}
                   })}
 
 
-                  <svg>
-                    <rect
-                      onClick={(e) => this.moveFrameTo(e)}
-                      x='0%'
-                      y='91%'
-                      width='105%'
-                      height='10%'
-                      fill='#222'
-                      style={{ cursor: 'pointer' }}
-                    ></rect>
-                  </svg>
+                  <rect
+                    onClick={(e) => this.moveFrameTo(e)}
+                    x='0%'
+                    y='91%'
+                    width='105%'
+                    height='10%'
+                    fill='#222'
+                    style={{ cursor: 'pointer' }}
+                  ></rect>
 
 
                   {this.state.frameAxisLength.map((f, i) => (
                   {this.state.frameAxisLength.map((f, i) => (
                     <svg key={i} x='0' y='96%'>
                     <svg key={i} x='0' y='96%'>

+ 373 - 160
inspector/src/components/actionTabs/tabs/propertyGrids/animations/animationListTree.tsx

@@ -1,187 +1,400 @@
-
-import * as React from "react";
+import * as React from 'react';
 import { IAnimatable } from 'babylonjs/Animations/animatable.interface';
 import { IAnimatable } from 'babylonjs/Animations/animatable.interface';
-import { TargetedAnimation } from "babylonjs/Animations/animationGroup";
-import { Observable } from "babylonjs/Misc/observable";
-import { PropertyChangedEvent } from "../../../../../components/propertyChangedEvent";
+import { TargetedAnimation } from 'babylonjs/Animations/animationGroup';
+import { Observable } from 'babylonjs/Misc/observable';
+import { PropertyChangedEvent } from '../../../../../components/propertyChangedEvent';
 import { Animation } from 'babylonjs/Animations/animation';
 import { Animation } from 'babylonjs/Animations/animation';
 import { IconButtonLineComponent } from '../../../lines/iconButtonLineComponent';
 import { IconButtonLineComponent } from '../../../lines/iconButtonLineComponent';
 import { Nullable } from 'babylonjs/types';
 import { Nullable } from 'babylonjs/types';
 
 
 interface IAnimationListTreeProps {
 interface IAnimationListTreeProps {
-    isTargetedAnimation: boolean;
-    entity: IAnimatable | TargetedAnimation;
-    selected: Animation | null
-    onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
-    selectAnimation: (selected: Animation, coordinate?: SelectedCoordinate) => void;
-    empty: () => void;
+  isTargetedAnimation: boolean;
+  entity: IAnimatable | TargetedAnimation;
+  selected: Animation | null;
+  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
+  selectAnimation: (
+    selected: Animation,
+    coordinate?: SelectedCoordinate
+  ) => void;
+  empty: () => void;
 }
 }
 
 
 interface Item {
 interface Item {
-    index: number;
-    name: string;
-    property: string;
-    selected: boolean;
-    open: boolean;
+  index: number;
+  name: string;
+  property: string;
+  selected: boolean;
+  open: boolean;
 }
 }
 
 
 export enum SelectedCoordinate {
 export enum SelectedCoordinate {
-    x = 0,
-    y = 1,
-    z = 2,
-    w = 3,
-    r = 0,
-    g = 1,
-    b = 2,
-    a = 3,
-    width = 0,
-    height = 1
+  x = 0,
+  y = 1,
+  z = 2,
+  w = 3,
+  r = 0,
+  g = 1,
+  b = 2,
+  a = 3,
+  width = 0,
+  height = 1,
 }
 }
 
 
-export class AnimationListTree extends React.Component<IAnimationListTreeProps, { list: Item[], selectedCoordinate: SelectedCoordinate, selectedAnimation: number }>{
-    constructor(props: IAnimationListTreeProps) {
-        super(props);
-        let animationList = (this.props.entity as IAnimatable).animations && (this.props.entity as IAnimatable).animations?.map((animation, i) => {
-            return ({ index: i, name: animation.name, property: animation.targetProperty, selected: false, open: false } as Item)
-        });
-        this.state = { list: animationList ?? [], selectedCoordinate: 0, selectedAnimation: 0 }
-    }
+export class AnimationListTree extends React.Component<
+  IAnimationListTreeProps,
+  {
+    selectedCoordinate: SelectedCoordinate;
+    selectedAnimation: number;
+  }
+> {
+  private _list: Item[] | null;
+  constructor(props: IAnimationListTreeProps) {
+    super(props);
 
 
-    deleteAnimation() {
-        let currentSelected = this.props.selected;
-        if (this.props.entity instanceof TargetedAnimation) {
-            console.log("no animation remove allowed");
-        } else {
-            let animations = (this.props.entity as IAnimatable).animations;
-            if (animations) {
-                let updatedAnimations = animations.filter(anim => anim !== currentSelected);
-                (this.props.entity as IAnimatable).animations = updatedAnimations as Nullable<Animation[]>;
-                this.generateList();
-            }
-        }
-    }
+    this._list = this.generateList();
 
 
-    generateList() {
-        let animationList = (this.props.entity as IAnimatable).animations && (this.props.entity as IAnimatable).animations?.map((animation, i) => {
-            return ({ index: i, name: animation.name, property: animation.targetProperty, selected: false, open: false } as Item)
-        });
-        if (animationList?.length === 0) {
-            this.props.empty();
-        }
-        this.setState({ list: animationList ?? [] });
-    }
+    this.state = {
+      selectedCoordinate: 0,
+      selectedAnimation: 0,
+    };
+  }
 
 
-    editAnimation() {
-        console.log('Edit animation');// TODO. Implement the edit options here
+  deleteAnimation() {
+    let currentSelected = this.props.selected;
+    if (this.props.entity instanceof TargetedAnimation) {
+      console.log('no animation remove allowed');
+    } else {
+      let animations = (this.props.entity as IAnimatable).animations;
+      if (animations) {
+        let updatedAnimations = animations.filter(
+          (anim) => anim !== currentSelected
+        );
+        (this.props
+          .entity as IAnimatable).animations = updatedAnimations as Nullable<
+          Animation[]
+        >;
+        this._list = this.generateList();
+      }
     }
     }
+  }
 
 
-    toggleProperty(index: number) {
-        let item = this.state.list[index];
-        item.open = !item.open;
+  generateList() {
+    let animationList =
+      (this.props.entity as IAnimatable).animations &&
+      (this.props.entity as IAnimatable).animations?.map((animation, i) => {
+        return {
+          index: i,
+          name: animation.name,
+          property: animation.targetProperty,
+          selected: false,
+          open: false,
+        } as Item;
+      });
+    if (animationList?.length === 0) {
+      this.props.empty();
     }
     }
+    return animationList ?? null;
+  }
 
 
-    setSelectedCoordinate(animation: Animation, coordinate: SelectedCoordinate, index: number) {
-        this.setState({ selectedCoordinate: coordinate, selectedAnimation: index });
-        this.props.selectAnimation(animation, SelectedCoordinate.x)
-    }
+  editAnimation() {
+    console.log('Edit animation'); // TODO. Implement the edit options here
+  }
 
 
-    setListItem(animation: Animation, i: number) {
-        let element;
+  toggleProperty(index: number) {
+    if (this._list !== null) {
+      let item = this._list[index];
+      item.open = !item.open;
+    }
+  }
 
 
-        switch (animation.dataType) {
-            case Animation.ANIMATIONTYPE_FLOAT:
-                element = <li className={this.props.selected && this.props.selected.name === animation.name ? 'property active' : 'property'} key={i} onClick={() => this.props.selectAnimation(animation)}>
-                    <div className={`animation-bullet`}></div>
-                    <p>{animation.targetProperty}</p>
-                    <IconButtonLineComponent tooltip="Options" icon="small animation-options" onClick={() => this.editAnimation()} />
-                    {!(this.props.entity instanceof TargetedAnimation) ? this.props.selected && this.props.selected.name === animation.name ? <IconButtonLineComponent tooltip="Remove" icon="small animation-delete" onClick={() => this.deleteAnimation()} /> : <div className="spacer"></div> : null}
-                </li>
-                break;
-            case Animation.ANIMATIONTYPE_VECTOR2:
-                element = <li className={this.props.selected && this.props.selected.name === animation.name ? 'property active' : 'property'} key={i} onClick={() => this.props.selectAnimation(animation)}>
-                    <p>{animation.targetProperty}</p>
-                    <ul>
-                        <li key={`${i}_x`}>Property <strong>X</strong></li>
-                        <li key={`${i}_y`}>Property <strong>Y</strong></li>
-                    </ul>
-                </li>
-                break;
-            case Animation.ANIMATIONTYPE_VECTOR3:
-                element = <li className={this.props.selected && this.props.selected.name === animation.name ? 'property sub active' : 'property sub'} key={i}>
-                    <div className={`animation-arrow ${this.state.list[i].open ? '' : 'flip'}`} onClick={() => this.toggleProperty(i)}></div>
-                    <p onClick={() => this.props.selectAnimation(animation)}>{animation.targetProperty}</p>
-                    <IconButtonLineComponent tooltip="Options" icon="small animation-options" onClick={() => this.editAnimation()} />
-                    {!(this.props.entity instanceof TargetedAnimation) ? this.props.selected && this.props.selected.name === animation.name ? <IconButtonLineComponent tooltip="Remove" icon="small animation-delete" onClick={() => this.deleteAnimation()} /> : <div className="spacer"></div> : null}
-                    <ul className={`sub-list ${this.state.list[i].open ? '' : 'hidden'}`}>
-                        <li key={`${i}_x`} id={`${i}_x`} className="property" style={{ color: '#db3e3e' }} onClick={() => this.setSelectedCoordinate(animation, SelectedCoordinate.x, i)}>
-                            <div className={`handle-indicator ${this.state.selectedCoordinate === SelectedCoordinate.x && this.state.selectedAnimation === i ? 'show' : 'hide'}`}></div>
-                            {animation.targetProperty} X</li>
-                        <li key={`${i}_y`} id={`${i}_y`} className="property" style={{ color: '#51e22d' }} onClick={() => this.setSelectedCoordinate(animation, SelectedCoordinate.y, i)}>
-                            <div className={`handle-indicator ${this.state.selectedCoordinate === SelectedCoordinate.y && this.state.selectedAnimation === i ? 'show' : 'hide'}`}></div>
-                            {animation.targetProperty} Y</li>
-                        <li key={`${i}_z`} id={`${i}_z`} className="property" style={{ color: '#00a3ff' }} onClick={() => this.setSelectedCoordinate(animation, SelectedCoordinate.z, i)}>
-                            <div className={`handle-indicator ${this.state.selectedCoordinate === SelectedCoordinate.z && this.state.selectedAnimation === i ? 'show' : 'hide'}`}></div>
-                            {animation.targetProperty} Z</li>
-                    </ul>
-                </li>
-                break;
-            case Animation.ANIMATIONTYPE_QUATERNION:
-                element = <li className="property" key={i}><p>{animation.targetProperty}</p>
-                    <ul>
-                        <li key={`${i}_x`}>Property <strong>X</strong></li>
-                        <li key={`${i}_y`}>Property <strong>Y</strong></li>
-                        <li key={`${i}_z`}>Property <strong>Z</strong></li>
-                        <li key={`${i}_w`}>Property <strong>W</strong></li>
-                    </ul>
-                </li>
-                break;
-            case Animation.ANIMATIONTYPE_COLOR3:
-                element = <li className="property" key={i}><p>{animation.targetProperty}</p>
-                    <ul>
-                        <li key={`${i}_r`}>Property <strong>R</strong></li>
-                        <li key={`${i}_g`}>Property <strong>G</strong></li>
-                        <li key={`${i}_b`}>Property <strong>B</strong></li>
-                    </ul>
-                </li>
-                break;
-            case Animation.ANIMATIONTYPE_COLOR4:
-                element = <li className="property" key={i}><p>{animation.targetProperty}</p>
-                    <ul>
-                        <li key={`${i}_r`}>Property <strong>R</strong></li>
-                        <li key={`${i}_g`}>Property <strong>G</strong></li>
-                        <li key={`${i}_b`}>Property <strong>B</strong></li>
-                        <li key={`${i}_a`}>Property <strong>A</strong></li>
-                    </ul>
-                </li>
-                break;
-            case Animation.ANIMATIONTYPE_SIZE:
-                element = <li className="property" key={i}><p>{animation.targetProperty}</p>
-                    <ul>
-                        <li key={`${i}_width`}>Property <strong>Width</strong></li>
-                        <li key={`${i}_height`}>Property <strong>Height</strong></li>
-                    </ul>
-                </li>
-                break;
-            default: console.log("not recognized");
-                element = null;
-                break;
-        }
+  setSelectedCoordinate(
+    animation: Animation,
+    coordinate: SelectedCoordinate,
+    index: number
+  ) {
+    this.setState({ selectedCoordinate: coordinate, selectedAnimation: index });
+    this.props.selectAnimation(animation, SelectedCoordinate.x);
+  }
 
 
-        return element;
-    }
+  setListItem(animation: Animation, i: number) {
+    let element;
+    this._list = this.generateList();
 
 
-    render() {
-        return (
-            <div className="object-tree">
-                <ul>
-                    {
-                        this.props.isTargetedAnimation ? this.setListItem((this.props.entity as TargetedAnimation).animation, 0) :
-                            (this.props.entity as IAnimatable).animations && (this.props.entity as IAnimatable).animations?.map((animation, i) => {
-                                return this.setListItem(animation, i);
-                            })}
+    if (this._list !== null) {
+      switch (animation.dataType) {
+        case Animation.ANIMATIONTYPE_FLOAT:
+          element = (
+            <li
+              className={
+                this.props.selected &&
+                this.props.selected.name === animation.name
+                  ? 'property active'
+                  : 'property'
+              }
+              key={i}
+              onClick={() => this.props.selectAnimation(animation)}
+            >
+              <div className={`animation-bullet`}></div>
+              <p>{animation.targetProperty}</p>
+              <IconButtonLineComponent
+                tooltip='Options'
+                icon='small animation-options'
+                onClick={() => this.editAnimation()}
+              />
+              {!(this.props.entity instanceof TargetedAnimation) ? (
+                this.props.selected &&
+                this.props.selected.name === animation.name ? (
+                  <IconButtonLineComponent
+                    tooltip='Remove'
+                    icon='small animation-delete'
+                    onClick={() => this.deleteAnimation()}
+                  />
+                ) : (
+                  <div className='spacer'></div>
+                )
+              ) : null}
+            </li>
+          );
+          break;
+        case Animation.ANIMATIONTYPE_VECTOR2:
+          element = (
+            <li
+              className={
+                this.props.selected &&
+                this.props.selected.name === animation.name
+                  ? 'property active'
+                  : 'property'
+              }
+              key={i}
+              onClick={() => this.props.selectAnimation(animation)}
+            >
+              <p>{animation.targetProperty}</p>
+              <ul>
+                <li key={`${i}_x`}>
+                  Property <strong>X</strong>
+                </li>
+                <li key={`${i}_y`}>
+                  Property <strong>Y</strong>
+                </li>
+              </ul>
+            </li>
+          );
+          break;
+        case Animation.ANIMATIONTYPE_VECTOR3:
+          element = (
+            <li
+              className={
+                this.props.selected &&
+                this.props.selected.name === animation.name
+                  ? 'property sub active'
+                  : 'property sub'
+              }
+              key={i}
+            >
+              <div
+                className={`animation-arrow ${
+                  this._list[i].open ? '' : 'flip'
+                }`}
+                onClick={() => this.toggleProperty(i)}
+              ></div>
+              <p onClick={() => this.props.selectAnimation(animation)}>
+                {animation.targetProperty}
+              </p>
+              <IconButtonLineComponent
+                tooltip='Options'
+                icon='small animation-options'
+                onClick={() => this.editAnimation()}
+              />
+              {!(this.props.entity instanceof TargetedAnimation) ? (
+                this.props.selected &&
+                this.props.selected.name === animation.name ? (
+                  <IconButtonLineComponent
+                    tooltip='Remove'
+                    icon='small animation-delete'
+                    onClick={() => this.deleteAnimation()}
+                  />
+                ) : (
+                  <div className='spacer'></div>
+                )
+              ) : null}
+              <ul className={`sub-list ${this._list[i].open ? '' : 'hidden'}`}>
+                <li
+                  key={`${i}_x`}
+                  id={`${i}_x`}
+                  className='property'
+                  style={{ color: '#db3e3e' }}
+                  onClick={() =>
+                    this.setSelectedCoordinate(
+                      animation,
+                      SelectedCoordinate.x,
+                      i
+                    )
+                  }
+                >
+                  <div
+                    className={`handle-indicator ${
+                      this.state.selectedCoordinate === SelectedCoordinate.x &&
+                      this.state.selectedAnimation === i
+                        ? 'show'
+                        : 'hide'
+                    }`}
+                  ></div>
+                  {animation.targetProperty} X
+                </li>
+                <li
+                  key={`${i}_y`}
+                  id={`${i}_y`}
+                  className='property'
+                  style={{ color: '#51e22d' }}
+                  onClick={() =>
+                    this.setSelectedCoordinate(
+                      animation,
+                      SelectedCoordinate.y,
+                      i
+                    )
+                  }
+                >
+                  <div
+                    className={`handle-indicator ${
+                      this.state.selectedCoordinate === SelectedCoordinate.y &&
+                      this.state.selectedAnimation === i
+                        ? 'show'
+                        : 'hide'
+                    }`}
+                  ></div>
+                  {animation.targetProperty} Y
+                </li>
+                <li
+                  key={`${i}_z`}
+                  id={`${i}_z`}
+                  className='property'
+                  style={{ color: '#00a3ff' }}
+                  onClick={() =>
+                    this.setSelectedCoordinate(
+                      animation,
+                      SelectedCoordinate.z,
+                      i
+                    )
+                  }
+                >
+                  <div
+                    className={`handle-indicator ${
+                      this.state.selectedCoordinate === SelectedCoordinate.z &&
+                      this.state.selectedAnimation === i
+                        ? 'show'
+                        : 'hide'
+                    }`}
+                  ></div>
+                  {animation.targetProperty} Z
+                </li>
+              </ul>
+            </li>
+          );
+          break;
+        case Animation.ANIMATIONTYPE_QUATERNION:
+          element = (
+            <li className='property' key={i}>
+              <p>{animation.targetProperty}</p>
+              <ul>
+                <li key={`${i}_x`}>
+                  Property <strong>X</strong>
+                </li>
+                <li key={`${i}_y`}>
+                  Property <strong>Y</strong>
+                </li>
+                <li key={`${i}_z`}>
+                  Property <strong>Z</strong>
+                </li>
+                <li key={`${i}_w`}>
+                  Property <strong>W</strong>
+                </li>
+              </ul>
+            </li>
+          );
+          break;
+        case Animation.ANIMATIONTYPE_COLOR3:
+          element = (
+            <li className='property' key={i}>
+              <p>{animation.targetProperty}</p>
+              <ul>
+                <li key={`${i}_r`}>
+                  Property <strong>R</strong>
+                </li>
+                <li key={`${i}_g`}>
+                  Property <strong>G</strong>
+                </li>
+                <li key={`${i}_b`}>
+                  Property <strong>B</strong>
+                </li>
+              </ul>
+            </li>
+          );
+          break;
+        case Animation.ANIMATIONTYPE_COLOR4:
+          element = (
+            <li className='property' key={i}>
+              <p>{animation.targetProperty}</p>
+              <ul>
+                <li key={`${i}_r`}>
+                  Property <strong>R</strong>
+                </li>
+                <li key={`${i}_g`}>
+                  Property <strong>G</strong>
+                </li>
+                <li key={`${i}_b`}>
+                  Property <strong>B</strong>
+                </li>
+                <li key={`${i}_a`}>
+                  Property <strong>A</strong>
+                </li>
+              </ul>
+            </li>
+          );
+          break;
+        case Animation.ANIMATIONTYPE_SIZE:
+          element = (
+            <li className='property' key={i}>
+              <p>{animation.targetProperty}</p>
+              <ul>
+                <li key={`${i}_width`}>
+                  Property <strong>Width</strong>
+                </li>
+                <li key={`${i}_height`}>
+                  Property <strong>Height</strong>
+                </li>
+              </ul>
+            </li>
+          );
+          break;
+        default:
+          console.log('not recognized');
+          element = null;
+          break;
+      }
 
 
-                </ul>
-            </div>
-        )
+      return element;
+    } else {
+      return null;
     }
     }
-} 
+  }
+
+  render() {
+    return (
+      <div className='object-tree'>
+        <ul>
+          {this.props.isTargetedAnimation
+            ? this.setListItem(
+                (this.props.entity as TargetedAnimation).animation,
+                0
+              )
+            : (this.props.entity as IAnimatable).animations &&
+              (this.props.entity as IAnimatable).animations?.map(
+                (animation, i) => {
+                  return this.setListItem(animation, i);
+                }
+              )}
+        </ul>
+      </div>
+    );
+  }
+}

+ 1 - 0
inspector/src/components/actionTabs/tabs/propertyGrids/animations/animationPropertyGridComponent.tsx

@@ -247,6 +247,7 @@ export class AnimationGridComponent extends React.Component<
                     }
                     }
                     lockObject={this.props.lockObject}
                     lockObject={this.props.lockObject}
                     playOrPause={() => this.playOrPause()}
                     playOrPause={() => this.playOrPause()}
+                    globalState={this.props.globalState}
                   />
                   />
                 </PopupComponent>
                 </PopupComponent>
               )}
               )}

+ 20 - 8
inspector/src/components/actionTabs/tabs/propertyGrids/animations/curveEditor.scss

@@ -757,15 +757,16 @@ body {
           margin-left: 75px;
           margin-left: 75px;
           height: 20px;
           height: 20px;
           margin-top: 10px;
           margin-top: 10px;
-          button {
+          button,
+          label {
             border: none;
             border: none;
             font-size: 12px;
             font-size: 12px;
             margin: 0px;
             margin: 0px;
-            width: 60px;
+            width: 127px;
             background-color: #444;
             background-color: #444;
             height: 20px;
             height: 20px;
             font-family: acumin-pro-condensed;
             font-family: acumin-pro-condensed;
-            padding-top: 1px;
+            padding-top: 0px;
           }
           }
         }
         }
 
 
@@ -786,6 +787,7 @@ body {
               font-family: acumin-pro-condensed;
               font-family: acumin-pro-condensed;
               padding-bottom: 6px;
               padding-bottom: 6px;
               padding-left: 6px;
               padding-left: 6px;
+              color: white;
             }
             }
           }
           }
         }
         }
@@ -852,7 +854,7 @@ body {
         }
         }
 
 
         .buttonLine {
         .buttonLine {
-          width: 80px;
+          width: 105px;
           padding: 0px;
           padding: 0px;
           display: block;
           display: block;
           margin-left: 75px;
           margin-left: 75px;
@@ -862,12 +864,22 @@ body {
             border: none;
             border: none;
             font-size: 12px;
             font-size: 12px;
             margin: 0px;
             margin: 0px;
-            width: 80px;
             background-color: #444444;
             background-color: #444444;
             height: 20px;
             height: 20px;
+            width: 105px;
             font-family: acumin-pro-condensed;
             font-family: acumin-pro-condensed;
             padding-top: 1px;
             padding-top: 1px;
           }
           }
+
+          &:first-child {
+            width: 105px;
+          }
+          &:nth-child(2) {
+            width: 60px;
+            button {
+              width: 60px;
+            }
+          }
         }
         }
 
 
         .textInputLine {
         .textInputLine {
@@ -1089,8 +1101,8 @@ body {
       .linear {
       .linear {
         overflow: visible;
         overflow: visible;
         border: 0px solid white;
         border: 0px solid white;
-        height: 362px;
-        width: 780px;
+        height: 100%;
+        width: 100%;
         outline: none;
         outline: none;
 
 
         svg {
         svg {
@@ -1126,7 +1138,7 @@ body {
       }
       }
 
 
       .playhead-wrapper {
       .playhead-wrapper {
-        left: -13px;
+        left: 20px;
         bottom: 366px;
         bottom: 366px;
         position: relative;
         position: relative;
       }
       }

+ 34 - 2
inspector/src/components/actionTabs/tabs/propertyGrids/animations/editorControls.tsx

@@ -12,6 +12,7 @@ import { TargetedAnimation } from 'babylonjs/Animations/animationGroup';
 import { LoadSnippet } from './loadsnippet';
 import { LoadSnippet } from './loadsnippet';
 import { SaveSnippet } from './saveSnippet';
 import { SaveSnippet } from './saveSnippet';
 import { LockObject } from '../lockObject';
 import { LockObject } from '../lockObject';
+import { GlobalState } from '../../../../globalState';
 
 
 interface IEditorControlsProps {
 interface IEditorControlsProps {
   isTargetedAnimation: boolean;
   isTargetedAnimation: boolean;
@@ -21,6 +22,8 @@ interface IEditorControlsProps {
   onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
   onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
   setNotificationMessage: (message: string) => void;
   setNotificationMessage: (message: string) => void;
   selectAnimation: (selected: Animation, axis?: SelectedCoordinate) => void;
   selectAnimation: (selected: Animation, axis?: SelectedCoordinate) => void;
+  globalState: GlobalState;
+  snippetServer: string;
 }
 }
 
 
 export class EditorControls extends React.Component<
 export class EditorControls extends React.Component<
@@ -33,6 +36,7 @@ export class EditorControls extends React.Component<
     isLoopActive: boolean;
     isLoopActive: boolean;
     animationsCount: number;
     animationsCount: number;
     framesPerSecond: number;
     framesPerSecond: number;
+    snippetId: string;
   }
   }
 > {
 > {
   constructor(props: IEditorControlsProps) {
   constructor(props: IEditorControlsProps) {
@@ -48,6 +52,7 @@ export class EditorControls extends React.Component<
       isLoopActive: false,
       isLoopActive: false,
       animationsCount: count,
       animationsCount: count,
       framesPerSecond: 60,
       framesPerSecond: 60,
+      snippetId: '',
     };
     };
   }
   }
 
 
@@ -122,6 +127,16 @@ export class EditorControls extends React.Component<
     });
     });
   }
   }
 
 
+  animationsLoaded(numberOfAnimations: number) {
+    this.setState({
+      animationsCount: numberOfAnimations,
+      isEditTabOpen: true,
+      isAnimationTabOpen: false,
+      isLoadTabOpen: false,
+      isSaveTabOpen: false,
+    });
+  }
+
   render() {
   render() {
     return (
     return (
       <div className='animation-list'>
       <div className='animation-list'>
@@ -197,11 +212,28 @@ export class EditorControls extends React.Component<
         )}
         )}
 
 
         {this.state.isLoadTabOpen ? (
         {this.state.isLoadTabOpen ? (
-          <LoadSnippet lockObject={this.props.lockObject} animations={[]} />
+          <LoadSnippet
+            animationsLoaded={(numberOfAnimations: number) =>
+              this.animationsLoaded(numberOfAnimations)
+            }
+            lockObject={this.props.lockObject}
+            animations={[]}
+            snippetServer={this.props.snippetServer}
+            globalState={this.props.globalState}
+            setSnippetId={(id: string) => this.setState({ snippetId: id })}
+            entity={this.props.entity}
+            setNotificationMessage={this.props.setNotificationMessage}
+          />
         ) : null}
         ) : null}
 
 
         {this.state.isSaveTabOpen ? (
         {this.state.isSaveTabOpen ? (
-          <SaveSnippet lockObject={this.props.lockObject} animations={[]} />
+          <SaveSnippet
+            lockObject={this.props.lockObject}
+            animations={(this.props.entity as IAnimatable).animations}
+            snippetServer={this.props.snippetServer}
+            globalState={this.props.globalState}
+            snippetId={this.state.snippetId}
+          />
         ) : null}
         ) : null}
 
 
         {this.state.isEditTabOpen ? (
         {this.state.isEditTabOpen ? (

+ 95 - 20
inspector/src/components/actionTabs/tabs/propertyGrids/animations/loadsnippet.tsx

@@ -1,49 +1,124 @@
-import * as React from "react";
-import { Observable } from "babylonjs/Misc/observable";
-import { PropertyChangedEvent } from "../../../../../components/propertyChangedEvent";
-import { Animation } from "babylonjs/Animations/animation";
-import { ButtonLineComponent } from "../../../lines/buttonLineComponent";
-import { TextInputLineComponent } from "../../../lines/textInputLineComponent";
-import { LockObject } from "../lockObject";
+import * as React from 'react';
+import { Observable } from 'babylonjs/Misc/observable';
+import { PropertyChangedEvent } from '../../../../../components/propertyChangedEvent';
+import { Animation } from 'babylonjs/Animations/animation';
+import { ButtonLineComponent } from '../../../lines/buttonLineComponent';
+import { FileButtonLineComponent } from '../../../lines/fileButtonLineComponent';
+import { TextInputLineComponent } from '../../../lines/textInputLineComponent';
+import { LockObject } from '../lockObject';
+import { Tools } from 'babylonjs/Misc/tools';
+import { GlobalState } from '../../../../globalState';
+import { ReadFileError } from 'babylonjs/Misc/fileTools';
+import { IAnimatable } from 'babylonjs/Animations/animatable.interface';
+import { TargetedAnimation } from 'babylonjs/Animations/animationGroup';
 
 
 interface ILoadSnippetProps {
 interface ILoadSnippetProps {
   animations: Animation[];
   animations: Animation[];
   onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
   onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
   lockObject: LockObject;
   lockObject: LockObject;
+  globalState: GlobalState;
+  snippetServer: string;
+  setSnippetId: (id: string) => void;
+  entity: IAnimatable | TargetedAnimation;
+  setNotificationMessage: (message: string) => void;
+  animationsLoaded: (numberOfAnimations: number) => void;
 }
 }
 
 
 export class LoadSnippet extends React.Component<
 export class LoadSnippet extends React.Component<
   ILoadSnippetProps,
   ILoadSnippetProps,
-  { server: string }
+  { snippetId: string }
 > {
 > {
   private _serverAddress: string;
   private _serverAddress: string;
   constructor(props: ILoadSnippetProps) {
   constructor(props: ILoadSnippetProps) {
     super(props);
     super(props);
-    this._serverAddress = "-";
-    this.state = { server: "" };
+    this._serverAddress = this.props.snippetServer;
+    this.state = { snippetId: '' };
   }
   }
 
 
   change(value: string) {
   change(value: string) {
-    this.setState({ server: value });
+    this.setState({ snippetId: value });
+    this.props.setSnippetId(value);
+  }
+
+  loadFromFile(file: File) {
+    Tools.ReadFile(
+      file,
+      (data) => {
+        let decoder = new TextDecoder('utf-8');
+        let jsonObject = JSON.parse(decoder.decode(data));
+        var result: Animation[] = [];
+
+        for (var i in jsonObject) {
+          result.push(Animation.Parse(jsonObject[i]));
+        }
+
+        if (this.props.entity) {
+          (this.props.entity as IAnimatable).animations = result;
+          var e = new PropertyChangedEvent();
+          e.object = this.props.entity;
+          e.property = 'animations';
+          e.value = (this.props.entity as IAnimatable).animations;
+          this.props.globalState.onPropertyChangedObservable.notifyObservers(e);
+          this.props.animationsLoaded(result.length);
+        }
+      },
+      undefined,
+      true,
+      (error: ReadFileError) => {
+        console.log(error.message);
+      }
+    );
+  }
+
+  loadFromSnippet() {
+    if (this.state.snippetId !== '') {
+      //How to dispose() previous animations;
+      //How to notify observers
+      Animation.CreateFromSnippetAsync(this.state.snippetId)
+        .then((newAnimations) => {
+          // Explore how observers are notified from snippet
+          if (newAnimations instanceof Array) {
+            (this.props.entity as IAnimatable).animations = newAnimations;
+          }
+
+          if (newAnimations instanceof Animation) {
+            (this.props.entity as IAnimatable).animations?.push(newAnimations);
+          }
+        })
+        .catch((err) => {
+          this.props.setNotificationMessage(
+            `Unable to load your animations: ${err}`
+          );
+        });
+    } else {
+      this.props.setNotificationMessage(`You need to add an snippet id`);
+    }
   }
   }
 
 
   render() {
   render() {
     return (
     return (
-      <div className="load-container">
+      <div className='load-container'>
         <TextInputLineComponent
         <TextInputLineComponent
-          label="Snippet Server"
+          label='Snippet Id'
           lockObject={this.props.lockObject}
           lockObject={this.props.lockObject}
-          value={this.state.server}
+          value={this.state.snippetId}
           onChange={(value: string) => this.change(value)}
           onChange={(value: string) => this.change(value)}
         />
         />
-        <ButtonLineComponent label="Load" onClick={() => {}} />
-        <div className="load-browse">
+        <ButtonLineComponent
+          label='Load from snippet server'
+          onClick={() => this.loadFromSnippet()}
+        />
+        <div className='load-browse'>
           <p>Local File</p>
           <p>Local File</p>
-          <ButtonLineComponent label="Browse" onClick={() => {}} />
+          <FileButtonLineComponent
+            label='Load'
+            onClick={(file) => this.loadFromFile(file)}
+            accept='.json'
+          />
         </div>
         </div>
-        <div className="load-server">
-          <p>Snippet Server : </p>
-          <p>{this._serverAddress}</p>
+        <div className='load-server'>
+          <p>Snippet Server: </p>&nbsp;
+          <p> {this._serverAddress ?? '-'}</p>
         </div>
         </div>
       </div>
       </div>
     );
     );

+ 1 - 1
inspector/src/components/actionTabs/tabs/propertyGrids/animations/playhead.tsx

@@ -47,7 +47,7 @@ export class Playhead extends React.Component<IPlayheadProps> {
   }
   }
 
 
   calculateMove() {
   calculateMove() {
-    return `calc(${this.props.frame * this.props.offset}px - 13px)`;
+    return `calc(${this.props.frame * this.props.offset}px + 20px)`;
   }
   }
 
 
   render() {
   render() {

+ 116 - 24
inspector/src/components/actionTabs/tabs/propertyGrids/animations/saveSnippet.tsx

@@ -1,15 +1,26 @@
-import * as React from "react";
-import { Observable } from "babylonjs/Misc/observable";
-import { PropertyChangedEvent } from "../../../../../components/propertyChangedEvent";
-import { ButtonLineComponent } from "../../../lines/buttonLineComponent";
-import { LockObject } from "../lockObject";
+import * as React from 'react';
+import { Observable } from 'babylonjs/Misc/observable';
+import { PropertyChangedEvent } from '../../../../../components/propertyChangedEvent';
+import { ButtonLineComponent } from '../../../lines/buttonLineComponent';
+import { Tools } from 'babylonjs/Misc/tools';
+import { Animation } from 'babylonjs/Animations/animation';
+import { LockObject } from '../lockObject';
+import { Nullable } from 'babylonjs/types';
+import { GlobalState } from '../../../../globalState';
 
 
 interface ISaveSnippetProps {
 interface ISaveSnippetProps {
-  animations: any[];
+  animations: Nullable<Animation[]>;
   onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
   onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
   lockObject: LockObject;
   lockObject: LockObject;
+  globalState: GlobalState;
+  snippetServer: string;
+  snippetId: string;
 }
 }
 
 
+export interface Snippet {
+  url: string;
+  id: string;
+}
 interface SelectedAnimation {
 interface SelectedAnimation {
   id: string;
   id: string;
   name: string;
   name: string;
@@ -21,11 +32,9 @@ export class SaveSnippet extends React.Component<
   ISaveSnippetProps,
   ISaveSnippetProps,
   { selectedAnimations: SelectedAnimation[] }
   { selectedAnimations: SelectedAnimation[] }
 > {
 > {
-  private _serverAddress: string;
   constructor(props: ISaveSnippetProps) {
   constructor(props: ISaveSnippetProps) {
     super(props);
     super(props);
-    this._serverAddress = "-";
-    let animList = this.props.animations.map((animation, i) => {
+    let animList = this.props.animations?.map((animation, i) => {
       return {
       return {
         id: `${animation.name}_${animation.targetProperty}`,
         id: `${animation.name}_${animation.targetProperty}`,
         name: animation.name,
         name: animation.name,
@@ -33,15 +42,15 @@ export class SaveSnippet extends React.Component<
         selected: false,
         selected: false,
       };
       };
     });
     });
-    this.state = { selectedAnimations: animList };
+    this.state = { selectedAnimations: animList ?? [] };
   }
   }
 
 
   handleCheckboxChange(e: React.ChangeEvent<HTMLInputElement>) {
   handleCheckboxChange(e: React.ChangeEvent<HTMLInputElement>) {
     e.preventDefault();
     e.preventDefault();
 
 
-    let index = parseInt(e.target.id.replace("save_", ""));
+    let index = parseInt(e.target.id.replace('save_', ''));
 
 
-    let updated = this.state.selectedAnimations.map((item) => {
+    let updated = this.state.selectedAnimations?.map((item) => {
       if (item.index === index) {
       if (item.index === index) {
         item.selected = !item.selected;
         item.selected = !item.selected;
       }
       }
@@ -51,24 +60,102 @@ export class SaveSnippet extends React.Component<
     this.setState({ selectedAnimations: updated });
     this.setState({ selectedAnimations: updated });
   }
   }
 
 
+  stringifySelectedAnimations() {
+    const content: string[] = [];
+    this.state.selectedAnimations.forEach((animation) => {
+      if (animation.selected) {
+        const selected =
+          this.props.animations && this.props.animations[animation.index];
+        if (selected) {
+          content.push(selected.serialize());
+        }
+      }
+    });
+    return JSON.stringify(content);
+  }
+
+  saveToFile() {
+    const content = this.stringifySelectedAnimations();
+    Tools.Download(new Blob([content]), 'animations.json');
+  }
+
+  saveToSnippet() {
+    if (this.props.snippetId !== '') {
+      let serverId = this.props.snippetId;
+      const serverUrl = this.props.snippetServer;
+      const content = this.stringifySelectedAnimations();
+
+      var xmlHttp = new XMLHttpRequest();
+      xmlHttp.onreadystatechange = () => {
+        if (xmlHttp.readyState == 4) {
+          if (xmlHttp.status == 200) {
+            var snippet = JSON.parse(xmlHttp.responseText);
+            const oldId = serverId;
+            serverId = snippet.id;
+            if (snippet.version && snippet.version != '0') {
+              serverId += '#' + snippet.version;
+            }
+            this.forceUpdate();
+            if (navigator.clipboard) {
+              navigator.clipboard.writeText(serverId);
+            }
+
+            let windowAsAny = window as any;
+
+            if (windowAsAny.Playground && oldId) {
+              windowAsAny.Playground.onRequestCodeChangeObservable.notifyObservers(
+                {
+                  regex: new RegExp(oldId, 'g'),
+                  replace: serverId,
+                }
+              );
+            }
+
+            alert(
+              'Animations saved with ID: ' +
+                serverId +
+                ' (please note that the id was also saved to your clipboard)'
+            );
+          } else {
+            alert('Unable to save your animations');
+          }
+        }
+      };
+
+      xmlHttp.open('POST', serverUrl + (serverId ? '/' + serverId : ''), true);
+      xmlHttp.setRequestHeader('Content-Type', 'application/json');
+
+      var dataToSend = {
+        payload: JSON.stringify({
+          animations: content,
+        }),
+        name: '',
+        description: '',
+        tags: '',
+      };
+
+      xmlHttp.send(JSON.stringify(dataToSend));
+    }
+  }
+
   render() {
   render() {
     return (
     return (
-      <div className="save-container">
-        <div className="item-list">
+      <div className='save-container'>
+        <div className='item-list'>
           <ul>
           <ul>
-            {this.props.animations.map((animation, i) => {
+            {this.props.animations?.map((animation, i) => {
               return (
               return (
                 <li key={i}>
                 <li key={i}>
                   <div>
                   <div>
                     <label>
                     <label>
                       <input
                       <input
                         id={`save_${i}`}
                         id={`save_${i}`}
-                        name={`save_${animation.name}`}
-                        type="checkbox"
+                        name={`save_${animation?.name}`}
+                        type='checkbox'
                         checked={this.state.selectedAnimations[i].selected}
                         checked={this.state.selectedAnimations[i].selected}
                         onChange={(e) => this.handleCheckboxChange(e)}
                         onChange={(e) => this.handleCheckboxChange(e)}
                       />
                       />
-                      {animation.name}
+                      {animation?.name}
                     </label>
                     </label>
                   </div>
                   </div>
                 </li>
                 </li>
@@ -76,13 +163,18 @@ export class SaveSnippet extends React.Component<
             })}
             })}
           </ul>
           </ul>
         </div>
         </div>
-        <div className="save-buttons">
-          <ButtonLineComponent label="Save Snippet" onClick={() => {}} />
-          <ButtonLineComponent label="Save File" onClick={() => {}} />
+        <div className='save-buttons'>
+          {this.props.snippetId !== '' ? (
+            <ButtonLineComponent
+              label='Save to snippet server'
+              onClick={() => this.saveToSnippet()}
+            />
+          ) : null}
+          <ButtonLineComponent label='Save' onClick={() => this.saveToFile()} />
         </div>
         </div>
-        <div className="save-server">
-          <p>Snippet Server:</p>
-          <p>{this._serverAddress}</p>
+        <div className='save-server'>
+          <p>Snippet Server: </p>&nbsp;
+          <p> {this.props.snippetServer ?? '-'}</p>
         </div>
         </div>
       </div>
       </div>
     );
     );

+ 213 - 201
inspector/src/components/actionTabs/tabs/propertyGrids/animations/svgDraggableArea.tsx

@@ -1,230 +1,242 @@
-import * as React from "react";
+import * as React from 'react';
 import { Vector2 } from 'babylonjs/Maths/math.vector';
 import { Vector2 } from 'babylonjs/Maths/math.vector';
 import { KeyframeSvgPoint, IKeyframeSvgPoint } from './keyframeSvgPoint';
 import { KeyframeSvgPoint, IKeyframeSvgPoint } from './keyframeSvgPoint';
 
 
 interface ISvgDraggableAreaProps {
 interface ISvgDraggableAreaProps {
-    keyframeSvgPoints: IKeyframeSvgPoint[];
-    updatePosition: (updatedKeyframe: IKeyframeSvgPoint, id: string) => void;
-    scale: number;
-    viewBoxScale: number;
-    selectKeyframe: (id: string) => void;
-    selectedControlPoint: (type: string, id: string) => void;
+  keyframeSvgPoints: IKeyframeSvgPoint[];
+  updatePosition: (updatedKeyframe: IKeyframeSvgPoint, id: string) => void;
+  scale: number;
+  viewBoxScale: number;
+  selectKeyframe: (id: string) => void;
+  selectedControlPoint: (type: string, id: string) => void;
 }
 }
 
 
-export class SvgDraggableArea extends React.Component<ISvgDraggableAreaProps>{
-
-    private _active: boolean;
-    private _isCurrentPointControl: string;
-    private _currentPointId: string;
-    private _draggableArea: React.RefObject<SVGSVGElement>;
-    private _panStart: Vector2;
-    private _panStop: Vector2;
-    private _width: number;
-
-    constructor(props: ISvgDraggableAreaProps) {
-        super(props);
-        this._currentPointId = "";
-        this._isCurrentPointControl = "";
-        this._draggableArea = React.createRef();
-        this._panStart = new Vector2(0, 0);
-        this._panStop = new Vector2(0, 0);
+export class SvgDraggableArea extends React.Component<ISvgDraggableAreaProps> {
+  private _active: boolean;
+  private _isCurrentPointControl: string;
+  private _currentPointId: string;
+  private _draggableArea: React.RefObject<SVGSVGElement>;
+  private _panStart: Vector2;
+  private _panStop: Vector2;
+  private _width: number;
+
+  constructor(props: ISvgDraggableAreaProps) {
+    super(props);
+    this._currentPointId = '';
+    this._isCurrentPointControl = '';
+    this._draggableArea = React.createRef();
+    this._panStart = new Vector2(0, 0);
+    this._panStop = new Vector2(0, 0);
+  }
+
+  componentDidMount() {
+    this._draggableArea.current?.addEventListener(
+      'keydown',
+      this.keyDown.bind(this)
+    );
+    this._draggableArea.current?.addEventListener(
+      'keyup',
+      this.keyUp.bind(this)
+    );
+    setTimeout(() => {
+      this._width =
+        this._draggableArea.current?.clientWidth !== undefined
+          ? this._draggableArea.current?.clientWidth
+          : 0;
+      console.log(this._width);
+    }, 500);
+  }
+
+  dragStart(e: React.TouchEvent<SVGSVGElement>): void;
+  dragStart(e: React.MouseEvent<SVGSVGElement, MouseEvent>): void;
+  dragStart(e: any): void {
+    e.preventDefault();
+    if (e.target.classList.contains('draggable')) {
+      this._active = true;
+      this._currentPointId = e.target.getAttribute('data-id');
+
+      if (e.target.classList.contains('control-point')) {
+        this._isCurrentPointControl = e.target.getAttribute('type');
+      }
     }
     }
 
 
-    componentDidMount() {
-        this._draggableArea.current?.addEventListener("keydown", this.keyDown.bind(this));
-        this._draggableArea.current?.addEventListener("keyup", this.keyUp.bind(this));
-        setTimeout(() => {
-            this._width = this._draggableArea.current?.clientWidth !== undefined ? this._draggableArea.current?.clientWidth : 0;
-            console.log(this._width);
-        }, 500);
+    if (e.target.classList.contains('pannable')) {
+      if (e.buttons === 1 && e.ctrlKey) {
+        this._panStart.set(e.clientX, e.clientY);
+      }
     }
     }
-
-    dragStart(e: React.TouchEvent<SVGSVGElement>): void;
-    dragStart(e: React.MouseEvent<SVGSVGElement, MouseEvent>): void;
-    dragStart(e: any): void {
-        e.preventDefault();
-        if (e.target.classList.contains("draggable")) {
-            this._active = true;
-            this._currentPointId = e.target.getAttribute('data-id');
-
-            if (e.target.classList.contains("control-point")) {
-                this._isCurrentPointControl = e.target.getAttribute("type");
-            }
-        }
-
-        if (e.target.classList.contains("pannable")) {
-            if (e.buttons === 1 && e.ctrlKey) {
-                this._panStart.set(e.clientX, e.clientY);
-            }
+  }
+
+  drag(e: React.TouchEvent<SVGSVGElement>): void;
+  drag(e: React.MouseEvent<SVGSVGElement, MouseEvent>): void;
+  drag(e: any): void {
+    if (this._active) {
+      e.preventDefault();
+
+      var coord = this.getMousePosition(e);
+
+      if (coord !== undefined) {
+        var newPoints = [...this.props.keyframeSvgPoints];
+
+        let point = newPoints.find((kf) => kf.id === this._currentPointId);
+        if (point) {
+          // Check for NaN values here.
+          if (this._isCurrentPointControl === 'left') {
+            point.leftControlPoint = coord;
+          } else if (this._isCurrentPointControl === 'right') {
+            point.rightControlPoint = coord;
+          } else {
+            point.keyframePoint = coord;
+          }
+          this.props.updatePosition(point, this._currentPointId);
         }
         }
+      }
     }
     }
-
-    drag(e: React.TouchEvent<SVGSVGElement>): void;
-    drag(e: React.MouseEvent<SVGSVGElement, MouseEvent>): void;
-    drag(e: any): void {
-        if (this._active) {
-
-            e.preventDefault();
-
-            var coord = this.getMousePosition(e);
-
-            if (coord !== undefined) {
-
-                var newPoints = [...this.props.keyframeSvgPoints];
-
-                let point = newPoints.find(kf => kf.id === this._currentPointId);
-                if (point) {
-                    // Check for NaN values here. 
-                    if (this._isCurrentPointControl === "left") {
-                        point.leftControlPoint = coord;
-                    } else if (this._isCurrentPointControl === "right") {
-                        point.rightControlPoint = coord;
-                    } else {
-                        point.keyframePoint = coord;
-                    }
-                    this.props.updatePosition(point, this._currentPointId);
-                }
-            }
-        }
+  }
+
+  dragEnd(e: React.TouchEvent<SVGSVGElement>): void;
+  dragEnd(e: React.MouseEvent<SVGSVGElement, MouseEvent>): void;
+  dragEnd(e: any): void {
+    e.preventDefault();
+    this._active = false;
+    this._currentPointId = '';
+    this._isCurrentPointControl = '';
+
+    if (e.target.classList.contains('pannable')) {
+      if (this._panStart.x !== 0 && this._panStart.y !== 0) {
+        this._panStop.set(e.clientX, e.clientY);
+        this.panDirection();
+      }
     }
     }
-
-    dragEnd(e: React.TouchEvent<SVGSVGElement>): void;
-    dragEnd(e: React.MouseEvent<SVGSVGElement, MouseEvent>): void;
-    dragEnd(e: any): void {
-        e.preventDefault();
-        this._active = false;
-        this._currentPointId = "";
-        this._isCurrentPointControl = "";
-
-        if (e.target.classList.contains("pannable")) {
-            if (this._panStart.x !== 0 && this._panStart.y !== 0) {
-                this._panStop.set(e.clientX, e.clientY);
-                this.panDirection();
-            }
-        }
+  }
+
+  getMousePosition(e: React.TouchEvent<SVGSVGElement>): Vector2 | undefined;
+  getMousePosition(
+    e: React.MouseEvent<SVGSVGElement, MouseEvent>
+  ): Vector2 | undefined;
+  getMousePosition(e: any): Vector2 | undefined {
+    if (e.touches) {
+      e = e.touches[0];
     }
     }
 
 
-    getMousePosition(e: React.TouchEvent<SVGSVGElement>): Vector2 | undefined;
-    getMousePosition(e: React.MouseEvent<SVGSVGElement, MouseEvent>): Vector2 | undefined;
-    getMousePosition(e: any): Vector2 | undefined {
-
-        if (e.touches) { e = e.touches[0]; }
-
-        if (this._draggableArea.current) {
-            var svg = this._draggableArea.current as SVGSVGElement;
-            var CTM = svg.getScreenCTM();
-            if (CTM) {
-                return new Vector2((e.clientX - CTM.e) / CTM.a, (e.clientY - CTM.f) / CTM.d);
-            } else {
-                return undefined;
-            }
-        } else {
-            return undefined;
-        }
+    if (this._draggableArea.current) {
+      var svg = this._draggableArea.current as SVGSVGElement;
+      var CTM = svg.getScreenCTM();
+      if (CTM) {
+        return new Vector2(
+          (e.clientX - CTM.e) / CTM.a,
+          (e.clientY - CTM.f) / CTM.d
+        );
+      } else {
+        return undefined;
+      }
+    } else {
+      return undefined;
     }
     }
+  }
 
 
-    panDirection() {
-
-        // Movement Right to Left
-        if (this._panStart.x > this._panStop.x) {
-            console.log("right to left");
-            this.panTo("right", Math.abs(this._panStart.x - this._panStop.x));
-        }
-
-        // Movement Right to Left
-        if (this._panStart.x < this._panStop.x) {
-            this.panTo("left", Math.abs(this._panStart.x - this._panStop.x));
-            console.log("left to right");
-        }
-
-        // Movement Bottom to Up
-        if (this._panStart.y > this._panStop.y) {
-            console.log("down up");
-        }
-
-        // Movement Up to Bottom
-        if (this._panStart.y < this._panStop.y) {
-            console.log("up down");
-        }
-
-        this._panStart.set(0, 0);
-        this._panStop.set(0, 0);
+  panDirection() {
+    // Movement Right to Left
+    if (this._panStart.x > this._panStop.x) {
+      console.log('right to left');
+      this.panTo('right', Math.abs(this._panStart.x - this._panStop.x));
+    }
 
 
+    // Movement Right to Left
+    if (this._panStart.x < this._panStop.x) {
+      this.panTo('left', Math.abs(this._panStart.x - this._panStop.x));
+      console.log('left to right');
     }
     }
 
 
-    panTo(direction: string, value: number) {
-
-        switch (direction) {
-            case "left":
-                (this._draggableArea.current?.parentElement as HTMLDivElement).scrollLeft -= (value * 1);
-                break;
-            case "right":
-                (this._draggableArea.current?.parentElement as HTMLDivElement).scrollLeft += (value * 1);
-                break;
-            case "top":
-                break;
-            case "down":
-                break;
-        }
+    // Movement Bottom to Up
+    if (this._panStart.y > this._panStop.y) {
+      console.log('down up');
     }
     }
 
 
-    keyDown(e: KeyboardEvent) {
-        e.preventDefault();
-        if (e.keyCode === 17) {
-            this._draggableArea.current?.style.setProperty("cursor", "grab");
-        }
+    // Movement Up to Bottom
+    if (this._panStart.y < this._panStop.y) {
+      console.log('up down');
     }
     }
 
 
-    keyUp(e: KeyboardEvent) {
-        e.preventDefault();
-        if (e.keyCode === 17) {
-            this._draggableArea.current?.style.setProperty("cursor", "initial");
-        }
+    this._panStart.set(0, 0);
+    this._panStop.set(0, 0);
+  }
+
+  panTo(direction: string, value: number) {
+    switch (direction) {
+      case 'left':
+        (this._draggableArea.current
+          ?.parentElement as HTMLDivElement).scrollLeft -= value * 1;
+        break;
+      case 'right':
+        (this._draggableArea.current
+          ?.parentElement as HTMLDivElement).scrollLeft += value * 1;
+        break;
+      case 'top':
+        break;
+      case 'down':
+        break;
     }
     }
+  }
 
 
-    focus(e: React.MouseEvent<SVGSVGElement>) {
-        e.preventDefault();
-        this._draggableArea.current?.focus();
+  keyDown(e: KeyboardEvent) {
+    e.preventDefault();
+    if (e.keyCode === 17) {
+      this._draggableArea.current?.style.setProperty('cursor', 'grab');
     }
     }
+  }
 
 
-    render() {
-        return (
-            <>
-                <svg className="linear pannable" ref={this._draggableArea} tabIndex={0}
-
-                    onMouseMove={(e) => this.drag(e)}
-                    onTouchMove={(e) => this.drag(e)}
-                    onTouchStart={(e) => this.dragStart(e)}
-                    onTouchEnd={(e) => this.dragEnd(e)}
-
-                    onMouseDown={(e) => this.dragStart(e)}
-                    onMouseUp={(e) => this.dragEnd(e)}
-                    onMouseLeave={(e) => this.dragEnd(e)}
-                    // Add way to add new keyframe
-                    onClick={(e) => this.focus(e)}
-
-                    viewBox={`0 0 ${Math.round(this.props.scale * 200)} ${Math.round(this.props.scale * 100)}`}>
-
-                    {this.props.children}
-                    {this.props.keyframeSvgPoints.map((keyframe, i) =>
-                        <KeyframeSvgPoint
-                            key={`${keyframe.id}_${i}`}
-                            id={keyframe.id}
-                            keyframePoint={keyframe.keyframePoint}
-                            leftControlPoint={keyframe.leftControlPoint}
-                            rightControlPoint={keyframe.rightControlPoint}
-                            isLeftActive={keyframe.isLeftActive}
-                            isRightActive={keyframe.isRightActive}
-                            selected={keyframe.selected}
-                            selectedControlPoint={(type: string, id: string) => this.props.selectedControlPoint(type, id)}
-                            selectKeyframe={(id: string) => this.props.selectKeyframe(id)} />
-                    )}
-                </svg>
-            </>)
+  keyUp(e: KeyboardEvent) {
+    e.preventDefault();
+    if (e.keyCode === 17) {
+      this._draggableArea.current?.style.setProperty('cursor', 'initial');
     }
     }
+  }
+
+  focus(e: React.MouseEvent<SVGSVGElement>) {
+    e.preventDefault();
+    this._draggableArea.current?.focus();
+  }
+
+  render() {
+    return (
+      <>
+        <svg
+          className='linear pannable'
+          ref={this._draggableArea}
+          tabIndex={0}
+          onMouseMove={(e) => this.drag(e)}
+          onTouchMove={(e) => this.drag(e)}
+          onTouchStart={(e) => this.dragStart(e)}
+          onTouchEnd={(e) => this.dragEnd(e)}
+          onMouseDown={(e) => this.dragStart(e)}
+          onMouseUp={(e) => this.dragEnd(e)}
+          onMouseLeave={(e) => this.dragEnd(e)}
+          // Add way to add new keyframe
+          onClick={(e) => this.focus(e)}
+          viewBox={`0 0 ${Math.round(this.props.scale * 200)} ${Math.round(
+            this.props.scale * 100
+          )}`}
+        >
+          {this.props.children}
+          {this.props.keyframeSvgPoints.map((keyframe, i) => (
+            <KeyframeSvgPoint
+              key={`${keyframe.id}_${i}`}
+              id={keyframe.id}
+              keyframePoint={keyframe.keyframePoint}
+              leftControlPoint={keyframe.leftControlPoint}
+              rightControlPoint={keyframe.rightControlPoint}
+              isLeftActive={keyframe.isLeftActive}
+              isRightActive={keyframe.isRightActive}
+              selected={keyframe.selected}
+              selectedControlPoint={(type: string, id: string) =>
+                this.props.selectedControlPoint(type, id)
+              }
+              selectKeyframe={(id: string) => this.props.selectKeyframe(id)}
+            />
+          ))}
+        </svg>
+      </>
+    );
+  }
 }
 }
-
-
-
-
-

+ 25 - 24
inspector/src/components/actionTabs/tabs/propertyGrids/animations/targetedAnimationPropertyGridComponent.tsx

@@ -1,19 +1,19 @@
-import * as React from "react";
+import * as React from 'react';
 
 
-import { Observable } from "babylonjs/Misc/observable";
-import { TargetedAnimation } from "babylonjs/Animations/animationGroup";
-import { Scene } from "babylonjs/scene";
+import { Observable } from 'babylonjs/Misc/observable';
+import { TargetedAnimation } from 'babylonjs/Animations/animationGroup';
+import { Scene } from 'babylonjs/scene';
 
 
-import { PropertyChangedEvent } from "../../../../propertyChangedEvent";
-import { ButtonLineComponent } from "../../../lines/buttonLineComponent";
-import { LineContainerComponent } from "../../../lineContainerComponent";
-import { TextLineComponent } from "../../../lines/textLineComponent";
-import { LockObject } from "../lockObject";
-import { GlobalState } from "../../../../globalState";
-import { TextInputLineComponent } from "../../../lines/textInputLineComponent";
-import { PopupComponent } from "../animations/popupComponent";
-import { AnimationCurveEditorComponent } from "../animations/animationCurveEditorComponent";
-import { AnimationGroup } from "babylonjs/Animations/animationGroup";
+import { PropertyChangedEvent } from '../../../../propertyChangedEvent';
+import { ButtonLineComponent } from '../../../lines/buttonLineComponent';
+import { LineContainerComponent } from '../../../lineContainerComponent';
+import { TextLineComponent } from '../../../lines/textLineComponent';
+import { LockObject } from '../lockObject';
+import { GlobalState } from '../../../../globalState';
+import { TextInputLineComponent } from '../../../lines/textInputLineComponent';
+import { PopupComponent } from '../animations/popupComponent';
+import { AnimationCurveEditorComponent } from '../animations/animationCurveEditorComponent';
+import { AnimationGroup } from 'babylonjs/Animations/animationGroup';
 
 
 interface ITargetedAnimationGridComponentProps {
 interface ITargetedAnimationGridComponentProps {
   globalState: GlobalState;
   globalState: GlobalState;
@@ -83,25 +83,25 @@ export class TargetedAnimationGridComponent extends React.Component<
     const targetedAnimation = this.props.targetedAnimation;
     const targetedAnimation = this.props.targetedAnimation;
 
 
     return (
     return (
-      <div className="pane">
+      <div className='pane'>
         <LineContainerComponent
         <LineContainerComponent
           globalState={this.props.globalState}
           globalState={this.props.globalState}
-          title="GENERAL"
+          title='GENERAL'
         >
         >
           <TextLineComponent
           <TextLineComponent
-            label="Class"
+            label='Class'
             value={targetedAnimation.getClassName()}
             value={targetedAnimation.getClassName()}
           />
           />
           <TextInputLineComponent
           <TextInputLineComponent
             lockObject={this.props.lockObject}
             lockObject={this.props.lockObject}
-            label="Name"
+            label='Name'
             target={targetedAnimation.animation}
             target={targetedAnimation.animation}
-            propertyName="name"
+            propertyName='name'
             onPropertyChangedObservable={this.props.onPropertyChangedObservable}
             onPropertyChangedObservable={this.props.onPropertyChangedObservable}
           />
           />
           {targetedAnimation.target.name && (
           {targetedAnimation.target.name && (
             <TextLineComponent
             <TextLineComponent
-              label="Target"
+              label='Target'
               value={targetedAnimation.target.name}
               value={targetedAnimation.target.name}
               onLink={() =>
               onLink={() =>
                 this.props.globalState.onSelectionChangedObservable.notifyObservers(
                 this.props.globalState.onSelectionChangedObservable.notifyObservers(
@@ -111,13 +111,13 @@ export class TargetedAnimationGridComponent extends React.Component<
             />
             />
           )}
           )}
           <ButtonLineComponent
           <ButtonLineComponent
-            label="Edit animation"
+            label='Edit animation'
             onClick={() => this.onOpenAnimationCurveEditor()}
             onClick={() => this.onOpenAnimationCurveEditor()}
           />
           />
           {this._isCurveEditorOpen && (
           {this._isCurveEditorOpen && (
             <PopupComponent
             <PopupComponent
-              id="curve-editor"
-              title="Curve Animation Editor"
+              id='curve-editor'
+              title='Curve Animation Editor'
               size={{ width: 1024, height: 512 }}
               size={{ width: 1024, height: 512 }}
               onOpen={(window: Window) => {}}
               onOpen={(window: Window) => {}}
               onClose={(window: Window) =>
               onClose={(window: Window) =>
@@ -129,12 +129,13 @@ export class TargetedAnimationGridComponent extends React.Component<
                 entity={targetedAnimation as any}
                 entity={targetedAnimation as any}
                 playOrPause={() => this.playOrPause()}
                 playOrPause={() => this.playOrPause()}
                 lockObject={this.props.lockObject}
                 lockObject={this.props.lockObject}
+                globalState={this.props.globalState}
                 close={(event) => this.onCloseAnimationCurveEditor(event.view)}
                 close={(event) => this.onCloseAnimationCurveEditor(event.view)}
               />
               />
             </PopupComponent>
             </PopupComponent>
           )}
           )}
           <ButtonLineComponent
           <ButtonLineComponent
-            label="Dispose"
+            label='Dispose'
             onClick={() => this.deleteAnimation()}
             onClick={() => this.deleteAnimation()}
           />
           />
         </LineContainerComponent>
         </LineContainerComponent>

+ 21 - 19
inspector/src/components/actionTabs/tabs/propertyGrids/animations/timeline.tsx

@@ -226,25 +226,7 @@ export class Timeline extends React.Component<
                   y2='40'
                   y2='40'
                   style={{ stroke: '#12506b', strokeWidth: 6 }}
                   style={{ stroke: '#12506b', strokeWidth: 6 }}
                 />
                 />
-                {this.props.keyframes &&
-                  this.props.keyframes.map((kf, i) => {
-                    return (
-                      <svg
-                        key={`kf_${i}`}
-                        style={{ cursor: 'pointer' }}
-                        tabIndex={i + 40}
-                      >
-                        <line
-                          id={`kf_${i.toString()}`}
-                          x1={kf.frame * 10}
-                          y1='0'
-                          x2={kf.frame * 10}
-                          y2='40'
-                          style={{ stroke: 'red', strokeWidth: 6 }}
-                        />
-                      </svg>
-                    );
-                  })}
+
                 {this._frames.map((frame, i) => {
                 {this._frames.map((frame, i) => {
                   return (
                   return (
                     <svg key={`tl_${i}`}>
                     <svg key={`tl_${i}`}>
@@ -269,6 +251,26 @@ export class Timeline extends React.Component<
                     </svg>
                     </svg>
                   );
                   );
                 })}
                 })}
+
+                {this.props.keyframes &&
+                  this.props.keyframes.map((kf, i) => {
+                    return (
+                      <svg
+                        key={`kf_${i}`}
+                        style={{ cursor: 'pointer' }}
+                        tabIndex={i + 40}
+                      >
+                        <line
+                          id={`kf_${i.toString()}`}
+                          x1={kf.frame * 10}
+                          y1='0'
+                          x2={kf.frame * 10}
+                          y2='40'
+                          style={{ stroke: '#ffc017', strokeWidth: 1 }}
+                        />
+                      </svg>
+                    );
+                  })}
               </svg>
               </svg>
             </div>
             </div>
 
 

+ 3 - 1
loaders/src/glTF/2.0/Extensions/KHR_materials_transmission.ts

@@ -79,7 +79,9 @@ export class KHR_materials_transmission implements IGLTFLoaderExtension {
         if (extension.transmissionFactor !== undefined) {
         if (extension.transmissionFactor !== undefined) {
             pbrMaterial.subSurface.refractionIntensity = extension.transmissionFactor;
             pbrMaterial.subSurface.refractionIntensity = extension.transmissionFactor;
         } else {
         } else {
-            pbrMaterial.subSurface.refractionIntensity = 1.0;
+            pbrMaterial.subSurface.refractionIntensity = 0.0;
+            pbrMaterial.subSurface.isRefractionEnabled = false;
+            return Promise.resolve();
         }
         }
 
 
         if (extension.transmissionTexture) {
         if (extension.transmissionTexture) {

+ 1 - 1
materialsLibrary/readme.md

@@ -2,7 +2,7 @@
 
 
 To get a detailled tutorial, please read the [documentation](https://doc.babylonjs.com/how_to/how_to_create_a_material_for_materialslibrary)
 To get a detailled tutorial, please read the [documentation](https://doc.babylonjs.com/how_to/how_to_create_a_material_for_materialslibrary)
 
 
-For every material, you can find a detailled documentation [here](http://doc.babylonjs.com/extensions) under **materials library** tag.
+For every material, you can find a detailled documentation [here](https://doc.babylonjs.com/extensions) under **materials library** tag.
 
 
 ## Using a material from the library
 ## Using a material from the library
 
 

+ 1 - 1
src/Actions/abstractActionManager.ts

@@ -7,7 +7,7 @@ import { Nullable } from "../types";
 /**
 /**
  * Abstract class used to decouple action Manager from scene and meshes.
  * Abstract class used to decouple action Manager from scene and meshes.
  * Do not instantiate.
  * Do not instantiate.
- * @see http://doc.babylonjs.com/how_to/how_to_use_actions
+ * @see https://doc.babylonjs.com/how_to/how_to_use_actions
  */
  */
 export abstract class AbstractActionManager implements IDisposable {
 export abstract class AbstractActionManager implements IDisposable {
 
 

+ 1 - 1
src/Actions/action.ts

@@ -67,7 +67,7 @@ export interface IAction {
 
 
 /**
 /**
  * The action to be carried out following a trigger
  * The action to be carried out following a trigger
- * @see http://doc.babylonjs.com/how_to/how_to_use_actions#available-actions
+ * @see https://doc.babylonjs.com/how_to/how_to_use_actions#available-actions
  */
  */
 export class Action implements IAction {
 export class Action implements IAction {
     /**
     /**

+ 18 - 18
src/Actions/actionManager.ts

@@ -18,107 +18,107 @@ import { Constants } from "../Engines/constants";
 /**
 /**
  * Action Manager manages all events to be triggered on a given mesh or the global scene.
  * Action Manager manages all events to be triggered on a given mesh or the global scene.
  * A single scene can have many Action Managers to handle predefined actions on specific meshes.
  * A single scene can have many Action Managers to handle predefined actions on specific meshes.
- * @see http://doc.babylonjs.com/how_to/how_to_use_actions
+ * @see https://doc.babylonjs.com/how_to/how_to_use_actions
  */
  */
 export class ActionManager extends AbstractActionManager {
 export class ActionManager extends AbstractActionManager {
     /**
     /**
      * Nothing
      * Nothing
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly NothingTrigger = Constants.ACTION_NothingTrigger;
     public static readonly NothingTrigger = Constants.ACTION_NothingTrigger;
 
 
     /**
     /**
      * On pick
      * On pick
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly OnPickTrigger = Constants.ACTION_OnPickTrigger;
     public static readonly OnPickTrigger = Constants.ACTION_OnPickTrigger;
 
 
     /**
     /**
      * On left pick
      * On left pick
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly OnLeftPickTrigger = Constants.ACTION_OnLeftPickTrigger;
     public static readonly OnLeftPickTrigger = Constants.ACTION_OnLeftPickTrigger;
 
 
     /**
     /**
      * On right pick
      * On right pick
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly OnRightPickTrigger = Constants.ACTION_OnRightPickTrigger;
     public static readonly OnRightPickTrigger = Constants.ACTION_OnRightPickTrigger;
 
 
     /**
     /**
      * On center pick
      * On center pick
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly OnCenterPickTrigger = Constants.ACTION_OnCenterPickTrigger;
     public static readonly OnCenterPickTrigger = Constants.ACTION_OnCenterPickTrigger;
 
 
     /**
     /**
      * On pick down
      * On pick down
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly OnPickDownTrigger = Constants.ACTION_OnPickDownTrigger;
     public static readonly OnPickDownTrigger = Constants.ACTION_OnPickDownTrigger;
 
 
     /**
     /**
      * On double pick
      * On double pick
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly OnDoublePickTrigger = Constants.ACTION_OnDoublePickTrigger;
     public static readonly OnDoublePickTrigger = Constants.ACTION_OnDoublePickTrigger;
 
 
     /**
     /**
      * On pick up
      * On pick up
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly OnPickUpTrigger = Constants.ACTION_OnPickUpTrigger;
     public static readonly OnPickUpTrigger = Constants.ACTION_OnPickUpTrigger;
     /**
     /**
      * On pick out.
      * On pick out.
      * This trigger will only be raised if you also declared a OnPickDown
      * This trigger will only be raised if you also declared a OnPickDown
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly OnPickOutTrigger = Constants.ACTION_OnPickOutTrigger;
     public static readonly OnPickOutTrigger = Constants.ACTION_OnPickOutTrigger;
 
 
     /**
     /**
      * On long press
      * On long press
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly OnLongPressTrigger = Constants.ACTION_OnLongPressTrigger;
     public static readonly OnLongPressTrigger = Constants.ACTION_OnLongPressTrigger;
 
 
     /**
     /**
      * On pointer over
      * On pointer over
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly OnPointerOverTrigger = Constants.ACTION_OnPointerOverTrigger;
     public static readonly OnPointerOverTrigger = Constants.ACTION_OnPointerOverTrigger;
 
 
     /**
     /**
      * On pointer out
      * On pointer out
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly OnPointerOutTrigger = Constants.ACTION_OnPointerOutTrigger;
     public static readonly OnPointerOutTrigger = Constants.ACTION_OnPointerOutTrigger;
 
 
     /**
     /**
      * On every frame
      * On every frame
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly OnEveryFrameTrigger = Constants.ACTION_OnEveryFrameTrigger;
     public static readonly OnEveryFrameTrigger = Constants.ACTION_OnEveryFrameTrigger;
     /**
     /**
      * On intersection enter
      * On intersection enter
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly OnIntersectionEnterTrigger = Constants.ACTION_OnIntersectionEnterTrigger;
     public static readonly OnIntersectionEnterTrigger = Constants.ACTION_OnIntersectionEnterTrigger;
 
 
     /**
     /**
      * On intersection exit
      * On intersection exit
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly OnIntersectionExitTrigger = Constants.ACTION_OnIntersectionExitTrigger;
     public static readonly OnIntersectionExitTrigger = Constants.ACTION_OnIntersectionExitTrigger;
 
 
     /**
     /**
      * On key down
      * On key down
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly OnKeyDownTrigger = Constants.ACTION_OnKeyDownTrigger;
     public static readonly OnKeyDownTrigger = Constants.ACTION_OnKeyDownTrigger;
 
 
     /**
     /**
      * On key up
      * On key up
-     * @see http://doc.babylonjs.com/how_to/how_to_use_actions#triggers
+     * @see https://doc.babylonjs.com/how_to/how_to_use_actions#triggers
      */
      */
     public static readonly OnKeyUpTrigger = 15;
     public static readonly OnKeyUpTrigger = 15;
 
 

+ 10 - 10
src/Actions/directActions.ts

@@ -9,7 +9,7 @@ declare type ActionEvent = import("./actionEvent").ActionEvent;
 
 
 /**
 /**
  * This defines an action responsible to toggle a boolean once triggered.
  * This defines an action responsible to toggle a boolean once triggered.
- * @see http://doc.babylonjs.com/how_to/how_to_use_actions
+ * @see https://doc.babylonjs.com/how_to/how_to_use_actions
  */
  */
 export class SwitchBooleanAction extends Action {
 export class SwitchBooleanAction extends Action {
     /**
     /**
@@ -66,7 +66,7 @@ export class SwitchBooleanAction extends Action {
 /**
 /**
  * This defines an action responsible to set a the state field of the target
  * This defines an action responsible to set a the state field of the target
  *  to a desired value once triggered.
  *  to a desired value once triggered.
- * @see http://doc.babylonjs.com/how_to/how_to_use_actions
+ * @see https://doc.babylonjs.com/how_to/how_to_use_actions
  */
  */
 export class SetStateAction extends Action {
 export class SetStateAction extends Action {
     /**
     /**
@@ -115,7 +115,7 @@ export class SetStateAction extends Action {
 /**
 /**
  * This defines an action responsible to set a property of the target
  * This defines an action responsible to set a property of the target
  *  to a desired value once triggered.
  *  to a desired value once triggered.
- * @see http://doc.babylonjs.com/how_to/how_to_use_actions
+ * @see https://doc.babylonjs.com/how_to/how_to_use_actions
  */
  */
 export class SetValueAction extends Action {
 export class SetValueAction extends Action {
     /**
     /**
@@ -184,7 +184,7 @@ export class SetValueAction extends Action {
 /**
 /**
  * This defines an action responsible to increment the target value
  * This defines an action responsible to increment the target value
  *  to a desired value once triggered.
  *  to a desired value once triggered.
- * @see http://doc.babylonjs.com/how_to/how_to_use_actions
+ * @see https://doc.babylonjs.com/how_to/how_to_use_actions
  */
  */
 export class IncrementValueAction extends Action {
 export class IncrementValueAction extends Action {
     /**
     /**
@@ -256,7 +256,7 @@ export class IncrementValueAction extends Action {
 
 
 /**
 /**
  * This defines an action responsible to start an animation once triggered.
  * This defines an action responsible to start an animation once triggered.
- * @see http://doc.babylonjs.com/how_to/how_to_use_actions
+ * @see https://doc.babylonjs.com/how_to/how_to_use_actions
  */
  */
 export class PlayAnimationAction extends Action {
 export class PlayAnimationAction extends Action {
     /**
     /**
@@ -325,7 +325,7 @@ export class PlayAnimationAction extends Action {
 
 
 /**
 /**
  * This defines an action responsible to stop an animation once triggered.
  * This defines an action responsible to stop an animation once triggered.
- * @see http://doc.babylonjs.com/how_to/how_to_use_actions
+ * @see https://doc.babylonjs.com/how_to/how_to_use_actions
  */
  */
 export class StopAnimationAction extends Action {
 export class StopAnimationAction extends Action {
     private _target: any;
     private _target: any;
@@ -368,7 +368,7 @@ export class StopAnimationAction extends Action {
 
 
 /**
 /**
  * This defines an action responsible that does nothing once triggered.
  * This defines an action responsible that does nothing once triggered.
- * @see http://doc.babylonjs.com/how_to/how_to_use_actions
+ * @see https://doc.babylonjs.com/how_to/how_to_use_actions
  */
  */
 export class DoNothingAction extends Action {
 export class DoNothingAction extends Action {
     /**
     /**
@@ -401,7 +401,7 @@ export class DoNothingAction extends Action {
 
 
 /**
 /**
  * This defines an action responsible to trigger several actions once triggered.
  * This defines an action responsible to trigger several actions once triggered.
- * @see http://doc.babylonjs.com/how_to/how_to_use_actions
+ * @see https://doc.babylonjs.com/how_to/how_to_use_actions
  */
  */
 export class CombineAction extends Action {
 export class CombineAction extends Action {
     /**
     /**
@@ -459,7 +459,7 @@ export class CombineAction extends Action {
 
 
 /**
 /**
  * This defines an action responsible to run code (external event) once triggered.
  * This defines an action responsible to run code (external event) once triggered.
- * @see http://doc.babylonjs.com/how_to/how_to_use_actions
+ * @see https://doc.babylonjs.com/how_to/how_to_use_actions
  */
  */
 export class ExecuteCodeAction extends Action {
 export class ExecuteCodeAction extends Action {
     /**
     /**
@@ -488,7 +488,7 @@ export class ExecuteCodeAction extends Action {
 
 
 /**
 /**
  * This defines an action responsible to set the parent property of the target once triggered.
  * This defines an action responsible to set the parent property of the target once triggered.
- * @see http://doc.babylonjs.com/how_to/how_to_use_actions
+ * @see https://doc.babylonjs.com/how_to/how_to_use_actions
  */
  */
 export class SetParentAction extends Action {
 export class SetParentAction extends Action {
     private _parent: any;
     private _parent: any;

+ 1 - 1
src/Actions/interpolateValueAction.ts

@@ -11,7 +11,7 @@ import { _TypeStore } from '../Misc/typeStore';
 /**
 /**
  * This defines an action responsible to change the value of a property
  * This defines an action responsible to change the value of a property
  * by interpolating between its current value and the newly set one once triggered.
  * by interpolating between its current value and the newly set one once triggered.
- * @see http://doc.babylonjs.com/how_to/how_to_use_actions
+ * @see https://doc.babylonjs.com/how_to/how_to_use_actions
  */
  */
 export class InterpolateValueAction extends Action {
 export class InterpolateValueAction extends Action {
     /**
     /**

+ 2 - 2
src/Animations/animatable.ts

@@ -235,7 +235,7 @@ export class Animatable {
 
 
     /**
     /**
      * Allows the animatable to blend with current running animations
      * Allows the animatable to blend with current running animations
-     * @see http://doc.babylonjs.com/babylon101/animations#animation-blending
+     * @see https://doc.babylonjs.com/babylon101/animations#animation-blending
      * @param blendingSpeed defines the blending speed to use
      * @param blendingSpeed defines the blending speed to use
      */
      */
     public enableBlending(blendingSpeed: number): void {
     public enableBlending(blendingSpeed: number): void {
@@ -249,7 +249,7 @@ export class Animatable {
 
 
     /**
     /**
      * Disable animation blending
      * Disable animation blending
-     * @see http://doc.babylonjs.com/babylon101/animations#animation-blending
+     * @see https://doc.babylonjs.com/babylon101/animations#animation-blending
      */
      */
     public disableBlending(): void {
     public disableBlending(): void {
         var runtimeAnimations = this._runtimeAnimations;
         var runtimeAnimations = this._runtimeAnimations;

+ 3 - 3
src/Animations/animationGroup.ts

@@ -209,7 +209,7 @@ export class AnimationGroup implements IDisposable {
     /**
     /**
      * Instantiates a new Animation Group.
      * Instantiates a new Animation Group.
      * This helps managing several animations at once.
      * This helps managing several animations at once.
-     * @see http://doc.babylonjs.com/how_to/group
+     * @see https://doc.babylonjs.com/how_to/group
      * @param name Defines the name of the group
      * @param name Defines the name of the group
      * @param scene Defines the scene the group belongs to
      * @param scene Defines the scene the group belongs to
      */
      */
@@ -480,7 +480,7 @@ export class AnimationGroup implements IDisposable {
      * Set animation weight for all animatables
      * Set animation weight for all animatables
      * @param weight defines the weight to use
      * @param weight defines the weight to use
      * @return the animationGroup
      * @return the animationGroup
-     * @see http://doc.babylonjs.com/babylon101/animations#animation-weights
+     * @see https://doc.babylonjs.com/babylon101/animations#animation-weights
      */
      */
     public setWeightForAllAnimatables(weight: number): AnimationGroup {
     public setWeightForAllAnimatables(weight: number): AnimationGroup {
         for (var index = 0; index < this._animatables.length; index++) {
         for (var index = 0; index < this._animatables.length; index++) {
@@ -495,7 +495,7 @@ export class AnimationGroup implements IDisposable {
      * Synchronize and normalize all animatables with a source animatable
      * Synchronize and normalize all animatables with a source animatable
      * @param root defines the root animatable to synchronize with
      * @param root defines the root animatable to synchronize with
      * @return the animationGroup
      * @return the animationGroup
-     * @see http://doc.babylonjs.com/babylon101/animations#animation-weights
+     * @see https://doc.babylonjs.com/babylon101/animations#animation-weights
      */
      */
     public syncAllAnimationsWith(root: Animatable): AnimationGroup {
     public syncAllAnimationsWith(root: Animatable): AnimationGroup {
         for (var index = 0; index < this._animatables.length; index++) {
         for (var index = 0; index < this._animatables.length; index++) {

+ 14 - 14
src/Animations/easing.ts

@@ -3,7 +3,7 @@ import { BezierCurve } from "../Maths/math.path";
 /**
 /**
  * This represents the main contract an easing function should follow.
  * This represents the main contract an easing function should follow.
  * Easing functions are used throughout the animation system.
  * Easing functions are used throughout the animation system.
- * @see http://doc.babylonjs.com/babylon101/animations#easing-functions
+ * @see https://doc.babylonjs.com/babylon101/animations#easing-functions
  */
  */
 export interface IEasingFunction {
 export interface IEasingFunction {
     /**
     /**
@@ -19,7 +19,7 @@ export interface IEasingFunction {
 
 
 /**
 /**
  * Base class used for every default easing function.
  * Base class used for every default easing function.
- * @see http://doc.babylonjs.com/babylon101/animations#easing-functions
+ * @see https://doc.babylonjs.com/babylon101/animations#easing-functions
  */
  */
 export class EasingFunction implements IEasingFunction {
 export class EasingFunction implements IEasingFunction {
     /**
     /**
@@ -87,7 +87,7 @@ export class EasingFunction implements IEasingFunction {
 /**
 /**
  * Easing function with a circle shape (see link below).
  * Easing function with a circle shape (see link below).
  * @see https://easings.net/#easeInCirc
  * @see https://easings.net/#easeInCirc
- * @see http://doc.babylonjs.com/babylon101/animations#easing-functions
+ * @see https://doc.babylonjs.com/babylon101/animations#easing-functions
  */
  */
 export class CircleEase extends EasingFunction implements IEasingFunction {
 export class CircleEase extends EasingFunction implements IEasingFunction {
     /** @hidden */
     /** @hidden */
@@ -100,7 +100,7 @@ export class CircleEase extends EasingFunction implements IEasingFunction {
 /**
 /**
  * Easing function with a ease back shape (see link below).
  * Easing function with a ease back shape (see link below).
  * @see https://easings.net/#easeInBack
  * @see https://easings.net/#easeInBack
- * @see http://doc.babylonjs.com/babylon101/animations#easing-functions
+ * @see https://doc.babylonjs.com/babylon101/animations#easing-functions
  */
  */
 export class BackEase extends EasingFunction implements IEasingFunction {
 export class BackEase extends EasingFunction implements IEasingFunction {
     /**
     /**
@@ -124,7 +124,7 @@ export class BackEase extends EasingFunction implements IEasingFunction {
 /**
 /**
  * Easing function with a bouncing shape (see link below).
  * Easing function with a bouncing shape (see link below).
  * @see https://easings.net/#easeInBounce
  * @see https://easings.net/#easeInBounce
- * @see http://doc.babylonjs.com/babylon101/animations#easing-functions
+ * @see https://doc.babylonjs.com/babylon101/animations#easing-functions
  */
  */
 export class BounceEase extends EasingFunction implements IEasingFunction {
 export class BounceEase extends EasingFunction implements IEasingFunction {
     /**
     /**
@@ -167,7 +167,7 @@ export class BounceEase extends EasingFunction implements IEasingFunction {
 /**
 /**
  * Easing function with a power of 3 shape (see link below).
  * Easing function with a power of 3 shape (see link below).
  * @see https://easings.net/#easeInCubic
  * @see https://easings.net/#easeInCubic
- * @see http://doc.babylonjs.com/babylon101/animations#easing-functions
+ * @see https://doc.babylonjs.com/babylon101/animations#easing-functions
  */
  */
 export class CubicEase extends EasingFunction implements IEasingFunction {
 export class CubicEase extends EasingFunction implements IEasingFunction {
     /** @hidden */
     /** @hidden */
@@ -179,7 +179,7 @@ export class CubicEase extends EasingFunction implements IEasingFunction {
 /**
 /**
  * Easing function with an elastic shape (see link below).
  * Easing function with an elastic shape (see link below).
  * @see https://easings.net/#easeInElastic
  * @see https://easings.net/#easeInElastic
- * @see http://doc.babylonjs.com/babylon101/animations#easing-functions
+ * @see https://doc.babylonjs.com/babylon101/animations#easing-functions
  */
  */
 export class ElasticEase extends EasingFunction implements IEasingFunction {
 export class ElasticEase extends EasingFunction implements IEasingFunction {
     /**
     /**
@@ -214,7 +214,7 @@ export class ElasticEase extends EasingFunction implements IEasingFunction {
 /**
 /**
  * Easing function with an exponential shape (see link below).
  * Easing function with an exponential shape (see link below).
  * @see https://easings.net/#easeInExpo
  * @see https://easings.net/#easeInExpo
- * @see http://doc.babylonjs.com/babylon101/animations#easing-functions
+ * @see https://doc.babylonjs.com/babylon101/animations#easing-functions
  */
  */
 export class ExponentialEase extends EasingFunction implements IEasingFunction {
 export class ExponentialEase extends EasingFunction implements IEasingFunction {
     /**
     /**
@@ -241,7 +241,7 @@ export class ExponentialEase extends EasingFunction implements IEasingFunction {
 /**
 /**
  * Easing function with a power shape (see link below).
  * Easing function with a power shape (see link below).
  * @see https://easings.net/#easeInQuad
  * @see https://easings.net/#easeInQuad
- * @see http://doc.babylonjs.com/babylon101/animations#easing-functions
+ * @see https://doc.babylonjs.com/babylon101/animations#easing-functions
  */
  */
 export class PowerEase extends EasingFunction implements IEasingFunction {
 export class PowerEase extends EasingFunction implements IEasingFunction {
     /**
     /**
@@ -265,7 +265,7 @@ export class PowerEase extends EasingFunction implements IEasingFunction {
 /**
 /**
  * Easing function with a power of 2 shape (see link below).
  * Easing function with a power of 2 shape (see link below).
  * @see https://easings.net/#easeInQuad
  * @see https://easings.net/#easeInQuad
- * @see http://doc.babylonjs.com/babylon101/animations#easing-functions
+ * @see https://doc.babylonjs.com/babylon101/animations#easing-functions
  */
  */
 export class QuadraticEase extends EasingFunction implements IEasingFunction {
 export class QuadraticEase extends EasingFunction implements IEasingFunction {
     /** @hidden */
     /** @hidden */
@@ -277,7 +277,7 @@ export class QuadraticEase extends EasingFunction implements IEasingFunction {
 /**
 /**
  * Easing function with a power of 4 shape (see link below).
  * Easing function with a power of 4 shape (see link below).
  * @see https://easings.net/#easeInQuart
  * @see https://easings.net/#easeInQuart
- * @see http://doc.babylonjs.com/babylon101/animations#easing-functions
+ * @see https://doc.babylonjs.com/babylon101/animations#easing-functions
  */
  */
 export class QuarticEase extends EasingFunction implements IEasingFunction {
 export class QuarticEase extends EasingFunction implements IEasingFunction {
     /** @hidden */
     /** @hidden */
@@ -289,7 +289,7 @@ export class QuarticEase extends EasingFunction implements IEasingFunction {
 /**
 /**
  * Easing function with a power of 5 shape (see link below).
  * Easing function with a power of 5 shape (see link below).
  * @see https://easings.net/#easeInQuint
  * @see https://easings.net/#easeInQuint
- * @see http://doc.babylonjs.com/babylon101/animations#easing-functions
+ * @see https://doc.babylonjs.com/babylon101/animations#easing-functions
  */
  */
 export class QuinticEase extends EasingFunction implements IEasingFunction {
 export class QuinticEase extends EasingFunction implements IEasingFunction {
     /** @hidden */
     /** @hidden */
@@ -301,7 +301,7 @@ export class QuinticEase extends EasingFunction implements IEasingFunction {
 /**
 /**
  * Easing function with a sin shape (see link below).
  * Easing function with a sin shape (see link below).
  * @see https://easings.net/#easeInSine
  * @see https://easings.net/#easeInSine
- * @see http://doc.babylonjs.com/babylon101/animations#easing-functions
+ * @see https://doc.babylonjs.com/babylon101/animations#easing-functions
  */
  */
 export class SineEase extends EasingFunction implements IEasingFunction {
 export class SineEase extends EasingFunction implements IEasingFunction {
     /** @hidden */
     /** @hidden */
@@ -313,7 +313,7 @@ export class SineEase extends EasingFunction implements IEasingFunction {
 /**
 /**
  * Easing function with a bezier shape (see link below).
  * Easing function with a bezier shape (see link below).
  * @see http://cubic-bezier.com/#.17,.67,.83,.67
  * @see http://cubic-bezier.com/#.17,.67,.83,.67
- * @see http://doc.babylonjs.com/babylon101/animations#easing-functions
+ * @see https://doc.babylonjs.com/babylon101/animations#easing-functions
  */
  */
 export class BezierCurveEase extends EasingFunction implements IEasingFunction {
 export class BezierCurveEase extends EasingFunction implements IEasingFunction {
     /**
     /**

+ 1 - 1
src/Audio/analyser.ts

@@ -5,7 +5,7 @@ import { Engine } from "../Engines/engine";
 
 
 /**
 /**
  * Class used to work with sound analyzer using fast fourier transform (FFT)
  * Class used to work with sound analyzer using fast fourier transform (FFT)
- * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music
+ * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music
  */
  */
 export class Analyser {
 export class Analyser {
     /**
     /**

+ 4 - 4
src/Audio/audioEngine.ts

@@ -9,7 +9,7 @@ import { Engine } from "../Engines/engine";
 /**
 /**
  * This represents an audio engine and it is responsible
  * This represents an audio engine and it is responsible
  * to play, synchronize and analyse sounds throughout the application.
  * to play, synchronize and analyse sounds throughout the application.
- * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music
+ * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music
  */
  */
 export interface IAudioEngine extends IDisposable {
 export interface IAudioEngine extends IDisposable {
     /**
     /**
@@ -91,7 +91,7 @@ export interface IAudioEngine extends IDisposable {
     /**
     /**
      * Connect the audio engine to an audio analyser allowing some amazing
      * Connect the audio engine to an audio analyser allowing some amazing
      * synchornization between the sounds/music and your visualization (VuMeter for instance).
      * synchornization between the sounds/music and your visualization (VuMeter for instance).
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#using-the-analyser
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#using-the-analyser
      * @param analyser The analyser to connect to the engine
      * @param analyser The analyser to connect to the engine
      */
      */
     connectToAnalyser(analyser: Analyser): void;
     connectToAnalyser(analyser: Analyser): void;
@@ -103,7 +103,7 @@ Engine.AudioEngineFactory = (hostElement: Nullable<HTMLElement>) => { return new
 /**
 /**
  * This represents the default audio engine used in babylon.
  * This represents the default audio engine used in babylon.
  * It is responsible to play, synchronize and analyse sounds throughout the  application.
  * It is responsible to play, synchronize and analyse sounds throughout the  application.
- * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music
+ * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music
  */
  */
 export class AudioEngine implements IAudioEngine {
 export class AudioEngine implements IAudioEngine {
     private _audioContext: Nullable<AudioContext> = null;
     private _audioContext: Nullable<AudioContext> = null;
@@ -382,7 +382,7 @@ export class AudioEngine implements IAudioEngine {
     /**
     /**
      * Connect the audio engine to an audio analyser allowing some amazing
      * Connect the audio engine to an audio analyser allowing some amazing
      * synchornization between the sounds/music and your visualization (VuMeter for instance).
      * synchornization between the sounds/music and your visualization (VuMeter for instance).
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#using-the-analyser
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#using-the-analyser
      * @param analyser The analyser to connect to the engine
      * @param analyser The analyser to connect to the engine
      */
      */
     public connectToAnalyser(analyser: Analyser): void {
     public connectToAnalyser(analyser: Analyser): void {

+ 4 - 4
src/Audio/audioSceneComponent.ts

@@ -63,7 +63,7 @@ declare module "../scene" {
         mainSoundTrack: SoundTrack;
         mainSoundTrack: SoundTrack;
         /**
         /**
          * The list of sound tracks added to the scene
          * The list of sound tracks added to the scene
-         * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music
+         * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music
          */
          */
         soundTracks: Nullable<Array<SoundTrack>>;
         soundTracks: Nullable<Array<SoundTrack>>;
 
 
@@ -76,19 +76,19 @@ declare module "../scene" {
 
 
         /**
         /**
          * Gets or sets if audio support is enabled
          * Gets or sets if audio support is enabled
-         * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music
+         * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music
          */
          */
         audioEnabled: boolean;
         audioEnabled: boolean;
 
 
         /**
         /**
          * Gets or sets if audio will be output to headphones
          * Gets or sets if audio will be output to headphones
-         * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music
+         * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music
          */
          */
         headphone: boolean;
         headphone: boolean;
 
 
         /**
         /**
          * Gets or sets custom audio listener position provider
          * Gets or sets custom audio listener position provider
-         * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music
+         * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music
          */
          */
         audioListenerPositionProvider: Nullable<() => Vector3>;
         audioListenerPositionProvider: Nullable<() => Vector3>;
 
 

+ 15 - 15
src/Audio/sound.ts

@@ -39,17 +39,17 @@ export interface ISoundOptions {
     useCustomAttenuation?: boolean;
     useCustomAttenuation?: boolean;
     /**
     /**
     * Define the roll off factor of spatial sounds.
     * Define the roll off factor of spatial sounds.
-    * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
+    * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
     */
     */
     rolloffFactor?: number;
     rolloffFactor?: number;
     /**
     /**
      * Define the reference distance the sound should be heard perfectly.
      * Define the reference distance the sound should be heard perfectly.
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
      */
      */
     refDistance?: number;
     refDistance?: number;
     /**
     /**
      * Define the distance attenuation model the sound will follow.
      * Define the distance attenuation model the sound will follow.
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
      */
      */
     distanceModel?: string;
     distanceModel?: string;
     /**
     /**
@@ -77,7 +77,7 @@ export interface ISoundOptions {
 /**
 /**
  * Defines a sound that can be played in the application.
  * Defines a sound that can be played in the application.
  * The sound can either be an ambient track or a simple sound played in reaction to a user action.
  * The sound can either be an ambient track or a simple sound played in reaction to a user action.
- * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music
+ * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music
  */
  */
 export class Sound {
 export class Sound {
     /**
     /**
@@ -95,7 +95,7 @@ export class Sound {
     /**
     /**
      * Does the sound use a custom attenuation curve to simulate the falloff
      * Does the sound use a custom attenuation curve to simulate the falloff
      * happening when the source gets further away from the camera.
      * happening when the source gets further away from the camera.
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-your-own-custom-attenuation-function
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-your-own-custom-attenuation-function
      */
      */
     public useCustomAttenuation: boolean = false;
     public useCustomAttenuation: boolean = false;
     /**
     /**
@@ -112,27 +112,27 @@ export class Sound {
     public isPaused: boolean = false;
     public isPaused: boolean = false;
     /**
     /**
      * Does this sound enables spatial sound.
      * Does this sound enables spatial sound.
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
      */
      */
     public spatialSound: boolean = false;
     public spatialSound: boolean = false;
     /**
     /**
      * Define the reference distance the sound should be heard perfectly.
      * Define the reference distance the sound should be heard perfectly.
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
      */
      */
     public refDistance: number = 1;
     public refDistance: number = 1;
     /**
     /**
      * Define the roll off factor of spatial sounds.
      * Define the roll off factor of spatial sounds.
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
      */
      */
     public rolloffFactor: number = 1;
     public rolloffFactor: number = 1;
     /**
     /**
      * Define the max distance the sound should be heard (intensity just became 0 at this point).
      * Define the max distance the sound should be heard (intensity just became 0 at this point).
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
      */
      */
     public maxDistance: number = 100;
     public maxDistance: number = 100;
     /**
     /**
      * Define the distance attenuation model the sound will follow.
      * Define the distance attenuation model the sound will follow.
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
      */
      */
     public distanceModel: string = "linear";
     public distanceModel: string = "linear";
     /**
     /**
@@ -514,7 +514,7 @@ export class Sound {
     /**
     /**
      * Switch the panning model to HRTF:
      * Switch the panning model to HRTF:
      * Renders a stereo output of higher quality than equalpower — it uses a convolution with measured impulse responses from human subjects.
      * Renders a stereo output of higher quality than equalpower — it uses a convolution with measured impulse responses from human subjects.
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
      */
      */
     public switchPanningModelToHRTF() {
     public switchPanningModelToHRTF() {
         this._panningModel = "HRTF";
         this._panningModel = "HRTF";
@@ -524,7 +524,7 @@ export class Sound {
     /**
     /**
      * Switch the panning model to Equal Power:
      * Switch the panning model to Equal Power:
      * Represents the equal-power panning algorithm, generally regarded as simple and efficient. equalpower is the default value.
      * Represents the equal-power panning algorithm, generally regarded as simple and efficient. equalpower is the default value.
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
      */
      */
     public switchPanningModelToEqualPower() {
     public switchPanningModelToEqualPower() {
         this._panningModel = "equalpower";
         this._panningModel = "equalpower";
@@ -667,7 +667,7 @@ export class Sound {
     /**
     /**
      * Sets a new custom attenuation function for the sound.
      * Sets a new custom attenuation function for the sound.
      * @param callback Defines the function used for the attenuation
      * @param callback Defines the function used for the attenuation
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-your-own-custom-attenuation-function
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-your-own-custom-attenuation-function
      */
      */
     public setAttenuationFunction(callback: (currentVolume: number, currentDistance: number, maxDistance: number, refDistance: number, rolloffFactor: number) => number): void {
     public setAttenuationFunction(callback: (currentVolume: number, currentDistance: number, maxDistance: number, refDistance: number, rolloffFactor: number) => number): void {
         this._customAttenuationFunction = callback;
         this._customAttenuationFunction = callback;
@@ -907,7 +907,7 @@ export class Sound {
     /**
     /**
      * Attach the sound to a dedicated mesh
      * Attach the sound to a dedicated mesh
      * @param transformNode The transform node to connect the sound with
      * @param transformNode The transform node to connect the sound with
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#attaching-a-sound-to-a-mesh
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#attaching-a-sound-to-a-mesh
      */
      */
     public attachToMesh(transformNode: TransformNode): void {
     public attachToMesh(transformNode: TransformNode): void {
         if (this._connectedTransformNode && this._registerFunc) {
         if (this._connectedTransformNode && this._registerFunc) {
@@ -930,7 +930,7 @@ export class Sound {
 
 
     /**
     /**
      * Detach the sound from the previously attached mesh
      * Detach the sound from the previously attached mesh
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#attaching-a-sound-to-a-mesh
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#attaching-a-sound-to-a-mesh
      */
      */
     public detachFromMesh() {
     public detachFromMesh() {
         if (this._connectedTransformNode && this._registerFunc) {
         if (this._connectedTransformNode && this._registerFunc) {

+ 5 - 5
src/Audio/soundTrack.ts

@@ -21,7 +21,7 @@ export interface ISoundTrackOptions {
 /**
 /**
  * It could be useful to isolate your music & sounds on several tracks to better manage volume on a grouped instance of sounds.
  * It could be useful to isolate your music & sounds on several tracks to better manage volume on a grouped instance of sounds.
  * It will be also used in a future release to apply effects on a specific track.
  * It will be also used in a future release to apply effects on a specific track.
- * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#using-sound-tracks
+ * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#using-sound-tracks
  */
  */
 export class SoundTrack {
 export class SoundTrack {
     /**
     /**
@@ -41,7 +41,7 @@ export class SoundTrack {
 
 
     /**
     /**
      * Creates a new sound track.
      * Creates a new sound track.
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#using-sound-tracks
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#using-sound-tracks
      * @param scene Define the scene the sound track belongs to
      * @param scene Define the scene the sound track belongs to
      * @param options
      * @param options
      */
      */
@@ -137,7 +137,7 @@ export class SoundTrack {
     /**
     /**
      * Switch the panning model to HRTF:
      * Switch the panning model to HRTF:
      * Renders a stereo output of higher quality than equalpower — it uses a convolution with measured impulse responses from human subjects.
      * Renders a stereo output of higher quality than equalpower — it uses a convolution with measured impulse responses from human subjects.
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
      */
      */
     public switchPanningModelToHRTF(): void {
     public switchPanningModelToHRTF(): void {
         if (Engine.audioEngine.canUseWebAudio) {
         if (Engine.audioEngine.canUseWebAudio) {
@@ -150,7 +150,7 @@ export class SoundTrack {
     /**
     /**
      * Switch the panning model to Equal Power:
      * Switch the panning model to Equal Power:
      * Represents the equal-power panning algorithm, generally regarded as simple and efficient. equalpower is the default value.
      * Represents the equal-power panning algorithm, generally regarded as simple and efficient. equalpower is the default value.
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#creating-a-spatial-3d-sound
      */
      */
     public switchPanningModelToEqualPower(): void {
     public switchPanningModelToEqualPower(): void {
         if (Engine.audioEngine.canUseWebAudio) {
         if (Engine.audioEngine.canUseWebAudio) {
@@ -163,7 +163,7 @@ export class SoundTrack {
     /**
     /**
      * Connect the sound track to an audio analyser allowing some amazing
      * Connect the sound track to an audio analyser allowing some amazing
      * synchornization between the sounds/music and your visualization (VuMeter for instance).
      * synchornization between the sounds/music and your visualization (VuMeter for instance).
-     * @see http://doc.babylonjs.com/how_to/playing_sounds_and_music#using-the-analyser
+     * @see https://doc.babylonjs.com/how_to/playing_sounds_and_music#using-the-analyser
      * @param analyser The analyser to connect to the engine
      * @param analyser The analyser to connect to the engine
      */
      */
     public connectToAnalyser(analyser: Analyser): void {
     public connectToAnalyser(analyser: Analyser): void {

+ 1 - 1
src/Behaviors/Cameras/autoRotationBehavior.ts

@@ -8,7 +8,7 @@ import { PrecisionDate } from "../../Misc/precisionDate";
 
 
 /**
 /**
  * The autoRotation behavior (AutoRotationBehavior) is designed to create a smooth rotation of an ArcRotateCamera when there is no user interaction.
  * The autoRotation behavior (AutoRotationBehavior) is designed to create a smooth rotation of an ArcRotateCamera when there is no user interaction.
- * @see http://doc.babylonjs.com/how_to/camera_behaviors#autorotation-behavior
+ * @see https://doc.babylonjs.com/how_to/camera_behaviors#autorotation-behavior
  */
  */
 export class AutoRotationBehavior implements Behavior<ArcRotateCamera> {
 export class AutoRotationBehavior implements Behavior<ArcRotateCamera> {
     /**
     /**

+ 1 - 1
src/Behaviors/Cameras/bouncingBehavior.ts

@@ -10,7 +10,7 @@ import { Animation } from "../../Animations/animation";
 
 
 /**
 /**
  * Add a bouncing effect to an ArcRotateCamera when reaching a specified minimum and maximum radius
  * Add a bouncing effect to an ArcRotateCamera when reaching a specified minimum and maximum radius
- * @see http://doc.babylonjs.com/how_to/camera_behaviors#bouncing-behavior
+ * @see https://doc.babylonjs.com/how_to/camera_behaviors#bouncing-behavior
  */
  */
 export class BouncingBehavior implements Behavior<ArcRotateCamera> {
 export class BouncingBehavior implements Behavior<ArcRotateCamera> {
     /**
     /**

+ 1 - 1
src/Behaviors/Cameras/framingBehavior.ts

@@ -13,7 +13,7 @@ import { Animation } from "../../Animations/animation";
 
 
 /**
 /**
  * The framing behavior (FramingBehavior) is designed to automatically position an ArcRotateCamera when its target is set to a mesh. It is also useful if you want to prevent the camera to go under a virtual horizontal plane.
  * The framing behavior (FramingBehavior) is designed to automatically position an ArcRotateCamera when its target is set to a mesh. It is also useful if you want to prevent the camera to go under a virtual horizontal plane.
- * @see http://doc.babylonjs.com/how_to/camera_behaviors#framing-behavior
+ * @see https://doc.babylonjs.com/how_to/camera_behaviors#framing-behavior
  */
  */
 export class FramingBehavior implements Behavior<ArcRotateCamera> {
 export class FramingBehavior implements Behavior<ArcRotateCamera> {
     /**
     /**

+ 1 - 1
src/Bones/bone.ts

@@ -13,7 +13,7 @@ declare type AnimationPropertiesOverride = import("../Animations/animationProper
 
 
 /**
 /**
  * Class used to store bone information
  * Class used to store bone information
- * @see http://doc.babylonjs.com/how_to/how_to_use_bones_and_skeletons
+ * @see https://doc.babylonjs.com/how_to/how_to_use_bones_and_skeletons
  */
  */
 export class Bone extends Node {
 export class Bone extends Node {
 
 

+ 1 - 1
src/Bones/boneIKController.ts

@@ -6,7 +6,7 @@ import { Space } from '../Maths/math.axis';
 
 
 /**
 /**
  * Class used to apply inverse kinematics to bones
  * Class used to apply inverse kinematics to bones
- * @see http://doc.babylonjs.com/how_to/how_to_use_bones_and_skeletons#boneikcontroller
+ * @see https://doc.babylonjs.com/how_to/how_to_use_bones_and_skeletons#boneikcontroller
  */
  */
 export class BoneIKController {
 export class BoneIKController {
 
 

+ 1 - 1
src/Bones/boneLookController.ts

@@ -7,7 +7,7 @@ import { Space, Axis } from '../Maths/math.axis';
 
 
 /**
 /**
  * Class used to make a bone look toward a point in space
  * Class used to make a bone look toward a point in space
- * @see http://doc.babylonjs.com/how_to/how_to_use_bones_and_skeletons#bonelookcontroller
+ * @see https://doc.babylonjs.com/how_to/how_to_use_bones_and_skeletons#bonelookcontroller
  */
  */
 export class BoneLookController {
 export class BoneLookController {
 
 

+ 2 - 2
src/Bones/skeleton.ts

@@ -19,7 +19,7 @@ import { IAnimatable } from '../Animations/animatable.interface';
 
 
 /**
 /**
  * Class used to handle skinning animations
  * Class used to handle skinning animations
- * @see http://doc.babylonjs.com/how_to/how_to_use_bones_and_skeletons
+ * @see https://doc.babylonjs.com/how_to/how_to_use_bones_and_skeletons
  */
  */
 export class Skeleton implements IAnimatable {
 export class Skeleton implements IAnimatable {
     /**
     /**
@@ -645,7 +645,7 @@ export class Skeleton implements IAnimatable {
     /**
     /**
      * Enable animation blending for this skeleton
      * Enable animation blending for this skeleton
      * @param blendingSpeed defines the blending speed to apply
      * @param blendingSpeed defines the blending speed to apply
-     * @see http://doc.babylonjs.com/babylon101/animations#animation-blending
+     * @see https://doc.babylonjs.com/babylon101/animations#animation-blending
      */
      */
     public enableBlending(blendingSpeed = 0.01) {
     public enableBlending(blendingSpeed = 0.01) {
         this.bones.forEach((bone) => {
         this.bones.forEach((bone) => {

+ 1 - 1
src/Cameras/Inputs/arcRotateCameraGamepadInput.ts

@@ -6,7 +6,7 @@ import { ICameraInput, CameraInputTypes } from "../../Cameras/cameraInputsManage
 import { Gamepad } from "../../Gamepads/gamepad";
 import { Gamepad } from "../../Gamepads/gamepad";
 /**
 /**
  * Manage the gamepad inputs to control an arc rotate camera.
  * Manage the gamepad inputs to control an arc rotate camera.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class ArcRotateCameraGamepadInput implements ICameraInput<ArcRotateCamera> {
 export class ArcRotateCameraGamepadInput implements ICameraInput<ArcRotateCamera> {
     /**
     /**

+ 1 - 1
src/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.ts

@@ -9,7 +9,7 @@ import { KeyboardInfo, KeyboardEventTypes } from "../../Events/keyboardEvents";
 
 
 /**
 /**
  * Manage the keyboard inputs to control the movement of an arc rotate camera.
  * Manage the keyboard inputs to control the movement of an arc rotate camera.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class ArcRotateCameraKeyboardMoveInput implements ICameraInput<ArcRotateCamera> {
 export class ArcRotateCameraKeyboardMoveInput implements ICameraInput<ArcRotateCamera> {
     /**
     /**

+ 1 - 1
src/Cameras/Inputs/arcRotateCameraMouseWheelInput.ts

@@ -8,7 +8,7 @@ import { Scalar } from '../../Maths/math.scalar';
 
 
 /**
 /**
  * Manage the mouse wheel inputs to control an arc rotate camera.
  * Manage the mouse wheel inputs to control an arc rotate camera.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class ArcRotateCameraMouseWheelInput implements ICameraInput<ArcRotateCamera> {
 export class ArcRotateCameraMouseWheelInput implements ICameraInput<ArcRotateCamera> {
     /**
     /**

+ 1 - 1
src/Cameras/Inputs/arcRotateCameraPointersInput.ts

@@ -7,7 +7,7 @@ import { PointerTouch } from "../../Events/pointerEvents";
 
 
 /**
 /**
  * Manage the pointers inputs to control an arc rotate camera.
  * Manage the pointers inputs to control an arc rotate camera.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class ArcRotateCameraPointersInput extends BaseCameraPointersInput {
 export class ArcRotateCameraPointersInput extends BaseCameraPointersInput {
     /**
     /**

+ 1 - 1
src/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.ts

@@ -26,7 +26,7 @@ ArcRotateCameraInputsManager.prototype.addVRDeviceOrientation = function(): ArcR
 
 
 /**
 /**
  * Manage the device orientation inputs (gyroscope) to control an arc rotate camera.
  * Manage the device orientation inputs (gyroscope) to control an arc rotate camera.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class ArcRotateCameraVRDeviceOrientationInput implements ICameraInput<ArcRotateCamera> {
 export class ArcRotateCameraVRDeviceOrientationInput implements ICameraInput<ArcRotateCamera> {
     /**
     /**

+ 1 - 1
src/Cameras/Inputs/flyCameraKeyboardInput.ts

@@ -10,7 +10,7 @@ import { Vector3 } from "../../Maths/math.vector";
 
 
 /**
 /**
  * Listen to keyboard events to control the camera.
  * Listen to keyboard events to control the camera.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class FlyCameraKeyboardInput implements ICameraInput<FlyCamera> {
 export class FlyCameraKeyboardInput implements ICameraInput<FlyCamera> {
     /**
     /**

+ 2 - 2
src/Cameras/Inputs/flyCameraMouseInput.ts

@@ -9,7 +9,7 @@ import { Quaternion } from "../../Maths/math.vector";
 import { Axis } from '../../Maths/math.axis';
 import { Axis } from '../../Maths/math.axis';
 /**
 /**
  * Listen to mouse events to control the camera.
  * Listen to mouse events to control the camera.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class FlyCameraMouseInput implements ICameraInput<FlyCamera> {
 export class FlyCameraMouseInput implements ICameraInput<FlyCamera> {
     /**
     /**
@@ -69,7 +69,7 @@ export class FlyCameraMouseInput implements ICameraInput<FlyCamera> {
     /**
     /**
      * Listen to mouse events to control the camera.
      * Listen to mouse events to control the camera.
      * @param touchEnabled Define if touch is enabled. (Default is true.)
      * @param touchEnabled Define if touch is enabled. (Default is true.)
-     * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+     * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
      */
      */
     constructor(touchEnabled = true) {
     constructor(touchEnabled = true) {
     }
     }

+ 1 - 1
src/Cameras/Inputs/followCameraKeyboardMoveInput.ts

@@ -9,7 +9,7 @@ import { Scene } from "../../scene";
 
 
 /**
 /**
  * Manage the keyboard inputs to control the movement of a follow camera.
  * Manage the keyboard inputs to control the movement of a follow camera.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class FollowCameraKeyboardMoveInput implements ICameraInput<FollowCamera> {
 export class FollowCameraKeyboardMoveInput implements ICameraInput<FollowCamera> {
     /**
     /**

+ 1 - 1
src/Cameras/Inputs/followCameraMouseWheelInput.ts

@@ -7,7 +7,7 @@ import { PointerInfo, PointerEventTypes } from "../../Events/pointerEvents";
 
 
 /**
 /**
  * Manage the mouse wheel inputs to control a follow camera.
  * Manage the mouse wheel inputs to control a follow camera.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class FollowCameraMouseWheelInput implements ICameraInput<FollowCamera> {
 export class FollowCameraMouseWheelInput implements ICameraInput<FollowCamera> {
     /**
     /**

+ 1 - 1
src/Cameras/Inputs/followCameraPointersInput.ts

@@ -7,7 +7,7 @@ import { PointerTouch } from "../../Events/pointerEvents";
 
 
 /**
 /**
  * Manage the pointers inputs to control an follow camera.
  * Manage the pointers inputs to control an follow camera.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class FollowCameraPointersInput extends BaseCameraPointersInput {
 export class FollowCameraPointersInput extends BaseCameraPointersInput {
     /**
     /**

+ 2 - 2
src/Cameras/Inputs/freeCameraDeviceOrientationInput.ts

@@ -37,7 +37,7 @@ FreeCameraInputsManager.prototype.addDeviceOrientation = function(): FreeCameraI
 /**
 /**
  * Takes information about the orientation of the device as reported by the deviceorientation event to orient the camera.
  * Takes information about the orientation of the device as reported by the deviceorientation event to orient the camera.
  * Screen rotation is taken into account.
  * Screen rotation is taken into account.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class FreeCameraDeviceOrientationInput implements ICameraInput<FreeCamera> {
 export class FreeCameraDeviceOrientationInput implements ICameraInput<FreeCamera> {
     private _camera: FreeCamera;
     private _camera: FreeCamera;
@@ -99,7 +99,7 @@ export class FreeCameraDeviceOrientationInput implements ICameraInput<FreeCamera
     public _onDeviceOrientationChangedObservable = new Observable<void>();
     public _onDeviceOrientationChangedObservable = new Observable<void>();
     /**
     /**
      * Instantiates a new input
      * Instantiates a new input
-     * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+     * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
      */
      */
     constructor() {
     constructor() {
         this._constantTranform = new Quaternion(- Math.sqrt(0.5), 0, 0, Math.sqrt(0.5));
         this._constantTranform = new Quaternion(- Math.sqrt(0.5), 0, 0, Math.sqrt(0.5));

+ 1 - 1
src/Cameras/Inputs/freeCameraGamepadInput.ts

@@ -8,7 +8,7 @@ import { Gamepad } from "../../Gamepads/gamepad";
 
 
 /**
 /**
  * Manage the gamepad inputs to control a free camera.
  * Manage the gamepad inputs to control a free camera.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class FreeCameraGamepadInput implements ICameraInput<FreeCamera> {
 export class FreeCameraGamepadInput implements ICameraInput<FreeCamera> {
     /**
     /**

+ 1 - 1
src/Cameras/Inputs/freeCameraKeyboardMoveInput.ts

@@ -9,7 +9,7 @@ import { Vector3 } from "../../Maths/math.vector";
 import { Engine } from "../../Engines/engine";
 import { Engine } from "../../Engines/engine";
 /**
 /**
  * Manage the keyboard inputs to control the movement of a free camera.
  * Manage the keyboard inputs to control the movement of a free camera.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class FreeCameraKeyboardMoveInput implements ICameraInput<FreeCamera> {
 export class FreeCameraKeyboardMoveInput implements ICameraInput<FreeCamera> {
     /**
     /**

+ 2 - 2
src/Cameras/Inputs/freeCameraMouseInput.ts

@@ -6,7 +6,7 @@ import { FreeCamera } from "../../Cameras/freeCamera";
 import { PointerInfo, PointerEventTypes } from "../../Events/pointerEvents";
 import { PointerInfo, PointerEventTypes } from "../../Events/pointerEvents";
 /**
 /**
  * Manage the mouse inputs to control the movement of a free camera.
  * Manage the mouse inputs to control the movement of a free camera.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class FreeCameraMouseInput implements ICameraInput<FreeCamera> {
 export class FreeCameraMouseInput implements ICameraInput<FreeCamera> {
     /**
     /**
@@ -42,7 +42,7 @@ export class FreeCameraMouseInput implements ICameraInput<FreeCamera> {
     public _allowCameraRotation = true;
     public _allowCameraRotation = true;
     /**
     /**
      * Manage the mouse inputs to control the movement of a free camera.
      * Manage the mouse inputs to control the movement of a free camera.
-     * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+     * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
      * @param touchEnabled Defines if touch is enabled or not
      * @param touchEnabled Defines if touch is enabled or not
      */
      */
     constructor(
     constructor(

+ 1 - 1
src/Cameras/Inputs/freeCameraTouchInput.ts

@@ -7,7 +7,7 @@ import { PointerInfo, PointerEventTypes } from "../../Events/pointerEvents";
 import { Matrix, Vector3 } from "../../Maths/math.vector";
 import { Matrix, Vector3 } from "../../Maths/math.vector";
 /**
 /**
  * Manage the touch inputs to control the movement of a free camera.
  * Manage the touch inputs to control the movement of a free camera.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class FreeCameraTouchInput implements ICameraInput<FreeCamera> {
 export class FreeCameraTouchInput implements ICameraInput<FreeCamera> {
     /**
     /**

+ 1 - 1
src/Cameras/Inputs/freeCameraVirtualJoystickInput.ts

@@ -27,7 +27,7 @@ FreeCameraInputsManager.prototype.addVirtualJoystick = function(): FreeCameraInp
 
 
 /**
 /**
  * Manage the Virtual Joystick inputs to control the movement of a free camera.
  * Manage the Virtual Joystick inputs to control the movement of a free camera.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class FreeCameraVirtualJoystickInput implements ICameraInput<FreeCamera> {
 export class FreeCameraVirtualJoystickInput implements ICameraInput<FreeCamera> {
     /**
     /**

+ 1 - 1
src/Cameras/Stereoscopic/anaglyphArcRotateCamera.ts

@@ -13,7 +13,7 @@ Node.AddNodeConstructor("AnaglyphArcRotateCamera", (name, scene, options) => {
 
 
 /**
 /**
  * Camera used to simulate anaglyphic rendering (based on ArcRotateCamera)
  * Camera used to simulate anaglyphic rendering (based on ArcRotateCamera)
- * @see http://doc.babylonjs.com/features/cameras#anaglyph-cameras
+ * @see https://doc.babylonjs.com/features/cameras#anaglyph-cameras
  */
  */
 export class AnaglyphArcRotateCamera extends ArcRotateCamera {
 export class AnaglyphArcRotateCamera extends ArcRotateCamera {
 
 

+ 1 - 1
src/Cameras/Stereoscopic/anaglyphFreeCamera.ts

@@ -13,7 +13,7 @@ Node.AddNodeConstructor("AnaglyphFreeCamera", (name, scene, options) => {
 
 
 /**
 /**
  * Camera used to simulate anaglyphic rendering (based on FreeCamera)
  * Camera used to simulate anaglyphic rendering (based on FreeCamera)
- * @see http://doc.babylonjs.com/features/cameras#anaglyph-cameras
+ * @see https://doc.babylonjs.com/features/cameras#anaglyph-cameras
  */
  */
 export class AnaglyphFreeCamera extends FreeCamera {
 export class AnaglyphFreeCamera extends FreeCamera {
     /**
     /**

+ 1 - 1
src/Cameras/Stereoscopic/anaglyphGamepadCamera.ts

@@ -13,7 +13,7 @@ Node.AddNodeConstructor("AnaglyphGamepadCamera", (name, scene, options) => {
 
 
 /**
 /**
  * Camera used to simulate anaglyphic rendering (based on GamepadCamera)
  * Camera used to simulate anaglyphic rendering (based on GamepadCamera)
- * @see http://doc.babylonjs.com/features/cameras#anaglyph-cameras
+ * @see https://doc.babylonjs.com/features/cameras#anaglyph-cameras
  */
  */
 export class AnaglyphGamepadCamera extends GamepadCamera {
 export class AnaglyphGamepadCamera extends GamepadCamera {
     /**
     /**

+ 1 - 1
src/Cameras/Stereoscopic/anaglyphUniversalCamera.ts

@@ -13,7 +13,7 @@ Node.AddNodeConstructor("AnaglyphUniversalCamera", (name, scene, options) => {
 
 
 /**
 /**
  * Camera used to simulate anaglyphic rendering (based on UniversalCamera)
  * Camera used to simulate anaglyphic rendering (based on UniversalCamera)
- * @see http://doc.babylonjs.com/features/cameras#anaglyph-cameras
+ * @see https://doc.babylonjs.com/features/cameras#anaglyph-cameras
  */
  */
 export class AnaglyphUniversalCamera extends UniversalCamera {
 export class AnaglyphUniversalCamera extends UniversalCamera {
     /**
     /**

+ 1 - 1
src/Cameras/Stereoscopic/stereoscopicArcRotateCamera.ts

@@ -13,7 +13,7 @@ Node.AddNodeConstructor("StereoscopicArcRotateCamera", (name, scene, options) =>
 
 
 /**
 /**
  * Camera used to simulate stereoscopic rendering (based on ArcRotateCamera)
  * Camera used to simulate stereoscopic rendering (based on ArcRotateCamera)
- * @see http://doc.babylonjs.com/features/cameras
+ * @see https://doc.babylonjs.com/features/cameras
  */
  */
 export class StereoscopicArcRotateCamera extends ArcRotateCamera {
 export class StereoscopicArcRotateCamera extends ArcRotateCamera {
     /**
     /**

+ 1 - 1
src/Cameras/Stereoscopic/stereoscopicFreeCamera.ts

@@ -13,7 +13,7 @@ Node.AddNodeConstructor("StereoscopicFreeCamera", (name, scene, options) => {
 
 
 /**
 /**
  * Camera used to simulate stereoscopic rendering (based on FreeCamera)
  * Camera used to simulate stereoscopic rendering (based on FreeCamera)
- * @see http://doc.babylonjs.com/features/cameras
+ * @see https://doc.babylonjs.com/features/cameras
  */
  */
 export class StereoscopicFreeCamera extends FreeCamera {
 export class StereoscopicFreeCamera extends FreeCamera {
     /**
     /**

+ 1 - 1
src/Cameras/Stereoscopic/stereoscopicGamepadCamera.ts

@@ -13,7 +13,7 @@ Node.AddNodeConstructor("StereoscopicGamepadCamera", (name, scene, options) => {
 
 
 /**
 /**
  * Camera used to simulate stereoscopic rendering (based on GamepadCamera)
  * Camera used to simulate stereoscopic rendering (based on GamepadCamera)
- * @see http://doc.babylonjs.com/features/cameras
+ * @see https://doc.babylonjs.com/features/cameras
  */
  */
 export class StereoscopicGamepadCamera extends GamepadCamera {
 export class StereoscopicGamepadCamera extends GamepadCamera {
     /**
     /**

+ 1 - 1
src/Cameras/Stereoscopic/stereoscopicUniversalCamera.ts

@@ -12,7 +12,7 @@ Node.AddNodeConstructor("StereoscopicFreeCamera", (name, scene, options) => {
 });
 });
 /**
 /**
  * Camera used to simulate stereoscopic rendering (based on UniversalCamera)
  * Camera used to simulate stereoscopic rendering (based on UniversalCamera)
- * @see http://doc.babylonjs.com/features/cameras
+ * @see https://doc.babylonjs.com/features/cameras
  */
  */
 export class StereoscopicUniversalCamera extends UniversalCamera {
 export class StereoscopicUniversalCamera extends UniversalCamera {
     /**
     /**

+ 1 - 1
src/Cameras/VR/vrCameraMetrics.ts

@@ -1,7 +1,7 @@
 import { Matrix } from "../../Maths/math.vector";
 import { Matrix } from "../../Maths/math.vector";
 /**
 /**
  * This represents all the required metrics to create a VR camera.
  * This represents all the required metrics to create a VR camera.
- * @see http://doc.babylonjs.com/babylon101/cameras#device-orientation-camera
+ * @see https://doc.babylonjs.com/babylon101/cameras#device-orientation-camera
  */
  */
 export class VRCameraMetrics {
 export class VRCameraMetrics {
     /**
     /**

+ 1 - 1
src/Cameras/VR/vrDeviceOrientationArcRotateCamera.ts

@@ -16,7 +16,7 @@ Node.AddNodeConstructor("VRDeviceOrientationFreeCamera", (name, scene) => {
 
 
 /**
 /**
  * Camera used to simulate VR rendering (based on ArcRotateCamera)
  * Camera used to simulate VR rendering (based on ArcRotateCamera)
- * @see http://doc.babylonjs.com/babylon101/cameras#vr-device-orientation-cameras
+ * @see https://doc.babylonjs.com/babylon101/cameras#vr-device-orientation-cameras
  */
  */
 export class VRDeviceOrientationArcRotateCamera extends ArcRotateCamera {
 export class VRDeviceOrientationArcRotateCamera extends ArcRotateCamera {
 
 

+ 1 - 1
src/Cameras/VR/vrDeviceOrientationFreeCamera.ts

@@ -14,7 +14,7 @@ Node.AddNodeConstructor("VRDeviceOrientationFreeCamera", (name, scene) => {
 
 
 /**
 /**
  * Camera used to simulate VR rendering (based on FreeCamera)
  * Camera used to simulate VR rendering (based on FreeCamera)
- * @see http://doc.babylonjs.com/babylon101/cameras#vr-device-orientation-cameras
+ * @see https://doc.babylonjs.com/babylon101/cameras#vr-device-orientation-cameras
  */
  */
 export class VRDeviceOrientationFreeCamera extends DeviceOrientationCamera {
 export class VRDeviceOrientationFreeCamera extends DeviceOrientationCamera {
 
 

+ 1 - 1
src/Cameras/VR/vrDeviceOrientationGamepadCamera.ts

@@ -12,7 +12,7 @@ Node.AddNodeConstructor("VRDeviceOrientationGamepadCamera", (name, scene) => {
 
 
 /**
 /**
  * Camera used to simulate VR rendering (based on VRDeviceOrientationFreeCamera)
  * Camera used to simulate VR rendering (based on VRDeviceOrientationFreeCamera)
- * @see http://doc.babylonjs.com/babylon101/cameras#vr-device-orientation-cameras
+ * @see https://doc.babylonjs.com/babylon101/cameras#vr-device-orientation-cameras
  */
  */
 export class VRDeviceOrientationGamepadCamera extends VRDeviceOrientationFreeCamera {
 export class VRDeviceOrientationGamepadCamera extends VRDeviceOrientationFreeCamera {
 
 

+ 2 - 2
src/Cameras/VR/vrExperienceHelper.ts

@@ -322,7 +322,7 @@ export class OnAfterEnteringVRObservableEvent {
 
 
 /**
 /**
  * Helps to quickly add VR support to an existing scene.
  * Helps to quickly add VR support to an existing scene.
- * See http://doc.babylonjs.com/how_to/webvr_helper
+ * See https://doc.babylonjs.com/how_to/webvr_helper
  */
  */
 export class VRExperienceHelper {
 export class VRExperienceHelper {
     private _scene: Scene;
     private _scene: Scene;
@@ -516,7 +516,7 @@ export class VRExperienceHelper {
     /**
     /**
      * The mesh used to display where the user is selecting, this mesh will be cloned and set as the gazeTracker for the left and right controller
      * The mesh used to display where the user is selecting, this mesh will be cloned and set as the gazeTracker for the left and right controller
      * when set bakeCurrentTransformIntoVertices will be called on the mesh.
      * when set bakeCurrentTransformIntoVertices will be called on the mesh.
-     * See http://doc.babylonjs.com/resources/baking_transformations
+     * See https://doc.babylonjs.com/resources/baking_transformations
      */
      */
     public get gazeTrackerMesh(): Mesh {
     public get gazeTrackerMesh(): Mesh {
         return this._cameraGazer._gazeTracker;
         return this._cameraGazer._gazeTracker;

+ 1 - 1
src/Cameras/VR/webVRCamera.ts

@@ -154,7 +154,7 @@ export interface WebVROptions {
 /**
 /**
  * This represents a WebVR camera.
  * This represents a WebVR camera.
  * The WebVR camera is Babylon's simple interface to interaction with Windows Mixed Reality, HTC Vive and Oculus Rift.
  * The WebVR camera is Babylon's simple interface to interaction with Windows Mixed Reality, HTC Vive and Oculus Rift.
- * @example http://doc.babylonjs.com/how_to/webvr_camera
+ * @example https://doc.babylonjs.com/how_to/webvr_camera
  */
  */
 export class WebVRFreeCamera extends FreeCamera implements PoseControlled {
 export class WebVRFreeCamera extends FreeCamera implements PoseControlled {
     /**
     /**

+ 9 - 9
src/Cameras/arcRotateCamera.ts

@@ -28,7 +28,7 @@ Node.AddNodeConstructor("ArcRotateCamera", (name, scene) => {
  *
  *
  * This camera always points towards a given target position and can be rotated around that target with the target as the centre of rotation. It can be controlled with cursors and mouse, or with touch events.
  * This camera always points towards a given target position and can be rotated around that target with the target as the centre of rotation. It can be controlled with cursors and mouse, or with touch events.
  * Think of this camera as one orbiting its target position, or more imaginatively as a spy satellite orbiting the earth. Its position relative to the target (earth) can be set by three parameters, alpha (radians) the longitudinal rotation, beta (radians) the latitudinal rotation and radius the distance from the target position.
  * Think of this camera as one orbiting its target position, or more imaginatively as a spy satellite orbiting the earth. Its position relative to the target (earth) can be set by three parameters, alpha (radians) the longitudinal rotation, beta (radians) the latitudinal rotation and radius the distance from the target position.
- * @see http://doc.babylonjs.com/babylon101/cameras#arc-rotate-camera
+ * @see https://doc.babylonjs.com/babylon101/cameras#arc-rotate-camera
  */
  */
 export class ArcRotateCamera extends TargetCamera {
 export class ArcRotateCamera extends TargetCamera {
     /**
     /**
@@ -509,7 +509,7 @@ export class ArcRotateCamera extends TargetCamera {
 
 
     /**
     /**
      * Gets the bouncing behavior of the camera if it has been enabled.
      * Gets the bouncing behavior of the camera if it has been enabled.
-     * @see http://doc.babylonjs.com/how_to/camera_behaviors#bouncing-behavior
+     * @see https://doc.babylonjs.com/how_to/camera_behaviors#bouncing-behavior
      */
      */
     public get bouncingBehavior(): Nullable<BouncingBehavior> {
     public get bouncingBehavior(): Nullable<BouncingBehavior> {
         return this._bouncingBehavior;
         return this._bouncingBehavior;
@@ -517,7 +517,7 @@ export class ArcRotateCamera extends TargetCamera {
 
 
     /**
     /**
      * Defines if the bouncing behavior of the camera is enabled on the camera.
      * Defines if the bouncing behavior of the camera is enabled on the camera.
-     * @see http://doc.babylonjs.com/how_to/camera_behaviors#bouncing-behavior
+     * @see https://doc.babylonjs.com/how_to/camera_behaviors#bouncing-behavior
      */
      */
     public get useBouncingBehavior(): boolean {
     public get useBouncingBehavior(): boolean {
         return this._bouncingBehavior != null;
         return this._bouncingBehavior != null;
@@ -541,7 +541,7 @@ export class ArcRotateCamera extends TargetCamera {
 
 
     /**
     /**
      * Gets the framing behavior of the camera if it has been enabled.
      * Gets the framing behavior of the camera if it has been enabled.
-     * @see http://doc.babylonjs.com/how_to/camera_behaviors#framing-behavior
+     * @see https://doc.babylonjs.com/how_to/camera_behaviors#framing-behavior
      */
      */
     public get framingBehavior(): Nullable<FramingBehavior> {
     public get framingBehavior(): Nullable<FramingBehavior> {
         return this._framingBehavior;
         return this._framingBehavior;
@@ -549,7 +549,7 @@ export class ArcRotateCamera extends TargetCamera {
 
 
     /**
     /**
      * Defines if the framing behavior of the camera is enabled on the camera.
      * Defines if the framing behavior of the camera is enabled on the camera.
-     * @see http://doc.babylonjs.com/how_to/camera_behaviors#framing-behavior
+     * @see https://doc.babylonjs.com/how_to/camera_behaviors#framing-behavior
      */
      */
     public get useFramingBehavior(): boolean {
     public get useFramingBehavior(): boolean {
         return this._framingBehavior != null;
         return this._framingBehavior != null;
@@ -573,7 +573,7 @@ export class ArcRotateCamera extends TargetCamera {
 
 
     /**
     /**
      * Gets the auto rotation behavior of the camera if it has been enabled.
      * Gets the auto rotation behavior of the camera if it has been enabled.
-     * @see http://doc.babylonjs.com/how_to/camera_behaviors#autorotation-behavior
+     * @see https://doc.babylonjs.com/how_to/camera_behaviors#autorotation-behavior
      */
      */
     public get autoRotationBehavior(): Nullable<AutoRotationBehavior> {
     public get autoRotationBehavior(): Nullable<AutoRotationBehavior> {
         return this._autoRotationBehavior;
         return this._autoRotationBehavior;
@@ -581,7 +581,7 @@ export class ArcRotateCamera extends TargetCamera {
 
 
     /**
     /**
      * Defines if the auto rotation behavior of the camera is enabled on the camera.
      * Defines if the auto rotation behavior of the camera is enabled on the camera.
-     * @see http://doc.babylonjs.com/how_to/camera_behaviors#autorotation-behavior
+     * @see https://doc.babylonjs.com/how_to/camera_behaviors#autorotation-behavior
      */
      */
     public get useAutoRotationBehavior(): boolean {
     public get useAutoRotationBehavior(): boolean {
         return this._autoRotationBehavior != null;
         return this._autoRotationBehavior != null;
@@ -613,14 +613,14 @@ export class ArcRotateCamera extends TargetCamera {
 
 
     /**
     /**
      * Defines whether the camera should check collision with the objects oh the scene.
      * Defines whether the camera should check collision with the objects oh the scene.
-     * @see http://doc.babylonjs.com/babylon101/cameras,_mesh_collisions_and_gravity#how-can-i-do-this
+     * @see https://doc.babylonjs.com/babylon101/cameras,_mesh_collisions_and_gravity#how-can-i-do-this
      */
      */
     public checkCollisions = false;
     public checkCollisions = false;
 
 
     /**
     /**
      * Defines the collision radius of the camera.
      * Defines the collision radius of the camera.
      * This simulates a sphere around the camera.
      * This simulates a sphere around the camera.
-     * @see http://doc.babylonjs.com/babylon101/cameras,_mesh_collisions_and_gravity#arcrotatecamera
+     * @see https://doc.babylonjs.com/babylon101/cameras,_mesh_collisions_and_gravity#arcrotatecamera
      */
      */
     public collisionRadius = new Vector3(0.5, 0.5, 0.5);
     public collisionRadius = new Vector3(0.5, 0.5, 0.5);
 
 

+ 1 - 1
src/Cameras/arcRotateCameraInputsManager.ts

@@ -7,7 +7,7 @@ import { CameraInputsManager } from "../Cameras/cameraInputsManager";
 /**
 /**
  * Default Inputs manager for the ArcRotateCamera.
  * Default Inputs manager for the ArcRotateCamera.
  * It groups all the default supported inputs for ease of use.
  * It groups all the default supported inputs for ease of use.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class ArcRotateCameraInputsManager extends CameraInputsManager<ArcRotateCamera> {
 export class ArcRotateCameraInputsManager extends CameraInputsManager<ArcRotateCamera> {
     /**
     /**

+ 4 - 4
src/Cameras/camera.ts

@@ -25,7 +25,7 @@ declare type Ray = import("../Culling/ray").Ray;
 
 
 /**
 /**
  * This is the base class of all the camera used in the application.
  * This is the base class of all the camera used in the application.
- * @see http://doc.babylonjs.com/features/cameras
+ * @see https://doc.babylonjs.com/features/cameras
  */
  */
 export class Camera extends Node {
 export class Camera extends Node {
     /** @hidden */
     /** @hidden */
@@ -311,7 +311,7 @@ export class Camera extends Node {
     /**
     /**
      * Instantiates a new camera object.
      * Instantiates a new camera object.
      * This should not be used directly but through the inherited cameras: ArcRotate, Free...
      * This should not be used directly but through the inherited cameras: ArcRotate, Free...
-     * @see http://doc.babylonjs.com/features/cameras
+     * @see https://doc.babylonjs.com/features/cameras
      * @param name Defines the name of the camera in the scene
      * @param name Defines the name of the camera in the scene
      * @param position Defines the position of the camera
      * @param position Defines the position of the camera
      * @param scene Defines the scene the camera belongs too
      * @param scene Defines the scene the camera belongs too
@@ -598,7 +598,7 @@ export class Camera extends Node {
 
 
     /**
     /**
      * Attach a post process to the camera.
      * Attach a post process to the camera.
-     * @see http://doc.babylonjs.com/how_to/how_to_use_postprocesses#attach-postprocess
+     * @see https://doc.babylonjs.com/how_to/how_to_use_postprocesses#attach-postprocess
      * @param postProcess The post process to attach to the camera
      * @param postProcess The post process to attach to the camera
      * @param insertAt The position of the post process in case several of them are in use in the scene
      * @param insertAt The position of the post process in case several of them are in use in the scene
      * @returns the position the post process has been inserted at
      * @returns the position the post process has been inserted at
@@ -622,7 +622,7 @@ export class Camera extends Node {
 
 
     /**
     /**
      * Detach a post process to the camera.
      * Detach a post process to the camera.
-     * @see http://doc.babylonjs.com/how_to/how_to_use_postprocesses#attach-postprocess
+     * @see https://doc.babylonjs.com/how_to/how_to_use_postprocesses#attach-postprocess
      * @param postProcess The post process to detach from the camera
      * @param postProcess The post process to detach from the camera
      */
      */
     public detachPostProcess(postProcess: PostProcess): void {
     public detachPostProcess(postProcess: PostProcess): void {

+ 2 - 2
src/Cameras/cameraInputsManager.ts

@@ -63,7 +63,7 @@ export interface CameraInputsMap<TCamera extends Camera> {
 /**
 /**
  * This represents the input manager used within a camera.
  * This represents the input manager used within a camera.
  * It helps dealing with all the different kind of input attached to a camera.
  * It helps dealing with all the different kind of input attached to a camera.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class CameraInputsManager<TCamera extends Camera> {
 export class CameraInputsManager<TCamera extends Camera> {
     /**
     /**
@@ -105,7 +105,7 @@ export class CameraInputsManager<TCamera extends Camera> {
 
 
     /**
     /**
      * Add an input method to a camera
      * Add an input method to a camera
-     * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+     * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
      * @param input camera input method
      * @param input camera input method
      */
      */
     public add(input: ICameraInput<TCamera>): void {
     public add(input: ICameraInput<TCamera>): void {

+ 1 - 1
src/Cameras/flyCamera.ts

@@ -19,7 +19,7 @@ export class FlyCamera extends TargetCamera {
     /**
     /**
      * Define the collision ellipsoid of the camera.
      * Define the collision ellipsoid of the camera.
      * This is helpful for simulating a camera body, like a player's body.
      * This is helpful for simulating a camera body, like a player's body.
-     * @see http://doc.babylonjs.com/babylon101/cameras,_mesh_collisions_and_gravity#arcrotatecamera
+     * @see https://doc.babylonjs.com/babylon101/cameras,_mesh_collisions_and_gravity#arcrotatecamera
      */
      */
     @serializeAsVector3()
     @serializeAsVector3()
     public ellipsoid = new Vector3(1, 1, 1);
     public ellipsoid = new Vector3(1, 1, 1);

+ 1 - 1
src/Cameras/flyCameraInputsManager.ts

@@ -6,7 +6,7 @@ import { FlyCameraKeyboardInput } from "../Cameras/Inputs/flyCameraKeyboardInput
 /**
 /**
  * Default Inputs manager for the FlyCamera.
  * Default Inputs manager for the FlyCamera.
  * It groups all the default supported inputs for ease of use.
  * It groups all the default supported inputs for ease of use.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class FlyCameraInputsManager extends CameraInputsManager<FlyCamera> {
 export class FlyCameraInputsManager extends CameraInputsManager<FlyCamera> {
     /**
     /**

+ 4 - 4
src/Cameras/followCamera.ts

@@ -18,7 +18,7 @@ Node.AddNodeConstructor("ArcFollowCamera", (name, scene) => {
 /**
 /**
  * A follow camera takes a mesh as a target and follows it as it moves. Both a free camera version followCamera and
  * A follow camera takes a mesh as a target and follows it as it moves. Both a free camera version followCamera and
  * an arc rotate version arcFollowCamera are available.
  * an arc rotate version arcFollowCamera are available.
- * @see http://doc.babylonjs.com/features/cameras#follow-camera
+ * @see https://doc.babylonjs.com/features/cameras#follow-camera
  */
  */
 export class FollowCamera extends TargetCamera {
 export class FollowCamera extends TargetCamera {
     /**
     /**
@@ -109,7 +109,7 @@ export class FollowCamera extends TargetCamera {
 
 
     /**
     /**
      * Instantiates the follow camera.
      * Instantiates the follow camera.
-     * @see http://doc.babylonjs.com/features/cameras#follow-camera
+     * @see https://doc.babylonjs.com/features/cameras#follow-camera
      * @param name Define the name of the camera in the scene
      * @param name Define the name of the camera in the scene
      * @param position Define the position of the camera
      * @param position Define the position of the camera
      * @param scene Define the scene the camera belong to
      * @param scene Define the scene the camera belong to
@@ -240,7 +240,7 @@ export class FollowCamera extends TargetCamera {
 /**
 /**
  * Arc Rotate version of the follow camera.
  * Arc Rotate version of the follow camera.
  * It still follows a Defined mesh but in an Arc Rotate Camera fashion.
  * It still follows a Defined mesh but in an Arc Rotate Camera fashion.
- * @see http://doc.babylonjs.com/features/cameras#follow-camera
+ * @see https://doc.babylonjs.com/features/cameras#follow-camera
  */
  */
 export class ArcFollowCamera extends TargetCamera {
 export class ArcFollowCamera extends TargetCamera {
 
 
@@ -248,7 +248,7 @@ export class ArcFollowCamera extends TargetCamera {
 
 
     /**
     /**
      * Instantiates a new ArcFollowCamera
      * Instantiates a new ArcFollowCamera
-     * @see http://doc.babylonjs.com/features/cameras#follow-camera
+     * @see https://doc.babylonjs.com/features/cameras#follow-camera
      * @param name Define the name of the camera
      * @param name Define the name of the camera
      * @param alpha Define the rotation angle of the camera around the logitudinal axis
      * @param alpha Define the rotation angle of the camera around the logitudinal axis
      * @param beta Define the rotation angle of the camera around the elevation axis
      * @param beta Define the rotation angle of the camera around the elevation axis

+ 1 - 1
src/Cameras/followCameraInputsManager.ts

@@ -7,7 +7,7 @@ import { FollowCameraPointersInput } from './Inputs/followCameraPointersInput';
 /**
 /**
  * Default Inputs manager for the FollowCamera.
  * Default Inputs manager for the FollowCamera.
  * It groups all the default supported inputs for ease of use.
  * It groups all the default supported inputs for ease of use.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class FollowCameraInputsManager extends CameraInputsManager<FollowCamera> {
 export class FollowCameraInputsManager extends CameraInputsManager<FollowCamera> {
     /**
     /**

+ 3 - 3
src/Cameras/freeCamera.ts

@@ -14,13 +14,13 @@ declare type Collider = import("../Collisions/collider").Collider;
 /**
 /**
  * This represents a free type of camera. It can be useful in First Person Shooter game for instance.
  * This represents a free type of camera. It can be useful in First Person Shooter game for instance.
  * Please consider using the new UniversalCamera instead as it adds more functionality like the gamepad.
  * Please consider using the new UniversalCamera instead as it adds more functionality like the gamepad.
- * @see http://doc.babylonjs.com/features/cameras#universal-camera
+ * @see https://doc.babylonjs.com/features/cameras#universal-camera
  */
  */
 export class FreeCamera extends TargetCamera {
 export class FreeCamera extends TargetCamera {
     /**
     /**
      * Define the collision ellipsoid of the camera.
      * Define the collision ellipsoid of the camera.
      * This is helpful to simulate a camera body like the player body around the camera
      * This is helpful to simulate a camera body like the player body around the camera
-     * @see http://doc.babylonjs.com/babylon101/cameras,_mesh_collisions_and_gravity#arcrotatecamera
+     * @see https://doc.babylonjs.com/babylon101/cameras,_mesh_collisions_and_gravity#arcrotatecamera
      */
      */
     @serializeAsVector3()
     @serializeAsVector3()
     public ellipsoid = new Vector3(0.5, 1, 0.5);
     public ellipsoid = new Vector3(0.5, 1, 0.5);
@@ -208,7 +208,7 @@ export class FreeCamera extends TargetCamera {
      * Instantiates a Free Camera.
      * Instantiates a Free Camera.
      * This represents a free type of camera. It can be useful in First Person Shooter game for instance.
      * This represents a free type of camera. It can be useful in First Person Shooter game for instance.
      * Please consider using the new UniversalCamera instead as it adds more functionality like touch to this camera.
      * Please consider using the new UniversalCamera instead as it adds more functionality like touch to this camera.
-     * @see http://doc.babylonjs.com/features/cameras#universal-camera
+     * @see https://doc.babylonjs.com/features/cameras#universal-camera
      * @param name Define the name of the camera in the scene
      * @param name Define the name of the camera in the scene
      * @param position Define the start position of the camera in the scene
      * @param position Define the start position of the camera in the scene
      * @param scene Define the scene the camera belongs to
      * @param scene Define the scene the camera belongs to

+ 1 - 1
src/Cameras/freeCameraInputsManager.ts

@@ -8,7 +8,7 @@ import { Nullable } from '../types';
 /**
 /**
  * Default Inputs manager for the FreeCamera.
  * Default Inputs manager for the FreeCamera.
  * It groups all the default supported inputs for ease of use.
  * It groups all the default supported inputs for ease of use.
- * @see http://doc.babylonjs.com/how_to/customizing_camera_inputs
+ * @see https://doc.babylonjs.com/how_to/customizing_camera_inputs
  */
  */
 export class FreeCameraInputsManager extends CameraInputsManager<FreeCamera> {
 export class FreeCameraInputsManager extends CameraInputsManager<FreeCamera> {
     /**
     /**

+ 2 - 2
src/Cameras/gamepadCamera.ts

@@ -9,14 +9,14 @@ Node.AddNodeConstructor("GamepadCamera", (name, scene) => {
 /**
 /**
  * This represents a FPS type of camera. This is only here for back compat purpose.
  * This represents a FPS type of camera. This is only here for back compat purpose.
  * Please use the UniversalCamera instead as both are identical.
  * Please use the UniversalCamera instead as both are identical.
- * @see http://doc.babylonjs.com/features/cameras#universal-camera
+ * @see https://doc.babylonjs.com/features/cameras#universal-camera
  */
  */
 export class GamepadCamera extends UniversalCamera {
 export class GamepadCamera extends UniversalCamera {
     /**
     /**
      * Instantiates a new Gamepad Camera
      * Instantiates a new Gamepad Camera
      * This represents a FPS type of camera. This is only here for back compat purpose.
      * This represents a FPS type of camera. This is only here for back compat purpose.
      * Please use the UniversalCamera instead as both are identical.
      * Please use the UniversalCamera instead as both are identical.
-     * @see http://doc.babylonjs.com/features/cameras#universal-camera
+     * @see https://doc.babylonjs.com/features/cameras#universal-camera
      * @param name Define the name of the camera in the scene
      * @param name Define the name of the camera in the scene
      * @param position Define the start position of the camera in the scene
      * @param position Define the start position of the camera in the scene
      * @param scene Define the scene the camera belongs to
      * @param scene Define the scene the camera belongs to

+ 2 - 2
src/Cameras/targetCamera.ts

@@ -8,7 +8,7 @@ import { Axis } from '../Maths/math.axis';
 /**
 /**
  * A target camera takes a mesh or position as a target and continues to look at it while it moves.
  * A target camera takes a mesh or position as a target and continues to look at it while it moves.
  * This is the base of the follow, arc rotate cameras and Free camera
  * This is the base of the follow, arc rotate cameras and Free camera
- * @see http://doc.babylonjs.com/features/cameras
+ * @see https://doc.babylonjs.com/features/cameras
  */
  */
 export class TargetCamera extends Camera {
 export class TargetCamera extends Camera {
     private static _RigCamTransformMatrix = new Matrix();
     private static _RigCamTransformMatrix = new Matrix();
@@ -102,7 +102,7 @@ export class TargetCamera extends Camera {
     /**
     /**
      * Instantiates a target camera that takes a mesh or position as a target and continues to look at it while it moves.
      * Instantiates a target camera that takes a mesh or position as a target and continues to look at it while it moves.
      * This is the base of the follow, arc rotate cameras and Free camera
      * This is the base of the follow, arc rotate cameras and Free camera
-     * @see http://doc.babylonjs.com/features/cameras
+     * @see https://doc.babylonjs.com/features/cameras
      * @param name Defines the name of the camera in the scene
      * @param name Defines the name of the camera in the scene
      * @param position Defines the start position of the camera in the scene
      * @param position Defines the start position of the camera in the scene
      * @param scene Defines the scene the camera belongs to
      * @param scene Defines the scene the camera belongs to

+ 2 - 2
src/Cameras/touchCamera.ts

@@ -12,7 +12,7 @@ Node.AddNodeConstructor("TouchCamera", (name, scene) => {
 /**
 /**
  * This represents a FPS type of camera controlled by touch.
  * This represents a FPS type of camera controlled by touch.
  * This is like a universal camera minus the Gamepad controls.
  * This is like a universal camera minus the Gamepad controls.
- * @see http://doc.babylonjs.com/features/cameras#universal-camera
+ * @see https://doc.babylonjs.com/features/cameras#universal-camera
  */
  */
 export class TouchCamera extends FreeCamera {
 export class TouchCamera extends FreeCamera {
     /**
     /**
@@ -59,7 +59,7 @@ export class TouchCamera extends FreeCamera {
      * Instantiates a new touch camera.
      * Instantiates a new touch camera.
      * This represents a FPS type of camera controlled by touch.
      * This represents a FPS type of camera controlled by touch.
      * This is like a universal camera minus the Gamepad controls.
      * This is like a universal camera minus the Gamepad controls.
-     * @see http://doc.babylonjs.com/features/cameras#universal-camera
+     * @see https://doc.babylonjs.com/features/cameras#universal-camera
      * @param name Define the name of the camera in the scene
      * @param name Define the name of the camera in the scene
      * @param position Define the start position of the camera in the scene
      * @param position Define the start position of the camera in the scene
      * @param scene Define the scene the camera belongs to
      * @param scene Define the scene the camera belongs to

+ 2 - 2
src/Cameras/universalCamera.ts

@@ -15,7 +15,7 @@ Node.AddNodeConstructor("FreeCamera", (name, scene) => {
 /**
 /**
  * The Universal Camera is the one to choose for first person shooter type games, and works with all the keyboard, mouse, touch and gamepads. This replaces the earlier Free Camera,
  * The Universal Camera is the one to choose for first person shooter type games, and works with all the keyboard, mouse, touch and gamepads. This replaces the earlier Free Camera,
  * which still works and will still be found in many Playgrounds.
  * which still works and will still be found in many Playgrounds.
- * @see http://doc.babylonjs.com/features/cameras#universal-camera
+ * @see https://doc.babylonjs.com/features/cameras#universal-camera
  */
  */
 export class UniversalCamera extends TouchCamera {
 export class UniversalCamera extends TouchCamera {
     /**
     /**
@@ -61,7 +61,7 @@ export class UniversalCamera extends TouchCamera {
     /**
     /**
      * The Universal Camera is the one to choose for first person shooter type games, and works with all the keyboard, mouse, touch and gamepads. This replaces the earlier Free Camera,
      * The Universal Camera is the one to choose for first person shooter type games, and works with all the keyboard, mouse, touch and gamepads. This replaces the earlier Free Camera,
      * which still works and will still be found in many Playgrounds.
      * which still works and will still be found in many Playgrounds.
-     * @see http://doc.babylonjs.com/features/cameras#universal-camera
+     * @see https://doc.babylonjs.com/features/cameras#universal-camera
      * @param name Define the name of the camera in the scene
      * @param name Define the name of the camera in the scene
      * @param position Define the start position of the camera in the scene
      * @param position Define the start position of the camera in the scene
      * @param scene Define the scene the camera belongs to
      * @param scene Define the scene the camera belongs to

+ 2 - 2
src/Cameras/virtualJoysticksCamera.ts

@@ -13,7 +13,7 @@ Node.AddNodeConstructor("VirtualJoysticksCamera", (name, scene) => {
  * This represents a free type of camera. It can be useful in First Person Shooter game for instance.
  * This represents a free type of camera. It can be useful in First Person Shooter game for instance.
  * It is identical to the Free Camera and simply adds by default a virtual joystick.
  * It is identical to the Free Camera and simply adds by default a virtual joystick.
  * Virtual Joysticks are on-screen 2D graphics that are used to control the camera or other scene items.
  * Virtual Joysticks are on-screen 2D graphics that are used to control the camera or other scene items.
- * @see http://doc.babylonjs.com/features/cameras#virtual-joysticks-camera
+ * @see https://doc.babylonjs.com/features/cameras#virtual-joysticks-camera
  */
  */
 export class VirtualJoysticksCamera extends FreeCamera {
 export class VirtualJoysticksCamera extends FreeCamera {
 
 
@@ -21,7 +21,7 @@ export class VirtualJoysticksCamera extends FreeCamera {
      * Intantiates a VirtualJoysticksCamera. It can be useful in First Person Shooter game for instance.
      * Intantiates a VirtualJoysticksCamera. It can be useful in First Person Shooter game for instance.
      * It is identical to the Free Camera and simply adds by default a virtual joystick.
      * It is identical to the Free Camera and simply adds by default a virtual joystick.
      * Virtual Joysticks are on-screen 2D graphics that are used to control the camera or other scene items.
      * Virtual Joysticks are on-screen 2D graphics that are used to control the camera or other scene items.
-     * @see http://doc.babylonjs.com/features/cameras#virtual-joysticks-camera
+     * @see https://doc.babylonjs.com/features/cameras#virtual-joysticks-camera
      * @param name Define the name of the camera in the scene
      * @param name Define the name of the camera in the scene
      * @param position Define the start position of the camera in the scene
      * @param position Define the start position of the camera in the scene
      * @param scene Define the scene the camera belongs to
      * @param scene Define the scene the camera belongs to

+ 1 - 1
src/Culling/Octrees/octreeBlock.ts

@@ -16,7 +16,7 @@ export interface IOctreeContainer<T> {
 
 
 /**
 /**
  * Class used to store a cell in an octree
  * Class used to store a cell in an octree
- * @see http://doc.babylonjs.com/how_to/optimizing_your_scene_with_octrees
+ * @see https://doc.babylonjs.com/how_to/optimizing_your_scene_with_octrees
  */
  */
 export class OctreeBlock<T> {
 export class OctreeBlock<T> {
     /**
     /**

+ 4 - 4
src/Culling/Octrees/octreeSceneComponent.ts

@@ -20,13 +20,13 @@ declare module "../../scene" {
 
 
         /**
         /**
          * Gets the octree used to boost mesh selection (picking)
          * Gets the octree used to boost mesh selection (picking)
-         * @see http://doc.babylonjs.com/how_to/optimizing_your_scene_with_octrees
+         * @see https://doc.babylonjs.com/how_to/optimizing_your_scene_with_octrees
          */
          */
         selectionOctree: Octree<AbstractMesh>;
         selectionOctree: Octree<AbstractMesh>;
 
 
         /**
         /**
          * Creates or updates the octree used to boost selection (picking)
          * Creates or updates the octree used to boost selection (picking)
-         * @see http://doc.babylonjs.com/how_to/optimizing_your_scene_with_octrees
+         * @see https://doc.babylonjs.com/how_to/optimizing_your_scene_with_octrees
          * @param maxCapacity defines the maximum capacity per leaf
          * @param maxCapacity defines the maximum capacity per leaf
          * @param maxDepth defines the maximum depth of the octree
          * @param maxDepth defines the maximum depth of the octree
          * @returns an octree of AbstractMesh
          * @returns an octree of AbstractMesh
@@ -77,7 +77,7 @@ declare module "../../Meshes/abstractMesh" {
          * @param maxDepth defines the maximum depth to use (no more than 2 levels by default)
          * @param maxDepth defines the maximum depth to use (no more than 2 levels by default)
          * @returns the new octree
          * @returns the new octree
          * @see https://www.babylonjs-playground.com/#NA4OQ#12
          * @see https://www.babylonjs-playground.com/#NA4OQ#12
-         * @see http://doc.babylonjs.com/how_to/optimizing_your_scene_with_octrees
+         * @see https://doc.babylonjs.com/how_to/optimizing_your_scene_with_octrees
          */
          */
         createOrUpdateSubmeshesOctree(maxCapacity?: number, maxDepth?: number): Octree<SubMesh>;
         createOrUpdateSubmeshesOctree(maxCapacity?: number, maxDepth?: number): Octree<SubMesh>;
     }
     }
@@ -90,7 +90,7 @@ declare module "../../Meshes/abstractMesh" {
  * @param maxDepth defines the maximum depth to use (no more than 2 levels by default)
  * @param maxDepth defines the maximum depth to use (no more than 2 levels by default)
  * @returns the new octree
  * @returns the new octree
  * @see https://www.babylonjs-playground.com/#NA4OQ#12
  * @see https://www.babylonjs-playground.com/#NA4OQ#12
- * @see http://doc.babylonjs.com/how_to/optimizing_your_scene_with_octrees
+ * @see https://doc.babylonjs.com/how_to/optimizing_your_scene_with_octrees
  */
  */
 AbstractMesh.prototype.createOrUpdateSubmeshesOctree = function(maxCapacity = 64, maxDepth = 2): Octree<SubMesh> {
 AbstractMesh.prototype.createOrUpdateSubmeshesOctree = function(maxCapacity = 64, maxDepth = 2): Octree<SubMesh> {
     const scene = this.getScene();
     const scene = this.getScene();

+ 3 - 3
src/Debug/debugLayer.ts

@@ -96,7 +96,7 @@ declare module "../scene" {
 
 
         /**
         /**
          * Gets the debug layer (aka Inspector) associated with the scene
          * Gets the debug layer (aka Inspector) associated with the scene
-         * @see http://doc.babylonjs.com/features/playground_debuglayer
+         * @see https://doc.babylonjs.com/features/playground_debuglayer
          */
          */
         debugLayer: DebugLayer;
         debugLayer: DebugLayer;
     }
     }
@@ -141,7 +141,7 @@ export enum DebugLayerTab {
 /**
 /**
  * The debug layer (aka Inspector) is the go to tool in order to better understand
  * The debug layer (aka Inspector) is the go to tool in order to better understand
  * what is happening in your scene
  * what is happening in your scene
- * @see http://doc.babylonjs.com/features/playground_debuglayer
+ * @see https://doc.babylonjs.com/features/playground_debuglayer
  */
  */
 export class DebugLayer {
 export class DebugLayer {
     /**
     /**
@@ -175,7 +175,7 @@ export class DebugLayer {
      * Instantiates a new debug layer.
      * Instantiates a new debug layer.
      * The debug layer (aka Inspector) is the go to tool in order to better understand
      * The debug layer (aka Inspector) is the go to tool in order to better understand
      * what is happening in your scene
      * what is happening in your scene
-     * @see http://doc.babylonjs.com/features/playground_debuglayer
+     * @see https://doc.babylonjs.com/features/playground_debuglayer
      * @param scene Defines the scene to inspect
      * @param scene Defines the scene to inspect
      */
      */
     constructor(scene: Scene) {
     constructor(scene: Scene) {

+ 2 - 2
src/Debug/rayHelper.ts

@@ -12,7 +12,7 @@ import "../Meshes/Builders/linesBuilder";
 /**
 /**
  * As raycast might be hard to debug, the RayHelper can help rendering the different rays
  * As raycast might be hard to debug, the RayHelper can help rendering the different rays
  * in order to better appreciate the issue one might have.
  * in order to better appreciate the issue one might have.
- * @see http://doc.babylonjs.com/babylon101/raycasts#debugging
+ * @see https://doc.babylonjs.com/babylon101/raycasts#debugging
  */
  */
 export class RayHelper {
 export class RayHelper {
 
 
@@ -50,7 +50,7 @@ export class RayHelper {
      * Instantiate a new ray helper.
      * Instantiate a new ray helper.
      * As raycast might be hard to debug, the RayHelper can help rendering the different rays
      * As raycast might be hard to debug, the RayHelper can help rendering the different rays
      * in order to better appreciate the issue one might have.
      * in order to better appreciate the issue one might have.
-     * @see http://doc.babylonjs.com/babylon101/raycasts#debugging
+     * @see https://doc.babylonjs.com/babylon101/raycasts#debugging
      * @param ray Defines the ray we are currently tryin to visualize
      * @param ray Defines the ray we are currently tryin to visualize
      */
      */
     constructor(ray: Ray) {
     constructor(ray: Ray) {

+ 2 - 2
src/Engines/Extensions/engine.alpha.ts

@@ -16,13 +16,13 @@ declare module "../../Engines/thinEngine" {
          * Sets the current alpha mode
          * Sets the current alpha mode
          * @param mode defines the mode to use (one of the Engine.ALPHA_XXX)
          * @param mode defines the mode to use (one of the Engine.ALPHA_XXX)
          * @param noDepthWriteChange defines if depth writing state should remains unchanged (false by default)
          * @param noDepthWriteChange defines if depth writing state should remains unchanged (false by default)
-         * @see http://doc.babylonjs.com/resources/transparency_and_how_meshes_are_rendered
+         * @see https://doc.babylonjs.com/resources/transparency_and_how_meshes_are_rendered
          */
          */
         setAlphaMode(mode: number, noDepthWriteChange?: boolean): void;
         setAlphaMode(mode: number, noDepthWriteChange?: boolean): void;
 
 
         /**
         /**
          * Gets the current alpha mode
          * Gets the current alpha mode
-         * @see http://doc.babylonjs.com/resources/transparency_and_how_meshes_are_rendered
+         * @see https://doc.babylonjs.com/resources/transparency_and_how_meshes_are_rendered
          * @returns the current alpha mode
          * @returns the current alpha mode
          */
          */
         getAlphaMode(): number;
         getAlphaMode(): number;

+ 2 - 2
src/Engines/Extensions/engine.multiRender.ts

@@ -18,7 +18,7 @@ declare module "../../Engines/thinEngine" {
 
 
         /**
         /**
          * Create a multi render target texture
          * Create a multi render target texture
-         * @see http://doc.babylonjs.com/features/webgl2#multiple-render-target
+         * @see https://doc.babylonjs.com/features/webgl2#multiple-render-target
          * @param size defines the size of the texture
          * @param size defines the size of the texture
          * @param options defines the creation options
          * @param options defines the creation options
          * @returns the cube texture as an InternalTexture
          * @returns the cube texture as an InternalTexture
@@ -27,7 +27,7 @@ declare module "../../Engines/thinEngine" {
 
 
         /**
         /**
          * Update the sample count for a given multiple render target texture
          * Update the sample count for a given multiple render target texture
-         * @see http://doc.babylonjs.com/features/webgl2#multisample-render-targets
+         * @see https://doc.babylonjs.com/features/webgl2#multisample-render-targets
          * @param textures defines the textures to update
          * @param textures defines the textures to update
          * @param samples defines the sample count to set
          * @param samples defines the sample count to set
          * @returns the effective sample count (could be 0 if multisample render targets are not supported)
          * @returns the effective sample count (could be 0 if multisample render targets are not supported)

+ 7 - 7
src/Engines/Extensions/engine.occlusionQuery.ts

@@ -58,13 +58,13 @@ declare module "../../Engines/engine" {
          * @param algorithmType defines the algorithm to use
          * @param algorithmType defines the algorithm to use
          * @param query defines the query to use
          * @param query defines the query to use
          * @returns the current engine
          * @returns the current engine
-         * @see http://doc.babylonjs.com/features/occlusionquery
+         * @see https://doc.babylonjs.com/features/occlusionquery
          */
          */
         beginOcclusionQuery(algorithmType: number, query: WebGLQuery): Engine;
         beginOcclusionQuery(algorithmType: number, query: WebGLQuery): Engine;
 
 
         /**
         /**
          * Ends an occlusion query
          * Ends an occlusion query
-         * @see http://doc.babylonjs.com/features/occlusionquery
+         * @see https://doc.babylonjs.com/features/occlusionquery
          * @param algorithmType defines the algorithm to use
          * @param algorithmType defines the algorithm to use
          * @returns the current engine
          * @returns the current engine
          */
          */
@@ -292,7 +292,7 @@ declare module "../../Meshes/abstractMesh" {
         /**
         /**
         * This number indicates the number of allowed retries before stop the occlusion query, this is useful if the occlusion query is taking long time before to the query result is retireved, the query result indicates if the object is visible within the scene or not and based on that Babylon.Js engine decideds to show or hide the object.
         * This number indicates the number of allowed retries before stop the occlusion query, this is useful if the occlusion query is taking long time before to the query result is retireved, the query result indicates if the object is visible within the scene or not and based on that Babylon.Js engine decideds to show or hide the object.
         * The default value is -1 which means don't break the query and wait till the result
         * The default value is -1 which means don't break the query and wait till the result
-        * @see http://doc.babylonjs.com/features/occlusionquery
+        * @see https://doc.babylonjs.com/features/occlusionquery
         */
         */
         occlusionRetryCount: number;
         occlusionRetryCount: number;
 
 
@@ -301,7 +301,7 @@ declare module "../../Meshes/abstractMesh" {
          * * OCCLUSION_TYPE_NONE (Default Value): this option means no occlusion query whith the Mesh.
          * * OCCLUSION_TYPE_NONE (Default Value): this option means no occlusion query whith the Mesh.
          * * OCCLUSION_TYPE_OPTIMISTIC: this option is means use occlusion query and if occlusionRetryCount is reached and the query is broken show the mesh.
          * * OCCLUSION_TYPE_OPTIMISTIC: this option is means use occlusion query and if occlusionRetryCount is reached and the query is broken show the mesh.
          * * OCCLUSION_TYPE_STRICT: this option is means use occlusion query and if occlusionRetryCount is reached and the query is broken restore the last state of the mesh occlusion if the mesh was visible then show the mesh if was hidden then hide don't show.
          * * OCCLUSION_TYPE_STRICT: this option is means use occlusion query and if occlusionRetryCount is reached and the query is broken restore the last state of the mesh occlusion if the mesh was visible then show the mesh if was hidden then hide don't show.
-         * @see http://doc.babylonjs.com/features/occlusionquery
+         * @see https://doc.babylonjs.com/features/occlusionquery
          */
          */
         occlusionType: number;
         occlusionType: number;
 
 
@@ -309,19 +309,19 @@ declare module "../../Meshes/abstractMesh" {
         * This property determines the type of occlusion query algorithm to run in WebGl, you can use:
         * This property determines the type of occlusion query algorithm to run in WebGl, you can use:
         * * AbstractMesh.OCCLUSION_ALGORITHM_TYPE_ACCURATE which is mapped to GL_ANY_SAMPLES_PASSED.
         * * AbstractMesh.OCCLUSION_ALGORITHM_TYPE_ACCURATE which is mapped to GL_ANY_SAMPLES_PASSED.
         * * AbstractMesh.OCCLUSION_ALGORITHM_TYPE_CONSERVATIVE (Default Value) which is mapped to GL_ANY_SAMPLES_PASSED_CONSERVATIVE which is a false positive algorithm that is faster than GL_ANY_SAMPLES_PASSED but less accurate.
         * * AbstractMesh.OCCLUSION_ALGORITHM_TYPE_CONSERVATIVE (Default Value) which is mapped to GL_ANY_SAMPLES_PASSED_CONSERVATIVE which is a false positive algorithm that is faster than GL_ANY_SAMPLES_PASSED but less accurate.
-        * @see http://doc.babylonjs.com/features/occlusionquery
+        * @see https://doc.babylonjs.com/features/occlusionquery
         */
         */
         occlusionQueryAlgorithmType: number;
         occlusionQueryAlgorithmType: number;
 
 
         /**
         /**
         * Gets or sets whether the mesh is occluded or not, it is used also to set the intial state of the mesh to be occluded or not
         * Gets or sets whether the mesh is occluded or not, it is used also to set the intial state of the mesh to be occluded or not
-        * @see http://doc.babylonjs.com/features/occlusionquery
+        * @see https://doc.babylonjs.com/features/occlusionquery
         */
         */
         isOccluded: boolean;
         isOccluded: boolean;
 
 
         /**
         /**
          * Flag to check the progress status of the query
          * Flag to check the progress status of the query
-         * @see http://doc.babylonjs.com/features/occlusionquery
+         * @see https://doc.babylonjs.com/features/occlusionquery
          */
          */
         isOcclusionQueryInProgress: boolean;
         isOcclusionQueryInProgress: boolean;
     }
     }

+ 0 - 0
src/Engines/Extensions/engine.uniformBuffer.ts


部分文件因为文件数量过多而无法显示