three-base 2.0.134 → 2.0.142

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.
Files changed (305) hide show
  1. package/DirectionalLight.d.ts +6 -6
  2. package/DirectionalLight.js +68 -68
  3. package/DirectionalLight.ts +70 -0
  4. package/EventMap.d.ts +103 -0
  5. package/EventMap.js +17 -0
  6. package/EventMap.ts +139 -0
  7. package/EventMesh.d.ts +18 -18
  8. package/EventMesh.js +59 -59
  9. package/EventMesh.ts +60 -0
  10. package/ExtrudeMesh.d.ts +112 -112
  11. package/ExtrudeMesh.js +342 -366
  12. package/ExtrudeMesh.ts +553 -0
  13. package/FPScontrol.d.ts +511 -71
  14. package/FPScontrol.js +1799 -505
  15. package/FPScontrol.ts +1855 -0
  16. package/Fire/Fire.d.ts +28 -28
  17. package/Fire/Fire.js +80 -79
  18. package/Fire/Fire.ts +89 -0
  19. package/Fire/{FireGromtry.d.ts → FireGeometry.d.ts} +9 -9
  20. package/Fire/{FireGromtry.js → FireGeometry.js} +40 -40
  21. package/Fire/FireGeometry.ts +40 -0
  22. package/Fire/FireMaterial.d.ts +28 -28
  23. package/Fire/FireMaterial.js +32 -32
  24. package/Fire/FireMaterial.ts +89 -0
  25. package/Fire/index.d.ts +2 -1
  26. package/Fire/index.js +2 -1
  27. package/Fire/index.ts +2 -0
  28. package/GLTFDracoLoader.d.ts +71 -0
  29. package/GLTFDracoLoader.js +266 -0
  30. package/GLTFDracoLoader.ts +430 -0
  31. package/Grass/Grass.d.ts +8 -8
  32. package/Grass/Grass.js +38 -38
  33. package/Grass/Grass.ts +38 -0
  34. package/Grass/index.d.ts +2 -1
  35. package/Grass/index.js +2 -1
  36. package/Grass/index.ts +2 -0
  37. package/Ground1/Ground1.d.ts +10 -11
  38. package/Ground1/Ground1.js +95 -91
  39. package/Ground1/Ground1.ts +114 -0
  40. package/Ground1/index.d.ts +1 -1
  41. package/Ground1/index.js +1 -1
  42. package/Ground1/index.ts +1 -0
  43. package/MeshBase.d.ts +36 -35
  44. package/MeshBase.js +247 -223
  45. package/MeshBase.ts +253 -0
  46. package/Mirror.d.ts +25 -25
  47. package/Mirror.js +143 -139
  48. package/Mirror.ts +203 -0
  49. package/MktMesh/MktMesh.d.ts +291 -0
  50. package/MktMesh/MktMesh.js +1045 -0
  51. package/MktMesh/MktMesh.ts +1075 -0
  52. package/MktMesh/assetUrl.d.ts +35 -0
  53. package/MktMesh/assetUrl.js +69 -0
  54. package/MktMesh/assetUrl.ts +69 -0
  55. package/MktMesh/mktMappingShader.d.ts +12 -0
  56. package/MktMesh/mktMappingShader.js +139 -0
  57. package/MktMesh/mktMappingShader.ts +139 -0
  58. package/MktMesh/mktShader.d.ts +263 -0
  59. package/MktMesh/mktShader.js +1248 -0
  60. package/MktMesh/mktShader.ts +1344 -0
  61. package/MktMesh/panoBitmapTexture.d.ts +25 -0
  62. package/MktMesh/panoBitmapTexture.js +52 -0
  63. package/MktMesh/panoBitmapTexture.ts +54 -0
  64. package/MktMesh/panoSlotBind.d.ts +29 -0
  65. package/MktMesh/panoSlotBind.js +106 -0
  66. package/MktMesh/panoSlotBind.ts +153 -0
  67. package/MktMesh/panoSlotRoster.d.ts +22 -0
  68. package/MktMesh/panoSlotRoster.js +169 -0
  69. package/MktMesh/panoSlotRoster.ts +168 -0
  70. package/MktMesh/panoTileStitcher.d.ts +119 -0
  71. package/MktMesh/panoTileStitcher.js +533 -0
  72. package/MktMesh/panoTileStitcher.ts +616 -0
  73. package/MktMesh/types.d.ts +75 -0
  74. package/MktMesh/types.js +1 -0
  75. package/MktMesh/types.ts +87 -0
  76. package/MktMesh/wallCapTessellate.d.ts +33 -0
  77. package/MktMesh/wallCapTessellate.js +97 -0
  78. package/MktMesh/wallCapTessellate.ts +68 -0
  79. package/PipeMesh/PathGeometry.d.ts +44 -44
  80. package/PipeMesh/PathGeometry.js +307 -300
  81. package/PipeMesh/PathGeometry.ts +343 -0
  82. package/PipeMesh/PathPoint.d.ts +17 -17
  83. package/PipeMesh/PathPoint.js +31 -31
  84. package/PipeMesh/PathPoint.ts +36 -0
  85. package/PipeMesh/PathPointList.d.ts +31 -31
  86. package/PipeMesh/PathPointList.js +209 -208
  87. package/PipeMesh/PathPointList.ts +227 -0
  88. package/PipeMesh/PathTubeGeometry.d.ts +25 -25
  89. package/PipeMesh/PathTubeGeometry.js +130 -130
  90. package/PipeMesh/PathTubeGeometry.ts +146 -0
  91. package/PipeMesh/PipeMesh.d.ts +25 -25
  92. package/PipeMesh/PipeMesh.js +63 -63
  93. package/PipeMesh/PipeMesh.ts +76 -0
  94. package/PipeMesh/index.d.ts +1 -1
  95. package/PipeMesh/index.js +1 -1
  96. package/PipeMesh/index.ts +1 -0
  97. package/PlaneModal1/PlaneModal1.d.ts +34 -31
  98. package/PlaneModal1/PlaneModal1.js +109 -105
  99. package/PlaneModal1/PlaneModal1.ts +138 -0
  100. package/PlaneModal1/index.d.ts +1 -1
  101. package/PlaneModal1/index.js +1 -1
  102. package/PlaneModal1/index.ts +1 -0
  103. package/PlaneText.d.ts +27 -39
  104. package/PlaneText.js +35 -30
  105. package/PlaneText.ts +55 -0
  106. package/PlaneWithHtml.d.ts +13 -11
  107. package/PlaneWithHtml.js +64 -63
  108. package/PlaneWithHtml.ts +70 -0
  109. package/PointLight/PointLight.d.ts +13 -14
  110. package/PointLight/PointLight.js +64 -70
  111. package/PointLight/PointLight.ts +67 -0
  112. package/PointLight/index.d.ts +1 -1
  113. package/PointLight/index.js +1 -1
  114. package/PointLight/index.ts +1 -0
  115. package/README.md +110 -79
  116. package/Sky/Sky.d.ts +9 -9
  117. package/Sky/Sky.js +22 -22
  118. package/Sky/Sky.ts +22 -0
  119. package/Sky/index.d.ts +1 -1
  120. package/Sky/index.js +1 -1
  121. package/Sky/index.ts +1 -0
  122. package/SpotLight.d.ts +6 -6
  123. package/SpotLight.js +72 -72
  124. package/SpotLight.ts +74 -0
  125. package/SpriteModal1/SpriteModal1.d.ts +33 -30
  126. package/SpriteModal1/SpriteModal1.js +116 -110
  127. package/SpriteModal1/SpriteModal1.ts +146 -0
  128. package/SpriteModal1/index.d.ts +1 -1
  129. package/SpriteModal1/index.js +1 -1
  130. package/SpriteModal1/index.ts +1 -0
  131. package/SpriteText.d.ts +46 -45
  132. package/SpriteText.js +176 -163
  133. package/SpriteText.ts +205 -0
  134. package/SpriteText2.d.ts +48 -47
  135. package/SpriteText2.js +223 -198
  136. package/SpriteText2.ts +258 -0
  137. package/SpriteText3.d.ts +86 -0
  138. package/SpriteText3.js +519 -0
  139. package/SpriteText3.ts +599 -0
  140. package/SpriteWithHtml.d.ts +9 -7
  141. package/SpriteWithHtml.js +44 -44
  142. package/SpriteWithHtml.ts +50 -0
  143. package/Text3D/Text3D.d.ts +20 -20
  144. package/Text3D/Text3D.js +58 -62
  145. package/Text3D/Text3D.ts +77 -0
  146. package/Text3D/fontController.d.ts +60 -59
  147. package/Text3D/fontController.js +166 -199
  148. package/Text3D/fontController.ts +209 -0
  149. package/Text3D/index.d.ts +1 -1
  150. package/Text3D/index.js +1 -1
  151. package/Text3D/index.ts +1 -0
  152. package/ThreeBase.d.ts +248 -97
  153. package/ThreeBase.js +1202 -613
  154. package/ThreeBase.ts +1314 -0
  155. package/ThreeMouse.d.ts +54 -40
  156. package/ThreeMouse.js +453 -407
  157. package/ThreeMouse.ts +472 -0
  158. package/Transition.d.ts +45 -40
  159. package/Transition.js +209 -210
  160. package/Transition.ts +242 -0
  161. package/Water/Water.d.ts +5 -5
  162. package/Water/Water.js +44 -26
  163. package/Water/Water.ts +45 -0
  164. package/Water/index.d.ts +2 -0
  165. package/Water/index.js +2 -0
  166. package/Water/index.ts +2 -0
  167. package/WaterFlow/FloatingDuck.d.ts +88 -0
  168. package/WaterFlow/FloatingDuck.js +307 -0
  169. package/WaterFlow/FloatingDuck.ts +445 -0
  170. package/WaterFlow/GPUFluidSimulation.d.ts +56 -0
  171. package/WaterFlow/GPUFluidSimulation.js +785 -0
  172. package/WaterFlow/GPUFluidSimulation.ts +827 -0
  173. package/WaterFlow/ReservoirSystem.d.ts +106 -0
  174. package/WaterFlow/ReservoirSystem.js +621 -0
  175. package/WaterFlow/ReservoirSystem.ts +754 -0
  176. package/WaterFlow/SPHField.d.ts +35 -0
  177. package/WaterFlow/SPHField.js +204 -0
  178. package/WaterFlow/SPHField.ts +228 -0
  179. package/WaterFlow/ScreenSpaceFluidPass.d.ts +69 -0
  180. package/WaterFlow/ScreenSpaceFluidPass.js +736 -0
  181. package/WaterFlow/ScreenSpaceFluidPass.ts +789 -0
  182. package/WaterFlow/ShallowWaterSurface.d.ts +45 -0
  183. package/WaterFlow/ShallowWaterSurface.js +441 -0
  184. package/WaterFlow/ShallowWaterSurface.ts +510 -0
  185. package/WaterFlow/WaterFlow.d.ts +87 -0
  186. package/WaterFlow/WaterFlow.js +171 -0
  187. package/WaterFlow/WaterFlow.ts +219 -0
  188. package/WaterFlow/types.d.ts +161 -0
  189. package/WaterFlow/types.js +1 -0
  190. package/WaterFlow/types.ts +189 -0
  191. package/WaterFlow/waterFlowPass.d.ts +3 -0
  192. package/WaterFlow/waterFlowPass.js +20 -0
  193. package/WaterFlow/waterFlowPass.ts +40 -0
  194. package/collisionOBB.d.ts +42 -0
  195. package/collisionOBB.js +112 -0
  196. package/collisionOBB.ts +108 -0
  197. package/declare.d.ts +23 -165
  198. package/index.d.ts +1 -1
  199. package/index.js +1 -2
  200. package/index.ts +1 -0
  201. package/instanced/InstancedBatch.d.ts +57 -0
  202. package/instanced/InstancedBatch.js +348 -0
  203. package/instanced/InstancedBatch.ts +406 -0
  204. package/instanced/InstancedChild.d.ts +174 -0
  205. package/instanced/InstancedChild.js +264 -0
  206. package/instanced/InstancedChild.ts +327 -0
  207. package/instanced/InstancedGroup.d.ts +43 -0
  208. package/instanced/InstancedGroup.js +126 -0
  209. package/instanced/InstancedGroup.ts +137 -0
  210. package/{InstancedMeshBase.d.ts → instanced/InstancedMeshBase.d.ts} +38 -39
  211. package/{InstancedMeshBase.js → instanced/InstancedMeshBase.js} +282 -293
  212. package/instanced/InstancedMeshBase.ts +292 -0
  213. package/instanced/InstancedTemplate.d.ts +46 -0
  214. package/instanced/InstancedTemplate.js +125 -0
  215. package/instanced/InstancedTemplate.ts +188 -0
  216. package/keyControls.d.ts +30 -0
  217. package/{keyContorls.js → keyControls.js} +101 -98
  218. package/keyControls.ts +107 -0
  219. package/lensflare/LensFlare.d.ts +39 -0
  220. package/lensflare/LensFlare.js +373 -0
  221. package/lensflare/LensFlare.ts +448 -0
  222. package/lensflare/lensflare0.png +0 -0
  223. package/lensflare/lensflare3.png +0 -0
  224. package/lensflare/lensflare_custom.png +0 -0
  225. package/lensflare/lensflare_hex_ghost.png +0 -0
  226. package/lensflare/lensflare_hex_main.png +0 -0
  227. package/package.json +101 -26
  228. package/pass/bloom_pass.d.ts +2 -2
  229. package/pass/bloom_pass.js +188 -101
  230. package/pass/bloom_pass.ts +243 -0
  231. package/pass/cover_pass.d.ts +2 -2
  232. package/pass/cover_pass.js +122 -99
  233. package/pass/cover_pass.ts +182 -0
  234. package/pass/debugDepthState.d.ts +20 -0
  235. package/pass/debugDepthState.js +9 -0
  236. package/pass/debugDepthState.ts +22 -0
  237. package/pass/depthTestBias.d.ts +12 -0
  238. package/pass/depthTestBias.js +12 -0
  239. package/pass/depthTestBias.ts +12 -0
  240. package/pass/effectUserData.d.ts +27 -0
  241. package/pass/effectUserData.js +1 -0
  242. package/pass/effectUserData.ts +46 -0
  243. package/pass/frosted_glass_pass.d.ts +2 -2
  244. package/pass/frosted_glass_pass.js +167 -186
  245. package/pass/frosted_glass_pass.ts +288 -0
  246. package/pass/fsQuad.d.ts +9 -9
  247. package/pass/fsQuad.js +28 -28
  248. package/pass/fsQuad.ts +34 -0
  249. package/pass/glow_pass.d.ts +2 -2
  250. package/pass/glow_pass.js +449 -233
  251. package/pass/glow_pass.ts +654 -0
  252. package/pass/screen_bloom_pass.d.ts +11 -0
  253. package/pass/screen_bloom_pass.js +235 -0
  254. package/pass/screen_bloom_pass.ts +263 -0
  255. package/pass/ssao_pass.d.ts +88 -11
  256. package/pass/ssao_pass.js +802 -288
  257. package/pass/ssao_pass.ts +918 -0
  258. package/pass/stroke_pass.d.ts +2 -2
  259. package/pass/stroke_pass.js +329 -258
  260. package/pass/stroke_pass.ts +638 -0
  261. package/shaders/FXAAShaderMaterial.d.ts +3 -3
  262. package/shaders/FXAAShaderMaterial.js +23 -66
  263. package/shaders/FXAAShaderMaterial.ts +201 -0
  264. package/shaders/baseDepthVisShader.d.ts +11 -0
  265. package/shaders/baseDepthVisShader.js +36 -0
  266. package/shaders/baseDepthVisShader.ts +36 -0
  267. package/shaders/baseTextureToRenderShader.d.ts +2 -2
  268. package/shaders/baseTextureToRenderShader.js +55 -60
  269. package/shaders/baseTextureToRenderShader.ts +232 -0
  270. package/shaders/copyShader.d.ts +3 -3
  271. package/shaders/copyShader.js +13 -14
  272. package/shaders/copyShader.ts +32 -0
  273. package/shaders/debugDepthCompareShader.d.ts +14 -0
  274. package/shaders/debugDepthCompareShader.js +49 -0
  275. package/shaders/debugDepthCompareShader.ts +50 -0
  276. package/shaders/debugDepthJudgeShader.d.ts +18 -0
  277. package/shaders/debugDepthJudgeShader.js +52 -0
  278. package/shaders/debugDepthJudgeShader.ts +54 -0
  279. package/shaders/debugExcludedShader.d.ts +13 -0
  280. package/shaders/debugExcludedShader.js +46 -0
  281. package/shaders/debugExcludedShader.ts +48 -0
  282. package/spriteTextBg.d.ts +1 -0
  283. package/spriteTextBg.js +20 -0
  284. package/spriteTextBg.ts +20 -0
  285. package/threeLoader.d.ts +35 -34
  286. package/threeLoader.js +518 -527
  287. package/threeLoader.ts +525 -0
  288. package/threeUtils.d.ts +53 -52
  289. package/threeUtils.js +329 -330
  290. package/threeUtils.ts +373 -0
  291. package/types.d.ts +2 -0
  292. package/types.js +6 -0
  293. package/types.ts +8 -0
  294. package/ApngTexture.d.ts +0 -13
  295. package/ApngTexture.js +0 -61
  296. package/ApngTextureManage.d.ts +0 -18
  297. package/ApngTextureManage.js +0 -87
  298. package/KeyFrameAnimation.d.ts +0 -25
  299. package/KeyFrameAnimation.js +0 -78
  300. package/keyContorls.d.ts +0 -25
  301. package/lib/draco/draco_decoder.js +0 -34
  302. package/lib/draco/draco_decoder.wasm +0 -0
  303. package/lib/draco/draco_wasm_wrapper.js +0 -117
  304. package/shaders.d.ts +0 -5
  305. package/shaders.js +0 -93
