@anov/3d-ability 0.0.4-alpha5 → 0.0.4-alpha6

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.
@@ -0,0 +1,8 @@
1
+ declare class Snow {
2
+ private meshes;
3
+ constructor();
4
+ private initGeometry;
5
+ stop(): void;
6
+ continue(): void;
7
+ }
8
+ export default Snow;
@@ -0,0 +1,2 @@
1
+ declare const createSkyCloud: (opacity?: number, density?: number) => [(density?: number) => void, () => void];
2
+ export default createSkyCloud;
@@ -0,0 +1,8 @@
1
+ declare class Snow {
2
+ private meshes;
3
+ constructor();
4
+ private initGeometry;
5
+ stop(): void;
6
+ continue(): void;
7
+ }
8
+ export default Snow;
@@ -0,0 +1,12 @@
1
+ import { Group, Vector3 } from '@anov/3d-core';
2
+ /**
3
+ * create sky system
4
+ * @param date
5
+ * @param latitude
6
+ * @param longitude
7
+ * @returns
8
+ */
9
+ declare const createSkySystem: (date: Date, latitude: number, longitude: number, sunRadius?: number) => [(currentDate?: Date) => Vector3, Group & {
10
+ sunPosition: Vector3;
11
+ }, any];
12
+ export default createSkySystem;
@@ -24,7 +24,7 @@ var initsSkySystem = function initsSkySystem(options) {
24
24
  mieDirectionalG: 0.7,
25
25
  elevation: 2,
26
26
  azimuth: 180,
27
- exposure: renderer.toneMappingExposure
27
+ exposure: 0.1
28
28
  };
29
29
  // @ts-ignore
30
30
  var uniforms = sky.material.uniforms;
@@ -48,15 +48,17 @@ var initSunLight = function initSunLight(options) {
48
48
  var opts = options || {};
49
49
  var sunLight = new DirectionalLight(getLastValue(opts.color, 'white'), getLastValue(opts.intensity, 1));
50
50
  sunLight.castShadow = true;
51
- sunLight.shadow.bias = getLastValue(opts.bias, -0.005);
52
- sunLight.shadow.mapSize.set(getLastValue((_opts$mapSize = opts.mapSize) === null || _opts$mapSize === void 0 ? void 0 : _opts$mapSize[0], 1024 * 2), getLastValue((_opts$mapSize2 = opts.mapSize) === null || _opts$mapSize2 === void 0 ? void 0 : _opts$mapSize2[1], 1024 * 2));
53
- var cam = sunLight.shadow.camera;
54
- // cam.near = getLastValue(opts.near, 0.1)
55
- // cam.far = getLastValue(opts.far, 10000)
56
- // cam.left = getLastValue(opts.left, -10000)
57
- // cam.right = getLastValue(opts.right, 10000)
58
- // cam.top = getLastValue(opts.top, 10000)
59
- // cam.bottom = getLastValue(opts.bottom, -10000)
51
+
52
+ // sunLight.shadow.bias = getLastValue(opts.bias, -0.005)
53
+ sunLight.shadow.mapSize.set(getLastValue((_opts$mapSize = opts.mapSize) === null || _opts$mapSize === void 0 ? void 0 : _opts$mapSize[0], 1024 * 10), getLastValue((_opts$mapSize2 = opts.mapSize) === null || _opts$mapSize2 === void 0 ? void 0 : _opts$mapSize2[1], 1024 * 10));
54
+
55
+ // const cam = sunLight.shadow.camera
56
+ // cam.near = getLastValue(opts.near, 0.1)
57
+ // cam.far = getLastValue(opts.far, 100000)
58
+ // cam.left = getLastValue(opts.left, -100000)
59
+ // cam.right = getLastValue(opts.right, 100000)
60
+ // cam.top = getLastValue(opts.top, 100000)
61
+ // cam.bottom = getLastValue(opts.bottom, -100000)
60
62
 
61
63
  return sunLight;
62
64
  };
