fl-web-component 1.0.12 → 1.1.2

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.
@@ -20,6 +20,7 @@ var MeasureAngle = function(renderer, scene, camera, width, height) {
20
20
  this.timer = null
21
21
  this.width = width
22
22
  this.height = height
23
+ this.firstTime = 0
23
24
  // this.POINT_MATERIAL = new THREE.PointsMaterial({ color: 0xff5000, size: 1, opacity: 0.6, transparent: true, depthWrite: false, depthTest: false })
24
25
  // this.LINE_MATERIAL = new THREE.LineBasicMaterial({ color: 0xff0000, linewidth: 3, opacity: 0.8, transparent: true, side: THREE.DoubleSide, depthWrite: false, depthTest: false })
25
26
  }
@@ -28,7 +29,8 @@ MeasureAngle.prototype = {
28
29
  start() {
29
30
  _this = this
30
31
  this.renderer.domElement.style.cursor = 'crosshair'
31
- this.renderer.domElement.addEventListener('click', this.click, false)
32
+ this.renderer.domElement.addEventListener('mouseup', this.click, false)
33
+ this.renderer.domElement.addEventListener('mousedown', this.mousedown, false)
32
34
  this.renderer.domElement.addEventListener('mousemove', this.mousemove, false)
33
35
  this.renderer.domElement.addEventListener('contextmenu', this.rightClick, false)
34
36
  },
@@ -132,34 +134,41 @@ MeasureAngle.prototype = {
132
134
  tipsLabel.position.set(position.x + 0.1, position.y, position.z + 0.05)
133
135
  return tipsLabel
134
136
  },
137
+ mousedown() {
138
+ this.firstTime = new Date().getTime();
139
+ },
135
140
  click(e) {
136
- if (_this.isCompleted) {
137
- _this.renderer.domElement.addEventListener('mousemove', _this.mousemove)
138
- }
139
- clearTimeout(_this.timer)
140
- _this.timer = setTimeout(() => {
141
- _this.isCompleted = false
142
- const point = _this.getPosition(e)
143
- if (point) {
144
- if(_this.tipsLabel) {
145
- _this.tipsLabel.position.set(point.x + 0.1, point.y, point.z + 0.05)
146
- } else {
147
- _this.tipsLabel = _this.createTipsLabel('左击绘制右击结束', point)
148
- _this.scene.add(_this.tipsLabel)
149
- }
150
- if (_this.tempPoints) {
151
- _this.tempPoints.position.set(point.x, point.y, point.z)
152
- _this.tempPoints = undefined
153
- } else {
154
- const geom =_this.createLabel('circle-tag', '', point)
155
- _this.points.push(geom)
156
- _this.scene.add(geom)
157
- }
158
- _this.tempLine = undefined
159
- _this.tempLabel = undefined
160
- _this.pointArray.push(point)
141
+ let lastTime = new Date().getTime();
142
+ if (lastTime = this.firstTime < 300) {
143
+ if (_this.isCompleted) {
144
+ _this.renderer.domElement.addEventListener('mousemove', _this.mousemove)
161
145
  }
162
- })
146
+ clearTimeout(_this.timer)
147
+ _this.timer = setTimeout(() => {
148
+ _this.isCompleted = false
149
+ const point = _this.getPosition(e)
150
+ if (point) {
151
+ if(_this.tipsLabel) {
152
+ _this.tipsLabel.position.set(point.x + 0.1, point.y, point.z + 0.05)
153
+ } else {
154
+ _this.tipsLabel = _this.createTipsLabel('左击绘制右击结束', point)
155
+ _this.scene.add(_this.tipsLabel)
156
+ }
157
+ if (_this.tempPoints) {
158
+ _this.tempPoints.position.set(point.x, point.y, point.z)
159
+ _this.tempPoints = undefined
160
+ } else {
161
+ const geom =_this.createLabel('circle-tag', '', point)
162
+ _this.points.push(geom)
163
+ _this.scene.add(geom)
164
+ }
165
+ _this.tempLine = undefined
166
+ _this.tempLabel = undefined
167
+ _this.pointArray.push(point)
168
+ }
169
+ })
170
+ }
171
+
163
172
  },
164
173
  rightClick(e) {
165
174
  if(_this.tipsLabel) {
@@ -178,9 +187,10 @@ MeasureAngle.prototype = {
178
187
  }
179
188
  },
180
189
  close() {
181
- this.renderer.domElement.removeEventListener('mousemove', this.mousemove)
182
- this.renderer.domElement.removeEventListener('click', this.click)
183
- this.renderer.domElement.removeEventListener('contextmenu', this.rightClick)
190
+ this.renderer.domElement.removeEventListener('mouseup', this.click, false)
191
+ this.renderer.domElement.removeEventListener('mousedown', this.mousedown, false)
192
+ this.renderer.domElement.removeEventListener('mousemove', this.mousemove, false)
193
+ this.renderer.domElement.removeEventListener('contextmenu', this.rightClick, false)
184
194
  this.remove(this.points)
185
195
  this.remove(this.polyline)
186
196
  this.remove(this.labels)
@@ -20,13 +20,15 @@ var MeasureArea = function(renderer, scene, camera, width, height) {
20
20
  this.polygons = []
21
21
  this.width = width
22
22
  this.height = height
23
+ this.firstTime = 0
23
24
  }
24
25
 
25
26
  MeasureArea.prototype = {
26
27
  start() {
27
28
  _this = this
28
29
  this.renderer.domElement.style.cursor = 'crosshair'
29
- this.renderer.domElement.addEventListener('click', this.click, false)
30
+ this.renderer.domElement.addEventListener('mouseup', this.click, false)
31
+ this.renderer.domElement.addEventListener('mousedown', this.mousedown, false)
30
32
  this.renderer.domElement.addEventListener('mousemove', this.mousemove, false)
31
33
  this.renderer.domElement.addEventListener('contextmenu', this.rightClick, false)
32
34
  },
@@ -114,34 +116,39 @@ MeasureArea.prototype = {
114
116
  tipsLabel.position.set(position.x + 0.1, position.y, position.z + 0.05)
115
117
  return tipsLabel
116
118
  },
119
+ mousedown() {
120
+ this.firstTime = new Date().getTime();
121
+ },
117
122
  click(e) {
118
- if (_this.isCompleted) {
119
- _this.renderer.domElement.addEventListener('mousemove', _this.mousemove)
120
- }
121
- clearTimeout(_this.timer)
122
- _this.timer = setTimeout(() => {
123
- _this.isCompleted = false
124
- const point = _this.getPosition(e)
125
- if (point) {
126
- if(_this.tipsLabel) {
127
- _this.tipsLabel.position.set(point.x + 0.01, point.y, point.z + 0.05)
128
- } else {
129
- _this.tipsLabel = _this.createTipsLabel('左击绘制右击结束', point)
130
- _this.scene.add(_this.tipsLabel)
131
- }
132
- if (_this.tempPoints) {
133
- _this.tempPoints.position.set(point.x, point.y, point.z)
134
- _this.tempPoints = undefined
135
- } else {
136
- const geom = _this.createLabel('circle-tag', '', point)
137
- _this.points.push(geom)
138
- _this.scene.add(geom)
139
- }
140
- _this.tempLine = undefined
141
- _this.pointArray.push(point)
123
+ let lastTime = new Date().getTime();
124
+ if (lastTime - this.firstTime < 300) {
125
+ if (_this.isCompleted) {
126
+ _this.renderer.domElement.addEventListener('mousemove', _this.mousemove)
142
127
  }
143
- }, 100)
144
-
128
+ clearTimeout(_this.timer)
129
+ _this.timer = setTimeout(() => {
130
+ _this.isCompleted = false
131
+ const point = _this.getPosition(e)
132
+ if (point) {
133
+ if(_this.tipsLabel) {
134
+ _this.tipsLabel.position.set(point.x + 0.01, point.y, point.z + 0.05)
135
+ } else {
136
+ _this.tipsLabel = _this.createTipsLabel('左击绘制右击结束', point)
137
+ _this.scene.add(_this.tipsLabel)
138
+ }
139
+ if (_this.tempPoints) {
140
+ _this.tempPoints.position.set(point.x, point.y, point.z)
141
+ _this.tempPoints = undefined
142
+ } else {
143
+ const geom = _this.createLabel('circle-tag', '', point)
144
+ _this.points.push(geom)
145
+ _this.scene.add(geom)
146
+ }
147
+ _this.tempLine = undefined
148
+ _this.pointArray.push(point)
149
+ }
150
+ }, 100)
151
+ }
145
152
  },
146
153
  rightClick (e) {
147
154
  if(_this.tipsLabel) {
@@ -164,23 +171,24 @@ MeasureArea.prototype = {
164
171
  }
165
172
  },
166
173
  close() {
167
- this.renderer.domElement.removeEventListener('mousemove', this.mousemove)
168
- this.renderer.domElement.removeEventListener('click',this.click)
169
- this.renderer.domElement.removeEventListener('contextmenu',this.rightClick)
170
- this.remove(this.points)
171
- this.remove(this.polyline)
172
- this.remove(this.labels)
173
- this.remove(this.polygons)
174
- this.pointArray.splice(0)
175
- this.points.splice(0)
176
- this.polyline.splice(0)
177
- this.labels.splice(0)
178
- this.tempPoints = undefined
179
- this.tempLabel = undefined
180
- this.tempLine = undefined
181
- this.scene.remove(this.tipsLabel)
182
- this.tipsLabel = undefined
183
- this.renderer.domElement.style.cursor = 'pointer'
174
+ this.renderer.domElement.removeEventListener('mouseup', this.click)
175
+ this.renderer.domElement.removeEventListener('mousedown', this.mousedown)
176
+ this.renderer.domElement.removeEventListener('mousemove', this.mousemove)
177
+ this.renderer.domElement.removeEventListener('contextmenu', this.rightClick)
178
+ this.remove(this.points)
179
+ this.remove(this.polyline)
180
+ this.remove(this.labels)
181
+ this.remove(this.polygons)
182
+ this.pointArray.splice(0)
183
+ this.points.splice(0)
184
+ this.polyline.splice(0)
185
+ this.labels.splice(0)
186
+ this.tempPoints = undefined
187
+ this.tempLabel = undefined
188
+ this.tempLine = undefined
189
+ this.scene.remove(this.tipsLabel)
190
+ this.tipsLabel = undefined
191
+ this.renderer.domElement.style.cursor = 'pointer'
184
192
  },
185
193
  remove(array) {
186
194
  for (let index = 0; index < array.length; index++) {
@@ -18,13 +18,15 @@ var MeasureDistance = function(renderer, scene, camera, width, height) {
18
18
  this.timer = null
19
19
  this.width = width
20
20
  this.height = height
21
+ this.firstTime = 0
21
22
  }
22
23
 
23
24
  MeasureDistance.prototype = {
24
25
  start() {
25
26
  _this = this
26
27
  this.renderer.domElement.style.cursor = 'crosshair'
27
- this.renderer.domElement.addEventListener('click', this.click, false)
28
+ this.renderer.domElement.addEventListener('mousedown', this.mousedown, false)
29
+ this.renderer.domElement.addEventListener('mouseup', this.click, false)
28
30
  this.renderer.domElement.addEventListener('mousemove', this.mousemove, false)
29
31
  this.renderer.domElement.addEventListener('contextmenu', this.rightClick, false)
30
32
  },
@@ -105,34 +107,40 @@ MeasureDistance.prototype = {
105
107
  tipsLabel.position.set(position.x + 0.1, position.y, position.z + 0.05)
106
108
  return tipsLabel
107
109
  },
110
+ mousedown() {
111
+ this.firstTime = new Date().getTime();
112
+ },
108
113
  click(e) {
109
- if (_this.isCompleted) {
110
- _this.renderer.domElement.addEventListener('mousemove', _this.mousemove)
111
- }
112
- clearTimeout(_this.timer)
113
- _this.timer = setTimeout(() => {
114
- _this.isCompleted = false
115
- const point = _this.getPosition(e)
116
- if (point) {
117
- if(_this.tipsLabel) {
118
- _this.tipsLabel.position.set(point.x + 0.1, point.y, point.z + 0.05)
119
- } else {
120
- _this.tipsLabel = _this.createTipsLabel('左击绘制右击结束', point)
121
- _this.scene.add(_this.tipsLabel)
122
- }
123
- if (_this.tempPoints) {
124
- _this.tempPoints.position.set(point.x, point.y, point.z)
125
- _this.tempPoints = undefined
126
- } else {
127
- const geom = _this.createLabel('circle-tag', '', point)
128
- _this.points.push(geom)
129
- _this.scene.add(geom)
130
- }
131
- _this.tempLine = undefined
132
- _this.tempLabel = undefined
133
- _this.pointArray.push(point)
114
+ let lastTime = new Date().getTime();
115
+ if (lastTime - this.firstTime < 300) {
116
+ if (_this.isCompleted) {
117
+ _this.renderer.domElement.addEventListener('mousemove', _this.mousemove)
134
118
  }
135
- })
119
+ clearTimeout(_this.timer)
120
+ _this.timer = setTimeout(() => {
121
+ _this.isCompleted = false
122
+ const point = _this.getPosition(e)
123
+ if (point) {
124
+ if(_this.tipsLabel) {
125
+ _this.tipsLabel.position.set(point.x + 0.1, point.y, point.z + 0.05)
126
+ } else {
127
+ _this.tipsLabel = _this.createTipsLabel('左击绘制右击结束', point)
128
+ _this.scene.add(_this.tipsLabel)
129
+ }
130
+ if (_this.tempPoints) {
131
+ _this.tempPoints.position.set(point.x, point.y, point.z)
132
+ _this.tempPoints = undefined
133
+ } else {
134
+ const geom = _this.createLabel('circle-tag', '', point)
135
+ _this.points.push(geom)
136
+ _this.scene.add(geom)
137
+ }
138
+ _this.tempLine = undefined
139
+ _this.tempLabel = undefined
140
+ _this.pointArray.push(point)
141
+ }
142
+ })
143
+ }
136
144
  },
137
145
  rightClick(e) {
138
146
  if(_this.tipsLabel) {
@@ -151,8 +159,9 @@ MeasureDistance.prototype = {
151
159
  }
152
160
  },
153
161
  close() {
154
- this.renderer.domElement.removeEventListener('mousemove', this.mousemove)
155
- this.renderer.domElement.removeEventListener('click', this.click)
162
+ this.renderer.domElement.removeEventListener('mousedown', this.mousedown)
163
+ this.renderer.domElement.removeEventListener('mouseup', this.click)
164
+ this.renderer.domElement.removeEventListener('mousemove', this.mousemove)
156
165
  this.renderer.domElement.removeEventListener('contextmenu', this.rightClick)
157
166
  this.remove(this.points)
158
167
  this.remove(this.polyline)
@@ -167,6 +176,7 @@ MeasureDistance.prototype = {
167
176
  this.scene.remove(this.tipsLabel)
168
177
  this.tipsLabel = undefined
169
178
  this.renderer.domElement.style.cursor = 'pointer'
179
+ this.firstTime = 0
170
180
  },
171
181
  remove(array) {
172
182
  for (let index = 0; index < array.length; index++) {
@@ -0,0 +1,58 @@
1
+ import * as THREE from 'three'
2
+ const RainShader = {
3
+ uniforms: {
4
+ 'tDiffuse': {value: null},
5
+ 'iResolution': {value: null},
6
+ 'iTime': {value: 0},
7
+ 'radian': {value: 0 / 360 * Math.PI},
8
+ 'rainSpeed': {value: 0.2},
9
+ 'rainColor': {value: new THREE.Color(1, 1, 1)}
10
+ },
11
+ vertexShader: `
12
+ varying vec2 vUv;
13
+ void main() {
14
+ vUv = uv;
15
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
16
+ }
17
+ `,
18
+ fragmentShader: `
19
+ uniform sampler2D tDiffuse;
20
+ uniform vec2 iResolution;
21
+ uniform float iTime;
22
+ uniform float radian;
23
+ uniform float rainSpeed;
24
+ uniform vec3 rainColor;
25
+ varying vec2 vUv;
26
+
27
+ float hash(vec2 p){
28
+ p = 50.0 * fract(p * 0.3183099 + vec2(0.71, 0.113) );
29
+ return -1.0+2.0 * fract(p.x * p.y * (p.x + p.y));
30
+ }
31
+
32
+ float noise(in vec2 p){
33
+ vec2 i = floor(p);
34
+ vec2 f = fract(p);
35
+ vec2 u = f * f * (3.0 - 2.0 * f);
36
+ return mix(mix( hash( i + vec2(0.0,0.0) ), hash( i + vec2(1.0,0.0) ), u.x), mix( hash( i + vec2(0.0,1.0) ), hash( i + vec2(1.0,1.0) ), u.x), u.y);
37
+ }
38
+
39
+ void main() {
40
+ vec3 col = texture(tDiffuse, vUv).rgb;
41
+ vec2 q = gl_FragCoord.xy / iResolution.xy;
42
+ vec2 p = -1.0 + 2.0 * q;
43
+ p.x *= iResolution.x / iResolution.y;
44
+ vec2 st = (p * vec2(.5, .01) + vec2 (iTime) * 0.05 * rainSpeed )-vec2(q.y*cos(radian), 0.0);
45
+ st *= 1000.;
46
+ float f = noise(st) * noise(st*.773)* 1.3;
47
+ f = clamp(pow(abs(f), 23.0) * 13.0, 0.0, q.y*.14) * 2.7;
48
+ col += clamp(f, 0.0, 1.0) * rainColor;
49
+ if(col.x > f){
50
+ gl_FragColor = vec4(col,1.0);
51
+ }else{
52
+ gl_FragColor = vec4(col,0.0);
53
+ }
54
+ }
55
+ `
56
+ }
57
+
58
+ export { RainShader }
@@ -0,0 +1,75 @@
1
+ const SnowShader = {
2
+ uniforms: {
3
+ 'tDiffuse': {value: null},
4
+ 'iResolution': {value: null},
5
+ 'iTime': {value: 0.2},
6
+ 'size': {value: 0.05},
7
+ 'density': {value: 1.0},
8
+ 'snowSpeed': {value: 0.6}
9
+ },
10
+ vertexShader: `
11
+ varying vec2 vUv;
12
+ void main() {
13
+ vUv = uv;
14
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
15
+ }
16
+ `,
17
+ fragmentShader: `
18
+ #define PI 3.14159265359
19
+ uniform sampler2D tDiffuse;
20
+ uniform vec2 iResolution;
21
+ uniform float iTime;
22
+ uniform float size;
23
+ uniform float density;
24
+ uniform float snowSpeed;
25
+ varying vec2 vUv;
26
+
27
+ float ball(vec2 p){
28
+ float d = distance(vec2(.5), p);
29
+ return smoothstep(size, size - 0.05, d);
30
+ }
31
+
32
+ float N11(float n){
33
+ return fract(sin(n * 871.213) * 3134.422);
34
+ }
35
+
36
+ float N21(vec2 uv){
37
+ return N11(N11(uv.x) + uv.y);
38
+ }
39
+
40
+ float snow(vec2 uv,float t){
41
+ vec2 org_uv = vec2(uv.x, uv.y);
42
+ float z = 10.;
43
+ uv.y += t * 0.5;
44
+ vec2 gv = fract(uv * z);
45
+ vec2 id = floor(uv * z);
46
+ gv.x += (sin(N21(id) * 128. + t) * .4);
47
+ gv.y += (sin(N11(N21(id)) * 128. + t) * .4);
48
+ float dots = ball(gv);
49
+ return dots;
50
+ }
51
+
52
+ void main(){
53
+ vec3 col = texture(tDiffuse, vUv).rgb;
54
+ vec2 uv = gl_FragCoord.xy / iResolution.xy;
55
+ uv.x *= iResolution.x / iResolution.y;
56
+ float t = iTime * 0.3 * snowSpeed;
57
+ vec2 gh_uv = uv;
58
+ vec3 colSnow = vec3(0.0);
59
+ float m = 0.0;
60
+ for(float i = 0.; i <= 1.; i += 1. / (10.* density)){
61
+ float z = mix(1., .5 , i);
62
+ vec2 offset = vec2(N11(i), N11(N11(i)));
63
+ m += snow((uv + offset) * z, t) * .1;
64
+ }
65
+ colSnow = vec3(m) * 1.2;
66
+ colSnow += col * 1.0 * mix(0.5, 1., uv.y);
67
+ if(colSnow.x > vec3(m).x * 1.2){
68
+ gl_FragColor = vec4(colSnow,1.0);
69
+ }else{
70
+ gl_FragColor = vec4(colSnow,0.0);
71
+ }
72
+ }
73
+ `
74
+ }
75
+ export { SnowShader }