@onerjs/core 8.54.1 → 8.54.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/Animations/animatable.core.js.map +1 -1
- package/AudioV2/abstractAudio/abstractSoundSource.d.ts +26 -0
- package/AudioV2/abstractAudio/abstractSoundSource.js.map +1 -1
- package/AudioV2/webAudio/webAudioEngine.js +2 -0
- package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
- package/AudioV2/webAudio/webAudioSoundSource.d.ts +16 -0
- package/AudioV2/webAudio/webAudioSoundSource.js +43 -1
- package/AudioV2/webAudio/webAudioSoundSource.js.map +1 -1
- package/Bones/skeleton.functions.js +1 -1
- package/Bones/skeleton.functions.js.map +1 -1
- package/Cameras/inputMapper.js.map +1 -1
- package/Collisions/gpuPicker.js +7 -6
- package/Collisions/gpuPicker.js.map +1 -1
- package/Debug/physicsViewer.pure.js +1 -1
- package/Debug/physicsViewer.pure.js.map +1 -1
- package/Engines/Extensions/engine.alphaToCoverage.d.ts +6 -0
- package/Engines/Extensions/engine.alphaToCoverage.js +9 -0
- package/Engines/Extensions/engine.alphaToCoverage.js.map +1 -0
- package/Engines/Extensions/engine.alphaToCoverage.pure.d.ts +6 -0
- package/Engines/Extensions/engine.alphaToCoverage.pure.js +54 -0
- package/Engines/Extensions/engine.alphaToCoverage.pure.js.map +1 -0
- package/Engines/Extensions/engine.alphaToCoverage.types.d.ts +21 -0
- package/Engines/Extensions/engine.alphaToCoverage.types.js +2 -0
- package/Engines/Extensions/engine.alphaToCoverage.types.js.map +1 -0
- package/Engines/Extensions/engine.texture2DArrayImageSource.d.ts +6 -0
- package/Engines/Extensions/engine.texture2DArrayImageSource.js +9 -0
- package/Engines/Extensions/engine.texture2DArrayImageSource.js.map +1 -0
- package/Engines/Extensions/engine.texture2DArrayImageSource.pure.d.ts +7 -0
- package/Engines/Extensions/engine.texture2DArrayImageSource.pure.js +40 -0
- package/Engines/Extensions/engine.texture2DArrayImageSource.pure.js.map +1 -0
- package/Engines/Extensions/engine.texture2DArrayImageSource.types.d.ts +21 -0
- package/Engines/Extensions/engine.texture2DArrayImageSource.types.js +2 -0
- package/Engines/Extensions/engine.texture2DArrayImageSource.types.js.map +1 -0
- package/Engines/Extensions/index.d.ts +1 -0
- package/Engines/Extensions/index.js +1 -0
- package/Engines/Extensions/index.js.map +1 -1
- package/Engines/Extensions/pure.d.ts +2 -0
- package/Engines/Extensions/pure.js +2 -0
- package/Engines/Extensions/pure.js.map +1 -1
- package/Engines/Native/nativeHelpers.js +6 -4
- package/Engines/Native/nativeHelpers.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +1 -0
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.d.ts +6 -0
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.js +9 -0
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.js.map +1 -0
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.pure.d.ts +6 -0
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.pure.js +34 -0
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.pure.js.map +1 -0
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.types.d.ts +16 -0
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.types.js +2 -0
- package/Engines/WebGPU/Extensions/engine.alphaToCoverage.types.js.map +1 -0
- package/Engines/WebGPU/Extensions/engine.texture2DArrayImageSource.d.ts +6 -0
- package/Engines/WebGPU/Extensions/engine.texture2DArrayImageSource.js +9 -0
- package/Engines/WebGPU/Extensions/engine.texture2DArrayImageSource.js.map +1 -0
- package/Engines/WebGPU/Extensions/engine.texture2DArrayImageSource.pure.d.ts +7 -0
- package/Engines/WebGPU/Extensions/engine.texture2DArrayImageSource.pure.js +23 -0
- package/Engines/WebGPU/Extensions/engine.texture2DArrayImageSource.pure.js.map +1 -0
- package/Engines/WebGPU/Extensions/index.d.ts +1 -0
- package/Engines/WebGPU/Extensions/index.js +1 -0
- package/Engines/WebGPU/Extensions/index.js.map +1 -1
- package/Engines/WebGPU/Extensions/pure.d.ts +2 -0
- package/Engines/WebGPU/Extensions/pure.js +2 -0
- package/Engines/WebGPU/Extensions/pure.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +0 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/abstractEngine.pure.d.ts +0 -15
- package/Engines/abstractEngine.pure.js +2 -23
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/constants.d.ts +4 -0
- package/Engines/constants.js +4 -0
- package/Engines/constants.js.map +1 -1
- package/Engines/engine.d.ts +32 -2
- package/Engines/engine.js +1 -0
- package/Engines/engine.js.map +1 -1
- package/Engines/engine.pure.js +1 -1
- package/Engines/engine.pure.js.map +1 -1
- package/Engines/thinEngine.pure.d.ts +0 -11
- package/Engines/thinEngine.pure.js +0 -19
- package/Engines/thinEngine.pure.js.map +1 -1
- package/Engines/thinNativeEngine.pure.js +4 -4
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +2 -0
- package/Engines/webgpuEngine.js +2 -0
- package/Engines/webgpuEngine.js.map +1 -1
- package/Engines/webgpuEngine.pure.d.ts +0 -5
- package/Engines/webgpuEngine.pure.js +1 -10
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
- package/Lights/Clustered/clusteredLightContainer.pure.js +6 -0
- package/Lights/Clustered/clusteredLightContainer.pure.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.d.ts +10 -0
- package/Loading/Plugins/babylonFileLoader.js +18 -0
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.pure.js +10 -2
- package/Loading/Plugins/babylonFileLoader.pure.js.map +1 -1
- package/Loading/loadingScreen.pure.js +2 -0
- package/Loading/loadingScreen.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +2 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
- package/Materials/Node/nodeMaterial.pure.d.ts +13 -5
- package/Materials/Node/nodeMaterial.pure.js +20 -2
- package/Materials/Node/nodeMaterial.pure.js.map +1 -1
- package/Materials/Textures/index.d.ts +1 -0
- package/Materials/Textures/index.js +1 -0
- package/Materials/Textures/index.js.map +1 -1
- package/Materials/Textures/ktx2decoderTypes.d.ts +14 -3
- package/Materials/Textures/ktx2decoderTypes.js +2 -0
- package/Materials/Textures/ktx2decoderTypes.js.map +1 -1
- package/Materials/Textures/pure.d.ts +1 -0
- package/Materials/Textures/pure.js +1 -0
- package/Materials/Textures/pure.js.map +1 -1
- package/Materials/Textures/rawTexture2DArray.functions.d.ts +95 -0
- package/Materials/Textures/rawTexture2DArray.functions.js +201 -0
- package/Materials/Textures/rawTexture2DArray.functions.js.map +1 -0
- package/Materials/Textures/renderTargetTexture.pure.js +7 -0
- package/Materials/Textures/renderTargetTexture.pure.js.map +1 -1
- package/Materials/material.pure.d.ts +1 -0
- package/Materials/material.pure.js +1 -0
- package/Materials/material.pure.js.map +1 -1
- package/Meshes/Builders/pure.d.ts +2 -2
- package/Meshes/Builders/pure.js +2 -2
- package/Meshes/Builders/pure.js.map +1 -1
- package/Meshes/Builders/textBuilder.js.map +1 -1
- package/Meshes/Builders/tiledBoxBuilder.d.ts +1 -83
- package/Meshes/Builders/tiledBoxBuilder.js +3 -215
- package/Meshes/Builders/tiledBoxBuilder.js.map +1 -1
- package/Meshes/Builders/tiledBoxBuilder.pure.d.ts +89 -0
- package/Meshes/Builders/tiledBoxBuilder.pure.js +229 -0
- package/Meshes/Builders/tiledBoxBuilder.pure.js.map +1 -0
- package/Meshes/Builders/tiledPlaneBuilder.d.ts +1 -79
- package/Meshes/Builders/tiledPlaneBuilder.js +3 -429
- package/Meshes/Builders/tiledPlaneBuilder.js.map +1 -1
- package/Meshes/Builders/tiledPlaneBuilder.pure.d.ts +85 -0
- package/Meshes/Builders/tiledPlaneBuilder.pure.js +442 -0
- package/Meshes/Builders/tiledPlaneBuilder.pure.js.map +1 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +13 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +15 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +29 -9
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/Node/Blocks/bevelBlock.pure.js.map +1 -1
- package/Meshes/meshBuilder.d.ts +21 -57
- package/Meshes/meshBuilder.js +21 -58
- package/Meshes/meshBuilder.js.map +1 -1
- package/Meshes/meshBuilder.pure.d.ts +58 -0
- package/Meshes/meshBuilder.pure.js +60 -0
- package/Meshes/meshBuilder.pure.js.map +1 -0
- package/Meshes/pure.d.ts +1 -1
- package/Meshes/pure.js +1 -1
- package/Meshes/pure.js.map +1 -1
- package/Misc/greasedLineTools.js.map +1 -1
- package/Misc/khronosTextureContainer2.d.ts +10 -0
- package/Misc/khronosTextureContainer2.js +23 -12
- package/Misc/khronosTextureContainer2.js.map +1 -1
- package/Misc/perfCounter.d.ts +2 -0
- package/Misc/perfCounter.js +17 -2
- package/Misc/perfCounter.js.map +1 -1
- package/Misc/rgbdTextureTools.js +1 -1
- package/Misc/rgbdTextureTools.js.map +1 -1
- package/Misc/snapshotRenderingHelper.js +2 -1
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Misc/tools.pure.js +1 -1
- package/Misc/tools.pure.js.map +1 -1
- package/Navigation/Plugins/recastJSPlugin.js +1 -1
- package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
- package/Physics/v2/Plugins/havokPlugin.js +15 -0
- package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
- package/Physics/v2/characterController.d.ts +17 -0
- package/Physics/v2/characterController.js +40 -0
- package/Physics/v2/characterController.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/thinSSAO2PostProcess.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.d.ts +3 -0
- package/PostProcesses/volumetricLightScatteringPostProcess.js +3 -0
- package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.d.ts +1 -0
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +25 -6
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsAccumulationPass.d.ts +3 -1
- package/Rendering/IBLShadows/iblShadowsAccumulationPass.js +25 -4
- package/Rendering/IBLShadows/iblShadowsAccumulationPass.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +6 -5
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.d.ts +3 -1
- package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js +16 -4
- package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +6 -5
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +3 -1
- package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +16 -4
- package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
- package/Rendering/depthRenderer.d.ts +2 -0
- package/Rendering/depthRenderer.js +2 -0
- package/Rendering/depthRenderer.js.map +1 -1
- package/Rendering/depthRenderer.pure.js +3 -2
- package/Rendering/depthRenderer.pure.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderer.pure.js +6 -0
- package/Rendering/fluidRenderer/fluidRenderer.pure.js.map +1 -1
- package/Rendering/geometryBufferRenderer.pure.js +5 -5
- package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrDielectricReflectance.js +6 -6
- package/Shaders/ShadersInclude/openpbrDielectricReflectance.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/depthPrePass.js +2 -0
- package/ShadersWGSL/ShadersInclude/depthPrePass.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrDielectricReflectance.js +7 -8
- package/ShadersWGSL/ShadersInclude/openpbrDielectricReflectance.js.map +1 -1
- package/ShadersWGSL/default.fragment.js +3 -0
- package/ShadersWGSL/default.fragment.js.map +1 -1
- package/ShadersWGSL/openpbr.fragment.js +3 -0
- package/ShadersWGSL/openpbr.fragment.js.map +1 -1
- package/ShadersWGSL/pbr.fragment.js +3 -0
- package/ShadersWGSL/pbr.fragment.js.map +1 -1
- package/ShadersWGSL/volumetricLightScattering.fragment.d.ts +5 -0
- package/ShadersWGSL/volumetricLightScattering.fragment.js +20 -0
- package/ShadersWGSL/volumetricLightScattering.fragment.js.map +1 -0
- package/ShadersWGSL/volumetricLightScatteringPass.fragment.d.ts +5 -0
- package/ShadersWGSL/volumetricLightScatteringPass.fragment.js +24 -0
- package/ShadersWGSL/volumetricLightScatteringPass.fragment.js.map +1 -0
- package/ShadersWGSL/volumetricLightScatteringPass.vertex.d.ts +5 -0
- package/ShadersWGSL/volumetricLightScatteringPass.vertex.js +67 -0
- package/ShadersWGSL/volumetricLightScatteringPass.vertex.js.map +1 -0
- package/SmartAssets/smartAssetManager.pure.js +9 -1
- package/SmartAssets/smartAssetManager.pure.js.map +1 -1
- package/States/alphaCullingState.d.ts +0 -9
- package/States/alphaCullingState.js +4 -31
- package/States/alphaCullingState.js.map +1 -1
- package/XR/features/WebXRBodyTracking.pure.d.ts +0 -28
- package/XR/features/WebXRBodyTracking.pure.js.map +1 -1
- package/XR/features/WebXRLayers.pure.js +4 -4
- package/XR/features/WebXRLayers.pure.js.map +1 -1
- package/node.d.ts +18 -1
- package/node.js +52 -1
- package/node.js.map +1 -1
- package/package.json +1 -1
- package/types.js.map +1 -1
|
@@ -1,430 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
* Creates the VertexData for a tiled plane
|
|
5
|
-
* @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set/tiled_plane
|
|
6
|
-
* @param options an object used to set the following optional parameters for the tiled plane, required but can be empty
|
|
7
|
-
* * pattern a limited pattern arrangement depending on the number
|
|
8
|
-
* * size of the box
|
|
9
|
-
* * width of the box, overwrites size
|
|
10
|
-
* * height of the box, overwrites size
|
|
11
|
-
* * tileSize sets the width, height and depth of the tile to the value of size, optional default 1
|
|
12
|
-
* * tileWidth sets the width (x direction) of the tile, overwrites the width set by size, optional, default size
|
|
13
|
-
* * tileHeight sets the height (y direction) of the tile, overwrites the height set by size, optional, default size
|
|
14
|
-
* * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE
|
|
15
|
-
* * alignHorizontal places whole tiles aligned to the center, left or right of a row
|
|
16
|
-
* * alignVertical places whole tiles aligned to the center, left or right of a column
|
|
17
|
-
* * frontUvs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the front side, optional, default vector4 (0, 0, 1, 1)
|
|
18
|
-
* * backUVs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the back side, optional, default vector4 (0, 0, 1, 1)
|
|
19
|
-
* @returns the VertexData of the tiled plane
|
|
20
|
-
*/
|
|
21
|
-
export function CreateTiledPlaneVertexData(options) {
|
|
22
|
-
const flipTile = options.pattern || Mesh.NO_FLIP;
|
|
23
|
-
const tileWidth = options.tileWidth || options.tileSize || 1;
|
|
24
|
-
const tileHeight = options.tileHeight || options.tileSize || 1;
|
|
25
|
-
const alignH = options.alignHorizontal || 0;
|
|
26
|
-
const alignV = options.alignVertical || 0;
|
|
27
|
-
const width = options.width || options.size || 1;
|
|
28
|
-
const tilesX = Math.floor(width / tileWidth);
|
|
29
|
-
let offsetX = width - tilesX * tileWidth;
|
|
30
|
-
const height = options.height || options.size || 1;
|
|
31
|
-
const tilesY = Math.floor(height / tileHeight);
|
|
32
|
-
let offsetY = height - tilesY * tileHeight;
|
|
33
|
-
const halfWidth = (tileWidth * tilesX) / 2;
|
|
34
|
-
const halfHeight = (tileHeight * tilesY) / 2;
|
|
35
|
-
let adjustX = 0;
|
|
36
|
-
let adjustY = 0;
|
|
37
|
-
let startX = 0;
|
|
38
|
-
let startY = 0;
|
|
39
|
-
let endX = 0;
|
|
40
|
-
let endY = 0;
|
|
41
|
-
//Part Tiles
|
|
42
|
-
if (offsetX > 0 || offsetY > 0) {
|
|
43
|
-
startX = -halfWidth;
|
|
44
|
-
startY = -halfHeight;
|
|
45
|
-
endX = halfWidth;
|
|
46
|
-
endY = halfHeight;
|
|
47
|
-
switch (alignH) {
|
|
48
|
-
case Mesh.CENTER:
|
|
49
|
-
offsetX /= 2;
|
|
50
|
-
startX -= offsetX;
|
|
51
|
-
endX += offsetX;
|
|
52
|
-
break;
|
|
53
|
-
case Mesh.LEFT:
|
|
54
|
-
endX += offsetX;
|
|
55
|
-
adjustX = -offsetX / 2;
|
|
56
|
-
break;
|
|
57
|
-
case Mesh.RIGHT:
|
|
58
|
-
startX -= offsetX;
|
|
59
|
-
adjustX = offsetX / 2;
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
switch (alignV) {
|
|
63
|
-
case Mesh.CENTER:
|
|
64
|
-
offsetY /= 2;
|
|
65
|
-
startY -= offsetY;
|
|
66
|
-
endY += offsetY;
|
|
67
|
-
break;
|
|
68
|
-
case Mesh.BOTTOM:
|
|
69
|
-
endY += offsetY;
|
|
70
|
-
adjustY = -offsetY / 2;
|
|
71
|
-
break;
|
|
72
|
-
case Mesh.TOP:
|
|
73
|
-
startY -= offsetY;
|
|
74
|
-
adjustY = offsetY / 2;
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
const positions = [];
|
|
79
|
-
const normals = [];
|
|
80
|
-
const uvBase = [];
|
|
81
|
-
uvBase[0] = [0, 0, 1, 0, 1, 1, 0, 1];
|
|
82
|
-
uvBase[1] = [0, 0, 1, 0, 1, 1, 0, 1];
|
|
83
|
-
if (flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.ROTATE_ROW) {
|
|
84
|
-
uvBase[1] = [1, 1, 0, 1, 0, 0, 1, 0];
|
|
85
|
-
}
|
|
86
|
-
if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.FLIP_ROW) {
|
|
87
|
-
uvBase[1] = [1, 0, 0, 0, 0, 1, 1, 1];
|
|
88
|
-
}
|
|
89
|
-
if (flipTile === Mesh.FLIP_N_ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_ROW) {
|
|
90
|
-
uvBase[1] = [0, 1, 1, 1, 1, 0, 0, 0];
|
|
91
|
-
}
|
|
92
|
-
let uvs = [];
|
|
93
|
-
const colors = [];
|
|
94
|
-
const indices = [];
|
|
95
|
-
let index = 0;
|
|
96
|
-
for (let y = 0; y < tilesY; y++) {
|
|
97
|
-
for (let x = 0; x < tilesX; x++) {
|
|
98
|
-
positions.push(-halfWidth + x * tileWidth + adjustX, -halfHeight + y * tileHeight + adjustY, 0);
|
|
99
|
-
positions.push(-halfWidth + (x + 1) * tileWidth + adjustX, -halfHeight + y * tileHeight + adjustY, 0);
|
|
100
|
-
positions.push(-halfWidth + (x + 1) * tileWidth + adjustX, -halfHeight + (y + 1) * tileHeight + adjustY, 0);
|
|
101
|
-
positions.push(-halfWidth + x * tileWidth + adjustX, -halfHeight + (y + 1) * tileHeight + adjustY, 0);
|
|
102
|
-
indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);
|
|
103
|
-
if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_TILE) {
|
|
104
|
-
uvs = uvs.concat(uvBase[((x % 2) + (y % 2)) % 2]);
|
|
105
|
-
}
|
|
106
|
-
else if (flipTile === Mesh.FLIP_ROW || flipTile === Mesh.ROTATE_ROW || flipTile === Mesh.FLIP_N_ROTATE_ROW) {
|
|
107
|
-
uvs = uvs.concat(uvBase[y % 2]);
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
uvs = uvs.concat(uvBase[0]);
|
|
111
|
-
}
|
|
112
|
-
colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
|
|
113
|
-
normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);
|
|
114
|
-
index += 4;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
//Part Tiles
|
|
118
|
-
if (offsetX > 0 || offsetY > 0) {
|
|
119
|
-
const partialBottomRow = offsetY > 0 && (alignV === Mesh.CENTER || alignV === Mesh.TOP);
|
|
120
|
-
const partialTopRow = offsetY > 0 && (alignV === Mesh.CENTER || alignV === Mesh.BOTTOM);
|
|
121
|
-
const partialLeftCol = offsetX > 0 && (alignH === Mesh.CENTER || alignH === Mesh.RIGHT);
|
|
122
|
-
const partialRightCol = offsetX > 0 && (alignH === Mesh.CENTER || alignH === Mesh.LEFT);
|
|
123
|
-
let uvPart;
|
|
124
|
-
let a, b, c, d;
|
|
125
|
-
//corners
|
|
126
|
-
if (partialBottomRow && partialLeftCol) {
|
|
127
|
-
//bottom left corner
|
|
128
|
-
positions.push(startX + adjustX, startY + adjustY, 0);
|
|
129
|
-
positions.push(-halfWidth + adjustX, startY + adjustY, 0);
|
|
130
|
-
positions.push(-halfWidth + adjustX, startY + offsetY + adjustY, 0);
|
|
131
|
-
positions.push(startX + adjustX, startY + offsetY + adjustY, 0);
|
|
132
|
-
indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);
|
|
133
|
-
index += 4;
|
|
134
|
-
a = 1 - offsetX / tileWidth;
|
|
135
|
-
b = 1 - offsetY / tileHeight;
|
|
136
|
-
c = 1;
|
|
137
|
-
d = 1;
|
|
138
|
-
uvPart = [a, b, c, b, c, d, a, d];
|
|
139
|
-
if (flipTile === Mesh.ROTATE_ROW) {
|
|
140
|
-
uvPart = [1 - a, 1 - b, 1 - c, 1 - b, 1 - c, 1 - d, 1 - a, 1 - d];
|
|
141
|
-
}
|
|
142
|
-
if (flipTile === Mesh.FLIP_ROW) {
|
|
143
|
-
uvPart = [1 - a, b, 1 - c, b, 1 - c, d, 1 - a, d];
|
|
144
|
-
}
|
|
145
|
-
if (flipTile === Mesh.FLIP_N_ROTATE_ROW) {
|
|
146
|
-
uvPart = [a, 1 - b, c, 1 - b, c, 1 - d, a, 1 - d];
|
|
147
|
-
}
|
|
148
|
-
uvs = uvs.concat(uvPart);
|
|
149
|
-
colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
|
|
150
|
-
normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);
|
|
151
|
-
}
|
|
152
|
-
if (partialBottomRow && partialRightCol) {
|
|
153
|
-
//bottom right corner
|
|
154
|
-
positions.push(halfWidth + adjustX, startY + adjustY, 0);
|
|
155
|
-
positions.push(endX + adjustX, startY + adjustY, 0);
|
|
156
|
-
positions.push(endX + adjustX, startY + offsetY + adjustY, 0);
|
|
157
|
-
positions.push(halfWidth + adjustX, startY + offsetY + adjustY, 0);
|
|
158
|
-
indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);
|
|
159
|
-
index += 4;
|
|
160
|
-
a = 0;
|
|
161
|
-
b = 1 - offsetY / tileHeight;
|
|
162
|
-
c = offsetX / tileWidth;
|
|
163
|
-
d = 1;
|
|
164
|
-
uvPart = [a, b, c, b, c, d, a, d];
|
|
165
|
-
if (flipTile === Mesh.ROTATE_ROW || (flipTile === Mesh.ROTATE_TILE && tilesX % 2 === 0)) {
|
|
166
|
-
uvPart = [1 - a, 1 - b, 1 - c, 1 - b, 1 - c, 1 - d, 1 - a, 1 - d];
|
|
167
|
-
}
|
|
168
|
-
if (flipTile === Mesh.FLIP_ROW || (flipTile === Mesh.FLIP_TILE && tilesX % 2 === 0)) {
|
|
169
|
-
uvPart = [1 - a, b, 1 - c, b, 1 - c, d, 1 - a, d];
|
|
170
|
-
}
|
|
171
|
-
if (flipTile === Mesh.FLIP_N_ROTATE_ROW || (flipTile === Mesh.FLIP_N_ROTATE_TILE && tilesX % 2 === 0)) {
|
|
172
|
-
uvPart = [a, 1 - b, c, 1 - b, c, 1 - d, a, 1 - d];
|
|
173
|
-
}
|
|
174
|
-
uvs = uvs.concat(uvPart);
|
|
175
|
-
colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
|
|
176
|
-
normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);
|
|
177
|
-
}
|
|
178
|
-
if (partialTopRow && partialLeftCol) {
|
|
179
|
-
//top left corner
|
|
180
|
-
positions.push(startX + adjustX, halfHeight + adjustY, 0);
|
|
181
|
-
positions.push(-halfWidth + adjustX, halfHeight + adjustY, 0);
|
|
182
|
-
positions.push(-halfWidth + adjustX, endY + adjustY, 0);
|
|
183
|
-
positions.push(startX + adjustX, endY + adjustY, 0);
|
|
184
|
-
indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);
|
|
185
|
-
index += 4;
|
|
186
|
-
a = 1 - offsetX / tileWidth;
|
|
187
|
-
b = 0;
|
|
188
|
-
c = 1;
|
|
189
|
-
d = offsetY / tileHeight;
|
|
190
|
-
uvPart = [a, b, c, b, c, d, a, d];
|
|
191
|
-
if ((flipTile === Mesh.ROTATE_ROW && tilesY % 2 === 1) || (flipTile === Mesh.ROTATE_TILE && tilesY % 1 === 0)) {
|
|
192
|
-
uvPart = [1 - a, 1 - b, 1 - c, 1 - b, 1 - c, 1 - d, 1 - a, 1 - d];
|
|
193
|
-
}
|
|
194
|
-
if ((flipTile === Mesh.FLIP_ROW && tilesY % 2 === 1) || (flipTile === Mesh.FLIP_TILE && tilesY % 2 === 0)) {
|
|
195
|
-
uvPart = [1 - a, b, 1 - c, b, 1 - c, d, 1 - a, d];
|
|
196
|
-
}
|
|
197
|
-
if ((flipTile === Mesh.FLIP_N_ROTATE_ROW && tilesY % 2 === 1) || (flipTile === Mesh.FLIP_N_ROTATE_TILE && tilesY % 2 === 0)) {
|
|
198
|
-
uvPart = [a, 1 - b, c, 1 - b, c, 1 - d, a, 1 - d];
|
|
199
|
-
}
|
|
200
|
-
uvs = uvs.concat(uvPart);
|
|
201
|
-
colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
|
|
202
|
-
normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);
|
|
203
|
-
}
|
|
204
|
-
if (partialTopRow && partialRightCol) {
|
|
205
|
-
//top right corner
|
|
206
|
-
positions.push(halfWidth + adjustX, halfHeight + adjustY, 0);
|
|
207
|
-
positions.push(endX + adjustX, halfHeight + adjustY, 0);
|
|
208
|
-
positions.push(endX + adjustX, endY + adjustY, 0);
|
|
209
|
-
positions.push(halfWidth + adjustX, endY + adjustY, 0);
|
|
210
|
-
indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);
|
|
211
|
-
index += 4;
|
|
212
|
-
a = 0;
|
|
213
|
-
b = 0;
|
|
214
|
-
c = offsetX / tileWidth;
|
|
215
|
-
d = offsetY / tileHeight;
|
|
216
|
-
uvPart = [a, b, c, b, c, d, a, d];
|
|
217
|
-
if ((flipTile === Mesh.ROTATE_ROW && tilesY % 2 === 1) || (flipTile === Mesh.ROTATE_TILE && (tilesY + tilesX) % 2 === 1)) {
|
|
218
|
-
uvPart = [1 - a, 1 - b, 1 - c, 1 - b, 1 - c, 1 - d, 1 - a, 1 - d];
|
|
219
|
-
}
|
|
220
|
-
if ((flipTile === Mesh.FLIP_ROW && tilesY % 2 === 1) || (flipTile === Mesh.FLIP_TILE && (tilesY + tilesX) % 2 === 1)) {
|
|
221
|
-
uvPart = [1 - a, b, 1 - c, b, 1 - c, d, 1 - a, d];
|
|
222
|
-
}
|
|
223
|
-
if ((flipTile === Mesh.FLIP_N_ROTATE_ROW && tilesY % 2 === 1) || (flipTile === Mesh.FLIP_N_ROTATE_TILE && (tilesY + tilesX) % 2 === 1)) {
|
|
224
|
-
uvPart = [a, 1 - b, c, 1 - b, c, 1 - d, a, 1 - d];
|
|
225
|
-
}
|
|
226
|
-
uvs = uvs.concat(uvPart);
|
|
227
|
-
colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
|
|
228
|
-
normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);
|
|
229
|
-
}
|
|
230
|
-
//part rows
|
|
231
|
-
if (partialBottomRow) {
|
|
232
|
-
const uvBaseBR = [];
|
|
233
|
-
a = 0;
|
|
234
|
-
b = 1 - offsetY / tileHeight;
|
|
235
|
-
c = 1;
|
|
236
|
-
d = 1;
|
|
237
|
-
uvBaseBR[0] = [a, b, c, b, c, d, a, d];
|
|
238
|
-
uvBaseBR[1] = [a, b, c, b, c, d, a, d];
|
|
239
|
-
if (flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.ROTATE_ROW) {
|
|
240
|
-
uvBaseBR[1] = [1 - a, 1 - b, 1 - c, 1 - b, 1 - c, 1 - d, 1 - a, 1 - d];
|
|
241
|
-
}
|
|
242
|
-
if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.FLIP_ROW) {
|
|
243
|
-
uvBaseBR[1] = [1 - a, b, 1 - c, b, 1 - c, d, 1 - a, d];
|
|
244
|
-
}
|
|
245
|
-
if (flipTile === Mesh.FLIP_N_ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_ROW) {
|
|
246
|
-
uvBaseBR[1] = [a, 1 - b, c, 1 - b, c, 1 - d, a, 1 - d];
|
|
247
|
-
}
|
|
248
|
-
for (let x = 0; x < tilesX; x++) {
|
|
249
|
-
positions.push(-halfWidth + x * tileWidth + adjustX, startY + adjustY, 0);
|
|
250
|
-
positions.push(-halfWidth + (x + 1) * tileWidth + adjustX, startY + adjustY, 0);
|
|
251
|
-
positions.push(-halfWidth + (x + 1) * tileWidth + adjustX, startY + offsetY + adjustY, 0);
|
|
252
|
-
positions.push(-halfWidth + x * tileWidth + adjustX, startY + offsetY + adjustY, 0);
|
|
253
|
-
indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);
|
|
254
|
-
index += 4;
|
|
255
|
-
if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_TILE) {
|
|
256
|
-
uvs = uvs.concat(uvBaseBR[(x + 1) % 2]);
|
|
257
|
-
}
|
|
258
|
-
else if (flipTile === Mesh.FLIP_ROW || flipTile === Mesh.ROTATE_ROW || flipTile === Mesh.FLIP_N_ROTATE_ROW) {
|
|
259
|
-
uvs = uvs.concat(uvBaseBR[1]);
|
|
260
|
-
}
|
|
261
|
-
else {
|
|
262
|
-
uvs = uvs.concat(uvBaseBR[0]);
|
|
263
|
-
}
|
|
264
|
-
colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
|
|
265
|
-
normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
if (partialTopRow) {
|
|
269
|
-
const uvBaseTR = [];
|
|
270
|
-
a = 0;
|
|
271
|
-
b = 0;
|
|
272
|
-
c = 1;
|
|
273
|
-
d = offsetY / tileHeight;
|
|
274
|
-
uvBaseTR[0] = [a, b, c, b, c, d, a, d];
|
|
275
|
-
uvBaseTR[1] = [a, b, c, b, c, d, a, d];
|
|
276
|
-
if (flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.ROTATE_ROW) {
|
|
277
|
-
uvBaseTR[1] = [1 - a, 1 - b, 1 - c, 1 - b, 1 - c, 1 - d, 1 - a, 1 - d];
|
|
278
|
-
}
|
|
279
|
-
if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.FLIP_ROW) {
|
|
280
|
-
uvBaseTR[1] = [1 - a, b, 1 - c, b, 1 - c, d, 1 - a, d];
|
|
281
|
-
}
|
|
282
|
-
if (flipTile === Mesh.FLIP_N_ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_ROW) {
|
|
283
|
-
uvBaseTR[1] = [a, 1 - b, c, 1 - b, c, 1 - d, a, 1 - d];
|
|
284
|
-
}
|
|
285
|
-
for (let x = 0; x < tilesX; x++) {
|
|
286
|
-
positions.push(-halfWidth + x * tileWidth + adjustX, endY - offsetY + adjustY, 0);
|
|
287
|
-
positions.push(-halfWidth + (x + 1) * tileWidth + adjustX, endY - offsetY + adjustY, 0);
|
|
288
|
-
positions.push(-halfWidth + (x + 1) * tileWidth + adjustX, endY + adjustY, 0);
|
|
289
|
-
positions.push(-halfWidth + x * tileWidth + adjustX, endY + adjustY, 0);
|
|
290
|
-
indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);
|
|
291
|
-
index += 4;
|
|
292
|
-
if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_TILE) {
|
|
293
|
-
uvs = uvs.concat(uvBaseTR[(x + tilesY) % 2]);
|
|
294
|
-
}
|
|
295
|
-
else if (flipTile === Mesh.FLIP_ROW || flipTile === Mesh.ROTATE_ROW || flipTile === Mesh.FLIP_N_ROTATE_ROW) {
|
|
296
|
-
uvs = uvs.concat(uvBaseTR[tilesY % 2]);
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
uvs = uvs.concat(uvBaseTR[0]);
|
|
300
|
-
}
|
|
301
|
-
colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
|
|
302
|
-
normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
if (partialLeftCol) {
|
|
306
|
-
const uvBaseLC = [];
|
|
307
|
-
a = 1 - offsetX / tileWidth;
|
|
308
|
-
b = 0;
|
|
309
|
-
c = 1;
|
|
310
|
-
d = 1;
|
|
311
|
-
uvBaseLC[0] = [a, b, c, b, c, d, a, d];
|
|
312
|
-
uvBaseLC[1] = [a, b, c, b, c, d, a, d];
|
|
313
|
-
if (flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.ROTATE_ROW) {
|
|
314
|
-
uvBaseLC[1] = [1 - a, 1 - b, 1 - c, 1 - b, 1 - c, 1 - d, 1 - a, 1 - d];
|
|
315
|
-
}
|
|
316
|
-
if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.FLIP_ROW) {
|
|
317
|
-
uvBaseLC[1] = [1 - a, b, 1 - c, b, 1 - c, d, 1 - a, d];
|
|
318
|
-
}
|
|
319
|
-
if (flipTile === Mesh.FLIP_N_ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_ROW) {
|
|
320
|
-
uvBaseLC[1] = [a, 1 - b, c, 1 - b, c, 1 - d, a, 1 - d];
|
|
321
|
-
}
|
|
322
|
-
for (let y = 0; y < tilesY; y++) {
|
|
323
|
-
positions.push(startX + adjustX, -halfHeight + y * tileHeight + adjustY, 0);
|
|
324
|
-
positions.push(startX + offsetX + adjustX, -halfHeight + y * tileHeight + adjustY, 0);
|
|
325
|
-
positions.push(startX + offsetX + adjustX, -halfHeight + (y + 1) * tileHeight + adjustY, 0);
|
|
326
|
-
positions.push(startX + adjustX, -halfHeight + (y + 1) * tileHeight + adjustY, 0);
|
|
327
|
-
indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);
|
|
328
|
-
index += 4;
|
|
329
|
-
if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_TILE) {
|
|
330
|
-
uvs = uvs.concat(uvBaseLC[(y + 1) % 2]);
|
|
331
|
-
}
|
|
332
|
-
else if (flipTile === Mesh.FLIP_ROW || flipTile === Mesh.ROTATE_ROW || flipTile === Mesh.FLIP_N_ROTATE_ROW) {
|
|
333
|
-
uvs = uvs.concat(uvBaseLC[y % 2]);
|
|
334
|
-
}
|
|
335
|
-
else {
|
|
336
|
-
uvs = uvs.concat(uvBaseLC[0]);
|
|
337
|
-
}
|
|
338
|
-
colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
|
|
339
|
-
normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
if (partialRightCol) {
|
|
343
|
-
const uvBaseRC = [];
|
|
344
|
-
a = 0;
|
|
345
|
-
b = 0;
|
|
346
|
-
c = offsetX / tileHeight;
|
|
347
|
-
d = 1;
|
|
348
|
-
uvBaseRC[0] = [a, b, c, b, c, d, a, d];
|
|
349
|
-
uvBaseRC[1] = [a, b, c, b, c, d, a, d];
|
|
350
|
-
if (flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.ROTATE_ROW) {
|
|
351
|
-
uvBaseRC[1] = [1 - a, 1 - b, 1 - c, 1 - b, 1 - c, 1 - d, 1 - a, 1 - d];
|
|
352
|
-
}
|
|
353
|
-
if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.FLIP_ROW) {
|
|
354
|
-
uvBaseRC[1] = [1 - a, b, 1 - c, b, 1 - c, d, 1 - a, d];
|
|
355
|
-
}
|
|
356
|
-
if (flipTile === Mesh.FLIP_N_ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_ROW) {
|
|
357
|
-
uvBaseRC[1] = [a, 1 - b, c, 1 - b, c, 1 - d, a, 1 - d];
|
|
358
|
-
}
|
|
359
|
-
for (let y = 0; y < tilesY; y++) {
|
|
360
|
-
positions.push(endX - offsetX + adjustX, -halfHeight + y * tileHeight + adjustY, 0);
|
|
361
|
-
positions.push(endX + adjustX, -halfHeight + y * tileHeight + adjustY, 0);
|
|
362
|
-
positions.push(endX + adjustX, -halfHeight + (y + 1) * tileHeight + adjustY, 0);
|
|
363
|
-
positions.push(endX - offsetX + adjustX, -halfHeight + (y + 1) * tileHeight + adjustY, 0);
|
|
364
|
-
indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);
|
|
365
|
-
index += 4;
|
|
366
|
-
if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_TILE) {
|
|
367
|
-
uvs = uvs.concat(uvBaseRC[(y + tilesX) % 2]);
|
|
368
|
-
}
|
|
369
|
-
else if (flipTile === Mesh.FLIP_ROW || flipTile === Mesh.ROTATE_ROW || flipTile === Mesh.FLIP_N_ROTATE_ROW) {
|
|
370
|
-
uvs = uvs.concat(uvBaseRC[y % 2]);
|
|
371
|
-
}
|
|
372
|
-
else {
|
|
373
|
-
uvs = uvs.concat(uvBaseRC[0]);
|
|
374
|
-
}
|
|
375
|
-
colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
|
|
376
|
-
normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
const sideOrientation = options.sideOrientation === 0 ? 0 : options.sideOrientation || VertexData.DEFAULTSIDE;
|
|
381
|
-
// sides
|
|
382
|
-
VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs, options.frontUVs, options.backUVs);
|
|
383
|
-
// Result
|
|
384
|
-
const vertexData = new VertexData();
|
|
385
|
-
vertexData.indices = indices;
|
|
386
|
-
vertexData.positions = positions;
|
|
387
|
-
vertexData.normals = normals;
|
|
388
|
-
vertexData.uvs = uvs;
|
|
389
|
-
const totalColors = sideOrientation === VertexData.DOUBLESIDE ? colors.concat(colors) : colors;
|
|
390
|
-
vertexData.colors = totalColors;
|
|
391
|
-
return vertexData;
|
|
392
|
-
}
|
|
393
|
-
/**
|
|
394
|
-
* Creates a tiled plane mesh
|
|
395
|
-
* @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set/tiled_plane
|
|
396
|
-
* @param name defines the name of the mesh
|
|
397
|
-
* @param options an object used to set the following optional parameters for the tiled plane, required but can be empty
|
|
398
|
-
* * pattern a limited pattern arrangement depending on the number
|
|
399
|
-
* * size of the box
|
|
400
|
-
* * width of the box, overwrites size
|
|
401
|
-
* * height of the box, overwrites size
|
|
402
|
-
* * tileSize sets the width, height and depth of the tile to the value of size, optional default 1
|
|
403
|
-
* * tileWidth sets the width (x direction) of the tile, overwrites the width set by size, optional, default size
|
|
404
|
-
* * tileHeight sets the height (y direction) of the tile, overwrites the height set by size, optional, default size
|
|
405
|
-
* * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE
|
|
406
|
-
* * alignHorizontal places whole tiles aligned to the center, left or right of a row
|
|
407
|
-
* * alignVertical places whole tiles aligned to the center, left or right of a column
|
|
408
|
-
* * frontUvs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the front side, optional, default vector4 (0, 0, 1, 1)
|
|
409
|
-
* * backUVs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the back side, optional, default vector4 (0, 0, 1, 1)
|
|
410
|
-
* @param scene defines the hosting scene
|
|
411
|
-
* @returns the box mesh
|
|
412
|
-
*/
|
|
413
|
-
export function CreateTiledPlane(name, options, scene = null) {
|
|
414
|
-
const plane = new Mesh(name, scene);
|
|
415
|
-
options.sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);
|
|
416
|
-
plane._originalBuilderSideOrientation = options.sideOrientation;
|
|
417
|
-
const vertexData = CreateTiledPlaneVertexData(options);
|
|
418
|
-
vertexData.applyToMesh(plane, options.updatable);
|
|
419
|
-
return plane;
|
|
420
|
-
}
|
|
421
|
-
/**
|
|
422
|
-
* Class containing static functions to help procedurally build meshes
|
|
423
|
-
* @deprecated use CreateTiledPlane instead
|
|
424
|
-
*/
|
|
425
|
-
export const TiledPlaneBuilder = {
|
|
426
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
427
|
-
CreateTiledPlane,
|
|
428
|
-
};
|
|
429
|
-
VertexData.CreateTiledPlane = CreateTiledPlaneVertexData;
|
|
1
|
+
export * from "./tiledPlaneBuilder.pure.js";
|
|
2
|
+
import { RegisterTiledPlaneBuilder } from "./tiledPlaneBuilder.pure.js";
|
|
3
|
+
RegisterTiledPlaneBuilder();
|
|
430
4
|
//# sourceMappingURL=tiledPlaneBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiledPlaneBuilder.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Builders/tiledPlaneBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../../types\";\r\nimport { type Scene } from \"../../scene\";\r\nimport { type Vector4 } from \"../../Maths/math.vector\";\r\nimport { Mesh } from \"../mesh.pure\";\r\nimport { VertexData } from \"../mesh.vertexData\";\r\n\r\n/**\r\n * Creates the VertexData for a tiled plane\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set/tiled_plane\r\n * @param options an object used to set the following optional parameters for the tiled plane, required but can be empty\r\n * * pattern a limited pattern arrangement depending on the number\r\n * * size of the box\r\n * * width of the box, overwrites size\r\n * * height of the box, overwrites size\r\n * * tileSize sets the width, height and depth of the tile to the value of size, optional default 1\r\n * * tileWidth sets the width (x direction) of the tile, overwrites the width set by size, optional, default size\r\n * * tileHeight sets the height (y direction) of the tile, overwrites the height set by size, optional, default size\r\n * * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE\r\n * * alignHorizontal places whole tiles aligned to the center, left or right of a row\r\n * * alignVertical places whole tiles aligned to the center, left or right of a column\r\n * * frontUvs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the front side, optional, default vector4 (0, 0, 1, 1)\r\n * * backUVs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the back side, optional, default vector4 (0, 0, 1, 1)\r\n * @returns the VertexData of the tiled plane\r\n */\r\nexport function CreateTiledPlaneVertexData(options: {\r\n pattern?: number;\r\n tileSize?: number;\r\n tileWidth?: number;\r\n tileHeight?: number;\r\n size?: number;\r\n width?: number;\r\n height?: number;\r\n alignHorizontal?: number;\r\n alignVertical?: number;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n}): VertexData {\r\n const flipTile = options.pattern || Mesh.NO_FLIP;\r\n const tileWidth = options.tileWidth || options.tileSize || 1;\r\n const tileHeight = options.tileHeight || options.tileSize || 1;\r\n const alignH = options.alignHorizontal || 0;\r\n const alignV = options.alignVertical || 0;\r\n\r\n const width = options.width || options.size || 1;\r\n const tilesX = Math.floor(width / tileWidth);\r\n let offsetX = width - tilesX * tileWidth;\r\n\r\n const height = options.height || options.size || 1;\r\n const tilesY = Math.floor(height / tileHeight);\r\n let offsetY = height - tilesY * tileHeight;\r\n\r\n const halfWidth = (tileWidth * tilesX) / 2;\r\n const halfHeight = (tileHeight * tilesY) / 2;\r\n\r\n let adjustX = 0;\r\n let adjustY = 0;\r\n let startX = 0;\r\n let startY = 0;\r\n let endX = 0;\r\n let endY = 0;\r\n\r\n //Part Tiles\r\n if (offsetX > 0 || offsetY > 0) {\r\n startX = -halfWidth;\r\n startY = -halfHeight;\r\n endX = halfWidth;\r\n endY = halfHeight;\r\n\r\n switch (alignH) {\r\n case Mesh.CENTER:\r\n offsetX /= 2;\r\n startX -= offsetX;\r\n endX += offsetX;\r\n break;\r\n case Mesh.LEFT:\r\n endX += offsetX;\r\n adjustX = -offsetX / 2;\r\n break;\r\n case Mesh.RIGHT:\r\n startX -= offsetX;\r\n adjustX = offsetX / 2;\r\n break;\r\n }\r\n\r\n switch (alignV) {\r\n case Mesh.CENTER:\r\n offsetY /= 2;\r\n startY -= offsetY;\r\n endY += offsetY;\r\n break;\r\n case Mesh.BOTTOM:\r\n endY += offsetY;\r\n adjustY = -offsetY / 2;\r\n break;\r\n case Mesh.TOP:\r\n startY -= offsetY;\r\n adjustY = offsetY / 2;\r\n break;\r\n }\r\n }\r\n\r\n const positions = [];\r\n const normals = [];\r\n const uvBase = [];\r\n uvBase[0] = [0, 0, 1, 0, 1, 1, 0, 1];\r\n uvBase[1] = [0, 0, 1, 0, 1, 1, 0, 1];\r\n if (flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.ROTATE_ROW) {\r\n uvBase[1] = [1, 1, 0, 1, 0, 0, 1, 0];\r\n }\r\n if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.FLIP_ROW) {\r\n uvBase[1] = [1, 0, 0, 0, 0, 1, 1, 1];\r\n }\r\n if (flipTile === Mesh.FLIP_N_ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_ROW) {\r\n uvBase[1] = [0, 1, 1, 1, 1, 0, 0, 0];\r\n }\r\n let uvs: Array<number> = [];\r\n const colors = [];\r\n const indices = [];\r\n let index = 0;\r\n for (let y = 0; y < tilesY; y++) {\r\n for (let x = 0; x < tilesX; x++) {\r\n positions.push(-halfWidth + x * tileWidth + adjustX, -halfHeight + y * tileHeight + adjustY, 0);\r\n positions.push(-halfWidth + (x + 1) * tileWidth + adjustX, -halfHeight + y * tileHeight + adjustY, 0);\r\n positions.push(-halfWidth + (x + 1) * tileWidth + adjustX, -halfHeight + (y + 1) * tileHeight + adjustY, 0);\r\n positions.push(-halfWidth + x * tileWidth + adjustX, -halfHeight + (y + 1) * tileHeight + adjustY, 0);\r\n indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);\r\n if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_TILE) {\r\n uvs = uvs.concat(uvBase[((x % 2) + (y % 2)) % 2]);\r\n } else if (flipTile === Mesh.FLIP_ROW || flipTile === Mesh.ROTATE_ROW || flipTile === Mesh.FLIP_N_ROTATE_ROW) {\r\n uvs = uvs.concat(uvBase[y % 2]);\r\n } else {\r\n uvs = uvs.concat(uvBase[0]);\r\n }\r\n colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);\r\n normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);\r\n index += 4;\r\n }\r\n }\r\n\r\n //Part Tiles\r\n if (offsetX > 0 || offsetY > 0) {\r\n const partialBottomRow: boolean = offsetY > 0 && (alignV === Mesh.CENTER || alignV === Mesh.TOP);\r\n const partialTopRow: boolean = offsetY > 0 && (alignV === Mesh.CENTER || alignV === Mesh.BOTTOM);\r\n const partialLeftCol: boolean = offsetX > 0 && (alignH === Mesh.CENTER || alignH === Mesh.RIGHT);\r\n const partialRightCol: boolean = offsetX > 0 && (alignH === Mesh.CENTER || alignH === Mesh.LEFT);\r\n let uvPart: Array<number>;\r\n let a, b, c, d: number;\r\n\r\n //corners\r\n if (partialBottomRow && partialLeftCol) {\r\n //bottom left corner\r\n positions.push(startX + adjustX, startY + adjustY, 0);\r\n positions.push(-halfWidth + adjustX, startY + adjustY, 0);\r\n positions.push(-halfWidth + adjustX, startY + offsetY + adjustY, 0);\r\n positions.push(startX + adjustX, startY + offsetY + adjustY, 0);\r\n indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);\r\n index += 4;\r\n a = 1 - offsetX / tileWidth;\r\n b = 1 - offsetY / tileHeight;\r\n c = 1;\r\n d = 1;\r\n uvPart = [a, b, c, b, c, d, a, d];\r\n if (flipTile === Mesh.ROTATE_ROW) {\r\n uvPart = [1 - a, 1 - b, 1 - c, 1 - b, 1 - c, 1 - d, 1 - a, 1 - d];\r\n }\r\n if (flipTile === Mesh.FLIP_ROW) {\r\n uvPart = [1 - a, b, 1 - c, b, 1 - c, d, 1 - a, d];\r\n }\r\n if (flipTile === Mesh.FLIP_N_ROTATE_ROW) {\r\n uvPart = [a, 1 - b, c, 1 - b, c, 1 - d, a, 1 - d];\r\n }\r\n uvs = uvs.concat(uvPart);\r\n colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);\r\n normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);\r\n }\r\n\r\n if (partialBottomRow && partialRightCol) {\r\n //bottom right corner\r\n positions.push(halfWidth + adjustX, startY + adjustY, 0);\r\n positions.push(endX + adjustX, startY + adjustY, 0);\r\n positions.push(endX + adjustX, startY + offsetY + adjustY, 0);\r\n positions.push(halfWidth + adjustX, startY + offsetY + adjustY, 0);\r\n indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);\r\n index += 4;\r\n a = 0;\r\n b = 1 - offsetY / tileHeight;\r\n c = offsetX / tileWidth;\r\n d = 1;\r\n uvPart = [a, b, c, b, c, d, a, d];\r\n if (flipTile === Mesh.ROTATE_ROW || (flipTile === Mesh.ROTATE_TILE && tilesX % 2 === 0)) {\r\n uvPart = [1 - a, 1 - b, 1 - c, 1 - b, 1 - c, 1 - d, 1 - a, 1 - d];\r\n }\r\n if (flipTile === Mesh.FLIP_ROW || (flipTile === Mesh.FLIP_TILE && tilesX % 2 === 0)) {\r\n uvPart = [1 - a, b, 1 - c, b, 1 - c, d, 1 - a, d];\r\n }\r\n if (flipTile === Mesh.FLIP_N_ROTATE_ROW || (flipTile === Mesh.FLIP_N_ROTATE_TILE && tilesX % 2 === 0)) {\r\n uvPart = [a, 1 - b, c, 1 - b, c, 1 - d, a, 1 - d];\r\n }\r\n uvs = uvs.concat(uvPart);\r\n colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);\r\n normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);\r\n }\r\n\r\n if (partialTopRow && partialLeftCol) {\r\n //top left corner\r\n positions.push(startX + adjustX, halfHeight + adjustY, 0);\r\n positions.push(-halfWidth + adjustX, halfHeight + adjustY, 0);\r\n positions.push(-halfWidth + adjustX, endY + adjustY, 0);\r\n positions.push(startX + adjustX, endY + adjustY, 0);\r\n indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);\r\n index += 4;\r\n a = 1 - offsetX / tileWidth;\r\n b = 0;\r\n c = 1;\r\n d = offsetY / tileHeight;\r\n uvPart = [a, b, c, b, c, d, a, d];\r\n if ((flipTile === Mesh.ROTATE_ROW && tilesY % 2 === 1) || (flipTile === Mesh.ROTATE_TILE && tilesY % 1 === 0)) {\r\n uvPart = [1 - a, 1 - b, 1 - c, 1 - b, 1 - c, 1 - d, 1 - a, 1 - d];\r\n }\r\n if ((flipTile === Mesh.FLIP_ROW && tilesY % 2 === 1) || (flipTile === Mesh.FLIP_TILE && tilesY % 2 === 0)) {\r\n uvPart = [1 - a, b, 1 - c, b, 1 - c, d, 1 - a, d];\r\n }\r\n if ((flipTile === Mesh.FLIP_N_ROTATE_ROW && tilesY % 2 === 1) || (flipTile === Mesh.FLIP_N_ROTATE_TILE && tilesY % 2 === 0)) {\r\n uvPart = [a, 1 - b, c, 1 - b, c, 1 - d, a, 1 - d];\r\n }\r\n uvs = uvs.concat(uvPart);\r\n colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);\r\n normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);\r\n }\r\n\r\n if (partialTopRow && partialRightCol) {\r\n //top right corner\r\n positions.push(halfWidth + adjustX, halfHeight + adjustY, 0);\r\n positions.push(endX + adjustX, halfHeight + adjustY, 0);\r\n positions.push(endX + adjustX, endY + adjustY, 0);\r\n positions.push(halfWidth + adjustX, endY + adjustY, 0);\r\n indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);\r\n index += 4;\r\n a = 0;\r\n b = 0;\r\n c = offsetX / tileWidth;\r\n d = offsetY / tileHeight;\r\n uvPart = [a, b, c, b, c, d, a, d];\r\n if ((flipTile === Mesh.ROTATE_ROW && tilesY % 2 === 1) || (flipTile === Mesh.ROTATE_TILE && (tilesY + tilesX) % 2 === 1)) {\r\n uvPart = [1 - a, 1 - b, 1 - c, 1 - b, 1 - c, 1 - d, 1 - a, 1 - d];\r\n }\r\n if ((flipTile === Mesh.FLIP_ROW && tilesY % 2 === 1) || (flipTile === Mesh.FLIP_TILE && (tilesY + tilesX) % 2 === 1)) {\r\n uvPart = [1 - a, b, 1 - c, b, 1 - c, d, 1 - a, d];\r\n }\r\n if ((flipTile === Mesh.FLIP_N_ROTATE_ROW && tilesY % 2 === 1) || (flipTile === Mesh.FLIP_N_ROTATE_TILE && (tilesY + tilesX) % 2 === 1)) {\r\n uvPart = [a, 1 - b, c, 1 - b, c, 1 - d, a, 1 - d];\r\n }\r\n uvs = uvs.concat(uvPart);\r\n colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);\r\n normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);\r\n }\r\n\r\n //part rows\r\n if (partialBottomRow) {\r\n const uvBaseBR = [];\r\n a = 0;\r\n b = 1 - offsetY / tileHeight;\r\n c = 1;\r\n d = 1;\r\n uvBaseBR[0] = [a, b, c, b, c, d, a, d];\r\n uvBaseBR[1] = [a, b, c, b, c, d, a, d];\r\n if (flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.ROTATE_ROW) {\r\n uvBaseBR[1] = [1 - a, 1 - b, 1 - c, 1 - b, 1 - c, 1 - d, 1 - a, 1 - d];\r\n }\r\n if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.FLIP_ROW) {\r\n uvBaseBR[1] = [1 - a, b, 1 - c, b, 1 - c, d, 1 - a, d];\r\n }\r\n if (flipTile === Mesh.FLIP_N_ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_ROW) {\r\n uvBaseBR[1] = [a, 1 - b, c, 1 - b, c, 1 - d, a, 1 - d];\r\n }\r\n for (let x = 0; x < tilesX; x++) {\r\n positions.push(-halfWidth + x * tileWidth + adjustX, startY + adjustY, 0);\r\n positions.push(-halfWidth + (x + 1) * tileWidth + adjustX, startY + adjustY, 0);\r\n positions.push(-halfWidth + (x + 1) * tileWidth + adjustX, startY + offsetY + adjustY, 0);\r\n positions.push(-halfWidth + x * tileWidth + adjustX, startY + offsetY + adjustY, 0);\r\n indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);\r\n index += 4;\r\n if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_TILE) {\r\n uvs = uvs.concat(uvBaseBR[(x + 1) % 2]);\r\n } else if (flipTile === Mesh.FLIP_ROW || flipTile === Mesh.ROTATE_ROW || flipTile === Mesh.FLIP_N_ROTATE_ROW) {\r\n uvs = uvs.concat(uvBaseBR[1]);\r\n } else {\r\n uvs = uvs.concat(uvBaseBR[0]);\r\n }\r\n colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);\r\n normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);\r\n }\r\n }\r\n\r\n if (partialTopRow) {\r\n const uvBaseTR = [];\r\n a = 0;\r\n b = 0;\r\n c = 1;\r\n d = offsetY / tileHeight;\r\n uvBaseTR[0] = [a, b, c, b, c, d, a, d];\r\n uvBaseTR[1] = [a, b, c, b, c, d, a, d];\r\n if (flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.ROTATE_ROW) {\r\n uvBaseTR[1] = [1 - a, 1 - b, 1 - c, 1 - b, 1 - c, 1 - d, 1 - a, 1 - d];\r\n }\r\n if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.FLIP_ROW) {\r\n uvBaseTR[1] = [1 - a, b, 1 - c, b, 1 - c, d, 1 - a, d];\r\n }\r\n if (flipTile === Mesh.FLIP_N_ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_ROW) {\r\n uvBaseTR[1] = [a, 1 - b, c, 1 - b, c, 1 - d, a, 1 - d];\r\n }\r\n for (let x = 0; x < tilesX; x++) {\r\n positions.push(-halfWidth + x * tileWidth + adjustX, endY - offsetY + adjustY, 0);\r\n positions.push(-halfWidth + (x + 1) * tileWidth + adjustX, endY - offsetY + adjustY, 0);\r\n positions.push(-halfWidth + (x + 1) * tileWidth + adjustX, endY + adjustY, 0);\r\n positions.push(-halfWidth + x * tileWidth + adjustX, endY + adjustY, 0);\r\n indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);\r\n index += 4;\r\n if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_TILE) {\r\n uvs = uvs.concat(uvBaseTR[(x + tilesY) % 2]);\r\n } else if (flipTile === Mesh.FLIP_ROW || flipTile === Mesh.ROTATE_ROW || flipTile === Mesh.FLIP_N_ROTATE_ROW) {\r\n uvs = uvs.concat(uvBaseTR[tilesY % 2]);\r\n } else {\r\n uvs = uvs.concat(uvBaseTR[0]);\r\n }\r\n colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);\r\n normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);\r\n }\r\n }\r\n\r\n if (partialLeftCol) {\r\n const uvBaseLC = [];\r\n a = 1 - offsetX / tileWidth;\r\n b = 0;\r\n c = 1;\r\n d = 1;\r\n uvBaseLC[0] = [a, b, c, b, c, d, a, d];\r\n uvBaseLC[1] = [a, b, c, b, c, d, a, d];\r\n if (flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.ROTATE_ROW) {\r\n uvBaseLC[1] = [1 - a, 1 - b, 1 - c, 1 - b, 1 - c, 1 - d, 1 - a, 1 - d];\r\n }\r\n if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.FLIP_ROW) {\r\n uvBaseLC[1] = [1 - a, b, 1 - c, b, 1 - c, d, 1 - a, d];\r\n }\r\n if (flipTile === Mesh.FLIP_N_ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_ROW) {\r\n uvBaseLC[1] = [a, 1 - b, c, 1 - b, c, 1 - d, a, 1 - d];\r\n }\r\n for (let y = 0; y < tilesY; y++) {\r\n positions.push(startX + adjustX, -halfHeight + y * tileHeight + adjustY, 0);\r\n positions.push(startX + offsetX + adjustX, -halfHeight + y * tileHeight + adjustY, 0);\r\n positions.push(startX + offsetX + adjustX, -halfHeight + (y + 1) * tileHeight + adjustY, 0);\r\n positions.push(startX + adjustX, -halfHeight + (y + 1) * tileHeight + adjustY, 0);\r\n indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);\r\n index += 4;\r\n if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_TILE) {\r\n uvs = uvs.concat(uvBaseLC[(y + 1) % 2]);\r\n } else if (flipTile === Mesh.FLIP_ROW || flipTile === Mesh.ROTATE_ROW || flipTile === Mesh.FLIP_N_ROTATE_ROW) {\r\n uvs = uvs.concat(uvBaseLC[y % 2]);\r\n } else {\r\n uvs = uvs.concat(uvBaseLC[0]);\r\n }\r\n colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);\r\n normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);\r\n }\r\n }\r\n\r\n if (partialRightCol) {\r\n const uvBaseRC = [];\r\n a = 0;\r\n b = 0;\r\n c = offsetX / tileHeight;\r\n d = 1;\r\n uvBaseRC[0] = [a, b, c, b, c, d, a, d];\r\n uvBaseRC[1] = [a, b, c, b, c, d, a, d];\r\n if (flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.ROTATE_ROW) {\r\n uvBaseRC[1] = [1 - a, 1 - b, 1 - c, 1 - b, 1 - c, 1 - d, 1 - a, 1 - d];\r\n }\r\n if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.FLIP_ROW) {\r\n uvBaseRC[1] = [1 - a, b, 1 - c, b, 1 - c, d, 1 - a, d];\r\n }\r\n if (flipTile === Mesh.FLIP_N_ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_ROW) {\r\n uvBaseRC[1] = [a, 1 - b, c, 1 - b, c, 1 - d, a, 1 - d];\r\n }\r\n for (let y = 0; y < tilesY; y++) {\r\n positions.push(endX - offsetX + adjustX, -halfHeight + y * tileHeight + adjustY, 0);\r\n positions.push(endX + adjustX, -halfHeight + y * tileHeight + adjustY, 0);\r\n positions.push(endX + adjustX, -halfHeight + (y + 1) * tileHeight + adjustY, 0);\r\n positions.push(endX - offsetX + adjustX, -halfHeight + (y + 1) * tileHeight + adjustY, 0);\r\n indices.push(index, index + 1, index + 3, index + 1, index + 2, index + 3);\r\n index += 4;\r\n if (flipTile === Mesh.FLIP_TILE || flipTile === Mesh.ROTATE_TILE || flipTile === Mesh.FLIP_N_ROTATE_TILE) {\r\n uvs = uvs.concat(uvBaseRC[(y + tilesX) % 2]);\r\n } else if (flipTile === Mesh.FLIP_ROW || flipTile === Mesh.ROTATE_ROW || flipTile === Mesh.FLIP_N_ROTATE_ROW) {\r\n uvs = uvs.concat(uvBaseRC[y % 2]);\r\n } else {\r\n uvs = uvs.concat(uvBaseRC[0]);\r\n }\r\n colors.push(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);\r\n normals.push(0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1);\r\n }\r\n }\r\n }\r\n\r\n const sideOrientation = options.sideOrientation === 0 ? 0 : options.sideOrientation || VertexData.DEFAULTSIDE;\r\n\r\n // sides\r\n VertexData._ComputeSides(sideOrientation, positions, indices, normals, uvs, options.frontUVs, options.backUVs);\r\n\r\n // Result\r\n const vertexData = new VertexData();\r\n\r\n vertexData.indices = indices;\r\n vertexData.positions = positions;\r\n vertexData.normals = normals;\r\n vertexData.uvs = uvs;\r\n\r\n const totalColors = sideOrientation === VertexData.DOUBLESIDE ? colors.concat(colors) : colors;\r\n vertexData.colors = totalColors;\r\n\r\n return vertexData;\r\n}\r\n\r\n/**\r\n * Creates a tiled plane mesh\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set/tiled_plane\r\n * @param name defines the name of the mesh\r\n * @param options an object used to set the following optional parameters for the tiled plane, required but can be empty\r\n * * pattern a limited pattern arrangement depending on the number\r\n * * size of the box\r\n * * width of the box, overwrites size\r\n * * height of the box, overwrites size\r\n * * tileSize sets the width, height and depth of the tile to the value of size, optional default 1\r\n * * tileWidth sets the width (x direction) of the tile, overwrites the width set by size, optional, default size\r\n * * tileHeight sets the height (y direction) of the tile, overwrites the height set by size, optional, default size\r\n * * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE\r\n * * alignHorizontal places whole tiles aligned to the center, left or right of a row\r\n * * alignVertical places whole tiles aligned to the center, left or right of a column\r\n * * frontUvs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the front side, optional, default vector4 (0, 0, 1, 1)\r\n * * backUVs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the back side, optional, default vector4 (0, 0, 1, 1)\r\n * @param scene defines the hosting scene\r\n * @returns the box mesh\r\n */\r\nexport function CreateTiledPlane(\r\n name: string,\r\n options: {\r\n pattern?: number;\r\n tileSize?: number;\r\n tileWidth?: number;\r\n tileHeight?: number;\r\n size?: number;\r\n width?: number;\r\n height?: number;\r\n alignHorizontal?: number;\r\n alignVertical?: number;\r\n sideOrientation?: number;\r\n frontUVs?: Vector4;\r\n backUVs?: Vector4;\r\n updatable?: boolean;\r\n },\r\n scene: Nullable<Scene> = null\r\n): Mesh {\r\n const plane = new Mesh(name, scene);\r\n\r\n options.sideOrientation = Mesh._GetDefaultSideOrientation(options.sideOrientation);\r\n plane._originalBuilderSideOrientation = options.sideOrientation;\r\n\r\n const vertexData = CreateTiledPlaneVertexData(options);\r\n\r\n vertexData.applyToMesh(plane, options.updatable);\r\n\r\n return plane;\r\n}\r\n\r\n/**\r\n * Class containing static functions to help procedurally build meshes\r\n * @deprecated use CreateTiledPlane instead\r\n */\r\nexport const TiledPlaneBuilder = {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n CreateTiledPlane,\r\n};\r\n\r\nVertexData.CreateTiledPlane = CreateTiledPlaneVertexData;\r\n"]}
|
|
1
|
+
{"version":3,"file":"tiledPlaneBuilder.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Builders/tiledPlaneBuilder.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AAEzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,yBAAyB,EAAE,CAAC","sourcesContent":["export * from \"./tiledPlaneBuilder.pure\";\n\nimport { RegisterTiledPlaneBuilder } from \"./tiledPlaneBuilder.pure\";\nRegisterTiledPlaneBuilder();\n"]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/** This file must only contain pure code and pure imports */
|
|
2
|
+
import { type Nullable } from "../../types.js";
|
|
3
|
+
import { type Scene } from "../../scene.js";
|
|
4
|
+
import { type Vector4 } from "../../Maths/math.vector.js";
|
|
5
|
+
import { Mesh } from "../mesh.pure.js";
|
|
6
|
+
import { VertexData } from "../mesh.vertexData.js";
|
|
7
|
+
/**
|
|
8
|
+
* Creates the VertexData for a tiled plane
|
|
9
|
+
* @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set/tiled_plane
|
|
10
|
+
* @param options an object used to set the following optional parameters for the tiled plane, required but can be empty
|
|
11
|
+
* * pattern a limited pattern arrangement depending on the number
|
|
12
|
+
* * size of the box
|
|
13
|
+
* * width of the box, overwrites size
|
|
14
|
+
* * height of the box, overwrites size
|
|
15
|
+
* * tileSize sets the width, height and depth of the tile to the value of size, optional default 1
|
|
16
|
+
* * tileWidth sets the width (x direction) of the tile, overwrites the width set by size, optional, default size
|
|
17
|
+
* * tileHeight sets the height (y direction) of the tile, overwrites the height set by size, optional, default size
|
|
18
|
+
* * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE
|
|
19
|
+
* * alignHorizontal places whole tiles aligned to the center, left or right of a row
|
|
20
|
+
* * alignVertical places whole tiles aligned to the center, left or right of a column
|
|
21
|
+
* * frontUvs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the front side, optional, default vector4 (0, 0, 1, 1)
|
|
22
|
+
* * backUVs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the back side, optional, default vector4 (0, 0, 1, 1)
|
|
23
|
+
* @returns the VertexData of the tiled plane
|
|
24
|
+
*/
|
|
25
|
+
export declare function CreateTiledPlaneVertexData(options: {
|
|
26
|
+
pattern?: number;
|
|
27
|
+
tileSize?: number;
|
|
28
|
+
tileWidth?: number;
|
|
29
|
+
tileHeight?: number;
|
|
30
|
+
size?: number;
|
|
31
|
+
width?: number;
|
|
32
|
+
height?: number;
|
|
33
|
+
alignHorizontal?: number;
|
|
34
|
+
alignVertical?: number;
|
|
35
|
+
sideOrientation?: number;
|
|
36
|
+
frontUVs?: Vector4;
|
|
37
|
+
backUVs?: Vector4;
|
|
38
|
+
}): VertexData;
|
|
39
|
+
/**
|
|
40
|
+
* Creates a tiled plane mesh
|
|
41
|
+
* @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/creation/set/tiled_plane
|
|
42
|
+
* @param name defines the name of the mesh
|
|
43
|
+
* @param options an object used to set the following optional parameters for the tiled plane, required but can be empty
|
|
44
|
+
* * pattern a limited pattern arrangement depending on the number
|
|
45
|
+
* * size of the box
|
|
46
|
+
* * width of the box, overwrites size
|
|
47
|
+
* * height of the box, overwrites size
|
|
48
|
+
* * tileSize sets the width, height and depth of the tile to the value of size, optional default 1
|
|
49
|
+
* * tileWidth sets the width (x direction) of the tile, overwrites the width set by size, optional, default size
|
|
50
|
+
* * tileHeight sets the height (y direction) of the tile, overwrites the height set by size, optional, default size
|
|
51
|
+
* * sideOrientation optional and takes the values : Mesh.FRONTSIDE (default), Mesh.BACKSIDE or Mesh.DOUBLESIDE
|
|
52
|
+
* * alignHorizontal places whole tiles aligned to the center, left or right of a row
|
|
53
|
+
* * alignVertical places whole tiles aligned to the center, left or right of a column
|
|
54
|
+
* * frontUvs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the front side, optional, default vector4 (0, 0, 1, 1)
|
|
55
|
+
* * backUVs only usable when you create a double-sided mesh, used to choose what parts of the texture image to crop and apply on the back side, optional, default vector4 (0, 0, 1, 1)
|
|
56
|
+
* @param scene defines the hosting scene
|
|
57
|
+
* @returns the box mesh
|
|
58
|
+
*/
|
|
59
|
+
export declare function CreateTiledPlane(name: string, options: {
|
|
60
|
+
pattern?: number;
|
|
61
|
+
tileSize?: number;
|
|
62
|
+
tileWidth?: number;
|
|
63
|
+
tileHeight?: number;
|
|
64
|
+
size?: number;
|
|
65
|
+
width?: number;
|
|
66
|
+
height?: number;
|
|
67
|
+
alignHorizontal?: number;
|
|
68
|
+
alignVertical?: number;
|
|
69
|
+
sideOrientation?: number;
|
|
70
|
+
frontUVs?: Vector4;
|
|
71
|
+
backUVs?: Vector4;
|
|
72
|
+
updatable?: boolean;
|
|
73
|
+
}, scene?: Nullable<Scene>): Mesh;
|
|
74
|
+
/**
|
|
75
|
+
* Class containing static functions to help procedurally build meshes
|
|
76
|
+
* @deprecated use CreateTiledPlane instead
|
|
77
|
+
*/
|
|
78
|
+
export declare const TiledPlaneBuilder: {
|
|
79
|
+
CreateTiledPlane: typeof CreateTiledPlane;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Register side effects for the tiled plane builder.
|
|
83
|
+
* Safe to call multiple times; only the first call has an effect.
|
|
84
|
+
*/
|
|
85
|
+
export declare function RegisterTiledPlaneBuilder(): void;
|