@anov/3d 0.0.4-alpha30 → 0.0.4-alpha31

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.
@@ -13,7 +13,6 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
13
13
  import { Vector3, utils } from '@anov/3d-core';
14
14
  import { EPoiType, Poi } from '@anov/3d-ability';
15
15
  import { regionMap } from "../regionData";
16
- import { POI_IMG } from "../utils/base64";
17
16
  var PoiManage = /*#__PURE__*/function () {
18
17
  function PoiManage(gobal) {
19
18
  _classCallCheck(this, PoiManage);
@@ -21,6 +20,7 @@ var PoiManage = /*#__PURE__*/function () {
21
20
  _defineProperty(this, "scene", void 0);
22
21
  _defineProperty(this, "dialogPoi", void 0);
23
22
  _defineProperty(this, "poiMesh", new Map());
23
+ _defineProperty(this, "poiEventListener", new Map());
24
24
  _defineProperty(this, "wallManage", void 0);
25
25
  _defineProperty(this, "interactionManager", void 0);
26
26
  this.gobal = gobal;
@@ -34,7 +34,7 @@ var PoiManage = /*#__PURE__*/function () {
34
34
  var _this = this;
35
35
  Object.keys(regionMap).forEach( /*#__PURE__*/function () {
36
36
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(key) {
37
- var region, option, poi, sprite, changeWallState;
37
+ var region, option, poi, sprite, changeWallState, unClick;
38
38
  return _regeneratorRuntime().wrap(function _callee$(_context) {
39
39
  while (1) switch (_context.prev = _context.next) {
40
40
  case 0:
@@ -44,7 +44,7 @@ var PoiManage = /*#__PURE__*/function () {
44
44
  }, (region.id === '4' || region.id === '5') && {
45
45
  width: 260,
46
46
  height: 260,
47
- img: POI_IMG
47
+ img: './poi_big.png'
48
48
  });
49
49
  poi = new Poi(EPoiType.Line);
50
50
  sprite = poi.create(region.title, option);
@@ -68,9 +68,10 @@ var PoiManage = /*#__PURE__*/function () {
68
68
  sprite.addEventListener('mouseout', function () {
69
69
  changeWallState(false);
70
70
  });
71
- sprite.addEventListener('click', function (event) {
71
+ unClick = sprite.addEventListener('click', function (event) {
72
72
  if (!sprite.visible) return;
73
73
  _this.reset();
74
+
74
75
  // 光墙
75
76
  var wall = _this.wallManage.wallMesh.get(region.id);
76
77
  wall.visible = true;
@@ -78,7 +79,8 @@ var PoiManage = /*#__PURE__*/function () {
78
79
  sprite.visible = false;
79
80
  _this.addDialogPanel(region, event.point);
80
81
  });
81
- case 12:
82
+ _this.poiEventListener.set(region.poi.id, unClick);
83
+ case 13:
82
84
  case "end":
83
85
  return _context.stop();
84
86
  }
@@ -90,22 +92,35 @@ var PoiManage = /*#__PURE__*/function () {
90
92
  }());
91
93
  }
92
94
  }, {
93
- key: "setVisible",
94
- value: function setVisible() {
95
- var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
95
+ key: "remove",
96
+ value: function remove() {
97
+ var _this2 = this;
96
98
  // 控制POI点的隐藏、显示
97
99
  this.poiMesh.forEach(function (poi) {
98
- poi.visible = visible;
100
+ _this2.interactionManager.remove(poi);
101
+ poi.removeFromParent();
102
+ poi.remove();
103
+ });
104
+ // 取消事件监听
105
+ this.poiEventListener.forEach(function (f) {
106
+ f();
99
107
  });
100
108
  // 移除面板
101
109
  if (this.dialogPoi) this.dialogPoi.removeFromParent();
110
+ this.poiMesh.clear();
111
+ this.poiEventListener.clear();
102
112
  }
103
113
  }, {
104
114
  key: "reset",
105
115
  value: function reset() {
106
116
  var _this$wallManage;
107
117
  // 控制POI点的隐藏、显示
108
- this.setVisible(true);
118
+ // 控制POI点的隐藏、显示
119
+ this.poiMesh.forEach(function (poi) {
120
+ poi.visible = true;
121
+ });
122
+ // 移除面板
123
+ if (this.dialogPoi) this.dialogPoi.removeFromParent();
109
124
  // 控制光墙的隐藏、显示
110
125
  (_this$wallManage = this.wallManage) === null || _this$wallManage === void 0 ? void 0 : _this$wallManage.wallMesh.forEach(function (wall) {
111
126
  wall.visible = false;
@@ -114,7 +129,7 @@ var PoiManage = /*#__PURE__*/function () {
114
129
  }, {
115
130
  key: "addDialogPanel",
116
131
  value: function addDialogPanel(data, position) {
117
- var _this2 = this;
132
+ var _this3 = this;
118
133
  // 添加面板
119
134
  var poi = new Poi(EPoiType.Panel);
120
135
  this.dialogPoi = poi.create({
@@ -126,11 +141,11 @@ var PoiManage = /*#__PURE__*/function () {
126
141
  this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)));
127
142
  this.scene.add(this.dialogPoi);
128
143
  this.interactionManager.add(this.dialogPoi);
129
- this.dialogPoi.addEventListener('click', function (event) {
130
- _this2.dialogPoi.remove();
131
- _this2.dialogPoi.removeFromParent();
132
- _this2.dialogPoi = null;
133
- _this2.reset();
144
+ this.dialogPoi.addEventListener('click', function () {
145
+ _this3.dialogPoi.remove();
146
+ _this3.dialogPoi.removeFromParent();
147
+ _this3.dialogPoi = null;
148
+ _this3.reset();
134
149
  });
135
150
  }
136
151
  }]);
@@ -1 +1 @@
1
- {"version":3,"names":["Vector3","utils","EPoiType","Poi","regionMap","POI_IMG","PoiManage","gobal","Map","scene","wallManage","wall","interactionManager","storeManagement","get","Object","keys","forEach","key","region","option","scale","id","width","height","img","poi","Line","sprite","create","title","position","copy","fromArray","add","poiMesh","set","changeWallState","show","dialogPoi","visible","wallMesh","addEventListener","event","reset","addDialogPanel","point","removeFromParent","setVisible","data","Panel","content","print","clone","remove"],"sources":["../../../src/factory/unit/poi.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene, Sprite } from '@anov/3d-core'\nimport { Mesh, MeshBasicMaterial, PlaneGeometry, Vector3, utils } from '@anov/3d-core'\nimport { EPoiType, Poi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { regionMap } from '../regionData'\nimport { POI_IMG } from '../utils/base64'\nimport type WallManage from './wall'\n\nclass PoiManage {\n private gobal: Factory3D\n private scene: Scene\n private dialogPoi: Object3D\n readonly poiMesh: Map<string, Object3D> = new Map()\n private wallManage: WallManage\n private interactionManager\n\n constructor(gobal) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n this.wallManage = gobal.wall\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n generatePoi() {\n Object.keys(regionMap).forEach(async (key: string) => {\n const region = regionMap[key]\n const option = {\n scale: 80,\n ...((region.id === '4' || region.id === '5') && {\n width: 260,\n height: 260,\n img: POI_IMG,\n }),\n }\n\n const poi = new Poi(EPoiType.Line)\n const sprite = poi.create(region.title, option) as Sprite\n sprite.position.copy(new Vector3().fromArray(region.poi.position))\n\n this.scene.add(sprite)\n this.poiMesh.set(region.poi.id, sprite)\n\n // 绑定事件\n this.interactionManager.add(sprite)\n const changeWallState = (show) => {\n if (this.dialogPoi?.visible)\n return\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = show\n }\n\n sprite.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n sprite.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n sprite.addEventListener('click', (event) => {\n if (!sprite.visible)\n return\n this.reset()\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = true\n // 隐藏当前POI点\n sprite.visible = false\n this.addDialogPanel(region, event.point)\n })\n })\n }\n\n setVisible(visible = true) {\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n poi.visible = visible\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n }\n\n reset() {\n // 控制POI点的隐藏、显示\n this.setVisible(true)\n // 控制光墙的隐藏、显示\n this.wallManage?.wallMesh.forEach((wall) => {\n wall.visible = false\n })\n }\n\n private addDialogPanel(data, position) {\n // 添加面板\n const poi = new Poi(EPoiType.Panel)\n this.dialogPoi = poi.create({ title: data.title, content: data.poi.content }, { print: true })\n this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)))\n this.scene.add(this.dialogPoi)\n\n this.interactionManager.add(this.dialogPoi)\n this.dialogPoi.addEventListener('click', (event) => {\n this.dialogPoi.remove()\n this.dialogPoi.removeFromParent()\n this.dialogPoi = null\n this.reset()\n })\n }\n}\n\nexport default PoiManage"],"mappings":"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"}
1
+ {"version":3,"names":["Vector3","utils","EPoiType","Poi","regionMap","PoiManage","gobal","Map","scene","wallManage","wall","interactionManager","storeManagement","get","Object","keys","forEach","key","region","option","scale","id","width","height","img","poi","Line","sprite","create","title","position","copy","fromArray","add","poiMesh","set","changeWallState","show","dialogPoi","visible","wallMesh","addEventListener","unClick","event","reset","addDialogPanel","point","poiEventListener","remove","removeFromParent","f","clear","data","Panel","content","print","clone"],"sources":["../../../src/factory/unit/poi.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene, Sprite } from '@anov/3d-core'\nimport { Vector3, utils } from '@anov/3d-core'\nimport { EPoiType, Poi } from '@anov/3d-ability'\nimport type Factory3D from '../3d'\nimport { regionMap } from '../regionData'\nimport type WallManage from './wall'\n\nclass PoiManage {\n private gobal: Factory3D\n private scene: Scene\n private dialogPoi: Object3D\n readonly poiMesh: Map<string, Object3D> = new Map()\n readonly poiEventListener: Map<string, Function> = new Map()\n private wallManage: WallManage\n private interactionManager\n\n constructor(gobal) {\n this.gobal = gobal\n this.scene = gobal.scene.scene\n this.wallManage = gobal.wall\n this.interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n }\n\n generatePoi() {\n Object.keys(regionMap).forEach(async (key: string) => {\n const region = regionMap[key]\n const option = {\n scale: 80,\n ...((region.id === '4' || region.id === '5') && {\n width: 260,\n height: 260,\n img: './poi_big.png',\n }),\n }\n\n const poi = new Poi(EPoiType.Line)\n const sprite = poi.create(region.title, option)\n sprite.position.copy(new Vector3().fromArray(region.poi.position))\n\n this.scene.add(sprite)\n this.poiMesh.set(region.poi.id, sprite)\n\n // 绑定事件\n this.interactionManager.add(sprite)\n const changeWallState = (show) => {\n if (this.dialogPoi?.visible)\n return\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = show\n }\n\n sprite.addEventListener('mouseover', () => {\n if (!sprite.visible)\n return\n changeWallState(true)\n })\n sprite.addEventListener('mouseout', () => {\n changeWallState(false)\n })\n const unClick = sprite.addEventListener('click', (event) => {\n if (!sprite.visible)\n return\n this.reset()\n\n // 光墙\n const wall = this.wallManage.wallMesh.get(region.id)\n wall.visible = true\n // 隐藏当前POI点\n sprite.visible = false\n this.addDialogPanel(region, event.point)\n }) as Function\n this.poiEventListener.set(region.poi.id, unClick)\n })\n }\n\n remove() {\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n this.interactionManager.remove(poi)\n poi.removeFromParent()\n poi.remove()\n })\n // 取消事件监听\n this.poiEventListener.forEach((f) => {\n f()\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n this.poiMesh.clear()\n this.poiEventListener.clear()\n }\n\n reset() {\n // 控制POI点的隐藏、显示\n // 控制POI点的隐藏、显示\n this.poiMesh.forEach((poi) => {\n poi.visible = true\n })\n // 移除面板\n if (this.dialogPoi)\n this.dialogPoi.removeFromParent()\n // 控制光墙的隐藏、显示\n this.wallManage?.wallMesh.forEach((wall) => {\n wall.visible = false\n })\n }\n\n private addDialogPanel(data, position) {\n // 添加面板\n const poi = new Poi(EPoiType.Panel)\n this.dialogPoi = poi.create({ title: data.title, content: data.poi.content }, { print: true })\n this.dialogPoi.position.copy(position.clone().add(new Vector3(-30, 30, 0)))\n this.scene.add(this.dialogPoi)\n\n this.interactionManager.add(this.dialogPoi)\n this.dialogPoi.addEventListener('click', () => {\n this.dialogPoi.remove()\n this.dialogPoi.removeFromParent()\n this.dialogPoi = null\n this.reset()\n })\n }\n}\n\nexport default PoiManage"],"mappings":"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"}
@@ -8,6 +8,8 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
8
8
  import { createRoundLineWallMesh } from '@anov/3d-ability';
9
9
  import { ShaderMaterial, Vector3 } from '@anov/3d-core';
10
10
  import regionMap from "../regionData";
11
+ import wallVertexShader from "./glsl/wall/vertexShader.glsl";
12
+ import wallFragmentShader from "./glsl/wall/fragmentShader.glsl";
11
13
  var wallPosition = [{
12
14
  label: regionMap.reform.title,
13
15
  id: '1',
@@ -68,8 +70,8 @@ var walllMaterial = new ShaderMaterial({
68
70
  value: [0.0, 0.2, 0.8]
69
71
  }
70
72
  },
71
- vertexShader: "varying vec2 vUv;\n\n void main(){\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }",
72
- fragmentShader: "uniform float iTime;\n uniform float size;////\u5FAA\u73AF\n uniform float width;///\u5BBD\u5EA6\n uniform float speed;///\u901F\u5EA6\n uniform float alpha;///\u900F\u660E\u5EA6\n uniform vec3 color1;///\u989C\u82721\n uniform vec3 color2;///\u989C\u82722\n varying vec2 vUv;\n \n vec3 colorfix(vec3 color) {\n return vec3(color.r, color.g, color.b);\n }\n \n void mainImage(out vec4 fragColor, in vec2 fragCoord) {\n vec2 uv = vUv;\n vec2 wallUV = uv;\n wallUV.y *= size;\n \n float fwallUV = floor(fract(wallUV.y - iTime * speed) + width);\n float dis = 1. - max((uv.y * 8. - 7.), 1. - (uv.y * 8.));\n float dis2 = 1. - (uv.y * 4. - 3.);\n vec3 col = color1 * dis2 + color2 * (1. - dis2);\n fragColor = vec4(col, fwallUV * alpha * dis);\n }\n \n void main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n }\n \n ",
73
+ vertexShader: wallVertexShader,
74
+ fragmentShader: wallFragmentShader,
73
75
  transparent: true,
74
76
  side: 2,
75
77
  depthTest: false
@@ -1 +1 @@
1
- {"version":3,"names":["createRoundLineWallMesh","ShaderMaterial","Vector3","regionMap","wallPosition","label","reform","title","id","belongTo","points","area","reduction","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","administrative","walllMaterial","uniforms","iTime","value","size","width","speed","alpha","color1","color2","vertexShader","fragmentShader","transparent","side","depthTest","WallManage","gobal","options","Map","scene","option","forEach","item","roundLineMesh","map","v","radius","close","visible","wallMesh","set","add"],"sources":["../../../src/factory/unit/wall.ts"],"sourcesContent":["import { createRoundLineWallMesh } from '@anov/3d-ability'\nimport type { Object3D, Scene } from '@anov/3d-core'\nimport { ShaderMaterial, Vector3 } from '@anov/3d-core'\nimport type Factory3D from '../3d'\nimport regionMap from '../regionData'\n\nconst wallPosition = [\n {\n label: regionMap.reform.title,\n id: '1',\n belongTo: regionMap.reform.id,\n points: regionMap.reform.area,\n },\n {\n label: regionMap.reduction.title,\n id: '2',\n belongTo: regionMap.reduction.id,\n points: regionMap.reduction.area,\n },\n {\n label: regionMap.crudeOil.title,\n id: '3',\n belongTo: regionMap.crudeOil.id,\n points: regionMap.crudeOil.area,\n },\n {\n label: regionMap.catalyticCracking.title,\n id: '4',\n belongTo: regionMap.catalyticCracking.id,\n points: regionMap.catalyticCracking.area,\n },\n {\n label: regionMap.hydrocrackingUnit.title,\n id: '5',\n belongTo: regionMap.hydrocrackingUnit.id,\n points: regionMap.hydrocrackingUnit.area,\n },\n {\n label: regionMap.cokingUnit.title,\n id: '6',\n belongTo: regionMap.cokingUnit.id,\n points: regionMap.cokingUnit.area,\n },\n {\n label: regionMap.administrative.title,\n id: '7',\n belongTo: regionMap.administrative.id,\n points: regionMap.administrative.area,\n },\n]\n\nconst walllMaterial = new ShaderMaterial({\n uniforms: {\n iTime: {\n value: 0,\n },\n size: {\n value: 16.0,\n },\n width: {\n value: 0.4,\n },\n speed: {\n value: 1.0,\n },\n alpha: {\n value: 0.2,\n },\n color1: {\n value: [0.0, 0.9, 0.0],\n },\n color2: {\n value: [0.0, 0.2, 0.8],\n },\n },\n vertexShader: `varying vec2 vUv;\n\n void main(){\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`,\n fragmentShader: `uniform float iTime;\n uniform float size;////循环\n uniform float width;///宽度\n uniform float speed;///速度\n uniform float alpha;///透明度\n uniform vec3 color1;///颜色1\n uniform vec3 color2;///颜色2\n varying vec2 vUv;\n \n vec3 colorfix(vec3 color) {\n return vec3(color.r, color.g, color.b);\n }\n \n void mainImage(out vec4 fragColor, in vec2 fragCoord) {\n vec2 uv = vUv;\n vec2 wallUV = uv;\n wallUV.y *= size;\n \n float fwallUV = floor(fract(wallUV.y - iTime * speed) + width);\n float dis = 1. - max((uv.y * 8. - 7.), 1. - (uv.y * 8.));\n float dis2 = 1. - (uv.y * 4. - 3.);\n vec3 col = color1 * dis2 + color2 * (1. - dis2);\n fragColor = vec4(col, fwallUV * alpha * dis);\n }\n \n void main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n }\n \n `,\n transparent: true,\n side: 2,\n depthTest: false,\n})\n\ntype WallManageOption = {\n visible?: boolean\n}\nclass WallManage {\n private scene: Scene\n readonly wallMesh: Map<string, Object3D> = new Map()\n private option: WallManageOption\n\n private time = 0\n\n constructor(gobal: Factory3D, options?: WallManageOption) {\n this.scene = gobal.scene.scene\n this.option = options || {}\n }\n\n generateWall() {\n // setInterval(() => {\n // this.time += 0.001\n // walllMaterial.uniforms.iTime.value = this.time\n // })\n\n wallPosition.forEach((item) => {\n const roundLineMesh = createRoundLineWallMesh(item.points.map(v => new Vector3(v[0], v[1], v[2])), {\n radius: 0,\n close: true,\n }, walllMaterial)\n roundLineMesh.visible = this.option?.visible ?? true\n this.wallMesh.set(item.id, roundLineMesh)\n this.scene.add(roundLineMesh)\n })\n }\n}\n\nexport default WallManage"],"mappings":"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"}
1
+ {"version":3,"names":["createRoundLineWallMesh","ShaderMaterial","Vector3","regionMap","wallVertexShader","wallFragmentShader","wallPosition","label","reform","title","id","belongTo","points","area","reduction","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","administrative","walllMaterial","uniforms","iTime","value","size","width","speed","alpha","color1","color2","vertexShader","fragmentShader","transparent","side","depthTest","WallManage","gobal","options","Map","scene","option","forEach","item","roundLineMesh","map","v","radius","close","visible","wallMesh","set","add"],"sources":["../../../src/factory/unit/wall.ts"],"sourcesContent":["import { createRoundLineWallMesh } from '@anov/3d-ability'\nimport type { Object3D, Scene } from '@anov/3d-core'\nimport { ShaderMaterial, Vector3 } from '@anov/3d-core'\nimport type Factory3D from '../3d'\nimport regionMap from '../regionData'\nimport wallVertexShader from './glsl/wall/vertexShader.glsl'\nimport wallFragmentShader from './glsl/wall/fragmentShader.glsl'\n\nconst wallPosition = [\n {\n label: regionMap.reform.title,\n id: '1',\n belongTo: regionMap.reform.id,\n points: regionMap.reform.area,\n },\n {\n label: regionMap.reduction.title,\n id: '2',\n belongTo: regionMap.reduction.id,\n points: regionMap.reduction.area,\n },\n {\n label: regionMap.crudeOil.title,\n id: '3',\n belongTo: regionMap.crudeOil.id,\n points: regionMap.crudeOil.area,\n },\n {\n label: regionMap.catalyticCracking.title,\n id: '4',\n belongTo: regionMap.catalyticCracking.id,\n points: regionMap.catalyticCracking.area,\n },\n {\n label: regionMap.hydrocrackingUnit.title,\n id: '5',\n belongTo: regionMap.hydrocrackingUnit.id,\n points: regionMap.hydrocrackingUnit.area,\n },\n {\n label: regionMap.cokingUnit.title,\n id: '6',\n belongTo: regionMap.cokingUnit.id,\n points: regionMap.cokingUnit.area,\n },\n {\n label: regionMap.administrative.title,\n id: '7',\n belongTo: regionMap.administrative.id,\n points: regionMap.administrative.area,\n },\n]\n\nconst walllMaterial = new ShaderMaterial({\n uniforms: {\n iTime: {\n value: 0,\n },\n size: {\n value: 16.0,\n },\n width: {\n value: 0.4,\n },\n speed: {\n value: 1.0,\n },\n alpha: {\n value: 0.2,\n },\n color1: {\n value: [0.0, 0.9, 0.0],\n },\n color2: {\n value: [0.0, 0.2, 0.8],\n },\n },\n vertexShader: wallVertexShader,\n fragmentShader: wallFragmentShader,\n transparent: true,\n side: 2,\n depthTest: false,\n})\n\ntype WallManageOption = {\n visible?: boolean\n}\nclass WallManage {\n private scene: Scene\n readonly wallMesh: Map<string, Object3D> = new Map()\n private option: WallManageOption\n\n private time = 0\n\n constructor(gobal: Factory3D, options?: WallManageOption) {\n this.scene = gobal.scene.scene\n this.option = options || {}\n }\n\n generateWall() {\n // setInterval(() => {\n // this.time += 0.001\n // walllMaterial.uniforms.iTime.value = this.time\n // })\n\n wallPosition.forEach((item) => {\n const roundLineMesh = createRoundLineWallMesh(item.points.map(v => new Vector3(v[0], v[1], v[2])), {\n radius: 0,\n close: true,\n }, walllMaterial)\n roundLineMesh.visible = this.option?.visible ?? true\n this.wallMesh.set(item.id, roundLineMesh)\n this.scene.add(roundLineMesh)\n })\n }\n}\n\nexport default WallManage"],"mappings":"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"}
@@ -94,11 +94,13 @@ var switchMaterialV2 = function switchMaterialV2(mesh, material, options) {
94
94
  worldPosition.distanceTo(new Vector3(0, 0, 0));
95
95
  if (worldPosition.distanceTo(new Vector3(0, 0, 0)) < oldShader.uniforms.time.value) currentMaterial.depthWrite = false;
96
96
  if (oldShader.uniforms.time.value > end) {
97
- (options === null || options === void 0 ? void 0 : options.callback) && options.callback();
98
- setTimeout(function () {
99
- mesh.material = lastMaterial;
100
- oldShader.uniforms.time.value = 0;
101
- }, 100);
97
+ requestAnimationFrame(function () {
98
+ (options === null || options === void 0 ? void 0 : options.callback) && options.callback();
99
+ requestAnimationFrame(function () {
100
+ mesh.material = lastMaterial;
101
+ oldShader.uniforms.time.value = 0;
102
+ });
103
+ });
102
104
  cancellation();
103
105
  }
104
106
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Vector3","use","switchMaterial","mesh","material","options","lastMaterial","clone","currentMaterial","speed","start","end","transparent","oldShader","onBeforeCompile","shader","uniforms","time","value","min_length","vertexShader","replace","join","fragmentShader","cancellation","useframe","worldPosition","getWorldPosition","x","depthWrite","callback","setTimeout","switchMaterialV2","center","y","z","distanceTo"],"sources":["../../../src/factory/utils/switchMaterial.ts"],"sourcesContent":["import type { Material, Object3D, Shader } from '@anov/3d-core'\nimport { Vector3, use } from '@anov/3d-core'\n\ntype SwitchMaterialOptions = {\n speed?: number\n start?: number\n end?: number\n callback?: () => void\n}\n\nconst switchMaterial = (mesh: Object3D & { material: Material }, material: Material, options?: SwitchMaterialOptions) => {\n const lastMaterial = mesh.material.clone()\n const currentMaterial = mesh.material.clone()\n\n const { speed = 10, start = 0, end = 100 } = options || {}\n\n currentMaterial.transparent = true\n\n let oldShader: Shader\n\n currentMaterial.onBeforeCompile = (shader) => {\n oldShader = shader\n shader.uniforms.time = { value: 0.0 }\n shader.uniforms.min_length = { value: start }\n shader.uniforms.speed = { value: 1.0 }\n shader.vertexShader = shader.vertexShader.replace(\n 'void main() {',\n [\n 'varying vec4 v_position;',\n 'varying vec3 vWorldPosition; ',\n 'void main() {',\n ' vec4 worldPosition1 = modelMatrix * vec4(position, 1.0);',\n ' vWorldPosition = worldPosition1.xyz;',\n ' v_position = vec4(position, 1.0); ',\n ].join('\\n'),\n )\n shader.fragmentShader = shader.fragmentShader.replace('void main() {',\n `\n varying vec4 v_position;\n uniform float time;\n uniform float min_length;\n uniform float speed;\n varying vec3 vWorldPosition;\n void main() {\n `)\n\n shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>',\n `\n #include <dithering_fragment>\n float median = min_length + time * speed;\n if(vWorldPosition.x < median) {\n gl_FragColor.a = 0.0;\n }\n `)\n }\n\n mesh.material = currentMaterial\n\n const cancellation = use.useframe(() => {\n if (oldShader) {\n oldShader.uniforms.time.value += speed\n\n const worldPosition = new Vector3()\n\n mesh.getWorldPosition(worldPosition)\n\n if (worldPosition.x < start + oldShader.uniforms.time.value)\n currentMaterial.depthWrite = false\n\n if (oldShader.uniforms.time.value > end) {\n options?.callback && options.callback()\n\n setTimeout(() => {\n mesh.material = lastMaterial\n oldShader.uniforms.time.value = 0\n }, 100)\n\n cancellation()\n }\n }\n })\n}\n\n/**\n * todo 代码合并\n * @param mesh\n * @param material\n * @param options\n */\nconst switchMaterialV2 = (mesh: Object3D & { material: Material }, material: Material, options?: SwitchMaterialOptions) => {\n const lastMaterial = mesh.material.clone()\n const currentMaterial = mesh.material.clone()\n\n const { speed = 10, start = 0, end = 100 } = options || {}\n\n currentMaterial.transparent = true\n\n let oldShader: Shader\n\n currentMaterial.onBeforeCompile = (shader) => {\n oldShader = shader\n shader.uniforms.time = { value: 0.0 }\n shader.uniforms.min_length = { value: 0 }\n shader.uniforms.speed = { value: 1.0 }\n shader.uniforms.center = { value: { x: 0, y: 0, z: 0 } }\n shader.vertexShader = shader.vertexShader.replace(\n 'void main() {',\n [\n 'varying vec4 v_position;',\n 'varying vec3 vWorldPosition; ',\n 'void main() {',\n ' vec4 worldPosition1 = modelMatrix * vec4(position, 1.0);',\n ' vWorldPosition = worldPosition1.xyz;',\n ' v_position = vec4(position, 1.0); ',\n ].join('\\n'),\n )\n shader.fragmentShader = shader.fragmentShader.replace('void main() {',\n `\n varying vec4 v_position;\n uniform float time;\n uniform float center;\n uniform float min_length;\n uniform float speed;\n varying vec3 vWorldPosition;\n void main() {\n `)\n\n shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>',\n `\n #include <dithering_fragment>\n float median = min_length + time * speed;\n\n if(distance(vec3(vWorldPosition.x,0,vWorldPosition.z), vec3(0,0,0)) < median) {\n gl_FragColor.a = 0.0;\n }\n `)\n }\n\n mesh.material = currentMaterial\n\n const cancellation = use.useframe(() => {\n if (oldShader) {\n oldShader.uniforms.time.value += speed\n\n const worldPosition = new Vector3()\n\n mesh.getWorldPosition(worldPosition)\n\n worldPosition.distanceTo(new Vector3(0, 0, 0))\n\n if (worldPosition.distanceTo(new Vector3(0, 0, 0)) < oldShader.uniforms.time.value)\n currentMaterial.depthWrite = false\n\n if (oldShader.uniforms.time.value > end) {\n options?.callback && options.callback()\n\n setTimeout(() => {\n mesh.material = lastMaterial\n oldShader.uniforms.time.value = 0\n }, 100)\n\n cancellation()\n }\n }\n })\n}\n\nexport default switchMaterialV2"],"mappings":"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"}
1
+ {"version":3,"names":["Vector3","use","switchMaterial","mesh","material","options","lastMaterial","clone","currentMaterial","speed","start","end","transparent","oldShader","onBeforeCompile","shader","uniforms","time","value","min_length","vertexShader","replace","join","fragmentShader","cancellation","useframe","worldPosition","getWorldPosition","x","depthWrite","callback","setTimeout","switchMaterialV2","center","y","z","distanceTo","requestAnimationFrame"],"sources":["../../../src/factory/utils/switchMaterial.ts"],"sourcesContent":["import type { Material, Object3D, Shader } from '@anov/3d-core'\nimport { Vector3, use } from '@anov/3d-core'\n\ntype SwitchMaterialOptions = {\n speed?: number\n start?: number\n end?: number\n callback?: () => void\n}\n\nconst switchMaterial = (mesh: Object3D & { material: Material }, material: Material, options?: SwitchMaterialOptions) => {\n const lastMaterial = mesh.material.clone()\n const currentMaterial = mesh.material.clone()\n\n const { speed = 10, start = 0, end = 100 } = options || {}\n\n currentMaterial.transparent = true\n\n let oldShader: Shader\n\n currentMaterial.onBeforeCompile = (shader) => {\n oldShader = shader\n shader.uniforms.time = { value: 0.0 }\n shader.uniforms.min_length = { value: start }\n shader.uniforms.speed = { value: 1.0 }\n shader.vertexShader = shader.vertexShader.replace(\n 'void main() {',\n [\n 'varying vec4 v_position;',\n 'varying vec3 vWorldPosition; ',\n 'void main() {',\n ' vec4 worldPosition1 = modelMatrix * vec4(position, 1.0);',\n ' vWorldPosition = worldPosition1.xyz;',\n ' v_position = vec4(position, 1.0); ',\n ].join('\\n'),\n )\n shader.fragmentShader = shader.fragmentShader.replace('void main() {',\n `\n varying vec4 v_position;\n uniform float time;\n uniform float min_length;\n uniform float speed;\n varying vec3 vWorldPosition;\n void main() {\n `)\n\n shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>',\n `\n #include <dithering_fragment>\n float median = min_length + time * speed;\n if(vWorldPosition.x < median) {\n gl_FragColor.a = 0.0;\n }\n `)\n }\n\n mesh.material = currentMaterial\n\n const cancellation = use.useframe(() => {\n if (oldShader) {\n oldShader.uniforms.time.value += speed\n\n const worldPosition = new Vector3()\n\n mesh.getWorldPosition(worldPosition)\n\n if (worldPosition.x < start + oldShader.uniforms.time.value)\n currentMaterial.depthWrite = false\n\n if (oldShader.uniforms.time.value > end) {\n options?.callback && options.callback()\n\n setTimeout(() => {\n mesh.material = lastMaterial\n oldShader.uniforms.time.value = 0\n }, 100)\n\n cancellation()\n }\n }\n })\n}\n\n/**\n * todo 代码合并\n * @param mesh\n * @param material\n * @param options\n */\nconst switchMaterialV2 = (mesh: Object3D & { material: Material }, material: Material, options?: SwitchMaterialOptions) => {\n const lastMaterial = mesh.material.clone()\n const currentMaterial = mesh.material.clone()\n\n const { speed = 10, start = 0, end = 100 } = options || {}\n\n currentMaterial.transparent = true\n\n let oldShader: Shader\n\n currentMaterial.onBeforeCompile = (shader) => {\n oldShader = shader\n shader.uniforms.time = { value: 0.0 }\n shader.uniforms.min_length = { value: 0 }\n shader.uniforms.speed = { value: 1.0 }\n shader.uniforms.center = { value: { x: 0, y: 0, z: 0 } }\n shader.vertexShader = shader.vertexShader.replace(\n 'void main() {',\n [\n 'varying vec4 v_position;',\n 'varying vec3 vWorldPosition; ',\n 'void main() {',\n ' vec4 worldPosition1 = modelMatrix * vec4(position, 1.0);',\n ' vWorldPosition = worldPosition1.xyz;',\n ' v_position = vec4(position, 1.0); ',\n ].join('\\n'),\n )\n shader.fragmentShader = shader.fragmentShader.replace('void main() {',\n `\n varying vec4 v_position;\n uniform float time;\n uniform float center;\n uniform float min_length;\n uniform float speed;\n varying vec3 vWorldPosition;\n void main() {\n `)\n\n shader.fragmentShader = shader.fragmentShader.replace('#include <dithering_fragment>',\n `\n #include <dithering_fragment>\n float median = min_length + time * speed;\n\n if(distance(vec3(vWorldPosition.x,0,vWorldPosition.z), vec3(0,0,0)) < median) {\n gl_FragColor.a = 0.0;\n }\n `)\n }\n\n mesh.material = currentMaterial\n\n const cancellation = use.useframe(() => {\n if (oldShader) {\n oldShader.uniforms.time.value += speed\n\n const worldPosition = new Vector3()\n\n mesh.getWorldPosition(worldPosition)\n\n worldPosition.distanceTo(new Vector3(0, 0, 0))\n\n if (worldPosition.distanceTo(new Vector3(0, 0, 0)) < oldShader.uniforms.time.value)\n currentMaterial.depthWrite = false\n\n if (oldShader.uniforms.time.value > end) {\n requestAnimationFrame(() => {\n options?.callback && options.callback()\n\n requestAnimationFrame(() => {\n mesh.material = lastMaterial\n oldShader.uniforms.time.value = 0\n })\n })\n\n cancellation()\n }\n }\n })\n}\n\nexport default switchMaterialV2"],"mappings":"AACA,SAASA,OAAO,EAAEC,GAAG,QAAQ,eAAe;AAS5C,IAAMC,cAAc,GAAG,SAAjBA,cAAc,CAAIC,IAAuC,EAAEC,QAAkB,EAAEC,OAA+B,EAAK;EACvH,IAAMC,YAAY,GAAGH,IAAI,CAACC,QAAQ,CAACG,KAAK,EAAE;EAC1C,IAAMC,eAAe,GAAGL,IAAI,CAACC,QAAQ,CAACG,KAAK,EAAE;EAE7C,WAA6CF,OAAO,IAAI,CAAC,CAAC;IAAA,kBAAlDI,KAAK;IAALA,KAAK,2BAAG,EAAE;IAAA,kBAAEC,KAAK;IAALA,KAAK,2BAAG,CAAC;IAAA,gBAAEC,GAAG;IAAHA,GAAG,yBAAG,GAAG;EAExCH,eAAe,CAACI,WAAW,GAAG,IAAI;EAElC,IAAIC,SAAiB;EAErBL,eAAe,CAACM,eAAe,GAAG,UAACC,MAAM,EAAK;IAC5CF,SAAS,GAAGE,MAAM;IAClBA,MAAM,CAACC,QAAQ,CAACC,IAAI,GAAG;MAAEC,KAAK,EAAE;IAAI,CAAC;IACrCH,MAAM,CAACC,QAAQ,CAACG,UAAU,GAAG;MAAED,KAAK,EAAER;IAAM,CAAC;IAC7CK,MAAM,CAACC,QAAQ,CAACP,KAAK,GAAG;MAAES,KAAK,EAAE;IAAI,CAAC;IACtCH,MAAM,CAACK,YAAY,GAAGL,MAAM,CAACK,YAAY,CAACC,OAAO,CAC/C,eAAe,EACf,CACE,0BAA0B,EAC1B,+BAA+B,EAC/B,eAAe,EACf,2DAA2D,EAC3D,uCAAuC,EACvC,qCAAqC,CACtC,CAACC,IAAI,CAAC,IAAI,CAAC,CACb;IACDP,MAAM,CAACQ,cAAc,GAAGR,MAAM,CAACQ,cAAc,CAACF,OAAO,CAAC,eAAe,4MAQjE;IAEJN,MAAM,CAACQ,cAAc,GAAGR,MAAM,CAACQ,cAAc,CAACF,OAAO,CAAC,+BAA+B,0KAOnF;EACJ,CAAC;EAEDlB,IAAI,CAACC,QAAQ,GAAGI,eAAe;EAE/B,IAAMgB,YAAY,GAAGvB,GAAG,CAACwB,QAAQ,CAAC,YAAM;IACtC,IAAIZ,SAAS,EAAE;MACbA,SAAS,CAACG,QAAQ,CAACC,IAAI,CAACC,KAAK,IAAIT,KAAK;MAEtC,IAAMiB,aAAa,GAAG,IAAI1B,OAAO,EAAE;MAEnCG,IAAI,CAACwB,gBAAgB,CAACD,aAAa,CAAC;MAEpC,IAAIA,aAAa,CAACE,CAAC,GAAGlB,KAAK,GAAGG,SAAS,CAACG,QAAQ,CAACC,IAAI,CAACC,KAAK,EACzDV,eAAe,CAACqB,UAAU,GAAG,KAAK;MAEpC,IAAIhB,SAAS,CAACG,QAAQ,CAACC,IAAI,CAACC,KAAK,GAAGP,GAAG,EAAE;QACvC,CAAAN,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEyB,QAAQ,KAAIzB,OAAO,CAACyB,QAAQ,EAAE;QAEvCC,UAAU,CAAC,YAAM;UACf5B,IAAI,CAACC,QAAQ,GAAGE,YAAY;UAC5BO,SAAS,CAACG,QAAQ,CAACC,IAAI,CAACC,KAAK,GAAG,CAAC;QACnC,CAAC,EAAE,GAAG,CAAC;QAEPM,YAAY,EAAE;MAChB;IACF;EACF,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,IAAMQ,gBAAgB,GAAG,SAAnBA,gBAAgB,CAAI7B,IAAuC,EAAEC,QAAkB,EAAEC,OAA+B,EAAK;EACzH,IAAMC,YAAY,GAAGH,IAAI,CAACC,QAAQ,CAACG,KAAK,EAAE;EAC1C,IAAMC,eAAe,GAAGL,IAAI,CAACC,QAAQ,CAACG,KAAK,EAAE;EAE7C,YAA6CF,OAAO,IAAI,CAAC,CAAC;IAAA,oBAAlDI,KAAK;IAALA,KAAK,4BAAG,EAAE;IAAA,oBAAEC,KAAK;IAALA,KAAK,4BAAG,CAAC;IAAA,kBAAEC,GAAG;IAAHA,GAAG,0BAAG,GAAG;EAExCH,eAAe,CAACI,WAAW,GAAG,IAAI;EAElC,IAAIC,SAAiB;EAErBL,eAAe,CAACM,eAAe,GAAG,UAACC,MAAM,EAAK;IAC5CF,SAAS,GAAGE,MAAM;IAClBA,MAAM,CAACC,QAAQ,CAACC,IAAI,GAAG;MAAEC,KAAK,EAAE;IAAI,CAAC;IACrCH,MAAM,CAACC,QAAQ,CAACG,UAAU,GAAG;MAAED,KAAK,EAAE;IAAE,CAAC;IACzCH,MAAM,CAACC,QAAQ,CAACP,KAAK,GAAG;MAAES,KAAK,EAAE;IAAI,CAAC;IACtCH,MAAM,CAACC,QAAQ,CAACiB,MAAM,GAAG;MAAEf,KAAK,EAAE;QAAEU,CAAC,EAAE,CAAC;QAAEM,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE;MAAE;IAAE,CAAC;IACxDpB,MAAM,CAACK,YAAY,GAAGL,MAAM,CAACK,YAAY,CAACC,OAAO,CAC/C,eAAe,EACf,CACE,0BAA0B,EAC1B,+BAA+B,EAC/B,eAAe,EACf,2DAA2D,EAC3D,uCAAuC,EACvC,qCAAqC,CACtC,CAACC,IAAI,CAAC,IAAI,CAAC,CACb;IACDP,MAAM,CAACQ,cAAc,GAAGR,MAAM,CAACQ,cAAc,CAACF,OAAO,CAAC,eAAe,2OASjE;IAEJN,MAAM,CAACQ,cAAc,GAAGR,MAAM,CAACQ,cAAc,CAACF,OAAO,CAAC,+BAA+B,4NAQnF;EACJ,CAAC;EAEDlB,IAAI,CAACC,QAAQ,GAAGI,eAAe;EAE/B,IAAMgB,YAAY,GAAGvB,GAAG,CAACwB,QAAQ,CAAC,YAAM;IACtC,IAAIZ,SAAS,EAAE;MACbA,SAAS,CAACG,QAAQ,CAACC,IAAI,CAACC,KAAK,IAAIT,KAAK;MAEtC,IAAMiB,aAAa,GAAG,IAAI1B,OAAO,EAAE;MAEnCG,IAAI,CAACwB,gBAAgB,CAACD,aAAa,CAAC;MAEpCA,aAAa,CAACU,UAAU,CAAC,IAAIpC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAE9C,IAAI0B,aAAa,CAACU,UAAU,CAAC,IAAIpC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAGa,SAAS,CAACG,QAAQ,CAACC,IAAI,CAACC,KAAK,EAChFV,eAAe,CAACqB,UAAU,GAAG,KAAK;MAEpC,IAAIhB,SAAS,CAACG,QAAQ,CAACC,IAAI,CAACC,KAAK,GAAGP,GAAG,EAAE;QACvC0B,qBAAqB,CAAC,YAAM;UAC1B,CAAAhC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEyB,QAAQ,KAAIzB,OAAO,CAACyB,QAAQ,EAAE;UAEvCO,qBAAqB,CAAC,YAAM;YAC1BlC,IAAI,CAACC,QAAQ,GAAGE,YAAY;YAC5BO,SAAS,CAACG,QAAQ,CAACC,IAAI,CAACC,KAAK,GAAG,CAAC;UACnC,CAAC,CAAC;QACJ,CAAC,CAAC;QAEFM,YAAY,EAAE;MAChB;IACF;EACF,CAAC,CAAC;AACJ,CAAC;AAED,eAAeQ,gBAAgB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anov/3d",
3
- "version": "0.0.4-alpha30",
3
+ "version": "0.0.4-alpha31",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",
@@ -20,8 +20,8 @@
20
20
  "@tweenjs/tween.js": "^21.0.0",
21
21
  "localforage": "^1.10.0",
22
22
  "uuid": "^9.0.1",
23
- "@anov/3d-ability": "^0.0.4-alpha12",
24
- "@anov/3d-core": "^0.0.4-alpha21"
23
+ "@anov/3d-core": "^0.0.4-alpha22",
24
+ "@anov/3d-ability": "^0.0.4-alpha12"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/uuid": "^9.0.7"