@anov/3d-ability 0.0.102 → 0.0.103

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.
@@ -49,6 +49,7 @@ export declare class MaterialSwitchSystem extends Object3D implements MaterialSw
49
49
  private duration;
50
50
  private center;
51
51
  private isGenPlane;
52
+ private rules;
52
53
  constructor(options?: MaterialSwitchOption);
53
54
  private initializeUniforms;
54
55
  private hideAllObjects;
@@ -69,6 +70,9 @@ export declare class MaterialSwitchSystem extends Object3D implements MaterialSw
69
70
  private getObjectUuid;
70
71
  private handleGroundObject;
71
72
  private handleGroundMatching;
73
+ private handleNameMatching;
74
+ private handleSizeMatching;
75
+ private matchingStrategy;
72
76
  private handleMatch;
73
77
  private handleNormalObject;
74
78
  removeObject(object: Object3D): void;
@@ -44,6 +44,15 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
44
44
  _defineProperty(_assertThisInitialized(_this), "duration", void 0);
45
45
  _defineProperty(_assertThisInitialized(_this), "center", void 0);
46
46
  _defineProperty(_assertThisInitialized(_this), "isGenPlane", false);
47
+ _defineProperty(_assertThisInitialized(_this), "rules", []);
48
+ _defineProperty(_assertThisInitialized(_this), "matchingStrategy", {
49
+ matchSize: function matchSize(rule) {
50
+ return _this.handleSizeMatching(rule);
51
+ },
52
+ matchName: function matchName(rule) {
53
+ return _this.handleNameMatching(rule);
54
+ }
55
+ });
47
56
  var _ref = options !== null && options !== void 0 ? options : {},
48
57
  duration = _ref.duration,
49
58
  _ref$center = _ref.center,
@@ -241,10 +250,41 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
241
250
  });
242
251
  if (isMatch && type !== 'Real') this.handleGroundObject(type);
243
252
  }
