three-base 2.0.142 → 2.0.145
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/DirectionalLight.d.ts +6 -6
- package/DirectionalLight.js +68 -68
- package/EventMap.d.ts +103 -103
- package/EventMap.js +17 -17
- package/EventMesh.d.ts +18 -18
- package/EventMesh.js +59 -59
- package/ExtrudeMesh.d.ts +112 -112
- package/ExtrudeMesh.js +342 -342
- package/FPScontrol.d.ts +511 -511
- package/FPScontrol.js +1799 -1799
- package/FPScontrol.ts +1855 -1855
- package/Fire/Fire.d.ts +28 -28
- package/Fire/Fire.js +80 -80
- package/Fire/FireGeometry.d.ts +9 -9
- package/Fire/FireGeometry.js +40 -40
- package/Fire/FireMaterial.d.ts +28 -28
- package/Fire/FireMaterial.js +32 -32
- package/Fire/index.d.ts +2 -2
- package/Fire/index.js +2 -2
- package/GLTFDracoLoader.d.ts +71 -71
- package/GLTFDracoLoader.js +266 -266
- package/GLTFDracoLoader.ts +1 -1
- package/Grass/Grass.d.ts +8 -8
- package/Grass/Grass.js +38 -38
- package/Grass/index.d.ts +2 -2
- package/Grass/index.js +2 -2
- package/Ground1/Ground1.d.ts +10 -10
- package/Ground1/Ground1.js +71 -71
- package/Ground1/index.d.ts +1 -1
- package/Ground1/index.js +1 -1
- package/MeshBase.d.ts +36 -36
- package/MeshBase.js +247 -247
- package/Mirror.d.ts +25 -25
- package/Mirror.js +143 -143
- package/MktMesh/MktMesh.d.ts +301 -291
- package/MktMesh/MktMesh.js +1064 -1045
- package/MktMesh/MktMesh.ts +32 -11
- package/MktMesh/assetUrl.d.ts +59 -35
- package/MktMesh/assetUrl.js +154 -69
- package/MktMesh/assetUrl.ts +155 -69
- package/MktMesh/mktMappingShader.d.ts +12 -12
- package/MktMesh/mktMappingShader.js +138 -138
- package/MktMesh/mktMappingShader.ts +139 -139
- package/MktMesh/mktShader.d.ts +263 -263
- package/MktMesh/mktShader.js +1236 -1236
- package/MktMesh/mktShader.ts +1344 -1344
- package/MktMesh/panoBitmapTexture.d.ts +25 -25
- package/MktMesh/panoBitmapTexture.js +52 -52
- package/MktMesh/panoBitmapTexture.ts +54 -54
- package/MktMesh/panoSlotBind.d.ts +29 -29
- package/MktMesh/panoSlotBind.js +106 -106
- package/MktMesh/panoSlotBind.ts +153 -153
- package/MktMesh/panoSlotRoster.d.ts +22 -22
- package/MktMesh/panoSlotRoster.js +169 -169
- package/MktMesh/panoSlotRoster.ts +168 -168
- package/MktMesh/panoTileStitcher.d.ts +119 -119
- package/MktMesh/panoTileStitcher.js +529 -529
- package/MktMesh/panoTileStitcher.ts +616 -616
- package/MktMesh/types.d.ts +75 -75
- package/MktMesh/types.js +1 -1
- package/MktMesh/wallCapTessellate.d.ts +33 -33
- package/MktMesh/wallCapTessellate.js +97 -97
- package/MktMesh/wallCapTessellate.ts +68 -68
- package/PipeMesh/PathGeometry.d.ts +44 -44
- package/PipeMesh/PathGeometry.js +307 -307
- package/PipeMesh/PathPoint.d.ts +17 -17
- package/PipeMesh/PathPoint.js +31 -31
- package/PipeMesh/PathPointList.d.ts +31 -31
- package/PipeMesh/PathPointList.js +209 -209
- package/PipeMesh/PathTubeGeometry.d.ts +25 -25
- package/PipeMesh/PathTubeGeometry.js +130 -130
- package/PipeMesh/PipeMesh.d.ts +25 -25
- package/PipeMesh/PipeMesh.js +63 -63
- package/PipeMesh/index.d.ts +1 -1
- package/PipeMesh/index.js +1 -1
- package/PlaneModal1/PlaneModal1.d.ts +34 -34
- package/PlaneModal1/PlaneModal1.js +109 -109
- package/PlaneModal1/index.d.ts +1 -1
- package/PlaneModal1/index.js +1 -1
- package/PlaneText.d.ts +27 -27
- package/PlaneText.js +35 -35
- package/PlaneWithHtml.d.ts +13 -13
- package/PlaneWithHtml.js +64 -64
- package/PointLight/PointLight.d.ts +13 -13
- package/PointLight/PointLight.js +64 -64
- package/PointLight/index.d.ts +1 -1
- package/PointLight/index.js +1 -1
- package/Sky/Sky.d.ts +9 -9
- package/Sky/Sky.js +22 -22
- package/Sky/index.d.ts +1 -1
- package/Sky/index.js +1 -1
- package/SpotLight.d.ts +6 -6
- package/SpotLight.js +72 -72
- package/SpriteModal1/SpriteModal1.d.ts +33 -33
- package/SpriteModal1/SpriteModal1.js +116 -116
- package/SpriteModal1/index.d.ts +1 -1
- package/SpriteModal1/index.js +1 -1
- package/SpriteText.d.ts +46 -46
- package/SpriteText.js +176 -176
- package/SpriteText2.d.ts +48 -48
- package/SpriteText2.js +223 -223
- package/SpriteText3.d.ts +86 -86
- package/SpriteText3.js +517 -517
- package/SpriteText3.ts +599 -599
- package/SpriteWithHtml.d.ts +9 -9
- package/SpriteWithHtml.js +44 -44
- package/Text3D/Text3D.d.ts +20 -20
- package/Text3D/Text3D.js +58 -58
- package/Text3D/fontController.d.ts +60 -60
- package/Text3D/fontController.js +166 -166
- package/Text3D/index.d.ts +1 -1
- package/Text3D/index.js +1 -1
- package/ThreeBase.d.ts +248 -248
- package/ThreeBase.js +1202 -1202
- package/ThreeBase.ts +1314 -1314
- package/ThreeMouse.d.ts +53 -54
- package/ThreeMouse.js +453 -453
- package/Transition.d.ts +45 -45
- package/Transition.js +209 -209
- package/Water/Water.d.ts +5 -5
- package/Water/Water.js +44 -44
- package/Water/index.d.ts +2 -2
- package/Water/index.js +2 -2
- package/WaterFlow/FloatingDuck.d.ts +88 -88
- package/WaterFlow/FloatingDuck.js +307 -307
- package/WaterFlow/FloatingDuck.ts +445 -445
- package/WaterFlow/GPUFluidSimulation.d.ts +56 -56
- package/WaterFlow/GPUFluidSimulation.js +781 -781
- package/WaterFlow/GPUFluidSimulation.ts +827 -827
- package/WaterFlow/ReservoirSystem.d.ts +106 -106
- package/WaterFlow/ReservoirSystem.js +611 -611
- package/WaterFlow/ReservoirSystem.ts +754 -754
- package/WaterFlow/SPHField.d.ts +35 -35
- package/WaterFlow/SPHField.js +203 -203
- package/WaterFlow/SPHField.ts +228 -228
- package/WaterFlow/ScreenSpaceFluidPass.d.ts +69 -69
- package/WaterFlow/ScreenSpaceFluidPass.js +728 -728
- package/WaterFlow/ScreenSpaceFluidPass.ts +789 -789
- package/WaterFlow/ShallowWaterSurface.d.ts +45 -45
- package/WaterFlow/ShallowWaterSurface.js +438 -438
- package/WaterFlow/ShallowWaterSurface.ts +510 -510
- package/WaterFlow/WaterFlow.d.ts +87 -87
- package/WaterFlow/WaterFlow.js +171 -171
- package/WaterFlow/WaterFlow.ts +219 -219
- package/WaterFlow/types.d.ts +161 -161
- package/WaterFlow/types.js +1 -1
- package/WaterFlow/types.ts +189 -189
- package/WaterFlow/waterFlowPass.d.ts +3 -3
- package/WaterFlow/waterFlowPass.js +20 -20
- package/WaterFlow/waterFlowPass.ts +40 -40
- package/collisionOBB.d.ts +42 -42
- package/collisionOBB.js +112 -112
- package/collisionOBB.ts +108 -108
- package/declare.d.ts +25 -25
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/instanced/InstancedBatch.d.ts +57 -57
- package/instanced/InstancedBatch.js +348 -348
- package/instanced/InstancedBatch.ts +406 -406
- package/instanced/InstancedChild.d.ts +174 -174
- package/instanced/InstancedChild.js +264 -264
- package/instanced/InstancedChild.ts +327 -327
- package/instanced/InstancedGroup.d.ts +43 -43
- package/instanced/InstancedGroup.js +126 -126
- package/instanced/InstancedGroup.ts +137 -137
- package/instanced/InstancedMeshBase.d.ts +38 -38
- package/instanced/InstancedMeshBase.js +282 -282
- package/instanced/InstancedTemplate.d.ts +46 -46
- package/instanced/InstancedTemplate.js +125 -125
- package/keyControls.d.ts +29 -30
- package/keyControls.js +101 -101
- package/lensflare/LensFlare.d.ts +39 -39
- package/lensflare/LensFlare.js +284 -284
- package/package.json +6 -1
- package/pass/bloom_pass.d.ts +2 -2
- package/pass/bloom_pass.js +174 -174
- package/pass/cover_pass.d.ts +2 -2
- package/pass/cover_pass.js +108 -108
- package/pass/debugDepthState.d.ts +20 -20
- package/pass/debugDepthState.js +9 -9
- package/pass/debugDepthState.ts +22 -22
- package/pass/depthTestBias.d.ts +12 -12
- package/pass/depthTestBias.js +12 -12
- package/pass/depthTestBias.ts +12 -12
- package/pass/effectUserData.d.ts +27 -27
- package/pass/effectUserData.js +1 -1
- package/pass/effectUserData.ts +46 -46
- package/pass/frosted_glass_pass.d.ts +2 -2
- package/pass/frosted_glass_pass.js +150 -150
- package/pass/fsQuad.d.ts +9 -9
- package/pass/fsQuad.js +28 -28
- package/pass/glow_pass.d.ts +2 -2
- package/pass/glow_pass.js +350 -350
- package/pass/screen_bloom_pass.d.ts +11 -11
- package/pass/screen_bloom_pass.js +136 -136
- package/pass/ssao_pass.d.ts +88 -88
- package/pass/ssao_pass.js +799 -799
- package/pass/ssao_pass.ts +918 -918
- package/pass/stroke_pass.d.ts +2 -2
- package/pass/stroke_pass.js +267 -267
- package/shaders/FXAAShaderMaterial.d.ts +3 -3
- package/shaders/FXAAShaderMaterial.js +20 -20
- package/shaders/baseDepthVisShader.d.ts +11 -11
- package/shaders/baseDepthVisShader.js +36 -36
- package/shaders/baseDepthVisShader.ts +36 -36
- package/shaders/baseTextureToRenderShader.d.ts +2 -2
- package/shaders/baseTextureToRenderShader.js +19 -19
- package/shaders/copyShader.d.ts +3 -3
- package/shaders/copyShader.js +13 -13
- package/shaders/debugDepthCompareShader.d.ts +14 -14
- package/shaders/debugDepthCompareShader.js +49 -49
- package/shaders/debugDepthCompareShader.ts +50 -50
- package/shaders/debugDepthJudgeShader.d.ts +18 -18
- package/shaders/debugDepthJudgeShader.js +52 -52
- package/shaders/debugDepthJudgeShader.ts +54 -54
- package/shaders/debugExcludedShader.d.ts +13 -13
- package/shaders/debugExcludedShader.js +46 -46
- package/shaders/debugExcludedShader.ts +48 -48
- package/spriteTextBg.d.ts +1 -1
- package/spriteTextBg.js +20 -20
- package/spriteTextBg.ts +20 -20
- package/threeLoader.d.ts +35 -35
- package/threeLoader.js +518 -518
- package/threeUtils.d.ts +53 -53
- package/threeUtils.js +329 -329
- package/types.d.ts +2 -2
- package/types.js +6 -6
package/Text3D/fontController.js
CHANGED
|
@@ -1,166 +1,166 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* @Author: xiaosihan
|
|
3
|
-
* @Date: 2021-04-15 00:34:44
|
|
4
|
-
* @Last Modified by: xiaosihan
|
|
5
|
-
* @Last Modified time: 2022-06-08 14:33:45
|
|
6
|
-
*/
|
|
7
|
-
import Dexie from "dexie";
|
|
8
|
-
import { filter, first, isEmpty } from "lodash";
|
|
9
|
-
import { Font } from "three/examples/jsm/loaders/FontLoader";
|
|
10
|
-
import threeUtils from "../threeUtils";
|
|
11
|
-
import gentilisJSON from "./gentilis.json";
|
|
12
|
-
class indexBD extends Dexie {
|
|
13
|
-
constructor(dbName) {
|
|
14
|
-
super(dbName);
|
|
15
|
-
}
|
|
16
|
-
threeFont;
|
|
17
|
-
}
|
|
18
|
-
class fontControl {
|
|
19
|
-
constructor() { }
|
|
20
|
-
THREEFontMap = new Map();
|
|
21
|
-
fontBD = (() => {
|
|
22
|
-
let fontDB = new indexBD("three-base-font");
|
|
23
|
-
fontDB.version(1).stores({ threeFont: "++KeyPath,fontType,fontName,fontJson" });
|
|
24
|
-
return fontDB;
|
|
25
|
-
})();
|
|
26
|
-
/**
|
|
27
|
-
* 保存 字体json到本地数据库中
|
|
28
|
-
* @param {saveFontParam} { fontType = "simhei", fontName, fontJson }
|
|
29
|
-
* @memberof fontControl
|
|
30
|
-
*/
|
|
31
|
-
async saveFont({ fontType = "simhei", fontName, fontJson = {} }) {
|
|
32
|
-
let findResult = await this.getFont({ fontType, fontName });
|
|
33
|
-
if (isEmpty(findResult)) {
|
|
34
|
-
await this.fontBD.threeFont.add({ fontType, fontName, fontJson });
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* 通过 fontType 和 fontName 查询 fontJson
|
|
39
|
-
* @param {getFontParam} { fontType = "simhei", fontName }
|
|
40
|
-
* @returns
|
|
41
|
-
* @memberof fontControl
|
|
42
|
-
*/
|
|
43
|
-
async getFont({ fontType = "simhei", fontName }) {
|
|
44
|
-
let fondResult = await this.fontBD.threeFont
|
|
45
|
-
.filter((d) => (d.fontType === fontType && d.fontName === fontName))
|
|
46
|
-
.toArray();
|
|
47
|
-
if (isEmpty(fondResult)) {
|
|
48
|
-
return undefined;
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
return first(fondResult).fontJson;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
_loadTextCall = new Map();
|
|
55
|
-
async loadText({ fontType = "simhei", text = "", fontBasePath, callback }) {
|
|
56
|
-
await this._loadFontIndexJson({ fontType, fontBasePath });
|
|
57
|
-
let newCallback = () => {
|
|
58
|
-
let fontFamily = this.THREEFontMap.get(fontType);
|
|
59
|
-
if (callback && fontFamily) {
|
|
60
|
-
callback(fontFamily);
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
filter(text).map((fontName) => {
|
|
64
|
-
if (!this.hasFont({ fontType, fontName })) {
|
|
65
|
-
let fontFamily = this.THREEFontMap.get(fontType);
|
|
66
|
-
if (fontFamily) {
|
|
67
|
-
fontFamily.data.glyphs[fontName] = { "ha": 1389, "x_min": 477, "x_max": 949, "o": "m 700 901 q 906 770 830 906 q 770 477 949 618 q 711 288 711 412 l 613 288 q 781 608 613 494 q 819 722 825 651 q 700 808 808 803 l 684 808 q 581 673 575 803 l 477 673 q 613 884 477 836 q 700 901 629 901 m 732 184 l 732 71 l 591 71 l 591 184 l 732 184 z " };
|
|
68
|
-
}
|
|
69
|
-
this._loadFontJson({ fontType, fontName, fontBasePath });
|
|
70
|
-
}
|
|
71
|
-
let origin_callbacks = this._loadTextCall.get(`${fontType}_${fontName}`) || [];
|
|
72
|
-
if (newCallback) {
|
|
73
|
-
this._loadTextCall.set(`${fontType}_${fontName}`, [...origin_callbacks, newCallback]);
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
threeUtils.addWork(newCallback);
|
|
77
|
-
}
|
|
78
|
-
async _loadFontIndexJson({ fontType = "simhei", fontBasePath }) {
|
|
79
|
-
let fontFamily = this.THREEFontMap.get(fontType);
|
|
80
|
-
if (!fontFamily) {
|
|
81
|
-
fontFamily = new Font({
|
|
82
|
-
"underlineThickness": 69,
|
|
83
|
-
"underlinePosition": -174,
|
|
84
|
-
"resolution": 1000,
|
|
85
|
-
"original_font_information": {},
|
|
86
|
-
"familyName": "Source Han Sans CN Normal",
|
|
87
|
-
"descender": -167,
|
|
88
|
-
"ascender": 0,
|
|
89
|
-
"boundingBox": {
|
|
90
|
-
"yMin": -700,
|
|
91
|
-
"xMin": -1389,
|
|
92
|
-
"yMax": 700,
|
|
93
|
-
"xMax": 4067
|
|
94
|
-
},
|
|
95
|
-
"glyphs": {}
|
|
96
|
-
});
|
|
97
|
-
this.THREEFontMap.set(fontType, fontFamily);
|
|
98
|
-
let fontFamilyIndexJson = await this.getFont({ fontType, fontName: "index" });
|
|
99
|
-
if (!fontFamilyIndexJson) {
|
|
100
|
-
this._loadFontJson({ fontType, fontName: "index", fontBasePath });
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
async _loadFontJson({ fontType = "simhei", fontName, fontBasePath }) {
|
|
105
|
-
let fontJson = await this.getFont({ fontType, fontName });
|
|
106
|
-
if (!fontJson) {
|
|
107
|
-
fontJson = gentilisJSON.glyphs[fontName];
|
|
108
|
-
}
|
|
109
|
-
if (!fontJson) {
|
|
110
|
-
await new Promise(resolve => {
|
|
111
|
-
let script = document.createElement("script");
|
|
112
|
-
Object.assign(script, {
|
|
113
|
-
type: "text/javascript",
|
|
114
|
-
src: `${fontBasePath}${fontType}/${fontName}.js`,
|
|
115
|
-
async: true,
|
|
116
|
-
onload: () => {
|
|
117
|
-
script.remove();
|
|
118
|
-
resolve();
|
|
119
|
-
},
|
|
120
|
-
onerror: () => {
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
document.head.appendChild(script);
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
let fontFamily = this.THREEFontMap.get(fontType);
|
|
128
|
-
if (fontFamily) {
|
|
129
|
-
fontFamily.data.glyphs[fontName] = fontJson;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
let origin_callbacks = this._loadTextCall.get(`${fontType}_${fontName}`) || [];
|
|
133
|
-
this._loadTextCall.delete(`${fontType}_${fontName}`);
|
|
134
|
-
origin_callbacks.map(callback => {
|
|
135
|
-
threeUtils.addWork(callback);
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
hasFont({ fontType, fontName }) {
|
|
139
|
-
return !isEmpty(this.THREEFontMap.get(fontType) &&
|
|
140
|
-
this.THREEFontMap.get(fontType).data.glyphs[fontName]);
|
|
141
|
-
}
|
|
142
|
-
addFont({ fontType = "simhei", fontName, fontJson }) {
|
|
143
|
-
this.saveFont({ fontType, fontName, fontJson });
|
|
144
|
-
let fontFamily = this.THREEFontMap.get(fontType);
|
|
145
|
-
if (fontFamily) {
|
|
146
|
-
fontFamily.data.glyphs[fontName] = fontJson;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
addFontFamily({ fontType = "simhei", fontFamilyJson }) {
|
|
150
|
-
this.saveFont({ fontType, fontName: "index", fontJson: fontFamilyJson });
|
|
151
|
-
let fontFamily = this.THREEFontMap.get(fontType);
|
|
152
|
-
if (fontFamily) {
|
|
153
|
-
fontFamily.data = Object.assign({}, fontFamilyJson, {
|
|
154
|
-
glyphs: fontFamily.data.glyphs
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
const fontController = new fontControl();
|
|
160
|
-
// 将 fontController 实例挂载到 window 上,供浏览器控制台全局访问
|
|
161
|
-
window.fontController = fontController;
|
|
162
|
-
// 兼容旧代码中对 fontContorller (多了一个 l) 的错误拼写引用
|
|
163
|
-
// 保持向后兼容,避免旧示例代码或浏览器控制台输入报错
|
|
164
|
-
window.fontContorller = fontController;
|
|
165
|
-
export default fontController;
|
|
166
|
-
export { fontController };
|
|
1
|
+
/*
|
|
2
|
+
* @Author: xiaosihan
|
|
3
|
+
* @Date: 2021-04-15 00:34:44
|
|
4
|
+
* @Last Modified by: xiaosihan
|
|
5
|
+
* @Last Modified time: 2022-06-08 14:33:45
|
|
6
|
+
*/
|
|
7
|
+
import Dexie from "dexie";
|
|
8
|
+
import { filter, first, isEmpty } from "lodash";
|
|
9
|
+
import { Font } from "three/examples/jsm/loaders/FontLoader";
|
|
10
|
+
import threeUtils from "../threeUtils";
|
|
11
|
+
import gentilisJSON from "./gentilis.json";
|
|
12
|
+
class indexBD extends Dexie {
|
|
13
|
+
constructor(dbName) {
|
|
14
|
+
super(dbName);
|
|
15
|
+
}
|
|
16
|
+
threeFont;
|
|
17
|
+
}
|
|
18
|
+
class fontControl {
|
|
19
|
+
constructor() { }
|
|
20
|
+
THREEFontMap = new Map();
|
|
21
|
+
fontBD = (() => {
|
|
22
|
+
let fontDB = new indexBD("three-base-font");
|
|
23
|
+
fontDB.version(1).stores({ threeFont: "++KeyPath,fontType,fontName,fontJson" });
|
|
24
|
+
return fontDB;
|
|
25
|
+
})();
|
|
26
|
+
/**
|
|
27
|
+
* 保存 字体json到本地数据库中
|
|
28
|
+
* @param {saveFontParam} { fontType = "simhei", fontName, fontJson }
|
|
29
|
+
* @memberof fontControl
|
|
30
|
+
*/
|
|
31
|
+
async saveFont({ fontType = "simhei", fontName, fontJson = {} }) {
|
|
32
|
+
let findResult = await this.getFont({ fontType, fontName });
|
|
33
|
+
if (isEmpty(findResult)) {
|
|
34
|
+
await this.fontBD.threeFont.add({ fontType, fontName, fontJson });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 通过 fontType 和 fontName 查询 fontJson
|
|
39
|
+
* @param {getFontParam} { fontType = "simhei", fontName }
|
|
40
|
+
* @returns
|
|
41
|
+
* @memberof fontControl
|
|
42
|
+
*/
|
|
43
|
+
async getFont({ fontType = "simhei", fontName }) {
|
|
44
|
+
let fondResult = await this.fontBD.threeFont
|
|
45
|
+
.filter((d) => (d.fontType === fontType && d.fontName === fontName))
|
|
46
|
+
.toArray();
|
|
47
|
+
if (isEmpty(fondResult)) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
return first(fondResult).fontJson;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
_loadTextCall = new Map();
|
|
55
|
+
async loadText({ fontType = "simhei", text = "", fontBasePath, callback }) {
|
|
56
|
+
await this._loadFontIndexJson({ fontType, fontBasePath });
|
|
57
|
+
let newCallback = () => {
|
|
58
|
+
let fontFamily = this.THREEFontMap.get(fontType);
|
|
59
|
+
if (callback && fontFamily) {
|
|
60
|
+
callback(fontFamily);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
filter(text).map((fontName) => {
|
|
64
|
+
if (!this.hasFont({ fontType, fontName })) {
|
|
65
|
+
let fontFamily = this.THREEFontMap.get(fontType);
|
|
66
|
+
if (fontFamily) {
|
|
67
|
+
fontFamily.data.glyphs[fontName] = { "ha": 1389, "x_min": 477, "x_max": 949, "o": "m 700 901 q 906 770 830 906 q 770 477 949 618 q 711 288 711 412 l 613 288 q 781 608 613 494 q 819 722 825 651 q 700 808 808 803 l 684 808 q 581 673 575 803 l 477 673 q 613 884 477 836 q 700 901 629 901 m 732 184 l 732 71 l 591 71 l 591 184 l 732 184 z " };
|
|
68
|
+
}
|
|
69
|
+
this._loadFontJson({ fontType, fontName, fontBasePath });
|
|
70
|
+
}
|
|
71
|
+
let origin_callbacks = this._loadTextCall.get(`${fontType}_${fontName}`) || [];
|
|
72
|
+
if (newCallback) {
|
|
73
|
+
this._loadTextCall.set(`${fontType}_${fontName}`, [...origin_callbacks, newCallback]);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
threeUtils.addWork(newCallback);
|
|
77
|
+
}
|
|
78
|
+
async _loadFontIndexJson({ fontType = "simhei", fontBasePath }) {
|
|
79
|
+
let fontFamily = this.THREEFontMap.get(fontType);
|
|
80
|
+
if (!fontFamily) {
|
|
81
|
+
fontFamily = new Font({
|
|
82
|
+
"underlineThickness": 69,
|
|
83
|
+
"underlinePosition": -174,
|
|
84
|
+
"resolution": 1000,
|
|
85
|
+
"original_font_information": {},
|
|
86
|
+
"familyName": "Source Han Sans CN Normal",
|
|
87
|
+
"descender": -167,
|
|
88
|
+
"ascender": 0,
|
|
89
|
+
"boundingBox": {
|
|
90
|
+
"yMin": -700,
|
|
91
|
+
"xMin": -1389,
|
|
92
|
+
"yMax": 700,
|
|
93
|
+
"xMax": 4067
|
|
94
|
+
},
|
|
95
|
+
"glyphs": {}
|
|
96
|
+
});
|
|
97
|
+
this.THREEFontMap.set(fontType, fontFamily);
|
|
98
|
+
let fontFamilyIndexJson = await this.getFont({ fontType, fontName: "index" });
|
|
99
|
+
if (!fontFamilyIndexJson) {
|
|
100
|
+
this._loadFontJson({ fontType, fontName: "index", fontBasePath });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async _loadFontJson({ fontType = "simhei", fontName, fontBasePath }) {
|
|
105
|
+
let fontJson = await this.getFont({ fontType, fontName });
|
|
106
|
+
if (!fontJson) {
|
|
107
|
+
fontJson = gentilisJSON.glyphs[fontName];
|
|
108
|
+
}
|
|
109
|
+
if (!fontJson) {
|
|
110
|
+
await new Promise(resolve => {
|
|
111
|
+
let script = document.createElement("script");
|
|
112
|
+
Object.assign(script, {
|
|
113
|
+
type: "text/javascript",
|
|
114
|
+
src: `${fontBasePath}${fontType}/${fontName}.js`,
|
|
115
|
+
async: true,
|
|
116
|
+
onload: () => {
|
|
117
|
+
script.remove();
|
|
118
|
+
resolve();
|
|
119
|
+
},
|
|
120
|
+
onerror: () => {
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
document.head.appendChild(script);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
let fontFamily = this.THREEFontMap.get(fontType);
|
|
128
|
+
if (fontFamily) {
|
|
129
|
+
fontFamily.data.glyphs[fontName] = fontJson;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
let origin_callbacks = this._loadTextCall.get(`${fontType}_${fontName}`) || [];
|
|
133
|
+
this._loadTextCall.delete(`${fontType}_${fontName}`);
|
|
134
|
+
origin_callbacks.map(callback => {
|
|
135
|
+
threeUtils.addWork(callback);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
hasFont({ fontType, fontName }) {
|
|
139
|
+
return !isEmpty(this.THREEFontMap.get(fontType) &&
|
|
140
|
+
this.THREEFontMap.get(fontType).data.glyphs[fontName]);
|
|
141
|
+
}
|
|
142
|
+
addFont({ fontType = "simhei", fontName, fontJson }) {
|
|
143
|
+
this.saveFont({ fontType, fontName, fontJson });
|
|
144
|
+
let fontFamily = this.THREEFontMap.get(fontType);
|
|
145
|
+
if (fontFamily) {
|
|
146
|
+
fontFamily.data.glyphs[fontName] = fontJson;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
addFontFamily({ fontType = "simhei", fontFamilyJson }) {
|
|
150
|
+
this.saveFont({ fontType, fontName: "index", fontJson: fontFamilyJson });
|
|
151
|
+
let fontFamily = this.THREEFontMap.get(fontType);
|
|
152
|
+
if (fontFamily) {
|
|
153
|
+
fontFamily.data = Object.assign({}, fontFamilyJson, {
|
|
154
|
+
glyphs: fontFamily.data.glyphs
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
const fontController = new fontControl();
|
|
160
|
+
// 将 fontController 实例挂载到 window 上,供浏览器控制台全局访问
|
|
161
|
+
window.fontController = fontController;
|
|
162
|
+
// 兼容旧代码中对 fontContorller (多了一个 l) 的错误拼写引用
|
|
163
|
+
// 保持向后兼容,避免旧示例代码或浏览器控制台输入报错
|
|
164
|
+
window.fontContorller = fontController;
|
|
165
|
+
export default fontController;
|
|
166
|
+
export { fontController };
|
package/Text3D/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default } from "./Text3D";
|
|
1
|
+
export { default } from "./Text3D";
|
package/Text3D/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default } from "./Text3D";
|
|
1
|
+
export { default } from "./Text3D";
|