@babylonjs/gui 5.0.0-alpha.8 → 5.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/2D/adtInstrumentation.js +1 -1
- package/2D/advancedDynamicTexture.d.ts +165 -125
- package/2D/advancedDynamicTexture.js +342 -181
- package/2D/advancedDynamicTexture.js.map +1 -1
- package/2D/controls/button.d.ts +8 -0
- package/2D/controls/button.js +33 -10
- package/2D/controls/button.js.map +1 -1
- package/2D/controls/checkbox.d.ts +2 -1
- package/2D/controls/checkbox.js +10 -8
- package/2D/controls/checkbox.js.map +1 -1
- package/2D/controls/colorpicker.d.ts +4 -3
- package/2D/controls/colorpicker.js +40 -23
- package/2D/controls/colorpicker.js.map +1 -1
- package/2D/controls/container.d.ts +16 -5
- package/2D/controls/container.js +91 -13
- package/2D/controls/container.js.map +1 -1
- package/2D/controls/control.d.ts +103 -44
- package/2D/controls/control.js +278 -129
- package/2D/controls/control.js.map +1 -1
- package/2D/controls/displayGrid.d.ts +2 -1
- package/2D/controls/displayGrid.js +6 -6
- package/2D/controls/displayGrid.js.map +1 -1
- package/2D/controls/ellipse.d.ts +5 -3
- package/2D/controls/ellipse.js +9 -5
- package/2D/controls/ellipse.js.map +1 -1
- package/2D/controls/focusableButton.d.ts +1 -0
- package/2D/controls/focusableButton.js +9 -6
- package/2D/controls/focusableButton.js.map +1 -1
- package/2D/controls/grid.d.ts +13 -2
- package/2D/controls/grid.js +108 -24
- package/2D/controls/grid.js.map +1 -1
- package/2D/controls/image.d.ts +5 -4
- package/2D/controls/image.js +52 -31
- package/2D/controls/image.js.map +1 -1
- package/2D/controls/index.js +29 -29
- package/2D/controls/inputPassword.js +4 -4
- package/2D/controls/inputPassword.js.map +1 -1
- package/2D/controls/inputText.d.ts +2 -1
- package/2D/controls/inputText.js +40 -14
- package/2D/controls/inputText.js.map +1 -1
- package/2D/controls/line.d.ts +3 -2
- package/2D/controls/line.js +8 -8
- package/2D/controls/line.js.map +1 -1
- package/2D/controls/multiLine.d.ts +4 -3
- package/2D/controls/multiLine.js +6 -6
- package/2D/controls/multiLine.js.map +1 -1
- package/2D/controls/radioButton.d.ts +2 -1
- package/2D/controls/radioButton.js +10 -7
- package/2D/controls/radioButton.js.map +1 -1
- package/2D/controls/rectangle.d.ts +8 -3
- package/2D/controls/rectangle.js +21 -5
- package/2D/controls/rectangle.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewer.d.ts +3 -2
- package/2D/controls/scrollViewers/scrollViewer.js +9 -9
- package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +4 -3
- package/2D/controls/scrollViewers/scrollViewerWindow.js +4 -4
- package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
- package/2D/controls/selector.js +8 -8
- package/2D/controls/selector.js.map +1 -1
- package/2D/controls/sliders/baseSlider.d.ts +1 -1
- package/2D/controls/sliders/baseSlider.js +12 -10
- package/2D/controls/sliders/baseSlider.js.map +1 -1
- package/2D/controls/sliders/imageBasedSlider.d.ts +10 -1
- package/2D/controls/sliders/imageBasedSlider.js +29 -5
- package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
- package/2D/controls/sliders/imageScrollBar.d.ts +2 -1
- package/2D/controls/sliders/imageScrollBar.js +3 -3
- package/2D/controls/sliders/imageScrollBar.js.map +1 -1
- package/2D/controls/sliders/scrollBar.d.ts +2 -1
- package/2D/controls/sliders/scrollBar.js +3 -3
- package/2D/controls/sliders/scrollBar.js.map +1 -1
- package/2D/controls/sliders/slider.d.ts +2 -1
- package/2D/controls/sliders/slider.js +4 -4
- package/2D/controls/sliders/slider.js.map +1 -1
- package/2D/controls/stackPanel.d.ts +10 -3
- package/2D/controls/stackPanel.js +35 -13
- package/2D/controls/stackPanel.js.map +1 -1
- package/2D/controls/statics.js +3 -3
- package/2D/controls/statics.js.map +1 -1
- package/2D/controls/textBlock.d.ts +16 -9
- package/2D/controls/textBlock.js +75 -34
- package/2D/controls/textBlock.js.map +1 -1
- package/2D/controls/textWrapper.js +2 -2
- package/2D/controls/textWrapper.js.map +1 -1
- package/2D/controls/toggleButton.d.ts +1 -13
- package/2D/controls/toggleButton.js +29 -38
- package/2D/controls/toggleButton.js.map +1 -1
- package/2D/controls/virtualKeyboard.js +5 -5
- package/2D/controls/virtualKeyboard.js.map +1 -1
- package/2D/index.d.ts +1 -1
- package/2D/index.js +9 -9
- package/2D/index.js.map +1 -1
- package/2D/math2D.d.ts +5 -0
- package/2D/math2D.js +14 -2
- package/2D/math2D.js.map +1 -1
- package/2D/measure.js +1 -1
- package/2D/measure.js.map +1 -1
- package/2D/multiLinePoint.js +3 -3
- package/2D/style.js +2 -2
- package/2D/valueAndUnit.d.ts +21 -6
- package/2D/valueAndUnit.js +57 -13
- package/2D/valueAndUnit.js.map +1 -1
- package/2D/xmlLoader.d.ts +17 -3
- package/2D/xmlLoader.js +54 -15
- package/2D/xmlLoader.js.map +1 -1
- package/3D/behaviors/defaultBehavior.d.ts +73 -0
- package/3D/behaviors/defaultBehavior.js +122 -0
- package/3D/behaviors/defaultBehavior.js.map +1 -0
- package/3D/controls/abstractButton3D.d.ts +2 -2
- package/3D/controls/abstractButton3D.js +3 -3
- package/3D/controls/abstractButton3D.js.map +1 -1
- package/3D/controls/button3D.d.ts +0 -24
- package/3D/controls/button3D.js +15 -84
- package/3D/controls/button3D.js.map +1 -1
- package/3D/controls/container3D.js +2 -2
- package/3D/controls/contentDisplay3D.d.ts +30 -0
- package/3D/controls/contentDisplay3D.js +79 -0
- package/3D/controls/contentDisplay3D.js.map +1 -0
- package/3D/controls/control3D.d.ts +10 -7
- package/3D/controls/control3D.js +27 -19
- package/3D/controls/control3D.js.map +1 -1
- package/3D/controls/cylinderPanel.js +5 -5
- package/3D/controls/handMenu.d.ts +28 -0
- package/3D/controls/handMenu.js +48 -0
- package/3D/controls/handMenu.js.map +1 -0
- package/3D/controls/holographicBackplate.d.ts +48 -0
- package/3D/controls/holographicBackplate.js +121 -0
- package/3D/controls/holographicBackplate.js.map +1 -0
- package/3D/controls/holographicButton.d.ts +1 -1
- package/3D/controls/holographicButton.js +35 -31
- package/3D/controls/holographicButton.js.map +1 -1
- package/3D/controls/holographicSlate.d.ts +118 -0
- package/3D/controls/holographicSlate.js +365 -0
- package/3D/controls/holographicSlate.js.map +1 -0
- package/3D/controls/index.d.ts +7 -0
- package/3D/controls/index.js +22 -15
- package/3D/controls/index.js.map +1 -1
- package/3D/controls/meshButton3D.js +2 -2
- package/3D/controls/meshButton3D.js.map +1 -1
- package/3D/controls/nearMenu.d.ts +45 -0
- package/3D/controls/nearMenu.js +111 -0
- package/3D/controls/nearMenu.js.map +1 -0
- package/3D/controls/planePanel.js +3 -3
- package/3D/controls/scatterPanel.js +4 -4
- package/3D/controls/slider3D.d.ts +80 -0
- package/3D/controls/slider3D.js +268 -0
- package/3D/controls/slider3D.js.map +1 -0
- package/3D/controls/spherePanel.js +5 -5
- package/3D/controls/stackPanel3D.js +3 -3
- package/3D/controls/touchButton3D.d.ts +9 -21
- package/3D/controls/touchButton3D.js +52 -224
- package/3D/controls/touchButton3D.js.map +1 -1
- package/3D/controls/touchHolographicButton.d.ts +20 -3
- package/3D/controls/touchHolographicButton.js +137 -67
- package/3D/controls/touchHolographicButton.js.map +1 -1
- package/3D/controls/touchHolographicMenu.d.ts +61 -0
- package/3D/controls/touchHolographicMenu.js +149 -0
- package/3D/controls/touchHolographicMenu.js.map +1 -0
- package/3D/controls/touchMeshButton3D.d.ts +3 -6
- package/3D/controls/touchMeshButton3D.js +6 -14
- package/3D/controls/touchMeshButton3D.js.map +1 -1
- package/3D/controls/touchToggleButton3D.d.ts +35 -0
- package/3D/controls/touchToggleButton3D.js +60 -0
- package/3D/controls/touchToggleButton3D.js.map +1 -0
- package/3D/controls/volumeBasedPanel.d.ts +1 -1
- package/3D/controls/volumeBasedPanel.js +5 -5
- package/3D/controls/volumeBasedPanel.js.map +1 -1
- package/3D/gizmos/gizmoHandle.d.ts +108 -0
- package/3D/gizmos/gizmoHandle.js +210 -0
- package/3D/gizmos/gizmoHandle.js.map +1 -0
- package/3D/gizmos/index.d.ts +2 -0
- package/3D/gizmos/index.js +3 -0
- package/3D/gizmos/index.js.map +1 -0
- package/3D/gizmos/slateGizmo.d.ts +59 -0
- package/3D/gizmos/slateGizmo.js +364 -0
- package/3D/gizmos/slateGizmo.js.map +1 -0
- package/3D/gui3DManager.d.ts +15 -2
- package/3D/gui3DManager.js +62 -41
- package/3D/gui3DManager.js.map +1 -1
- package/3D/index.d.ts +3 -2
- package/3D/index.js +5 -4
- package/3D/index.js.map +1 -1
- package/3D/materials/fluent/fluentMaterial.d.ts +90 -0
- package/3D/materials/fluent/fluentMaterial.js +282 -0
- package/3D/materials/fluent/fluentMaterial.js.map +1 -0
- package/3D/materials/fluent/index.d.ts +1 -0
- package/3D/materials/fluent/index.js +2 -0
- package/3D/materials/fluent/index.js.map +1 -0
- package/3D/materials/{shaders → fluent/shaders}/fluent.fragment.d.ts +0 -0
- package/3D/materials/fluent/shaders/fluent.fragment.js +7 -0
- package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -0
- package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.d.ts +0 -0
- package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.js +2 -2
- package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +154 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +435 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -0
- package/3D/materials/fluentBackplate/index.d.ts +1 -0
- package/3D/materials/fluentBackplate/index.js +2 -0
- package/3D/materials/fluentBackplate/index.js.map +1 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +7 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +7 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +189 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.js +538 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -0
- package/3D/materials/fluentButton/index.d.ts +1 -0
- package/3D/materials/fluentButton/index.js +2 -0
- package/3D/materials/fluentButton/index.js.map +1 -0
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -0
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +7 -0
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -0
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -0
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +7 -0
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -0
- package/3D/materials/fluentMaterial.d.ts +2 -88
- package/3D/materials/fluentMaterial.js +2 -277
- package/3D/materials/fluentMaterial.js.map +1 -1
- package/3D/materials/handle/handleMaterial.d.ts +68 -0
- package/3D/materials/handle/handleMaterial.js +127 -0
- package/3D/materials/handle/handleMaterial.js.map +1 -0
- package/3D/materials/handle/index.d.ts +1 -0
- package/3D/materials/handle/index.js +2 -0
- package/3D/materials/handle/index.js.map +1 -0
- package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -0
- package/3D/materials/handle/shaders/handle.fragment.js +7 -0
- package/3D/materials/handle/shaders/handle.fragment.js.map +1 -0
- package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -0
- package/3D/materials/handle/shaders/handle.vertex.js +7 -0
- package/3D/materials/handle/shaders/handle.vertex.js.map +1 -0
- package/3D/materials/index.d.ts +5 -1
- package/3D/materials/index.js +5 -1
- package/3D/materials/index.js.map +1 -1
- package/3D/materials/mrdl/index.d.ts +3 -0
- package/3D/materials/mrdl/index.js +4 -0
- package/3D/materials/mrdl/index.js.map +1 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +147 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.js +410 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +333 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js +787 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +333 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +787 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -0
- package/3D/vector3WithInfo.js +1 -1
- package/index.d.ts +2 -2
- package/index.js +2 -2
- package/index.js.map +1 -1
- package/legacy/legacy.js +2 -2
- package/package.json +117 -9
- package/3D/materials/shaders/fluent.fragment.js +0 -7
- package/3D/materials/shaders/fluent.fragment.js.map +0 -1
- package/3D/materials/shaders/fluent.vertex.js.map +0 -1
|
@@ -3,6 +3,8 @@ import { Control } from "./control";
|
|
|
3
3
|
import { Measure } from "../measure";
|
|
4
4
|
import { AdvancedDynamicTexture } from "../advancedDynamicTexture";
|
|
5
5
|
import { PointerInfoBase } from '@babylonjs/core/Events/pointerEvents';
|
|
6
|
+
import { ICanvasRenderingContext } from '@babylonjs/core/Engines/ICanvas';
|
|
7
|
+
import { DynamicTexture } from "@babylonjs/core/Materials/Textures/dynamicTexture";
|
|
6
8
|
/**
|
|
7
9
|
* Root class for 2D containers
|
|
8
10
|
* @see https://doc.babylonjs.com/how_to/gui#containers
|
|
@@ -19,6 +21,13 @@ export declare class Container extends Control {
|
|
|
19
21
|
protected _adaptWidthToChildren: boolean;
|
|
20
22
|
/** @hidden */
|
|
21
23
|
protected _adaptHeightToChildren: boolean;
|
|
24
|
+
/** @hidden */
|
|
25
|
+
protected _renderToIntermediateTexture: boolean;
|
|
26
|
+
/** @hidden */
|
|
27
|
+
protected _intermediateTexture: Nullable<DynamicTexture>;
|
|
28
|
+
/** Gets or sets boolean indicating if children should be rendered to an intermediate texture rather than directly to host, useful for alpha blending */
|
|
29
|
+
get renderToIntermediateTexture(): boolean;
|
|
30
|
+
set renderToIntermediateTexture(value: boolean);
|
|
22
31
|
/**
|
|
23
32
|
* Gets or sets a boolean indicating that layout cycle errors should be displayed on the console
|
|
24
33
|
*/
|
|
@@ -38,6 +47,8 @@ export declare class Container extends Control {
|
|
|
38
47
|
set background(value: string);
|
|
39
48
|
/** Gets the list of children */
|
|
40
49
|
get children(): Control[];
|
|
50
|
+
get isReadOnly(): boolean;
|
|
51
|
+
set isReadOnly(value: boolean);
|
|
41
52
|
/**
|
|
42
53
|
* Creates a new Container
|
|
43
54
|
* @param name defines the name of the container
|
|
@@ -90,23 +101,23 @@ export declare class Container extends Control {
|
|
|
90
101
|
/** @hidden */
|
|
91
102
|
_markAllAsDirty(): void;
|
|
92
103
|
/** @hidden */
|
|
93
|
-
protected _localDraw(context:
|
|
104
|
+
protected _localDraw(context: ICanvasRenderingContext): void;
|
|
94
105
|
/** @hidden */
|
|
95
106
|
_link(host: AdvancedDynamicTexture): void;
|
|
96
107
|
/** @hidden */
|
|
97
108
|
protected _beforeLayout(): void;
|
|
98
109
|
/** @hidden */
|
|
99
|
-
protected _processMeasures(parentMeasure: Measure, context:
|
|
110
|
+
protected _processMeasures(parentMeasure: Measure, context: ICanvasRenderingContext): void;
|
|
100
111
|
/** @hidden */
|
|
101
|
-
_layout(parentMeasure: Measure, context:
|
|
112
|
+
_layout(parentMeasure: Measure, context: ICanvasRenderingContext): boolean;
|
|
102
113
|
protected _postMeasure(): void;
|
|
103
114
|
/** @hidden */
|
|
104
|
-
_draw(context:
|
|
115
|
+
_draw(context: ICanvasRenderingContext, invalidatedRectangle?: Measure): void;
|
|
105
116
|
getDescendantsToRef(results: Control[], directDescendantsOnly?: boolean, predicate?: (control: Control) => boolean): void;
|
|
106
117
|
/** @hidden */
|
|
107
118
|
_processPicking(x: number, y: number, pi: PointerInfoBase, type: number, pointerId: number, buttonIndex: number, deltaX?: number, deltaY?: number): boolean;
|
|
108
119
|
/** @hidden */
|
|
109
|
-
protected _additionalProcessing(parentMeasure: Measure, context:
|
|
120
|
+
protected _additionalProcessing(parentMeasure: Measure, context: ICanvasRenderingContext): void;
|
|
110
121
|
/**
|
|
111
122
|
* Serializes the current control
|
|
112
123
|
* @param serializationObject defined the JSON serialized object
|
package/2D/controls/container.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { __decorate, __extends } from "tslib";
|
|
2
|
-
import { Logger } from "@babylonjs/core/Misc/logger";
|
|
3
|
-
import { Control } from "./control";
|
|
4
|
-
import { Measure } from "../measure";
|
|
5
|
-
import {
|
|
6
|
-
import { serialize } from '@babylonjs/core/Misc/decorators';
|
|
2
|
+
import { Logger } from "@babylonjs/core/Misc/logger.js";
|
|
3
|
+
import { Control } from "./control.js";
|
|
4
|
+
import { Measure } from "../measure.js";
|
|
5
|
+
import { RegisterClass } from '@babylonjs/core/Misc/typeStore.js';
|
|
6
|
+
import { serialize } from '@babylonjs/core/Misc/decorators.js';
|
|
7
|
+
import { DynamicTexture } from "@babylonjs/core/Materials/Textures/dynamicTexture.js";
|
|
8
|
+
import { Texture } from "@babylonjs/core/Materials/Textures/texture.js";
|
|
9
|
+
import { Constants } from '@babylonjs/core/Engines/constants.js';
|
|
7
10
|
/**
|
|
8
11
|
* Root class for 2D containers
|
|
9
12
|
* @see https://doc.babylonjs.com/how_to/gui#containers
|
|
@@ -27,6 +30,10 @@ var Container = /** @class */ (function (_super) {
|
|
|
27
30
|
_this._adaptWidthToChildren = false;
|
|
28
31
|
/** @hidden */
|
|
29
32
|
_this._adaptHeightToChildren = false;
|
|
33
|
+
/** @hidden */
|
|
34
|
+
_this._renderToIntermediateTexture = false;
|
|
35
|
+
/** @hidden */
|
|
36
|
+
_this._intermediateTexture = null;
|
|
30
37
|
/**
|
|
31
38
|
* Gets or sets a boolean indicating that layout cycle errors should be displayed on the console
|
|
32
39
|
*/
|
|
@@ -37,6 +44,21 @@ var Container = /** @class */ (function (_super) {
|
|
|
37
44
|
_this.maxLayoutCycle = 3;
|
|
38
45
|
return _this;
|
|
39
46
|
}
|
|
47
|
+
Object.defineProperty(Container.prototype, "renderToIntermediateTexture", {
|
|
48
|
+
/** Gets or sets boolean indicating if children should be rendered to an intermediate texture rather than directly to host, useful for alpha blending */
|
|
49
|
+
get: function () {
|
|
50
|
+
return this._renderToIntermediateTexture;
|
|
51
|
+
},
|
|
52
|
+
set: function (value) {
|
|
53
|
+
if (this._renderToIntermediateTexture === value) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
this._renderToIntermediateTexture = value;
|
|
57
|
+
this._markAsDirty();
|
|
58
|
+
},
|
|
59
|
+
enumerable: false,
|
|
60
|
+
configurable: true
|
|
61
|
+
});
|
|
40
62
|
Object.defineProperty(Container.prototype, "adaptHeightToChildren", {
|
|
41
63
|
/** Gets or sets a boolean indicating if the container should try to adapt to its children height */
|
|
42
64
|
get: function () {
|
|
@@ -96,6 +118,20 @@ var Container = /** @class */ (function (_super) {
|
|
|
96
118
|
enumerable: false,
|
|
97
119
|
configurable: true
|
|
98
120
|
});
|
|
121
|
+
Object.defineProperty(Container.prototype, "isReadOnly", {
|
|
122
|
+
get: function () {
|
|
123
|
+
return this._isReadOnly;
|
|
124
|
+
},
|
|
125
|
+
set: function (value) {
|
|
126
|
+
this._isReadOnly = value;
|
|
127
|
+
for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
|
|
128
|
+
var child = _a[_i];
|
|
129
|
+
child.isReadOnly = value;
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
enumerable: false,
|
|
133
|
+
configurable: true
|
|
134
|
+
});
|
|
99
135
|
Container.prototype._getTypeName = function () {
|
|
100
136
|
return "Container";
|
|
101
137
|
};
|
|
@@ -263,10 +299,24 @@ var Container = /** @class */ (function (_super) {
|
|
|
263
299
|
if (this._isDirty || !this._cachedParentMeasure.isEqualsTo(parentMeasure)) {
|
|
264
300
|
_super.prototype._processMeasures.call(this, parentMeasure, context);
|
|
265
301
|
this._evaluateClippingState(parentMeasure);
|
|
302
|
+
if (this._renderToIntermediateTexture) {
|
|
303
|
+
if (this._intermediateTexture && this._host.getScene() != this._intermediateTexture.getScene()) {
|
|
304
|
+
this._intermediateTexture.dispose();
|
|
305
|
+
this._intermediateTexture = null;
|
|
306
|
+
}
|
|
307
|
+
if (!this._intermediateTexture) {
|
|
308
|
+
this._intermediateTexture = new DynamicTexture('', { width: this._currentMeasure.width, height: this._currentMeasure.height }, this._host.getScene(), false, Texture.NEAREST_SAMPLINGMODE, Constants.TEXTUREFORMAT_RGBA, false);
|
|
309
|
+
this._intermediateTexture.hasAlpha = true;
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
this._intermediateTexture.scaleTo(this._currentMeasure.width, this._currentMeasure.height);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
266
315
|
}
|
|
267
316
|
};
|
|
268
317
|
/** @hidden */
|
|
269
318
|
Container.prototype._layout = function (parentMeasure, context) {
|
|
319
|
+
var _a, _b;
|
|
270
320
|
if (!this.isDirty && (!this.isVisible || this.notRenderable)) {
|
|
271
321
|
return false;
|
|
272
322
|
}
|
|
@@ -284,21 +334,22 @@ var Container = /** @class */ (function (_super) {
|
|
|
284
334
|
this._rebuildLayout = false;
|
|
285
335
|
this._processMeasures(parentMeasure, context);
|
|
286
336
|
if (!this._isClipped) {
|
|
287
|
-
for (var _i = 0,
|
|
288
|
-
var child =
|
|
337
|
+
for (var _i = 0, _c = this._children; _i < _c.length; _i++) {
|
|
338
|
+
var child = _c[_i];
|
|
289
339
|
child._tempParentMeasure.copyFrom(this._measureForChildren);
|
|
290
340
|
if (child._layout(this._measureForChildren, context)) {
|
|
291
341
|
if (this.adaptWidthToChildren && child._width.isPixel) {
|
|
292
|
-
computedWidth = Math.max(computedWidth, child._currentMeasure.width + child.
|
|
342
|
+
computedWidth = Math.max(computedWidth, child._currentMeasure.width + child._paddingLeftInPixels + child._paddingRightInPixels);
|
|
293
343
|
}
|
|
294
344
|
if (this.adaptHeightToChildren && child._height.isPixel) {
|
|
295
|
-
computedHeight = Math.max(computedHeight, child._currentMeasure.height + child.
|
|
345
|
+
computedHeight = Math.max(computedHeight, child._currentMeasure.height + child._paddingTopInPixels + child._paddingBottomInPixels);
|
|
296
346
|
}
|
|
297
347
|
}
|
|
298
348
|
}
|
|
299
349
|
if (this.adaptWidthToChildren && computedWidth >= 0) {
|
|
300
350
|
computedWidth += this.paddingLeftInPixels + this.paddingRightInPixels;
|
|
301
351
|
if (this.width !== computedWidth + "px") {
|
|
352
|
+
(_a = this.parent) === null || _a === void 0 ? void 0 : _a._markAsDirty();
|
|
302
353
|
this.width = computedWidth + "px";
|
|
303
354
|
this._rebuildLayout = true;
|
|
304
355
|
}
|
|
@@ -306,6 +357,7 @@ var Container = /** @class */ (function (_super) {
|
|
|
306
357
|
if (this.adaptHeightToChildren && computedHeight >= 0) {
|
|
307
358
|
computedHeight += this.paddingTopInPixels + this.paddingBottomInPixels;
|
|
308
359
|
if (this.height !== computedHeight + "px") {
|
|
360
|
+
(_b = this.parent) === null || _b === void 0 ? void 0 : _b._markAsDirty();
|
|
309
361
|
this.height = computedHeight + "px";
|
|
310
362
|
this._rebuildLayout = true;
|
|
311
363
|
}
|
|
@@ -329,9 +381,22 @@ var Container = /** @class */ (function (_super) {
|
|
|
329
381
|
};
|
|
330
382
|
/** @hidden */
|
|
331
383
|
Container.prototype._draw = function (context, invalidatedRectangle) {
|
|
332
|
-
this.
|
|
384
|
+
var renderToIntermediateTextureThisDraw = this._renderToIntermediateTexture && this._intermediateTexture;
|
|
385
|
+
var contextToDrawTo = renderToIntermediateTextureThisDraw ? this._intermediateTexture.getContext() : context;
|
|
386
|
+
if (renderToIntermediateTextureThisDraw) {
|
|
387
|
+
contextToDrawTo.save();
|
|
388
|
+
contextToDrawTo.translate(-this._currentMeasure.left, -this._currentMeasure.top);
|
|
389
|
+
if (invalidatedRectangle) {
|
|
390
|
+
contextToDrawTo.clearRect(invalidatedRectangle.left, invalidatedRectangle.top, invalidatedRectangle.width, invalidatedRectangle.height);
|
|
391
|
+
}
|
|
392
|
+
else {
|
|
393
|
+
contextToDrawTo.clearRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
this._localDraw(contextToDrawTo);
|
|
397
|
+
context.save();
|
|
333
398
|
if (this.clipChildren) {
|
|
334
|
-
this._clipForChildren(
|
|
399
|
+
this._clipForChildren(contextToDrawTo);
|
|
335
400
|
}
|
|
336
401
|
for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
|
|
337
402
|
var child = _a[_i];
|
|
@@ -341,8 +406,16 @@ var Container = /** @class */ (function (_super) {
|
|
|
341
406
|
continue;
|
|
342
407
|
}
|
|
343
408
|
}
|
|
344
|
-
child._render(
|
|
409
|
+
child._render(contextToDrawTo, invalidatedRectangle);
|
|
410
|
+
}
|
|
411
|
+
if (renderToIntermediateTextureThisDraw) {
|
|
412
|
+
contextToDrawTo.restore();
|
|
413
|
+
context.save();
|
|
414
|
+
context.globalAlpha = this.alpha;
|
|
415
|
+
context.drawImage(contextToDrawTo.canvas, this._currentMeasure.left, this._currentMeasure.top);
|
|
416
|
+
context.restore();
|
|
345
417
|
}
|
|
418
|
+
context.restore();
|
|
346
419
|
};
|
|
347
420
|
Container.prototype.getDescendantsToRef = function (results, directDescendantsOnly, predicate) {
|
|
348
421
|
if (directDescendantsOnly === void 0) { directDescendantsOnly = false; }
|
|
@@ -406,10 +479,12 @@ var Container = /** @class */ (function (_super) {
|
|
|
406
479
|
};
|
|
407
480
|
/** Releases associated resources */
|
|
408
481
|
Container.prototype.dispose = function () {
|
|
482
|
+
var _a;
|
|
409
483
|
_super.prototype.dispose.call(this);
|
|
410
484
|
for (var index = this.children.length - 1; index >= 0; index--) {
|
|
411
485
|
this.children[index].dispose();
|
|
412
486
|
}
|
|
487
|
+
(_a = this._intermediateTexture) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
413
488
|
};
|
|
414
489
|
/** @hidden */
|
|
415
490
|
Container.prototype._parseFromContent = function (serializedObject, host) {
|
|
@@ -423,6 +498,9 @@ var Container = /** @class */ (function (_super) {
|
|
|
423
498
|
this.addControl(Control.Parse(childData, host));
|
|
424
499
|
}
|
|
425
500
|
};
|
|
501
|
+
__decorate([
|
|
502
|
+
serialize()
|
|
503
|
+
], Container.prototype, "renderToIntermediateTexture", null);
|
|
426
504
|
__decorate([
|
|
427
505
|
serialize()
|
|
428
506
|
], Container.prototype, "maxLayoutCycle", void 0);
|
|
@@ -438,5 +516,5 @@ var Container = /** @class */ (function (_super) {
|
|
|
438
516
|
return Container;
|
|
439
517
|
}(Control));
|
|
440
518
|
export { Container };
|
|
441
|
-
|
|
519
|
+
RegisterClass("BABYLON.GUI.Container", Container);
|
|
442
520
|
//# sourceMappingURL=container.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/2D/controls/container.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { Logger } from \"@babylonjs/core/Misc/logger\";\r\n\r\nimport { Control } from \"./control\";\r\nimport { Measure } from \"../measure\";\r\nimport { AdvancedDynamicTexture } from \"../advancedDynamicTexture\";\r\nimport { _TypeStore } from '@babylonjs/core/Misc/typeStore';\r\nimport { PointerInfoBase } from '@babylonjs/core/Events/pointerEvents';\r\nimport { serialize } from '@babylonjs/core/Misc/decorators';\r\n\r\n/**\r\n * Root class for 2D containers\r\n * @see https://doc.babylonjs.com/how_to/gui#containers\r\n */\r\nexport class Container extends Control {\r\n /** @hidden */\r\n public _children = new Array<Control>();\r\n /** @hidden */\r\n protected _measureForChildren = Measure.Empty();\r\n /** @hidden */\r\n protected _background = \"\";\r\n /** @hidden */\r\n protected _adaptWidthToChildren = false;\r\n /** @hidden */\r\n protected _adaptHeightToChildren = false;\r\n\r\n /**\r\n * Gets or sets a boolean indicating that layout cycle errors should be displayed on the console\r\n */\r\n public logLayoutCycleErrors = false;\r\n\r\n /**\r\n * Gets or sets the number of layout cycles (a change involved by a control while evaluating the layout) allowed\r\n */\r\n @serialize()\r\n public maxLayoutCycle = 3;\r\n\r\n /** Gets or sets a boolean indicating if the container should try to adapt to its children height */\r\n @serialize()\r\n public get adaptHeightToChildren(): boolean {\r\n return this._adaptHeightToChildren;\r\n }\r\n\r\n public set adaptHeightToChildren(value: boolean) {\r\n if (this._adaptHeightToChildren === value) {\r\n return;\r\n }\r\n\r\n this._adaptHeightToChildren = value;\r\n\r\n if (value) {\r\n this.height = \"100%\";\r\n }\r\n\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the container should try to adapt to its children width */\r\n @serialize()\r\n public get adaptWidthToChildren(): boolean {\r\n return this._adaptWidthToChildren;\r\n }\r\n\r\n public set adaptWidthToChildren(value: boolean) {\r\n if (this._adaptWidthToChildren === value) {\r\n return;\r\n }\r\n\r\n this._adaptWidthToChildren = value;\r\n\r\n if (value) {\r\n this.width = \"100%\";\r\n }\r\n\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets background color */\r\n @serialize()\r\n public get background(): string {\r\n return this._background;\r\n }\r\n\r\n public set background(value: string) {\r\n if (this._background === value) {\r\n return;\r\n }\r\n\r\n this._background = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets the list of children */\r\n public get children(): Control[] {\r\n return this._children;\r\n }\r\n\r\n /**\r\n * Creates a new Container\r\n * @param name defines the name of the container\r\n */\r\n constructor(public name?: string) {\r\n super(name);\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"Container\";\r\n }\r\n\r\n public _flagDescendantsAsMatrixDirty(): void {\r\n for (var child of this.children) {\r\n child._markMatrixAsDirty();\r\n }\r\n }\r\n\r\n /**\r\n * Gets a child using its name\r\n * @param name defines the child name to look for\r\n * @returns the child control if found\r\n */\r\n public getChildByName(name: string): Nullable<Control> {\r\n for (var child of this.children) {\r\n if (child.name === name) {\r\n return child;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets a child using its type and its name\r\n * @param name defines the child name to look for\r\n * @param type defines the child type to look for\r\n * @returns the child control if found\r\n */\r\n public getChildByType(name: string, type: string): Nullable<Control> {\r\n for (var child of this.children) {\r\n if (child.typeName === type) {\r\n return child;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Search for a specific control in children\r\n * @param control defines the control to look for\r\n * @returns true if the control is in child list\r\n */\r\n public containsControl(control: Control): boolean {\r\n return this.children.indexOf(control) !== -1;\r\n }\r\n\r\n /**\r\n * Adds a new control to the current container\r\n * @param control defines the control to add\r\n * @returns the current container\r\n */\r\n public addControl(control: Nullable<Control>): Container {\r\n if (!control) {\r\n return this;\r\n }\r\n\r\n var index = this._children.indexOf(control);\r\n\r\n if (index !== -1) {\r\n return this;\r\n }\r\n control._link(this._host);\r\n\r\n control._markAllAsDirty();\r\n\r\n this._reOrderControl(control);\r\n\r\n this._markAsDirty();\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes all controls from the current container\r\n * @returns the current container\r\n */\r\n public clearControls(): Container {\r\n let children = this.children.slice();\r\n\r\n for (var child of children) {\r\n this.removeControl(child);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a control from the current container\r\n * @param control defines the control to remove\r\n * @returns the current container\r\n */\r\n public removeControl(control: Control): Container {\r\n var index = this._children.indexOf(control);\r\n\r\n if (index !== -1) {\r\n this._children.splice(index, 1);\r\n\r\n control.parent = null;\r\n }\r\n\r\n control.linkWithMesh(null);\r\n\r\n if (this._host) {\r\n this._host._cleanControlAfterRemoval(control);\r\n }\r\n\r\n this._markAsDirty();\r\n return this;\r\n }\r\n\r\n /** @hidden */\r\n public _reOrderControl(control: Control): void {\r\n this.removeControl(control);\r\n\r\n let wasAdded = false;\r\n for (var index = 0; index < this._children.length; index++) {\r\n if (this._children[index].zIndex > control.zIndex) {\r\n this._children.splice(index, 0, control);\r\n wasAdded = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!wasAdded) {\r\n this._children.push(control);\r\n }\r\n\r\n control.parent = this;\r\n\r\n this._markAsDirty();\r\n }\r\n\r\n /** @hidden */\r\n public _offsetLeft(offset: number) {\r\n super._offsetLeft(offset);\r\n\r\n for (var child of this._children) {\r\n child._offsetLeft(offset);\r\n }\r\n }\r\n\r\n /** @hidden */\r\n public _offsetTop(offset: number) {\r\n super._offsetTop(offset);\r\n\r\n for (var child of this._children) {\r\n child._offsetTop(offset);\r\n }\r\n }\r\n\r\n /** @hidden */\r\n public _markAllAsDirty(): void {\r\n super._markAllAsDirty();\r\n\r\n for (var index = 0; index < this._children.length; index++) {\r\n this._children[index]._markAllAsDirty();\r\n }\r\n }\r\n\r\n /** @hidden */\r\n protected _localDraw(context: CanvasRenderingContext2D): void {\r\n if (this._background) {\r\n context.save();\r\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\r\n context.shadowColor = this.shadowColor;\r\n context.shadowBlur = this.shadowBlur;\r\n context.shadowOffsetX = this.shadowOffsetX;\r\n context.shadowOffsetY = this.shadowOffsetY;\r\n }\r\n\r\n context.fillStyle = this._background;\r\n context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\r\n context.restore();\r\n }\r\n }\r\n\r\n /** @hidden */\r\n public _link(host: AdvancedDynamicTexture): void {\r\n super._link(host);\r\n\r\n for (var child of this._children) {\r\n child._link(host);\r\n }\r\n }\r\n\r\n /** @hidden */\r\n protected _beforeLayout() {\r\n // Do nothing\r\n }\r\n\r\n /** @hidden */\r\n protected _processMeasures(parentMeasure: Measure, context: CanvasRenderingContext2D): void {\r\n if (this._isDirty || !this._cachedParentMeasure.isEqualsTo(parentMeasure)) {\r\n super._processMeasures(parentMeasure, context);\r\n this._evaluateClippingState(parentMeasure);\r\n }\r\n }\r\n\r\n /** @hidden */\r\n public _layout(parentMeasure: Measure, context: CanvasRenderingContext2D): boolean {\r\n if (!this.isDirty && (!this.isVisible || this.notRenderable)) {\r\n return false;\r\n }\r\n\r\n this.host._numLayoutCalls++;\r\n\r\n if (this._isDirty) {\r\n this._currentMeasure.transformToRef(this._transformMatrix, this._prevCurrentMeasureTransformedIntoGlobalSpace);\r\n }\r\n\r\n let rebuildCount = 0;\r\n\r\n context.save();\r\n\r\n this._applyStates(context);\r\n\r\n this._beforeLayout();\r\n\r\n do {\r\n let computedWidth = -1;\r\n let computedHeight = -1;\r\n this._rebuildLayout = false;\r\n this._processMeasures(parentMeasure, context);\r\n\r\n if (!this._isClipped) {\r\n for (var child of this._children) {\r\n child._tempParentMeasure.copyFrom(this._measureForChildren);\r\n\r\n if (child._layout(this._measureForChildren, context)) {\r\n\r\n if (this.adaptWidthToChildren && child._width.isPixel) {\r\n computedWidth = Math.max(computedWidth, child._currentMeasure.width + child.paddingLeftInPixels + child.paddingRightInPixels);\r\n }\r\n if (this.adaptHeightToChildren && child._height.isPixel) {\r\n computedHeight = Math.max(computedHeight, child._currentMeasure.height + child.paddingTopInPixels + child.paddingBottomInPixels);\r\n }\r\n }\r\n }\r\n\r\n if (this.adaptWidthToChildren && computedWidth >= 0) {\r\n computedWidth += this.paddingLeftInPixels + this.paddingRightInPixels;\r\n if (this.width !== computedWidth + \"px\") {\r\n this.width = computedWidth + \"px\";\r\n this._rebuildLayout = true;\r\n }\r\n }\r\n if (this.adaptHeightToChildren && computedHeight >= 0) {\r\n computedHeight += this.paddingTopInPixels + this.paddingBottomInPixels;\r\n if (this.height !== computedHeight + \"px\") {\r\n this.height = computedHeight + \"px\";\r\n this._rebuildLayout = true;\r\n }\r\n }\r\n\r\n this._postMeasure();\r\n }\r\n rebuildCount++;\r\n }\r\n while (this._rebuildLayout && rebuildCount < this.maxLayoutCycle);\r\n\r\n if (rebuildCount >= 3 && this.logLayoutCycleErrors) {\r\n Logger.Error(`Layout cycle detected in GUI (Container name=${this.name}, uniqueId=${this.uniqueId})`);\r\n }\r\n\r\n context.restore();\r\n\r\n if (this._isDirty) {\r\n this.invalidateRect();\r\n\r\n this._isDirty = false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n protected _postMeasure() {\r\n // Do nothing by default\r\n }\r\n\r\n /** @hidden */\r\n public _draw(context: CanvasRenderingContext2D, invalidatedRectangle?: Measure): void {\r\n\r\n this._localDraw(context);\r\n\r\n if (this.clipChildren) {\r\n this._clipForChildren(context);\r\n }\r\n\r\n for (var child of this._children) {\r\n // Only redraw parts of the screen that are invalidated\r\n if (invalidatedRectangle) {\r\n if (!child._intersectsRect(invalidatedRectangle)) {\r\n continue;\r\n }\r\n }\r\n child._render(context, invalidatedRectangle);\r\n }\r\n }\r\n\r\n public getDescendantsToRef(results: Control[], directDescendantsOnly: boolean = false, predicate?: (control: Control) => boolean): void {\r\n if (!this.children) {\r\n return;\r\n }\r\n\r\n for (var index = 0; index < this.children.length; index++) {\r\n var item = this.children[index];\r\n\r\n if (!predicate || predicate(item)) {\r\n results.push(item);\r\n }\r\n\r\n if (!directDescendantsOnly) {\r\n item.getDescendantsToRef(results, false, predicate);\r\n }\r\n }\r\n }\r\n\r\n /** @hidden */\r\n public _processPicking(x: number, y: number, pi: PointerInfoBase, type: number, pointerId: number, buttonIndex: number, deltaX?: number, deltaY?: number): boolean {\r\n if (!this._isEnabled || !this.isVisible || this.notRenderable) {\r\n return false;\r\n }\r\n\r\n if (!super.contains(x, y)) {\r\n return false;\r\n }\r\n\r\n // Checking backwards to pick closest first\r\n for (var index = this._children.length - 1; index >= 0; index--) {\r\n var child = this._children[index];\r\n if (child._processPicking(x, y, pi, type, pointerId, buttonIndex, deltaX, deltaY)) {\r\n if (child.hoverCursor) {\r\n this._host._changeCursor(child.hoverCursor);\r\n }\r\n return true;\r\n }\r\n }\r\n\r\n if (!this.isHitTestVisible) {\r\n return false;\r\n }\r\n\r\n return this._processObservables(type, x, y, pi, pointerId, buttonIndex, deltaX, deltaY);\r\n }\r\n\r\n /** @hidden */\r\n protected _additionalProcessing(parentMeasure: Measure, context: CanvasRenderingContext2D): void {\r\n super._additionalProcessing(parentMeasure, context);\r\n\r\n this._measureForChildren.copyFrom(this._currentMeasure);\r\n }\r\n\r\n /**\r\n * Serializes the current control\r\n * @param serializationObject defined the JSON serialized object\r\n */\r\n public serialize(serializationObject: any) {\r\n super.serialize(serializationObject);\r\n if (!this.children.length) {\r\n return;\r\n }\r\n\r\n serializationObject.children = [];\r\n\r\n for (var child of this.children) {\r\n let childSerializationObject = {};\r\n child.serialize(childSerializationObject);\r\n serializationObject.children.push(childSerializationObject);\r\n }\r\n }\r\n\r\n /** Releases associated resources */\r\n public dispose() {\r\n super.dispose();\r\n\r\n for (var index = this.children.length - 1; index >= 0; index--) {\r\n this.children[index].dispose();\r\n }\r\n }\r\n\r\n /** @hidden */\r\n public _parseFromContent(serializedObject: any, host: AdvancedDynamicTexture) {\r\n super._parseFromContent(serializedObject, host);\r\n this._link(host);\r\n\r\n if (!serializedObject.children) {\r\n return;\r\n }\r\n\r\n for (var childData of serializedObject.children) {\r\n this.addControl(Control.Parse(childData, host));\r\n }\r\n }\r\n}\r\n_TypeStore.RegisteredTypes[\"BABYLON.GUI.Container\"] = Container;"]}
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/2D/controls/container.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { Logger } from \"@babylonjs/core/Misc/logger\";\r\n\r\nimport { Control } from \"./control\";\r\nimport { Measure } from \"../measure\";\r\nimport { AdvancedDynamicTexture } from \"../advancedDynamicTexture\";\r\nimport { RegisterClass } from '@babylonjs/core/Misc/typeStore';\r\nimport { PointerInfoBase } from '@babylonjs/core/Events/pointerEvents';\r\nimport { serialize } from '@babylonjs/core/Misc/decorators';\r\nimport { ICanvasRenderingContext } from '@babylonjs/core/Engines/ICanvas';\r\nimport { DynamicTexture } from \"@babylonjs/core/Materials/Textures/dynamicTexture\";\r\nimport { Texture } from \"@babylonjs/core/Materials/Textures/texture\";\r\nimport { Constants } from '@babylonjs/core/Engines/constants';\r\n\r\n/**\r\n * Root class for 2D containers\r\n * @see https://doc.babylonjs.com/how_to/gui#containers\r\n */\r\nexport class Container extends Control {\r\n /** @hidden */\r\n public _children = new Array<Control>();\r\n /** @hidden */\r\n protected _measureForChildren = Measure.Empty();\r\n /** @hidden */\r\n protected _background = \"\";\r\n /** @hidden */\r\n protected _adaptWidthToChildren = false;\r\n /** @hidden */\r\n protected _adaptHeightToChildren = false;\r\n /** @hidden */\r\n protected _renderToIntermediateTexture: boolean = false;\r\n /** @hidden */\r\n protected _intermediateTexture: Nullable<DynamicTexture> = null;\r\n\r\n /** Gets or sets boolean indicating if children should be rendered to an intermediate texture rather than directly to host, useful for alpha blending */\r\n @serialize()\r\n public get renderToIntermediateTexture(): boolean {\r\n return this._renderToIntermediateTexture;\r\n }\r\n public set renderToIntermediateTexture(value: boolean) {\r\n if (this._renderToIntermediateTexture === value) {\r\n return;\r\n }\r\n this._renderToIntermediateTexture = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating that layout cycle errors should be displayed on the console\r\n */\r\n public logLayoutCycleErrors = false;\r\n\r\n /**\r\n * Gets or sets the number of layout cycles (a change involved by a control while evaluating the layout) allowed\r\n */\r\n @serialize()\r\n public maxLayoutCycle = 3;\r\n\r\n /** Gets or sets a boolean indicating if the container should try to adapt to its children height */\r\n @serialize()\r\n public get adaptHeightToChildren(): boolean {\r\n return this._adaptHeightToChildren;\r\n }\r\n\r\n public set adaptHeightToChildren(value: boolean) {\r\n if (this._adaptHeightToChildren === value) {\r\n return;\r\n }\r\n\r\n this._adaptHeightToChildren = value;\r\n\r\n if (value) {\r\n this.height = \"100%\";\r\n }\r\n\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the container should try to adapt to its children width */\r\n @serialize()\r\n public get adaptWidthToChildren(): boolean {\r\n return this._adaptWidthToChildren;\r\n }\r\n\r\n public set adaptWidthToChildren(value: boolean) {\r\n if (this._adaptWidthToChildren === value) {\r\n return;\r\n }\r\n\r\n this._adaptWidthToChildren = value;\r\n\r\n if (value) {\r\n this.width = \"100%\";\r\n }\r\n\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets background color */\r\n @serialize()\r\n public get background(): string {\r\n return this._background;\r\n }\r\n\r\n public set background(value: string) {\r\n if (this._background === value) {\r\n return;\r\n }\r\n\r\n this._background = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets the list of children */\r\n public get children(): Control[] {\r\n return this._children;\r\n }\r\n\r\n public get isReadOnly() {\r\n return this._isReadOnly;\r\n }\r\n\r\n public set isReadOnly(value: boolean) {\r\n this._isReadOnly = value;\r\n\r\n for (const child of this._children) {\r\n child.isReadOnly = value;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new Container\r\n * @param name defines the name of the container\r\n */\r\n constructor(public name?: string) {\r\n super(name);\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"Container\";\r\n }\r\n\r\n public _flagDescendantsAsMatrixDirty(): void {\r\n for (var child of this.children) {\r\n child._markMatrixAsDirty();\r\n }\r\n }\r\n\r\n /**\r\n * Gets a child using its name\r\n * @param name defines the child name to look for\r\n * @returns the child control if found\r\n */\r\n public getChildByName(name: string): Nullable<Control> {\r\n for (var child of this.children) {\r\n if (child.name === name) {\r\n return child;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets a child using its type and its name\r\n * @param name defines the child name to look for\r\n * @param type defines the child type to look for\r\n * @returns the child control if found\r\n */\r\n public getChildByType(name: string, type: string): Nullable<Control> {\r\n for (var child of this.children) {\r\n if (child.typeName === type) {\r\n return child;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Search for a specific control in children\r\n * @param control defines the control to look for\r\n * @returns true if the control is in child list\r\n */\r\n public containsControl(control: Control): boolean {\r\n return this.children.indexOf(control) !== -1;\r\n }\r\n\r\n /**\r\n * Adds a new control to the current container\r\n * @param control defines the control to add\r\n * @returns the current container\r\n */\r\n public addControl(control: Nullable<Control>): Container {\r\n if (!control) {\r\n return this;\r\n }\r\n\r\n var index = this._children.indexOf(control);\r\n\r\n if (index !== -1) {\r\n return this;\r\n }\r\n control._link(this._host);\r\n\r\n control._markAllAsDirty();\r\n\r\n this._reOrderControl(control);\r\n\r\n this._markAsDirty();\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes all controls from the current container\r\n * @returns the current container\r\n */\r\n public clearControls(): Container {\r\n let children = this.children.slice();\r\n\r\n for (var child of children) {\r\n this.removeControl(child);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a control from the current container\r\n * @param control defines the control to remove\r\n * @returns the current container\r\n */\r\n public removeControl(control: Control): Container {\r\n var index = this._children.indexOf(control);\r\n\r\n if (index !== -1) {\r\n this._children.splice(index, 1);\r\n\r\n control.parent = null;\r\n }\r\n\r\n control.linkWithMesh(null);\r\n\r\n if (this._host) {\r\n this._host._cleanControlAfterRemoval(control);\r\n }\r\n\r\n this._markAsDirty();\r\n return this;\r\n }\r\n\r\n /** @hidden */\r\n public _reOrderControl(control: Control): void {\r\n this.removeControl(control);\r\n\r\n let wasAdded = false;\r\n for (var index = 0; index < this._children.length; index++) {\r\n if (this._children[index].zIndex > control.zIndex) {\r\n this._children.splice(index, 0, control);\r\n wasAdded = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!wasAdded) {\r\n this._children.push(control);\r\n }\r\n\r\n control.parent = this;\r\n\r\n this._markAsDirty();\r\n }\r\n\r\n /** @hidden */\r\n public _offsetLeft(offset: number) {\r\n super._offsetLeft(offset);\r\n\r\n for (var child of this._children) {\r\n child._offsetLeft(offset);\r\n }\r\n }\r\n\r\n /** @hidden */\r\n public _offsetTop(offset: number) {\r\n super._offsetTop(offset);\r\n\r\n for (var child of this._children) {\r\n child._offsetTop(offset);\r\n }\r\n }\r\n\r\n /** @hidden */\r\n public _markAllAsDirty(): void {\r\n super._markAllAsDirty();\r\n\r\n for (var index = 0; index < this._children.length; index++) {\r\n this._children[index]._markAllAsDirty();\r\n }\r\n }\r\n\r\n /** @hidden */\r\n protected _localDraw(context: ICanvasRenderingContext): void {\r\n if (this._background) {\r\n context.save();\r\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\r\n context.shadowColor = this.shadowColor;\r\n context.shadowBlur = this.shadowBlur;\r\n context.shadowOffsetX = this.shadowOffsetX;\r\n context.shadowOffsetY = this.shadowOffsetY;\r\n }\r\n\r\n context.fillStyle = this._background;\r\n context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\r\n context.restore();\r\n }\r\n }\r\n\r\n /** @hidden */\r\n public _link(host: AdvancedDynamicTexture): void {\r\n super._link(host);\r\n\r\n for (var child of this._children) {\r\n child._link(host);\r\n }\r\n }\r\n\r\n /** @hidden */\r\n protected _beforeLayout() {\r\n // Do nothing\r\n }\r\n\r\n /** @hidden */\r\n protected _processMeasures(parentMeasure: Measure, context: ICanvasRenderingContext): void {\r\n if (this._isDirty || !this._cachedParentMeasure.isEqualsTo(parentMeasure)) {\r\n super._processMeasures(parentMeasure, context);\r\n this._evaluateClippingState(parentMeasure);\r\n if (this._renderToIntermediateTexture) {\r\n if (this._intermediateTexture && this._host.getScene() != this._intermediateTexture.getScene()) {\r\n this._intermediateTexture.dispose();\r\n this._intermediateTexture = null;\r\n }\r\n if (!this._intermediateTexture) {\r\n this._intermediateTexture = new DynamicTexture('', { width: this._currentMeasure.width, height: this._currentMeasure.height },\r\n this._host.getScene(), false, Texture.NEAREST_SAMPLINGMODE, Constants.TEXTUREFORMAT_RGBA, false);\r\n this._intermediateTexture.hasAlpha = true;\r\n } else {\r\n this._intermediateTexture.scaleTo(this._currentMeasure.width, this._currentMeasure.height);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** @hidden */\r\n public _layout(parentMeasure: Measure, context: ICanvasRenderingContext): boolean {\r\n if (!this.isDirty && (!this.isVisible || this.notRenderable)) {\r\n return false;\r\n }\r\n\r\n this.host._numLayoutCalls++;\r\n\r\n if (this._isDirty) {\r\n this._currentMeasure.transformToRef(this._transformMatrix, this._prevCurrentMeasureTransformedIntoGlobalSpace);\r\n }\r\n\r\n let rebuildCount = 0;\r\n\r\n context.save();\r\n\r\n this._applyStates(context);\r\n\r\n this._beforeLayout();\r\n\r\n do {\r\n let computedWidth = -1;\r\n let computedHeight = -1;\r\n this._rebuildLayout = false;\r\n this._processMeasures(parentMeasure, context);\r\n\r\n if (!this._isClipped) {\r\n for (var child of this._children) {\r\n child._tempParentMeasure.copyFrom(this._measureForChildren);\r\n\r\n if (child._layout(this._measureForChildren, context)) {\r\n\r\n if (this.adaptWidthToChildren && child._width.isPixel) {\r\n computedWidth = Math.max(computedWidth, child._currentMeasure.width + child._paddingLeftInPixels + child._paddingRightInPixels);\r\n }\r\n if (this.adaptHeightToChildren && child._height.isPixel) {\r\n computedHeight = Math.max(computedHeight, child._currentMeasure.height + child._paddingTopInPixels + child._paddingBottomInPixels);\r\n }\r\n }\r\n }\r\n\r\n if (this.adaptWidthToChildren && computedWidth >= 0) {\r\n computedWidth += this.paddingLeftInPixels + this.paddingRightInPixels;\r\n if (this.width !== computedWidth + \"px\") {\r\n this.parent?._markAsDirty();\r\n this.width = computedWidth + \"px\";\r\n this._rebuildLayout = true;\r\n }\r\n }\r\n if (this.adaptHeightToChildren && computedHeight >= 0) {\r\n computedHeight += this.paddingTopInPixels + this.paddingBottomInPixels;\r\n if (this.height !== computedHeight + \"px\") {\r\n this.parent?._markAsDirty();\r\n this.height = computedHeight + \"px\";\r\n this._rebuildLayout = true;\r\n }\r\n }\r\n\r\n this._postMeasure();\r\n }\r\n rebuildCount++;\r\n }\r\n while (this._rebuildLayout && rebuildCount < this.maxLayoutCycle);\r\n\r\n if (rebuildCount >= 3 && this.logLayoutCycleErrors) {\r\n Logger.Error(`Layout cycle detected in GUI (Container name=${this.name}, uniqueId=${this.uniqueId})`);\r\n }\r\n\r\n context.restore();\r\n\r\n if (this._isDirty) {\r\n this.invalidateRect();\r\n\r\n this._isDirty = false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n protected _postMeasure() {\r\n // Do nothing by default\r\n }\r\n\r\n /** @hidden */\r\n public _draw(context: ICanvasRenderingContext, invalidatedRectangle?: Measure): void {\r\n const renderToIntermediateTextureThisDraw = this._renderToIntermediateTexture && this._intermediateTexture;\r\n const contextToDrawTo = renderToIntermediateTextureThisDraw ? (<DynamicTexture>this._intermediateTexture).getContext() : context;\r\n\r\n if (renderToIntermediateTextureThisDraw) {\r\n contextToDrawTo.save();\r\n contextToDrawTo.translate(-this._currentMeasure.left, -this._currentMeasure.top);\r\n if (invalidatedRectangle) {\r\n contextToDrawTo.clearRect(invalidatedRectangle.left, invalidatedRectangle.top, invalidatedRectangle.width, invalidatedRectangle.height);\r\n } else {\r\n contextToDrawTo.clearRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\r\n }\r\n }\r\n\r\n this._localDraw(contextToDrawTo);\r\n\r\n context.save();\r\n\r\n if (this.clipChildren) {\r\n this._clipForChildren(contextToDrawTo);\r\n }\r\n\r\n for (var child of this._children) {\r\n // Only redraw parts of the screen that are invalidated\r\n if (invalidatedRectangle) {\r\n if (!child._intersectsRect(invalidatedRectangle)) {\r\n continue;\r\n }\r\n }\r\n child._render(contextToDrawTo, invalidatedRectangle);\r\n }\r\n\r\n if (renderToIntermediateTextureThisDraw) {\r\n contextToDrawTo.restore();\r\n context.save();\r\n context.globalAlpha = this.alpha;\r\n context.drawImage(contextToDrawTo.canvas, this._currentMeasure.left, this._currentMeasure.top);\r\n context.restore();\r\n }\r\n\r\n context.restore();\r\n }\r\n\r\n public getDescendantsToRef(results: Control[], directDescendantsOnly: boolean = false, predicate?: (control: Control) => boolean): void {\r\n if (!this.children) {\r\n return;\r\n }\r\n\r\n for (var index = 0; index < this.children.length; index++) {\r\n var item = this.children[index];\r\n\r\n if (!predicate || predicate(item)) {\r\n results.push(item);\r\n }\r\n\r\n if (!directDescendantsOnly) {\r\n item.getDescendantsToRef(results, false, predicate);\r\n }\r\n }\r\n }\r\n\r\n /** @hidden */\r\n public _processPicking(x: number, y: number, pi: PointerInfoBase, type: number, pointerId: number, buttonIndex: number, deltaX?: number, deltaY?: number): boolean {\r\n if (!this._isEnabled || !this.isVisible || this.notRenderable) {\r\n return false;\r\n }\r\n\r\n if (!super.contains(x, y)) {\r\n return false;\r\n }\r\n\r\n // Checking backwards to pick closest first\r\n for (var index = this._children.length - 1; index >= 0; index--) {\r\n var child = this._children[index];\r\n if (child._processPicking(x, y, pi, type, pointerId, buttonIndex, deltaX, deltaY)) {\r\n if (child.hoverCursor) {\r\n this._host._changeCursor(child.hoverCursor);\r\n }\r\n return true;\r\n }\r\n }\r\n\r\n if (!this.isHitTestVisible) {\r\n return false;\r\n }\r\n\r\n return this._processObservables(type, x, y, pi, pointerId, buttonIndex, deltaX, deltaY);\r\n }\r\n\r\n /** @hidden */\r\n protected _additionalProcessing(parentMeasure: Measure, context: ICanvasRenderingContext): void {\r\n super._additionalProcessing(parentMeasure, context);\r\n\r\n this._measureForChildren.copyFrom(this._currentMeasure);\r\n }\r\n\r\n /**\r\n * Serializes the current control\r\n * @param serializationObject defined the JSON serialized object\r\n */\r\n public serialize(serializationObject: any) {\r\n super.serialize(serializationObject);\r\n if (!this.children.length) {\r\n return;\r\n }\r\n\r\n serializationObject.children = [];\r\n\r\n for (var child of this.children) {\r\n let childSerializationObject = {};\r\n child.serialize(childSerializationObject);\r\n serializationObject.children.push(childSerializationObject);\r\n }\r\n }\r\n\r\n /** Releases associated resources */\r\n public dispose() {\r\n super.dispose();\r\n\r\n for (var index = this.children.length - 1; index >= 0; index--) {\r\n this.children[index].dispose();\r\n }\r\n this._intermediateTexture?.dispose();\r\n }\r\n\r\n /** @hidden */\r\n public _parseFromContent(serializedObject: any, host: AdvancedDynamicTexture) {\r\n super._parseFromContent(serializedObject, host);\r\n this._link(host);\r\n\r\n if (!serializedObject.children) {\r\n return;\r\n }\r\n\r\n for (var childData of serializedObject.children) {\r\n this.addControl(Control.Parse(childData, host));\r\n }\r\n }\r\n}\r\nRegisterClass(\"BABYLON.GUI.Container\", Container);\r\n"]}
|