253
+ }, {
254
+ key: "handleNameMatching",
255
+ value: function handleNameMatching(rule) {
256
+ var keys = rule.keys,
257
+ material = rule.material;
258
+ var objects = [];
259
+ var isMatch = false;
260
+ Object.values(this.objectsMap).slice(1).forEach(function (objectMap) {
261
+ objectMap.forEach(function (object) {
262
+ if (GROUND_MATCHING.some(function (matching) {
263
+ return object.name.includes(matching);
264
+ })) {
265
+ isMatch = true;
266
+ object.removeFromParent();
267
+ objectMap.delete(object.uuid);
268
+ }
269
+ });
270
+ });
271
+ if (isMatch) {
272
+ // handle object to other material
273
+ }
274
+ }
275
+ }, {
276
+ key: "handleSizeMatching",
277
+ value: function handleSizeMatching(rule) {}
244
278
  }, {
245
279
  key: "handleMatch",
246
280
  value: function handleMatch(type) {
281
+ var _this4 = this;
247
282
  if (this.isGenPlane) this.handleGroundMatching(type);
283
+ if (this.rules.length > 0) {
284
+ this.rules.forEach(function (rule) {
285
+ _this4.matchingStrategy[rule.type](rule);
286
+ });
287
+ }
248
288
  }
249
289
  }, {
250
290
  key: "handleNormalObject",
@@ -274,7 +314,6 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
274
314
  this.objects.delete(uuid);
275
315
  Object.values(this.objectsMap).forEach(function (objectMap) {
276
316
  var obj = objectMap.get(uuid);
277
- console.log('obj', obj);
278
317
  if (obj) {
279
318
  obj.removeFromParent();
280
319
  objectMap.delete(uuid);
@@ -333,9 +372,9 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
333
372
  }, {
334
373
  key: "calculateMaxDistance",
335
374
  value: function calculateMaxDistance(vertices) {
336
- var _this4 = this;
375
+ var _this5 = this;
337
376
  return vertices.reduce(function (max, vertex) {
338
- var distance = _this4.center.distanceTo(vertex);
377
+ var distance = _this5.center.distanceTo(vertex);
339
378
  return Math.max(max, distance);
340
379
  }, 0);
341
380
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Box3","Color","Mesh","MeshBasicMaterial","Object3D","PlaneGeometry","Vector3","gsap","use","injectToBaseWrite","injectToFinirMaterial","injectToFrameFade","injectToGround","injectToRealFade","DEFAULT_CENTER","GROUND_Y_OFFSET","SIZE_SCALE_FACTOR","GROUND_MATCHING","MaterialSwitchSystem","_Object3D","_inherits","_super","_createSuper","options","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Map","Real","Frame","Pure","Fresnel","_ref","duration","_ref$center","center","_ref$isApi","isApi","uniforms","initializeUniforms","value","useframe","time","_createClass","key","progress","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","hideAllObjects","Object","values","objectsMap","forEach","objectMap","object","visible","showObjectsByType","type","switchType","option","handleApiOption","handleMatch","cleanupAnimations","prepareForSwitch","startSwitchAnimation","_ref2","_ref2$mode","mode","_ref2$duration","_ref2$center","_ref2$genPlane","genPlane","undefined","fromArray","isGenPlane","_this$frame","_this$gsap","frame","kill","newType","concat","_this2","lastType","size","getMaxSize","totalTime","Math","pow","onComplete","dispatchEvent","style","requestAnimationFrame","animateWithGSAP","animateWithFrame","to","ease","_this3","delta","addObject","uuid","getObjectUuid","objects","set","handleNormalObject","updateVisibility","tag","entityId","handleGroundObject","has","updateGroundMesh","groundMesh","createGroundMesh","add","handleGroundMatching","isMatch","slice","some","matching","name","includes","removeFromParent","delete","realObject","generateRealObject","fresnelObject","clone","generateFinalObject","pureObject","generatePureObject","frameObject","generateFrameObject","removeObject","obj","get","console","log","box","box3","getSize","getCenter","plane","x","z","material","color","mesh","rotation","PI","position","geometry","dispose","expandByObject","vertices","getBoxVertices","maxDistance","calculateMaxDistance","min","y","max","_this4","reduce","vertex","distance","distanceTo"],"sources":["../../../src/business/MaterialSwitch/MaterialSwitchSystem.ts"],"sourcesContent":["import { Box3, Color, Mesh, MeshBasicMaterial, MeshStandardMaterial, Object3D, PlaneGeometry, Vector3, gsap, use } from '@anov/3d-core'\nimport { frameMaterialCache, fresnelMaterialCache, groundMaterialCache, inject, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToGround, injectToRealFade, pureMaterialCache, realMaterialCache } from './inject'\nimport type { MaterialSwitchSystemInterface } from '.'\n\ntype MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure'\n\ninterface MaterialSwitchOption {\n duration?: number\n center?: Vector3\n isApi?: boolean\n}\n\ninterface MaterialSwitchUniforms {\n progress: { value: number }\n isFresnelFadeIn: { value: boolean }\n isRealFadeIn: { value: boolean }\n isPureFadeIn: { value: boolean }\n isFrameFadeIn: { value: boolean }\n maxSize: { value: number }\n center: { value: Vector3 }\n time: { value: number }\n isApi: { value: boolean }\n}\n\nconst DEFAULT_CENTER = new Vector3()\nconst GROUND_Y_OFFSET = -0.1\nconst SIZE_SCALE_FACTOR = 1.2\nconst GROUND_MATCHING = ['ground', 'floor']\n\n/**\n * 材质切换系统\n */\nexport class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {\n public type: MaterialSwitchType = 'Real'\n public originalMaterial = new Map()\n public uniforms: MaterialSwitchUniforms\n\n private objects = new Map<string, Object3D>()\n private objectsMap: Record<MaterialSwitchType, Map<string, Object3D>> = {\n Real: new Map(),\n Frame: new Map(),\n Pure: new Map(),\n Fresnel: new Map(),\n }\n\n private frame: ReturnType<typeof use.useframe> | null = null\n private gsap: gsap.core.Tween | null = null\n private duration: number | undefined\n private center: Vector3\n private isGenPlane = false\n\n constructor(options?: MaterialSwitchOption) {\n super()\n const { duration, center = DEFAULT_CENTER, isApi = false } = options ?? {}\n\n this.duration = duration\n this.center = center\n\n this.uniforms = this.initializeUniforms()\n this.uniforms.isApi.value = isApi\n\n use.useframe(() => {\n this.uniforms.time.value += 0.00018\n })\n }\n\n private initializeUniforms(): MaterialSwitchUniforms {\n return {\n progress: { value: 1.0 },\n isFresnelFadeIn: { value: false },\n isRealFadeIn: { value: true },\n isPureFadeIn: { value: false },\n isFrameFadeIn: { value: false },\n maxSize: { value: 0 },\n center: { value: this.center },\n time: { value: 0 },\n isApi: { value: false },\n }\n }\n\n private hideAllObjects(): void {\n Object.values(this.objectsMap).forEach((objectMap) => {\n objectMap.forEach((object) => {\n object.visible = false\n })\n })\n }\n\n private showObjectsByType(type: MaterialSwitchType): void {\n this.objectsMap[type].forEach((object) => {\n object.visible = true\n })\n }\n\n public switchType(type: MaterialSwitchType,\n option?:\n {\n mode: 'auto' | 'time'\n duration?: number\n center?: number[]\n genPlane?: boolean\n }): void {\n if (this.type === type)\n return\n\n this.handleApiOption(option)\n this.handleMatch(type)\n this.cleanupAnimations()\n this.prepareForSwitch(type)\n this.startSwitchAnimation(type)\n\n this.type = type\n }\n\n private handleApiOption(option: {\n mode: 'auto' | 'time'\n duration?: number\n center?: number[]\n genPlane?: boolean\n }): void {\n const { mode = 'auto', duration = 2, center = [0, 0, 0], genPlane = true } = option ?? {}\n if (mode === 'auto')\n this.duration = undefined\n else\n this.duration = duration\n\n this.uniforms.center.value = new Vector3().fromArray(center)\n this.isGenPlane = genPlane\n }\n\n private cleanupAnimations(): void {\n this.frame?.()\n this.gsap?.kill()\n }\n\n private prepareForSwitch(newType: MaterialSwitchType): void {\n this.hideAllObjects()\n this.showObjectsByType(newType)\n this.showObjectsByType(this.type)\n\n this.uniforms.progress.value = 0.0\n this.uniforms[`is${this.type}FadeIn`].value = false\n this.uniforms[`is${newType}FadeIn`].value = true\n }\n\n private startSwitchAnimation(newType: MaterialSwitchType): void {\n const lastType = this.type\n const size = this.getMaxSize()\n const totalTime = ((6 * size) / size) ** (1 / 3)\n\n const onComplete = () => {\n this.objectsMap[lastType].forEach((object) => {\n object.visible = false\n })\n this.dispatchEvent({ type: 'onStyleChanged', style: newType })\n }\n\n requestAnimationFrame(() => {\n if (this.duration)\n this.animateWithGSAP(onComplete)\n else\n this.animateWithFrame(totalTime, onComplete)\n })\n }\n\n private animateWithGSAP(onComplete: () => void): void {\n this.gsap = gsap.to(this.uniforms.progress, {\n value: 1.0,\n duration: this.duration,\n ease: 'linear',\n onComplete,\n })\n }\n\n private animateWithFrame(totalTime: number, onComplete: () => void): void {\n let duration = 0\n this.frame = use.useframe((delta) => {\n duration += delta\n const progress = (duration / totalTime) ** 3\n this.uniforms.progress.value += progress\n\n if (this.uniforms.progress.value > 1.0) {\n this.frame()\n onComplete()\n }\n })\n }\n\n public addObject(object: Object3D): void {\n this.switchType('Real')\n const uuid = this.getObjectUuid(object)\n this.objects.set(uuid, object)\n\n this.handleNormalObject(object, uuid)\n\n this.updateVisibility()\n }\n\n private getObjectUuid(object: Object3D): string {\n // @ts-ignore\n return object.tag === 'entity' ? object.entityId : object.uuid\n }\n\n private handleGroundObject(type: MaterialSwitchType): void {\n if (this.objectsMap[type].has('ground')) {\n this.updateGroundMesh(type)\n }\n else {\n const groundMesh = this.createGroundMesh()\n injectToGround(groundMesh, type, this.uniforms)\n this.objectsMap[type].set('ground', groundMesh)\n this.add(groundMesh)\n }\n }\n\n private handleGroundMatching(type: MaterialSwitchType) {\n let isMatch = false\n\n Object.values(this.objectsMap).slice(1).forEach((objectMap) => {\n objectMap.forEach((object) => {\n if (GROUND_MATCHING.some(matching => object.name.includes(matching))) {\n isMatch = true\n object.removeFromParent()\n objectMap.delete(object.uuid)\n }\n })\n })\n\n if (isMatch && type !== 'Real')\n this.handleGroundObject(type)\n }\n\n private handleMatch(type: MaterialSwitchType) {\n if (this.isGenPlane)\n this.handleGroundMatching(type)\n }\n\n private handleNormalObject(object: Object3D, uuid: string): void {\n const realObject = object\n this.generateRealObject(realObject)\n this.objectsMap.Real.set(uuid, realObject)\n this.add(realObject)\n\n const fresnelObject = object.clone()\n this.generateFinalObject(fresnelObject)\n this.objectsMap.Fresnel.set(uuid, fresnelObject)\n this.add(fresnelObject)\n\n const pureObject = object.clone()\n this.generatePureObject(pureObject)\n this.objectsMap.Pure.set(uuid, pureObject)\n this.add(pureObject)\n\n const frameObject = object.clone()\n this.generateFrameObject(frameObject)\n this.objectsMap.Frame.set(uuid, frameObject)\n this.add(frameObject)\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n public removeObject(object: Object3D): void {\n const uuid = this.getObjectUuid(object)\n this.objects.delete(uuid)\n\n Object.values(this.objectsMap).forEach((objectMap) => {\n const obj = objectMap.get(uuid)\n console.log('obj', obj)\n if (obj) {\n obj.removeFromParent()\n objectMap.delete(uuid)\n }\n })\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n private createGroundMesh(): Mesh {\n const box = this.box3\n const size = box.getSize(new Vector3())\n const center = box.getCenter(new Vector3())\n\n const plane = new PlaneGeometry(size.x, size.z)\n const material = new MeshBasicMaterial({ color: new Color('#fff') })\n const mesh = new Mesh(plane, material)\n\n mesh.rotation.x = -Math.PI / 2\n mesh.position.set(center.x, GROUND_Y_OFFSET, center.z)\n\n return mesh\n }\n\n private updateGroundMesh(type: MaterialSwitchType): void {\n if (!this.objectsMap[type].has('ground'))\n return\n\n const box = this.box3\n const size = box.getSize(new Vector3())\n const center = box.getCenter(new Vector3());\n\n (this.objectsMap[type].get('ground') as Mesh).geometry.dispose();\n (this.objectsMap[type].get('ground') as Mesh).geometry = new PlaneGeometry(size.x, size.z);\n (this.objectsMap[type].get('ground') as Mesh).position.set(center.x, GROUND_Y_OFFSET, center.z)\n }\n\n private get box3(): Box3 {\n const box3 = new Box3()\n this.objectsMap.Real.forEach((object) => {\n box3.expandByObject(object)\n })\n return box3\n }\n\n private getMaxSize(): number {\n const box3 = this.box3\n const vertices = this.getBoxVertices(box3)\n const maxDistance = this.calculateMaxDistance(vertices)\n return maxDistance * SIZE_SCALE_FACTOR\n }\n\n private getBoxVertices(box3: Box3): Vector3[] {\n return [\n new Vector3(box3.min.x, box3.min.y, box3.min.z),\n new Vector3(box3.min.x, box3.min.y, box3.max.z),\n new Vector3(box3.min.x, box3.max.y, box3.min.z),\n new Vector3(box3.min.x, box3.max.y, box3.max.z),\n new Vector3(box3.max.x, box3.min.y, box3.min.z),\n new Vector3(box3.max.x, box3.min.y, box3.max.z),\n new Vector3(box3.max.x, box3.max.y, box3.min.z),\n new Vector3(box3.max.x, box3.max.y, box3.max.z),\n ]\n }\n\n private calculateMaxDistance(vertices: Vector3[]): number {\n return vertices.reduce((max, vertex) => {\n const distance = this.center.distanceTo(vertex)\n return Math.max(max, distance)\n }, 0)\n }\n\n private generateFinalObject(object: Object3D): void {\n injectToFinirMaterial(object, this.uniforms)\n }\n\n private generateRealObject(object: Object3D): void {\n injectToRealFade(object, this.uniforms)\n }\n\n private generatePureObject(object: Object3D): void {\n injectToBaseWrite(object, this.uniforms)\n }\n\n private generateFrameObject(object: Object3D): void {\n injectToFrameFade(object, this.uniforms)\n }\n\n private updateVisibility(): void {\n this.hideAllObjects()\n this.showObjectsByType('Real')\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Box3","Color","Mesh","MeshBasicMaterial","Object3D","PlaneGeometry","Vector3","gsap","use","injectToBaseWrite","injectToFinirMaterial","injectToFrameFade","injectToGround","injectToRealFade","DEFAULT_CENTER","GROUND_Y_OFFSET","SIZE_SCALE_FACTOR","GROUND_MATCHING","MaterialSwitchSystem","_Object3D","_inherits","_super","_createSuper","options","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Map","Real","Frame","Pure","Fresnel","matchSize","rule","handleSizeMatching","matchName","handleNameMatching","_ref","duration","_ref$center","center","_ref$isApi","isApi","uniforms","initializeUniforms","value","useframe","time","_createClass","key","progress","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","hideAllObjects","Object","values","objectsMap","forEach","objectMap","object","visible","showObjectsByType","type","switchType","option","handleApiOption","handleMatch","cleanupAnimations","prepareForSwitch","startSwitchAnimation","_ref2","_ref2$mode","mode","_ref2$duration","_ref2$center","_ref2$genPlane","genPlane","undefined","fromArray","isGenPlane","_this$frame","_this$gsap","frame","kill","newType","concat","_this2","lastType","size","getMaxSize","totalTime","Math","pow","onComplete","dispatchEvent","style","requestAnimationFrame","animateWithGSAP","animateWithFrame","to","ease","_this3","delta","addObject","uuid","getObjectUuid","objects","set","handleNormalObject","updateVisibility","tag","entityId","handleGroundObject","has","updateGroundMesh","groundMesh","createGroundMesh","add","handleGroundMatching","isMatch","slice","some","matching","name","includes","removeFromParent","delete","keys","material","_this4","rules","length","matchingStrategy","realObject","generateRealObject","fresnelObject","clone","generateFinalObject","pureObject","generatePureObject","frameObject","generateFrameObject","removeObject","obj","get","box","box3","getSize","getCenter","plane","x","z","color","mesh","rotation","PI","position","geometry","dispose","expandByObject","vertices","getBoxVertices","maxDistance","calculateMaxDistance","min","y","max","_this5","reduce","vertex","distance","distanceTo"],"sources":["../../../src/business/MaterialSwitch/MaterialSwitchSystem.ts"],"sourcesContent":["import { Box3, Color, Mesh, MeshBasicMaterial, MeshStandardMaterial, Object3D, PlaneGeometry, Vector3, gsap, use } from '@anov/3d-core'\nimport { frameMaterialCache, fresnelMaterialCache, groundMaterialCache, inject, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToGround, injectToRealFade, pureMaterialCache, realMaterialCache } from './inject'\nimport type { MaterialSwitchSystemInterface } from '.'\n\ntype MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure'\n\ninterface MaterialSwitchOption {\n duration?: number\n center?: Vector3\n isApi?: boolean\n}\n\ninterface MaterialSwitchUniforms {\n progress: { value: number }\n isFresnelFadeIn: { value: boolean }\n isRealFadeIn: { value: boolean }\n isPureFadeIn: { value: boolean }\n isFrameFadeIn: { value: boolean }\n maxSize: { value: number }\n center: { value: Vector3 }\n time: { value: number }\n isApi: { value: boolean }\n}\n\ntype RuleItem = {\n type: string\n keys: string[]\n material: string\n}\n\nconst DEFAULT_CENTER = new Vector3()\nconst GROUND_Y_OFFSET = -0.1\nconst SIZE_SCALE_FACTOR = 1.2\nconst GROUND_MATCHING = ['ground', 'floor']\n\n/**\n * 材质切换系统\n */\nexport class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {\n public type: MaterialSwitchType = 'Real'\n public originalMaterial = new Map()\n public uniforms: MaterialSwitchUniforms\n\n private objects = new Map<string, Object3D>()\n private objectsMap: Record<MaterialSwitchType, Map<string, Object3D>> = {\n Real: new Map(),\n Frame: new Map(),\n Pure: new Map(),\n Fresnel: new Map(),\n }\n\n private frame: ReturnType<typeof use.useframe> | null = null\n private gsap: gsap.core.Tween | null = null\n private duration: number | undefined\n private center: Vector3\n private isGenPlane = false\n private rules: RuleItem[] = []\n\n constructor(options?: MaterialSwitchOption) {\n super()\n const { duration, center = DEFAULT_CENTER, isApi = false } = options ?? {}\n\n this.duration = duration\n this.center = center\n\n this.uniforms = this.initializeUniforms()\n this.uniforms.isApi.value = isApi\n\n use.useframe(() => {\n this.uniforms.time.value += 0.00018\n })\n }\n\n private initializeUniforms(): MaterialSwitchUniforms {\n return {\n progress: { value: 1.0 },\n isFresnelFadeIn: { value: false },\n isRealFadeIn: { value: true },\n isPureFadeIn: { value: false },\n isFrameFadeIn: { value: false },\n maxSize: { value: 0 },\n center: { value: this.center },\n time: { value: 0 },\n isApi: { value: false },\n }\n }\n\n private hideAllObjects(): void {\n Object.values(this.objectsMap).forEach((objectMap) => {\n objectMap.forEach((object) => {\n object.visible = false\n })\n })\n }\n\n private showObjectsByType(type: MaterialSwitchType): void {\n this.objectsMap[type].forEach((object) => {\n object.visible = true\n })\n }\n\n public switchType(type: MaterialSwitchType,\n option?:\n {\n mode: 'auto' | 'time'\n duration?: number\n center?: number[]\n genPlane?: boolean\n }): void {\n if (this.type === type)\n return\n\n this.handleApiOption(option)\n this.handleMatch(type)\n this.cleanupAnimations()\n this.prepareForSwitch(type)\n this.startSwitchAnimation(type)\n\n this.type = type\n }\n\n private handleApiOption(option: {\n mode: 'auto' | 'time'\n duration?: number\n center?: number[]\n genPlane?: boolean\n }): void {\n const { mode = 'auto', duration = 2, center = [0, 0, 0], genPlane = true } = option ?? {}\n if (mode === 'auto')\n this.duration = undefined\n else\n this.duration = duration\n\n this.uniforms.center.value = new Vector3().fromArray(center)\n this.isGenPlane = genPlane\n }\n\n private cleanupAnimations(): void {\n this.frame?.()\n this.gsap?.kill()\n }\n\n private prepareForSwitch(newType: MaterialSwitchType): void {\n this.hideAllObjects()\n this.showObjectsByType(newType)\n this.showObjectsByType(this.type)\n\n this.uniforms.progress.value = 0.0\n this.uniforms[`is${this.type}FadeIn`].value = false\n this.uniforms[`is${newType}FadeIn`].value = true\n }\n\n private startSwitchAnimation(newType: MaterialSwitchType): void {\n const lastType = this.type\n const size = this.getMaxSize()\n const totalTime = ((6 * size) / size) ** (1 / 3)\n\n const onComplete = () => {\n this.objectsMap[lastType].forEach((object) => {\n object.visible = false\n })\n this.dispatchEvent({ type: 'onStyleChanged', style: newType })\n }\n\n requestAnimationFrame(() => {\n if (this.duration)\n this.animateWithGSAP(onComplete)\n else\n this.animateWithFrame(totalTime, onComplete)\n })\n }\n\n private animateWithGSAP(onComplete: () => void): void {\n this.gsap = gsap.to(this.uniforms.progress, {\n value: 1.0,\n duration: this.duration,\n ease: 'linear',\n onComplete,\n })\n }\n\n private animateWithFrame(totalTime: number, onComplete: () => void): void {\n let duration = 0\n this.frame = use.useframe((delta) => {\n duration += delta\n const progress = (duration / totalTime) ** 3\n this.uniforms.progress.value += progress\n\n if (this.uniforms.progress.value > 1.0) {\n this.frame()\n onComplete()\n }\n })\n }\n\n public addObject(object: Object3D): void {\n this.switchType('Real')\n const uuid = this.getObjectUuid(object)\n this.objects.set(uuid, object)\n\n this.handleNormalObject(object, uuid)\n this.updateVisibility()\n }\n\n private getObjectUuid(object: Object3D): string {\n // @ts-ignore\n return object.tag === 'entity' ? object.entityId : object.uuid\n }\n\n private handleGroundObject(type: MaterialSwitchType): void {\n if (this.objectsMap[type].has('ground')) {\n this.updateGroundMesh(type)\n }\n else {\n const groundMesh = this.createGroundMesh()\n injectToGround(groundMesh, type, this.uniforms)\n this.objectsMap[type].set('ground', groundMesh)\n this.add(groundMesh)\n }\n }\n\n private handleGroundMatching(type: MaterialSwitchType) {\n let isMatch = false\n\n Object.values(this.objectsMap).slice(1).forEach((objectMap) => {\n objectMap.forEach((object) => {\n if (GROUND_MATCHING.some(matching => object.name.includes(matching))) {\n isMatch = true\n object.removeFromParent()\n objectMap.delete(object.uuid)\n }\n })\n })\n\n if (isMatch && type !== 'Real')\n this.handleGroundObject(type)\n }\n\n private handleNameMatching(rule: RuleItem) {\n const { keys, material } = rule\n const objects = []\n let isMatch = false\n\n Object.values(this.objectsMap).slice(1).forEach((objectMap) => {\n objectMap.forEach((object) => {\n if (GROUND_MATCHING.some(matching => object.name.includes(matching))) {\n isMatch = true\n object.removeFromParent()\n objectMap.delete(object.uuid)\n }\n })\n })\n\n if (isMatch) {\n // handle object to other material\n }\n }\n\n private handleSizeMatching(rule: RuleItem) {}\n\n private matchingStrategy = {\n matchSize: (rule: RuleItem) => this.handleSizeMatching(rule),\n matchName: (rule: RuleItem) => this.handleNameMatching(rule),\n }\n\n private handleMatch(type: MaterialSwitchType) {\n if (this.isGenPlane)\n this.handleGroundMatching(type)\n\n if (this.rules.length > 0) {\n this.rules.forEach((rule) => {\n this.matchingStrategy[rule.type](rule)\n })\n }\n }\n\n private handleNormalObject(object: Object3D, uuid: string): void {\n const realObject = object\n this.generateRealObject(realObject)\n this.objectsMap.Real.set(uuid, realObject)\n this.add(realObject)\n\n const fresnelObject = object.clone()\n this.generateFinalObject(fresnelObject)\n this.objectsMap.Fresnel.set(uuid, fresnelObject)\n this.add(fresnelObject)\n\n const pureObject = object.clone()\n this.generatePureObject(pureObject)\n this.objectsMap.Pure.set(uuid, pureObject)\n this.add(pureObject)\n\n const frameObject = object.clone()\n this.generateFrameObject(frameObject)\n this.objectsMap.Frame.set(uuid, frameObject)\n this.add(frameObject)\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n public removeObject(object: Object3D): void {\n const uuid = this.getObjectUuid(object)\n this.objects.delete(uuid)\n\n Object.values(this.objectsMap).forEach((objectMap) => {\n const obj = objectMap.get(uuid)\n if (obj) {\n obj.removeFromParent()\n objectMap.delete(uuid)\n }\n })\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n private createGroundMesh(): Mesh {\n const box = this.box3\n const size = box.getSize(new Vector3())\n const center = box.getCenter(new Vector3())\n\n const plane = new PlaneGeometry(size.x, size.z)\n const material = new MeshBasicMaterial({ color: new Color('#fff') })\n const mesh = new Mesh(plane, material)\n\n mesh.rotation.x = -Math.PI / 2\n mesh.position.set(center.x, GROUND_Y_OFFSET, center.z)\n\n return mesh\n }\n\n private updateGroundMesh(type: MaterialSwitchType): void {\n if (!this.objectsMap[type].has('ground'))\n return\n\n const box = this.box3\n const size = box.getSize(new Vector3())\n const center = box.getCenter(new Vector3());\n\n (this.objectsMap[type].get('ground') as Mesh).geometry.dispose();\n (this.objectsMap[type].get('ground') as Mesh).geometry = new PlaneGeometry(size.x, size.z);\n (this.objectsMap[type].get('ground') as Mesh).position.set(center.x, GROUND_Y_OFFSET, center.z)\n }\n\n private get box3(): Box3 {\n const box3 = new Box3()\n this.objectsMap.Real.forEach((object) => {\n box3.expandByObject(object)\n })\n return box3\n }\n\n private getMaxSize(): number {\n const box3 = this.box3\n const vertices = this.getBoxVertices(box3)\n const maxDistance = this.calculateMaxDistance(vertices)\n return maxDistance * SIZE_SCALE_FACTOR\n }\n\n private getBoxVertices(box3: Box3): Vector3[] {\n return [\n new Vector3(box3.min.x, box3.min.y, box3.min.z),\n new Vector3(box3.min.x, box3.min.y, box3.max.z),\n new Vector3(box3.min.x, box3.max.y, box3.min.z),\n new Vector3(box3.min.x, box3.max.y, box3.max.z),\n new Vector3(box3.max.x, box3.min.y, box3.min.z),\n new Vector3(box3.max.x, box3.min.y, box3.max.z),\n new Vector3(box3.max.x, box3.max.y, box3.min.z),\n new Vector3(box3.max.x, box3.max.y, box3.max.z),\n ]\n }\n\n private calculateMaxDistance(vertices: Vector3[]): number {\n return vertices.reduce((max, vertex) => {\n const distance = this.center.distanceTo(vertex)\n return Math.max(max, distance)\n }, 0)\n }\n\n private generateFinalObject(object: Object3D): void {\n injectToFinirMaterial(object, this.uniforms)\n }\n\n private generateRealObject(object: Object3D): void {\n injectToRealFade(object, this.uniforms)\n }\n\n private generatePureObject(object: Object3D): void {\n injectToBaseWrite(object, this.uniforms)\n }\n\n private generateFrameObject(object: Object3D): void {\n injectToFrameFade(object, this.uniforms)\n }\n\n private updateVisibility(): void {\n this.hideAllObjects()\n this.showObjectsByType('Real')\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anov/3d-ability",
3
- "version": "0.0.102",
3
+ "version": "0.0.103",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",
@@ -16,7 +16,7 @@
16
16
  "package.json"
17
17
  ],
18
18
  "peerDependencies": {
19
- "@anov/3d-core": "^0.0.62"
19
+ "@anov/3d-core": "^0.0.63"
20
20
  },
21
21
  "dependencies": {
22
22
  "@rengr/heatmap.js": "^2.0.10",
@@ -36,7 +36,7 @@
36
36
  "@types/lodash": "^4.14.196",
37
37
  "@types/suncalc": "^1.9.2",
38
38
  "@types/supercluster": "^7.1.3",
39
- "@anov/3d-core": "^0.0.62"
39
+ "@anov/3d-core": "^0.0.63"
40
40
  },
41
41
  "scripts": {
42
42
  "build": "father build",