@@ -73,6 +75,7 @@ var createSkySystem = function createSkySystem(date, latitude, longitude) {
73
75
  var _use$useScene2 = use.useScene(),
74
76
  renderer = _use$useScene2.renderer,
75
77
  scene = _use$useScene2.scene;
78
+ sunRadius = 300;
76
79
  if (!renderer && !scene) throw new Error('renderer or scene is not exist');
77
80
  var _initsSkySystem = initsSkySystem(),
78
81
  _initsSkySystem2 = _slicedToArray(_initsSkySystem, 3),
@@ -1 +1 @@
1
- {"version":3,"names":["DirectionalLight","Group","MathUtils","Vector3","lib","use","getLastValue","getSunPosition","Sky","initsSkySystem","options","sky","position","useScene","renderer","scale","setScalar","effectController","turbidity","rayleigh","mieCoefficient","mieDirectionalG","elevation","azimuth","exposure","toneMappingExposure","uniforms","material","value","phi","degToRad","theta","setFromSphericalCoords","sunPosition","copy","initSunLight","opts","sunLight","color","intensity","castShadow","shadow","bias","mapSize","set","cam","camera","createSkySystem","date","latitude","longitude","sunRadius","scene","Error","skyGroup","add","move","altitude","radToDeg","x","Math","cos","z","sin","y","setDate","currentDate"],"sources":["../../../src/environment/sky/index.ts"],"sourcesContent":["import { DirectionalLight, Group, MathUtils, Vector3, lib, use } from '@anov/3d-core'\nimport { getLastValue } from '../../utils'\nimport { getSunPosition } from '../sun'\n\nconst Sky = lib.Sky\n\ntype SkySystemOption = {\n scalarCoefficient?: number\n turbidity?: number\n rayleigh?: number\n mieCoefficient?: number\n mieDirectionalG?: number\n elevation?: number\n azimuth?: number\n exposure?: number\n}\n\n/**\n * 天空盒 shader\n */\nconst initsSkySystem = (options?: SkySystemOption) => {\n const sky = new Sky()\n const position = new Vector3()\n const { renderer } = use.useScene()\n\n sky.scale.setScalar(450000)\n\n const effectController = {\n turbidity: 10,\n rayleigh: 3,\n mieCoefficient: 0.005,\n mieDirectionalG: 0.7,\n elevation: 2,\n azimuth: 180,\n exposure: renderer!.toneMappingExposure,\n }\n // @ts-ignore\n const uniforms = sky.material.uniforms\n uniforms.turbidity.value = effectController.turbidity\n uniforms.rayleigh.value = effectController.rayleigh\n uniforms.mieCoefficient.value = effectController.mieCoefficient\n uniforms.mieDirectionalG.value = effectController.mieDirectionalG\n\n const phi = MathUtils.degToRad(90 - effectController.elevation)\n const theta = MathUtils.degToRad(effectController.azimuth)\n\n position.setFromSphericalCoords(1, phi, theta)\n uniforms.sunPosition.value.copy(position)\n\n return [sky, position, uniforms] as [typeof sky, typeof position, typeof uniforms]\n}\n\ntype SunLightOption = {\n color?: string\n intensity?: number\n bias?: number\n mapSize?: [number, number]\n\n near?: number\n far?: number\n left?: number\n right?: number\n top?: number\n bottom?: number\n}\n\n/**\n * create sun light\n * @param options\n * @returns\n */\nconst initSunLight = (options?: SunLightOption) => {\n const opts = options || {}\n\n const sunLight = new DirectionalLight(getLastValue(opts.color, 'white'), getLastValue(opts.intensity, 1))\n sunLight.castShadow = true\n\n sunLight.shadow.bias = getLastValue(opts.bias, -0.005)\n sunLight.shadow.mapSize.set(getLastValue(opts.mapSize?.[0], 1024 * 2), getLastValue(opts.mapSize?.[1], 1024 * 2))\n\n const cam = sunLight.shadow.camera\n // cam.near = getLastValue(opts.near, 0.1)\n // cam.far = getLastValue(opts.far, 10000)\n // cam.left = getLastValue(opts.left, -10000)\n // cam.right = getLastValue(opts.right, 10000)\n // cam.top = getLastValue(opts.top, 10000)\n // cam.bottom = getLastValue(opts.bottom, -10000)\n\n return sunLight\n}\n\n/**\n * create sky system\n * @param date\n * @param latitude\n * @param longitude\n * @returns\n */\nconst createSkySystem = (date: Date, latitude: number, longitude: number, sunRadius = 300) => {\n const { renderer, scene } = use.useScene()\n\n if (!renderer && !scene)\n throw new Error('renderer or scene is not exist')\n\n const [sky, position, uniforms] = initsSkySystem()\n const sunLight = initSunLight()\n const skyGroup = new Group() as (Group & { sunPosition: Vector3 })\n\n scene!.add(sky)\n skyGroup.add(sunLight)\n scene!.add(skyGroup)\n\n const move = (altitude: number, azimuth: number) => {\n position.setFromSphericalCoords(sunRadius, MathUtils.degToRad(90 - MathUtils.radToDeg(altitude)), azimuth)\n uniforms.sunPosition.value.copy(position)\n\n const x = sunRadius * (Math.cos(altitude)) * (Math.cos(azimuth))\n const z = sunRadius * (Math.cos(altitude)) * (Math.sin(azimuth))\n const y = sunRadius * (Math.sin(altitude))\n\n const sunPosition = new Vector3(x, y, z)\n skyGroup.sunPosition = sunPosition\n skyGroup.position.copy(position)\n\n return sunPosition\n }\n\n const { altitude, azimuth } = getSunPosition(date, latitude, longitude)\n move(altitude, azimuth)\n\n /**\n * set date\n * @param currentDate\n * @returns\n */\n const setDate = (currentDate?: Date) => {\n const { altitude, azimuth } = getSunPosition(currentDate || date, latitude, longitude)\n return move(altitude, azimuth)\n }\n\n return [setDate, skyGroup, sky] as [typeof setDate, Group & { sunPosition: Vector3 }, any]\n}\n\nexport default createSkySystem\n"],"mappings":"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"}
1
+ {"version":3,"names":["DirectionalLight","Group","MathUtils","Vector3","lib","use","getLastValue","getSunPosition","Sky","initsSkySystem","options","sky","position","useScene","renderer","scale","setScalar","effectController","turbidity","rayleigh","mieCoefficient","mieDirectionalG","elevation","azimuth","exposure","uniforms","material","value","phi","degToRad","theta","setFromSphericalCoords","sunPosition","copy","initSunLight","opts","sunLight","color","intensity","castShadow","shadow","mapSize","set","createSkySystem","date","latitude","longitude","sunRadius","scene","Error","skyGroup","add","move","altitude","radToDeg","x","Math","cos","z","sin","y","setDate","currentDate"],"sources":["../../../src/environment/sky/index.ts"],"sourcesContent":["import { DirectionalLight, Group, MathUtils, Vector3, lib, use } from '@anov/3d-core'\nimport { getLastValue } from '../../utils'\nimport { getSunPosition } from '../sun'\n\nconst Sky = lib.Sky\n\ntype SkySystemOption = {\n scalarCoefficient?: number\n turbidity?: number\n rayleigh?: number\n mieCoefficient?: number\n mieDirectionalG?: number\n elevation?: number\n azimuth?: number\n exposure?: number\n}\n\n/**\n * 天空盒 shader\n */\nconst initsSkySystem = (options?: SkySystemOption) => {\n const sky = new Sky()\n const position = new Vector3()\n const { renderer } = use.useScene()\n\n sky.scale.setScalar(450000)\n\n const effectController = {\n turbidity: 10,\n rayleigh: 3,\n mieCoefficient: 0.005,\n mieDirectionalG: 0.7,\n elevation: 2,\n azimuth: 180,\n exposure: 0.1,\n }\n // @ts-ignore\n const uniforms = sky.material.uniforms\n uniforms.turbidity.value = effectController.turbidity\n uniforms.rayleigh.value = effectController.rayleigh\n uniforms.mieCoefficient.value = effectController.mieCoefficient\n uniforms.mieDirectionalG.value = effectController.mieDirectionalG\n\n const phi = MathUtils.degToRad(90 - effectController.elevation)\n const theta = MathUtils.degToRad(effectController.azimuth)\n\n position.setFromSphericalCoords(1, phi, theta)\n uniforms.sunPosition.value.copy(position)\n\n return [sky, position, uniforms] as [typeof sky, typeof position, typeof uniforms]\n}\n\ntype SunLightOption = {\n color?: string\n intensity?: number\n bias?: number\n mapSize?: [number, number]\n\n near?: number\n far?: number\n left?: number\n right?: number\n top?: number\n bottom?: number\n}\n\n/**\n * create sun light\n * @param options\n * @returns\n */\nconst initSunLight = (options?: SunLightOption) => {\n const opts = options || {}\n\n const sunLight = new DirectionalLight(getLastValue(opts.color, 'white'), getLastValue(opts.intensity, 1))\n sunLight.castShadow = true\n\n // sunLight.shadow.bias = getLastValue(opts.bias, -0.005)\n sunLight.shadow.mapSize.set(getLastValue(opts.mapSize?.[0], 1024 * 10), getLastValue(opts.mapSize?.[1], 1024 * 10))\n\n // const cam = sunLight.shadow.camera\n // cam.near = getLastValue(opts.near, 0.1)\n // cam.far = getLastValue(opts.far, 100000)\n // cam.left = getLastValue(opts.left, -100000)\n // cam.right = getLastValue(opts.right, 100000)\n // cam.top = getLastValue(opts.top, 100000)\n // cam.bottom = getLastValue(opts.bottom, -100000)\n\n return sunLight\n}\n\n/**\n * create sky system\n * @param date\n * @param latitude\n * @param longitude\n * @returns\n */\nconst createSkySystem = (date: Date, latitude: number, longitude: number, sunRadius = 300) => {\n const { renderer, scene } = use.useScene()\n\n sunRadius = 300\n if (!renderer && !scene)\n throw new Error('renderer or scene is not exist')\n\n const [sky, position, uniforms] = initsSkySystem()\n const sunLight = initSunLight()\n const skyGroup = new Group() as (Group & { sunPosition: Vector3 })\n\n scene!.add(sky)\n skyGroup.add(sunLight)\n scene!.add(skyGroup)\n\n const move = (altitude: number, azimuth: number) => {\n position.setFromSphericalCoords(sunRadius, MathUtils.degToRad(90 - MathUtils.radToDeg(altitude)), azimuth)\n uniforms.sunPosition.value.copy(position)\n\n const x = sunRadius * (Math.cos(altitude)) * (Math.cos(azimuth))\n const z = sunRadius * (Math.cos(altitude)) * (Math.sin(azimuth))\n const y = sunRadius * (Math.sin(altitude))\n\n const sunPosition = new Vector3(x, y, z)\n skyGroup.sunPosition = sunPosition\n skyGroup.position.copy(position)\n\n return sunPosition\n }\n\n const { altitude, azimuth } = getSunPosition(date, latitude, longitude)\n move(altitude, azimuth)\n\n /**\n * set date\n * @param currentDate\n * @returns\n */\n const setDate = (currentDate?: Date) => {\n const { altitude, azimuth } = getSunPosition(currentDate || date, latitude, longitude)\n return move(altitude, azimuth)\n }\n\n return [setDate, skyGroup, sky] as [typeof setDate, Group & { sunPosition: Vector3 }, any]\n}\n\nexport default createSkySystem\n"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { SpeedType } from './rain';
2
+ declare type CreateSnowReturn = [
3
+ () => void,
4
+ () => void
5
+ ];
6
+ /**
7
+ * create snow
8
+ * @param size 雪花大小
9
+ * @param range 降雪范围
10
+ * @param speed 降雪速度
11
+ * @param opacity 雪花透明度
12
+ * @param count 雪花密度
13
+ * @returns
14
+ */
15
+ export declare const createSnow: (size?: number, range?: number, speed?: SpeedType, opacity?: number, count?: number) => CreateSnowReturn;
16
+ export {};
@@ -0,0 +1,26 @@
1
+ import { BufferGeometry, Points, PointsMaterial, Vector3 } from '@anov/3d-core';
2
+ import type { SpeedType } from '../rain';
3
+ interface EnvPointsOptions {
4
+ range?: number;
5
+ count?: number;
6
+ opacity?: number;
7
+ url: string;
8
+ size?: number;
9
+ speed?: SpeedType;
10
+ }
11
+ export declare type AVector3 = Vector3 & {
12
+ speedX: number;
13
+ speedY: number;
14
+ speedZ: number;
15
+ };
16
+ declare class EnvironmentPoints {
17
+ private opts;
18
+ points: AVector3[];
19
+ material: PointsMaterial | null;
20
+ geometry: BufferGeometry | null;
21
+ point: Points | null;
22
+ constructor(opts: EnvPointsOptions);
23
+ private createEnvPoints;
24
+ animation(handlefn: (position: AVector3) => void): void;
25
+ }
26
+ export default EnvironmentPoints;
@@ -34,8 +34,8 @@ var EnvironmentPoints = /*#__PURE__*/function () {
34
34
  var _this$opts$speed, _this$opts$speed2, _this$opts$speed3;
35
35
  var _position = new Vector3(Math.random() * range - range / 2, Math.random() * range, Math.random() * range - range / 2);
36
36
  _position.speedX = ((_this$opts$speed = this.opts.speed) === null || _this$opts$speed === void 0 ? void 0 : _this$opts$speed.x) || 0;
37
- _position.speedY = ((_this$opts$speed2 = this.opts.speed) === null || _this$opts$speed2 === void 0 ? void 0 : _this$opts$speed2.x) || 10;
38
- _position.speedZ = ((_this$opts$speed3 = this.opts.speed) === null || _this$opts$speed3 === void 0 ? void 0 : _this$opts$speed3.x) || 0;
37
+ _position.speedY = ((_this$opts$speed2 = this.opts.speed) === null || _this$opts$speed2 === void 0 ? void 0 : _this$opts$speed2.y) || 10;
38
+ _position.speedZ = ((_this$opts$speed3 = this.opts.speed) === null || _this$opts$speed3 === void 0 ? void 0 : _this$opts$speed3.z) || 0;
39
39
  this.points.push(_position);
40
40
  }
41
41
  this.geometry.setFromPoints(this.points);
@@ -1 +1 @@
1
- {"version":3,"names":["BufferGeometry","Points","PointsMaterial","TextureLoader","Vector3","EnvironmentPoints","opts","createEnvPoints","material","size","map","load","url","transparent","opacity","depthTest","geometry","range","i","count","position","Math","random","speedX","speed","x","speedY","speedZ","points","push","setFromPoints","point","handlefn","forEach"],"sources":["../../../src/environment/utils/points.ts"],"sourcesContent":["import { BufferGeometry, Points, PointsMaterial, TextureLoader, Vector3 } from '@anov/3d-core'\nimport type { SpeedType } from '../rain'\n\ninterface EnvPointsOptions {\n range?: number\n count?: number\n opacity?: number\n url: string\n size?: number\n speed?: SpeedType\n}\n\nexport type AVector3 = Vector3 & {\n speedX: number\n speedY: number\n speedZ: number\n}\n\nclass EnvironmentPoints {\n private opts: EnvPointsOptions = {} as EnvPointsOptions\n public points: AVector3[] = []\n\n public material: PointsMaterial | null = null\n public geometry: BufferGeometry | null = null\n public point: Points | null = null\n\n constructor(opts: EnvPointsOptions) {\n this.opts = opts\n\n this.createEnvPoints()\n }\n\n private createEnvPoints() {\n this.material = new PointsMaterial({\n size: this.opts.size || 1,\n map: new TextureLoader().load(this.opts.url),\n transparent: true,\n opacity: this.opts.opacity,\n depthTest: false,\n })\n\n this.geometry = new BufferGeometry()\n\n const range = this.opts.range ?? 1000\n\n for (let i = 0; i < (this.opts.count || 500); i++) {\n const position = new Vector3(\n Math.random() * range - range / 2,\n Math.random() * range,\n Math.random() * range - range / 2,\n ) as AVector3\n\n position.speedX = this.opts.speed?.x || 0\n position.speedY = this.opts.speed?.x || 10\n position.speedZ = this.opts.speed?.x || 0\n\n this.points.push(position)\n }\n this.geometry.setFromPoints(this.points)\n\n this.point = new Points(this.geometry, this.material)\n }\n\n public animation(handlefn: (position: AVector3) => void) {\n this.points.forEach((position) => {\n handlefn(position)\n })\n\n this.point!.geometry.setFromPoints(this.points)\n }\n}\n\nexport default EnvironmentPoints"],"mappings":";;;;;;;AAAA,SAASA,cAAc,EAAEC,MAAM,EAAEC,cAAc,EAAEC,aAAa,EAAEC,OAAO,QAAQ,eAAe;AAAA,IAkBxFC,iBAAiB;EAQrB,2BAAYC,IAAsB,EAAE;IAAA;IAAA,8BAPH,CAAC,CAAC;IAAA,gCACP,EAAE;IAAA,kCAEW,IAAI;IAAA,kCACJ,IAAI;IAAA,+BACf,IAAI;IAGhC,IAAI,CAACA,IAAI,GAAGA,IAAI;IAEhB,IAAI,CAACC,eAAe,EAAE;EACxB;EAAC;IAAA;IAAA,OAED,2BAA0B;MAAA;MACxB,IAAI,CAACC,QAAQ,GAAG,IAAIN,cAAc,CAAC;QACjCO,IAAI,EAAE,IAAI,CAACH,IAAI,CAACG,IAAI,IAAI,CAAC;QACzBC,GAAG,EAAE,IAAIP,aAAa,EAAE,CAACQ,IAAI,CAAC,IAAI,CAACL,IAAI,CAACM,GAAG,CAAC;QAC5CC,WAAW,EAAE,IAAI;QACjBC,OAAO,EAAE,IAAI,CAACR,IAAI,CAACQ,OAAO;QAC1BC,SAAS,EAAE;MACb,CAAC,CAAC;MAEF,IAAI,CAACC,QAAQ,GAAG,IAAIhB,cAAc,EAAE;MAEpC,IAAMiB,KAAK,uBAAG,IAAI,CAACX,IAAI,CAACW,KAAK,+DAAI,IAAI;MAErC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,IAAI,CAACZ,IAAI,CAACa,KAAK,IAAI,GAAG,CAAC,EAAED,CAAC,EAAE,EAAE;QAAA;QACjD,IAAME,SAAQ,GAAG,IAAIhB,OAAO,CAC1BiB,IAAI,CAACC,MAAM,EAAE,GAAGL,KAAK,GAAGA,KAAK,GAAG,CAAC,EACjCI,IAAI,CAACC,MAAM,EAAE,GAAGL,KAAK,EACrBI,IAAI,CAACC,MAAM,EAAE,GAAGL,KAAK,GAAGA,KAAK,GAAG,CAAC,CACtB;QAEbG,SAAQ,CAACG,MAAM,GAAG,yBAAI,CAACjB,IAAI,CAACkB,KAAK,qDAAf,iBAAiBC,CAAC,KAAI,CAAC;QACzCL,SAAQ,CAACM,MAAM,GAAG,0BAAI,CAACpB,IAAI,CAACkB,KAAK,sDAAf,kBAAiBC,CAAC,KAAI,EAAE;QAC1CL,SAAQ,CAACO,MAAM,GAAG,0BAAI,CAACrB,IAAI,CAACkB,KAAK,sDAAf,kBAAiBC,CAAC,KAAI,CAAC;QAEzC,IAAI,CAACG,MAAM,CAACC,IAAI,CAACT,SAAQ,CAAC;MAC5B;MACA,IAAI,CAACJ,QAAQ,CAACc,aAAa,CAAC,IAAI,CAACF,MAAM,CAAC;MAExC,IAAI,CAACG,KAAK,GAAG,IAAI9B,MAAM,CAAC,IAAI,CAACe,QAAQ,EAAE,IAAI,CAACR,QAAQ,CAAC;IACvD;EAAC;IAAA;IAAA,OAED,mBAAiBwB,QAAsC,EAAE;MACvD,IAAI,CAACJ,MAAM,CAACK,OAAO,CAAC,UAACb,QAAQ,EAAK;QAChCY,QAAQ,CAACZ,QAAQ,CAAC;MACpB,CAAC,CAAC;MAEF,IAAI,CAACW,KAAK,CAAEf,QAAQ,CAACc,aAAa,CAAC,IAAI,CAACF,MAAM,CAAC;IACjD;EAAC;EAAA;AAAA;AAGH,eAAevB,iBAAiB"}
1
+ {"version":3,"names":["BufferGeometry","Points","PointsMaterial","TextureLoader","Vector3","EnvironmentPoints","opts","createEnvPoints","material","size","map","load","url","transparent","opacity","depthTest","geometry","range","i","count","position","Math","random","speedX","speed","x","speedY","y","speedZ","z","points","push","setFromPoints","point","handlefn","forEach"],"sources":["../../../src/environment/utils/points.ts"],"sourcesContent":["import { BufferGeometry, Points, PointsMaterial, TextureLoader, Vector3 } from '@anov/3d-core'\nimport type { SpeedType } from '../rain'\n\ninterface EnvPointsOptions {\n range?: number\n count?: number\n opacity?: number\n url: string\n size?: number\n speed?: SpeedType\n}\n\nexport type AVector3 = Vector3 & {\n speedX: number\n speedY: number\n speedZ: number\n}\n\nclass EnvironmentPoints {\n private opts: EnvPointsOptions = {} as EnvPointsOptions\n public points: AVector3[] = []\n\n public material: PointsMaterial | null = null\n public geometry: BufferGeometry | null = null\n public point: Points | null = null\n\n constructor(opts: EnvPointsOptions) {\n this.opts = opts\n\n this.createEnvPoints()\n }\n\n private createEnvPoints() {\n this.material = new PointsMaterial({\n size: this.opts.size || 1,\n map: new TextureLoader().load(this.opts.url),\n transparent: true,\n opacity: this.opts.opacity,\n depthTest: false,\n })\n\n this.geometry = new BufferGeometry()\n\n const range = this.opts.range ?? 1000\n\n for (let i = 0; i < (this.opts.count || 500); i++) {\n const position = new Vector3(\n Math.random() * range - range / 2,\n Math.random() * range,\n Math.random() * range - range / 2,\n ) as AVector3\n\n position.speedX = this.opts.speed?.x || 0\n position.speedY = this.opts.speed?.y || 10\n position.speedZ = this.opts.speed?.z || 0\n\n this.points.push(position)\n }\n this.geometry.setFromPoints(this.points)\n\n this.point = new Points(this.geometry, this.material)\n }\n\n public animation(handlefn: (position: AVector3) => void) {\n this.points.forEach((position) => {\n handlefn(position)\n })\n\n this.point!.geometry.setFromPoints(this.points)\n }\n}\n\nexport default EnvironmentPoints"],"mappings":";;;;;;;AAAA,SAASA,cAAc,EAAEC,MAAM,EAAEC,cAAc,EAAEC,aAAa,EAAEC,OAAO,QAAQ,eAAe;AAAA,IAkBxFC,iBAAiB;EAQrB,2BAAYC,IAAsB,EAAE;IAAA;IAAA,8BAPH,CAAC,CAAC;IAAA,gCACP,EAAE;IAAA,kCAEW,IAAI;IAAA,kCACJ,IAAI;IAAA,+BACf,IAAI;IAGhC,IAAI,CAACA,IAAI,GAAGA,IAAI;IAEhB,IAAI,CAACC,eAAe,EAAE;EACxB;EAAC;IAAA;IAAA,OAED,2BAA0B;MAAA;MACxB,IAAI,CAACC,QAAQ,GAAG,IAAIN,cAAc,CAAC;QACjCO,IAAI,EAAE,IAAI,CAACH,IAAI,CAACG,IAAI,IAAI,CAAC;QACzBC,GAAG,EAAE,IAAIP,aAAa,EAAE,CAACQ,IAAI,CAAC,IAAI,CAACL,IAAI,CAACM,GAAG,CAAC;QAC5CC,WAAW,EAAE,IAAI;QACjBC,OAAO,EAAE,IAAI,CAACR,IAAI,CAACQ,OAAO;QAC1BC,SAAS,EAAE;MACb,CAAC,CAAC;MAEF,IAAI,CAACC,QAAQ,GAAG,IAAIhB,cAAc,EAAE;MAEpC,IAAMiB,KAAK,uBAAG,IAAI,CAACX,IAAI,CAACW,KAAK,+DAAI,IAAI;MAErC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,IAAI,CAACZ,IAAI,CAACa,KAAK,IAAI,GAAG,CAAC,EAAED,CAAC,EAAE,EAAE;QAAA;QACjD,IAAME,SAAQ,GAAG,IAAIhB,OAAO,CAC1BiB,IAAI,CAACC,MAAM,EAAE,GAAGL,KAAK,GAAGA,KAAK,GAAG,CAAC,EACjCI,IAAI,CAACC,MAAM,EAAE,GAAGL,KAAK,EACrBI,IAAI,CAACC,MAAM,EAAE,GAAGL,KAAK,GAAGA,KAAK,GAAG,CAAC,CACtB;QAEbG,SAAQ,CAACG,MAAM,GAAG,yBAAI,CAACjB,IAAI,CAACkB,KAAK,qDAAf,iBAAiBC,CAAC,KAAI,CAAC;QACzCL,SAAQ,CAACM,MAAM,GAAG,0BAAI,CAACpB,IAAI,CAACkB,KAAK,sDAAf,kBAAiBG,CAAC,KAAI,EAAE;QAC1CP,SAAQ,CAACQ,MAAM,GAAG,0BAAI,CAACtB,IAAI,CAACkB,KAAK,sDAAf,kBAAiBK,CAAC,KAAI,CAAC;QAEzC,IAAI,CAACC,MAAM,CAACC,IAAI,CAACX,SAAQ,CAAC;MAC5B;MACA,IAAI,CAACJ,QAAQ,CAACgB,aAAa,CAAC,IAAI,CAACF,MAAM,CAAC;MAExC,IAAI,CAACG,KAAK,GAAG,IAAIhC,MAAM,CAAC,IAAI,CAACe,QAAQ,EAAE,IAAI,CAACR,QAAQ,CAAC;IACvD;EAAC;IAAA;IAAA,OAED,mBAAiB0B,QAAsC,EAAE;MACvD,IAAI,CAACJ,MAAM,CAACK,OAAO,CAAC,UAACf,QAAQ,EAAK;QAChCc,QAAQ,CAACd,QAAQ,CAAC;MACpB,CAAC,CAAC;MAEF,IAAI,CAACa,KAAK,CAAEjB,QAAQ,CAACgB,aAAa,CAAC,IAAI,CAACF,MAAM,CAAC;IACjD;EAAC;EAAA;AAAA;AAGH,eAAezB,iBAAiB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anov/3d-ability",
3
- "version": "0.0.4-alpha5",
3
+ "version": "0.0.4-alpha6",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",
@@ -19,7 +19,7 @@
19
19
  "@types/suncalc": "^1.9.2",
20
20
  "postprocessing": "^6.33.3",
21
21
  "suncalc": "^1.9.0",
22
- "@anov/3d-core": "^0.0.4-alpha16"
22
+ "@anov/3d-core": "^0.0.4-alpha17"
23
23
  },
24
24
  "scripts": {
25
25
  "build": "father build",