@@ -1,110 +1,116 @@
1
- /*
2
- * @Author: xiaosihan
3
- * @Date: 2023-03-08 00:01:34
4
- * @Last Modified by: xiaosihan
5
- * @Last Modified time: 2023-03-08 02:05:25
6
- */
7
- import { Sprite, Vector2 } from "three";
8
- import spriteModal1PNG from "./spriteModal1.png";
9
- import threeLoader from "../threeLoader";
10
- // sprit弹窗1
11
- export default class SpritModal1 extends Sprite {
12
- constructor(config = {}) {
13
- super();
14
- this.updata(config);
15
- this.material.map = this.texture;
16
- this.material.transparent = true;
17
- this.material.alphaTest = 0.01;
18
- }
19
- // 背景图
20
- static img = (() => {
21
- const img = new Image();
22
- img.src = spriteModal1PNG;
23
- return img;
24
- })();
25
- canvas = (() => {
26
- const canvas = document.createElement("canvas");
27
- canvas.width = 1024;
28
- canvas.height = 1024;
29
- return canvas;
30
- })();
31
- context = this.canvas.getContext("2d");
32
- texture = threeLoader.getTexture(this.canvas);
33
- // 配置
34
- _config = {
35
- size: 10,
36
- title: "SpritModal1",
37
- titleColor: "#ffffff",
38
- texts: []
39
- // [
40
- // {
41
- // text: "1",
42
- // color: "#ffff00",
43
- // size: 40
44
- // },
45
- // {
46
- // text: "2",
47
- // color: "#ff00ff",
48
- // size: 40
49
- // },
50
- // ]
51
- };
52
- async updata(config) {
53
- Object.assign(this._config, config);
54
- //绘制背景
55
- this.context.clearRect(0, 0, 1024, 1024);
56
- while (!SpritModal1.img.complete) {
57
- await new Promise(resolve => setTimeout(resolve, 100));
58
- }
59
- // 设置大小
60
- this.scale.set(this._config.size, this._config.size, this._config.size);
61
- // this.context.fillStyle = "#00000088";
62
- // this.context.fillRect(0, 0, 1024, 1024);
63
- //绘制背景
64
- this.context.drawImage(SpritModal1.img, 186, 0);
65
- // 绘制标题
66
- this.context.fillStyle = this._config.titleColor;
67
- this.context.font = '40px serif'; // 设置字体大小
68
- this.context.textAlign = "left";
69
- this.context.textBaseline = "top";
70
- this.context.fillText(this._config.title, 250, 72);
71
- let textPos = new Vector2(250, 150);
72
- let maxWidth = 530;
73
- // 绘制内容
74
- this._config.texts.map(({ text = "text", color = "#ffffff", size = 40 }) => {
75
- this.context.fillStyle = color;
76
- this.context.font = `${size}px serif`; // 设置字体大小
77
- this.context.textAlign = "left";
78
- this.context.textBaseline = "top";
79
- // 字符分隔为数组
80
- var arrText = text.split('');
81
- var line = '';
82
- // 文字自动换行计算
83
- for (var n = 0; n < arrText.length; n++) {
84
- var metrics = this.context.measureText(line + arrText[n]);
85
- var testWidth = metrics.width;
86
- if ((testWidth > maxWidth && n > 0) || arrText[n] === "\n") {
87
- this.context.fillText(line, textPos.x, textPos.y);
88
- line = "";
89
- textPos.y += size;
90
- }
91
- else {
92
- line += arrText[n];
93
- }
94
- }
95
- this.context.fillText(line, textPos.x, textPos.y);
96
- textPos.y += size;
97
- });
98
- this.texture.needsUpdate = true;
99
- this.dispatchEvent({ type: "loaded" });
100
- }
101
- //鼠标拾取计算
102
- raycast(raycaster, intersects) {
103
- let intersect = [];
104
- super.raycast(raycaster, intersect);
105
- let inte = intersect[0];
106
- if (inte && (inte.uv.x > 0.22 && inte.uv.x < 0.78) && (inte.uv.y > 0.54 && inte.uv.y < 0.94)) {
107
- intersects.push(inte);
108
- }
109
- }
110
- }
1
+ /*
2
+ * @Author: xiaosihan
3
+ * @Date: 2023-03-08 00:01:34
4
+ * @Last Modified by: xiaosihan
5
+ * @Last Modified time: 2023-03-08 02:05:25
6
+ */
7
+ import { Sprite, Vector2 } from "three";
8
+ import spriteModal1PNG from "./spriteModal1.png";
9
+ import threeLoader from "../threeLoader";
10
+ import { dispatchCustomEvent } from "../EventMap";
11
+ // sprit弹窗1
12
+ export default class SpritModal1 extends Sprite {
13
+ constructor(config = {}) {
14
+ super();
15
+ this.updata(config);
16
+ this.material.map = this.texture;
17
+ this.material.transparent = true;
18
+ this.material.alphaTest = 0.01;
19
+ }
20
+ // dispatchEvent 已从 Sprite 继承,不需要重写
21
+ // 背景图
22
+ static img = (() => {
23
+ const img = new Image();
24
+ img.src = spriteModal1PNG;
25
+ return img;
26
+ })();
27
+ canvas = (() => {
28
+ const canvas = document.createElement("canvas");
29
+ canvas.width = 1024;
30
+ canvas.height = 1024;
31
+ return canvas;
32
+ })();
33
+ context = this.canvas.getContext("2d");
34
+ texture = threeLoader.getTexture(this.canvas);
35
+ // 配置
36
+ _config = {
37
+ size: 10,
38
+ title: "SpritModal1",
39
+ titleColor: "#ffffff",
40
+ texts: []
41
+ // [
42
+ // {
43
+ // text: "1",
44
+ // color: "#ffff00",
45
+ // size: 40
46
+ // },
47
+ // {
48
+ // text: "2",
49
+ // color: "#ff00ff",
50
+ // size: 40
51
+ // },
52
+ // ]
53
+ };
54
+ async updata(config) {
55
+ Object.assign(this._config, config);
56
+ //绘制背景
57
+ if (!this.context)
58
+ return;
59
+ this.context.clearRect(0, 0, 1024, 1024);
60
+ while (!SpritModal1.img.complete) {
61
+ await new Promise(resolve => setTimeout(resolve, 100));
62
+ }
63
+ // 设置大小
64
+ this.scale.set(this._config.size, this._config.size, this._config.size);
65
+ // this.context.fillStyle = "#00000088";
66
+ // this.context.fillRect(0, 0, 1024, 1024);
67
+ //绘制背景
68
+ this.context.drawImage(SpritModal1.img, 186, 0);
69
+ // 绘制标题
70
+ this.context.fillStyle = this._config.titleColor;
71
+ this.context.font = '40px serif'; // 设置字体大小
72
+ this.context.textAlign = "left";
73
+ this.context.textBaseline = "top";
74
+ this.context.fillText(this._config.title, 250, 72);
75
+ let textPos = new Vector2(250, 150);
76
+ let maxWidth = 530;
77
+ // 绘制内容
78
+ this._config.texts.map(({ text = "text", color = "#ffffff", size = 40 }) => {
79
+ if (!this.context)
80
+ return;
81
+ this.context.fillStyle = color;
82
+ this.context.font = `${size}px serif`; // 设置字体大小
83
+ this.context.textAlign = "left";
84
+ this.context.textBaseline = "top";
85
+ // 字符分隔为数组
86
+ var arrText = text.split('');
87
+ var line = '';
88
+ // 文字自动换行计算
89
+ for (var n = 0; n < arrText.length; n++) {
90
+ var metrics = this.context.measureText(line + arrText[n]);
91
+ var testWidth = metrics.width;
92
+ if ((testWidth > maxWidth && n > 0) || arrText[n] === "\n") {
93
+ this.context.fillText(line, textPos.x, textPos.y);
94
+ line = "";
95
+ textPos.y += size;
96
+ }
97
+ else {
98
+ line += arrText[n];
99
+ }
100
+ }
101
+ this.context.fillText(line, textPos.x, textPos.y);
102
+ textPos.y += size;
103
+ });
104
+ this.texture.needsUpdate = true;
105
+ dispatchCustomEvent(this, { type: "loaded" });
106
+ }
107
+ //鼠标拾取计算
108
+ raycast(raycaster, intersects) {
109
+ let intersect = [];
110
+ super.raycast(raycaster, intersect);
111
+ let inte = intersect[0];
112
+ if (inte && inte.uv && (inte.uv.x > 0.22 && inte.uv.x < 0.78) && (inte.uv.y > 0.54 && inte.uv.y < 0.94)) {
113
+ intersects.push(inte);
114
+ }
115
+ }
116
+ }
@@ -0,0 +1,146 @@
1
+ /*
2
+ * @Author: xiaosihan
3
+ * @Date: 2023-03-08 00:01:34
4
+ * @Last Modified by: xiaosihan
5
+ * @Last Modified time: 2023-03-08 02:05:25
6
+ */
7
+ import { Sprite, Vector2, Texture, Raycaster, Intersection } from "three";
8
+ import spriteModal1PNG from "./spriteModal1.png";
9
+ import threeLoader from "../threeLoader";
10
+ import { dispatchCustomEvent } from "../EventMap";
11
+
12
+ export type SpritModal1Config = {
13
+ size?: number;
14
+ title?: string;
15
+ titleColor?: string;
16
+ texts?: Array<{
17
+ text?: string;
18
+ color?: string;
19
+ size?: number;
20
+ }>;
21
+ };
22
+
23
+ type TextItem = {
24
+ text: string;
25
+ color: string;
26
+ size: number;
27
+ };
28
+
29
+ type ConfigType = {
30
+ size: number;
31
+ title: string;
32
+ titleColor: string;
33
+ texts: TextItem[];
34
+ };
35
+
36
+ // sprit弹窗1
37
+ export default class SpritModal1 extends Sprite {
38
+ constructor(config: SpritModal1Config = {}) {
39
+ super();
40
+ this.updata(config);
41
+ this.material.map = this.texture;
42
+ this.material.transparent = true;
43
+ this.material.alphaTest = 0.01;
44
+ }
45
+
46
+ // dispatchEvent 已从 Sprite 继承,不需要重写
47
+
48
+ // 背景图
49
+ static img: HTMLImageElement = (() => {
50
+ const img = new Image();
51
+ img.src = spriteModal1PNG;
52
+ return img;
53
+ })();
54
+
55
+ canvas: HTMLCanvasElement = (() => {
56
+ const canvas = document.createElement("canvas");
57
+ canvas.width = 1024;
58
+ canvas.height = 1024;
59
+ return canvas;
60
+ })();
61
+
62
+ context: CanvasRenderingContext2D | null = this.canvas.getContext("2d");
63
+ texture: Texture = threeLoader.getTexture(this.canvas);
64
+
65
+ // 配置
66
+ _config: ConfigType = {
67
+ size: 10,
68
+ title: "SpritModal1",
69
+ titleColor: "#ffffff",
70
+ texts: []
71
+ // [
72
+ // {
73
+ // text: "1",
74
+ // color: "#ffff00",
75
+ // size: 40
76
+ // },
77
+ // {
78
+ // text: "2",
79
+ // color: "#ff00ff",
80
+ // size: 40
81
+ // },
82
+ // ]
83
+ };
84
+
85
+ async updata(config: SpritModal1Config): Promise<void> {
86
+ Object.assign(this._config, config);
87
+ //绘制背景
88
+ if (!this.context) return;
89
+ this.context.clearRect(0, 0, 1024, 1024);
90
+ while (!SpritModal1.img.complete) {
91
+ await new Promise(resolve => setTimeout(resolve, 100));
92
+ }
93
+ // 设置大小
94
+ this.scale.set(this._config.size, this._config.size, this._config.size);
95
+ // this.context.fillStyle = "#00000088";
96
+ // this.context.fillRect(0, 0, 1024, 1024);
97
+ //绘制背景
98
+ this.context.drawImage(SpritModal1.img, 186, 0);
99
+ // 绘制标题
100
+ this.context.fillStyle = this._config.titleColor;
101
+ this.context.font = '40px serif'; // 设置字体大小
102
+ this.context.textAlign = "left";
103
+ this.context.textBaseline = "top";
104
+ this.context.fillText(this._config.title, 250, 72);
105
+ let textPos = new Vector2(250, 150);
106
+ let maxWidth = 530;
107
+ // 绘制内容
108
+ this._config.texts.map(({ text = "text", color = "#ffffff", size = 40 }) => {
109
+ if (!this.context) return;
110
+ this.context.fillStyle = color;
111
+ this.context.font = `${size}px serif`; // 设置字体大小
112
+ this.context.textAlign = "left";
113
+ this.context.textBaseline = "top";
114
+ // 字符分隔为数组
115
+ var arrText = text.split('');
116
+ var line = '';
117
+ // 文字自动换行计算
118
+ for (var n = 0; n < arrText.length; n++) {
119
+ var metrics = this.context.measureText(line + arrText[n]);
120
+ var testWidth = metrics.width;
121
+ if ((testWidth > maxWidth && n > 0) || arrText[n] === "\n") {
122
+ this.context.fillText(line, textPos.x, textPos.y);
123
+ line = "";
124
+ textPos.y += size;
125
+ }
126
+ else {
127
+ line += arrText[n];
128
+ }
129
+ }
130
+ this.context.fillText(line, textPos.x, textPos.y);
131
+ textPos.y += size;
132
+ });
133
+ this.texture.needsUpdate = true;
134
+ dispatchCustomEvent(this, { type: "loaded" });
135
+ }
136
+
137
+ //鼠标拾取计算
138
+ raycast(raycaster: Raycaster, intersects: Intersection[]): void {
139
+ let intersect: Intersection[] = [];
140
+ super.raycast(raycaster, intersect);
141
+ let inte = intersect[0];
142
+ if (inte && inte.uv && (inte.uv.x > 0.22 && inte.uv.x < 0.78) && (inte.uv.y > 0.54 && inte.uv.y < 0.94)) {
143
+ intersects.push(inte);
144
+ }
145
+ }
146
+ }
@@ -1 +1 @@
1
- export { default } from "./SpriteModal1";
1
+ export { default } from "./SpriteModal1";
@@ -1 +1 @@
1
- export { default } from "./SpriteModal1";
1
+ export { default } from "./SpriteModal1";
@@ -0,0 +1 @@
1
+ export { default } from "./SpriteModal1";
package/SpriteText.d.ts CHANGED
@@ -1,45 +1,46 @@
1
- import { Sprite } from "three";
2
- export default class SpriteText extends Sprite {
3
- constructor(text?: string, textHeight?: number, color?: `#${string}` | `rgba(${string})`);
4
- _text: string;
5
- _textHeight: number;
6
- _color: `#${string}` | `rgba(${string})`;
7
- _backgroundColor: boolean | `#${string}` | `rgba(${string})`;
8
- _padding: number;
9
- _borderWidth: number;
10
- _borderRadius: number;
11
- _borderColor: `#${string}` | `rgba(${string})`;
12
- _strokeWidth: number;
13
- _strokeColor: `#${string}` | `rgba(${string})`;
14
- _fontFace: string;
15
- _fontSize: number;
16
- _fontWeight: string;
17
- _canvas: HTMLCanvasElement;
18
- get text(): string;
19
- set text(text: string);
20
- get textHeight(): number;
21
- set textHeight(textHeight: number);
22
- get color(): `#${string}` | `rgba(${string})`;
23
- set color(color: `#${string}` | `rgba(${string})`);
24
- get backgroundColor(): boolean | `#${string}` | `rgba(${string})`;
25
- set backgroundColor(color: boolean | `#${string}` | `rgba(${string})`);
26
- get padding(): number;
27
- set padding(padding: number);
28
- get borderWidth(): number;
29
- set borderWidth(borderWidth: number);
30
- get borderRadius(): number;
31
- set borderRadius(borderRadius: number);
32
- get borderColor(): `#${string}` | `rgba(${string})`;
33
- set borderColor(borderColor: `#${string}` | `rgba(${string})`);
34
- get fontFace(): string;
35
- set fontFace(fontFace: string);
36
- get fontSize(): number;
37
- set fontSize(fontSize: number);
38
- get fontWeight(): string;
39
- set fontWeight(fontWeight: string);
40
- get strokeWidth(): number;
41
- set strokeWidth(strokeWidth: number);
42
- get strokeColor(): `#${string}` | `rgba(${string})`;
43
- set strokeColor(strokeColor: `#${string}` | `rgba(${string})`);
44
- _genCanvas(): void;
45
- }
1
+ import { Sprite } from "three";
2
+ import type { ColorString } from "./types";
3
+ export default class SpriteText extends Sprite {
4
+ constructor(text?: string, textHeight?: number, color?: ColorString);
5
+ _text: string;
6
+ _textHeight: number;
7
+ _color: ColorString;
8
+ _backgroundColor: boolean | ColorString;
9
+ _padding: number;
10
+ _borderWidth: number;
11
+ _borderRadius: number;
12
+ _borderColor: ColorString;
13
+ _strokeWidth: number;
14
+ _strokeColor: ColorString;
15
+ _fontFace: string;
16
+ _fontSize: number;
17
+ _fontWeight: string;
18
+ _canvas: HTMLCanvasElement;
19
+ get text(): string;
20
+ set text(text: string);
21
+ get textHeight(): number;
22
+ set textHeight(textHeight: number);
23
+ get color(): ColorString;
24
+ set color(color: ColorString);
25
+ get backgroundColor(): boolean | ColorString;
26
+ set backgroundColor(color: boolean | ColorString);
27
+ get padding(): number;
28
+ set padding(padding: number);
29
+ get borderWidth(): number;
30
+ set borderWidth(borderWidth: number);
31
+ get borderRadius(): number;
32
+ set borderRadius(borderRadius: number);
33
+ get borderColor(): ColorString;
34
+ set borderColor(borderColor: ColorString);
35
+ get fontFace(): string;
36
+ set fontFace(fontFace: string);
37
+ get fontSize(): number;
38
+ set fontSize(fontSize: number);
39
+ get fontWeight(): string;
40
+ set fontWeight(fontWeight: string);
41
+ get strokeWidth(): number;
42
+ set strokeWidth(strokeWidth: number);
43
+ get strokeColor(): ColorString;
44
+ set strokeColor(strokeColor: ColorString);
45
+ _genCanvas(): void;
46
+ }