@anov/3d-ability 0.0.120 → 0.0.121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/business/Area/fence/FenceBase.d.ts +1 -1
  2. package/dist/business/Area/fence/fence_base_01.d.ts +1 -1
  3. package/dist/business/Area/fence/fence_feeting_01.d.ts +1 -1
  4. package/dist/business/Area/fence/fence_roll_01.d.ts +1 -1
  5. package/dist/business/Area/fillArea/FillAreaBase.d.ts +1 -1
  6. package/dist/business/Area/fillArea/fillArea_face_01.d.ts +2 -1
  7. package/dist/business/Area/index.d.ts +1 -1
  8. package/dist/business/Batch/index.d.ts +1 -1
  9. package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
  10. package/dist/business/MaterialSwitch/shader/ground.d.ts +7 -6
  11. package/dist/business/MaterialSwitch/shader/ground.js.map +1 -1
  12. package/dist/business/Poi/index.d.ts +1 -1
  13. package/dist/business/Poi/link/index.d.ts +1 -1
  14. package/dist/business/Poi/particle/index.d.ts +1 -1
  15. package/dist/business/Poi/title/index.d.ts +1 -1
  16. package/dist/business/Spline/types.js.map +1 -1
  17. package/dist/business/SplitBuilding/index.d.ts +1 -1
  18. package/dist/business/Utils/round-curve.d.ts +1 -1
  19. package/dist/business/Utils/round-curve.js +1 -0
  20. package/dist/business/Utils/round-curve.js.map +1 -1
  21. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
  22. package/dist/core/Controls/ThirdViewControl/player/camera.d.ts +1 -1
  23. package/dist/core/Controls/ThirdViewControl/player/camera.js.map +1 -1
  24. package/dist/core/Controls/ThirdViewControl/player/control.d.ts +1 -1
  25. package/dist/core/Controls/ThirdViewControl/player/control.js.map +1 -1
  26. package/dist/core/Controls/ThirdViewControl/type.d.ts +1 -0
  27. package/dist/core/Controls/ThirdViewControl/type.js.map +1 -1
  28. package/dist/core/Curve/RoundedCornersCurve/index.d.ts +2 -2
  29. package/dist/core/Curve/RoundedCornersCurve/index.js.map +1 -1
  30. package/package.json +3 -3
@@ -14,7 +14,7 @@ declare class FenceBase extends ObjectLayer {
14
14
  _listeners: Set<unknown>;
15
15
  private _areaInstance;
16
16
  constructor(option: FenceOption, _areaInstance: Object3D);
17
- get mesh(): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[]>;
17
+ get mesh(): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[], import("@anov/3d-core").Object3DEventMap>;
18
18
  get uri(): string;
19
19
  set uri(value: string);
20
20
  get height(): number;
@@ -5,7 +5,7 @@ import FenceBase from './FenceBase';
5
5
  declare class Fence_Base_01 extends FenceBase {
6
6
  constructor(option: FenceOption, areaInstance: Object3D);
7
7
  create(): void;
8
- createFenceMesh(points: Vector3[], radius: number, close: boolean, height: number, color: string, alpha: number): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, ShaderMaterial>;
8
+ createFenceMesh(points: Vector3[], radius: number, close: boolean, height: number, color: string, alpha: number): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, ShaderMaterial, import("@anov/3d-core").Object3DEventMap>;
9
9
  createFenceMaterial(height: number, color: string, alpha: number): ShaderMaterial;
10
10
  }
11
11
  export default Fence_Base_01;
@@ -5,7 +5,7 @@ import FenceBase from './FenceBase';
5
5
  declare class Fence_Feeting_01 extends FenceBase {
6
6
  constructor(option: FenceOption, areaInstance: Object3D);
7
7
  create(): void;
8
- createFenceMesh(points: Vector3[], radius: number, close: boolean, height: number, color: string, alpha: number): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, ShaderMaterial>;
8
+ createFenceMesh(points: Vector3[], radius: number, close: boolean, height: number, color: string, alpha: number): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, ShaderMaterial, import("@anov/3d-core").Object3DEventMap>;
9
9
  createFenceMaterial(height: number, color: string, alpha: number): ShaderMaterial;
10
10
  }
11
11
  export default Fence_Feeting_01;
@@ -5,7 +5,7 @@ import FenceBase from './FenceBase';
5
5
  declare class Fence_Roll_01 extends FenceBase {
6
6
  constructor(option: FenceOption, areaInstance: Object3D);
7
7
  create(): void;
8
- createFenceMesh(points: Vector3[], radius: number, close: boolean, height: number, color: string, alpha: number): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, ShaderMaterial>;
8
+ createFenceMesh(points: Vector3[], radius: number, close: boolean, height: number, color: string, alpha: number): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, ShaderMaterial, import("@anov/3d-core").Object3DEventMap>;
9
9
  createFenceMaterial(height: number, color: string, alpha: number): ShaderMaterial;
10
10
  }
11
11
  export default Fence_Roll_01;
@@ -13,7 +13,7 @@ declare class FillAreaBase extends ObjectLayer {
13
13
  _listeners: Set<unknown>;
14
14
  private _areaInstance;
15
15
  constructor(option: FillAreaOption, areaInstance: Object3D);
16
- get mesh(): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[]> | Line2;
16
+ get mesh(): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[], import("@anov/3d-core").Object3DEventMap> | Line2;
17
17
  get uri(): string;
18
18
  set uri(value: string);
19
19
  get alpha(): number;
@@ -1,10 +1,11 @@
1
1
  import type { Object3D, Vector3 } from '@anov/3d-core';
2
2
  import { ExtrudeGeometry, Mesh, MeshBasicMaterial } from '@anov/3d-core';
3
+ import * as THREE from '@anov/3d-core';
3
4
  import type { FillAreaOption } from '../type';
4
5
  import FillAreaBase from './FillAreaBase';
5
6
  declare class FillArea_Face_01 extends FillAreaBase {
6
7
  constructor(option: FillAreaOption, areaInstance: Object3D);
7
8
  create(): void;
8
- createMesh(points: Vector3[], color: string, alpha: number): Mesh<ExtrudeGeometry, MeshBasicMaterial>;
9
+ createMesh(points: Vector3[], color: string, alpha: number): Mesh<ExtrudeGeometry, MeshBasicMaterial, THREE.Object3DEventMap>;
9
10
  }
10
11
  export default FillArea_Face_01;
@@ -19,7 +19,7 @@ declare class Area extends ObjectLayer {
19
19
  private _corner;
20
20
  private _close;
21
21
  constructor(option: Option);
22
- get mesh(): Group;
22
+ get mesh(): Group<import("@anov/3d-core").Object3DEventMap>;
23
23
  get style(): string;
24
24
  get fence(): FenceOption;
25
25
  get fillArea(): FillAreaOption;
@@ -10,7 +10,7 @@ export declare class Batch extends ObjectLayer implements BatchInterface {
10
10
  _followTangent: boolean;
11
11
  _entity: Object3D;
12
12
  _option: any;
13
- get mesh(): Group;
13
+ get mesh(): Group<import("@anov/3d-core").Object3DEventMap>;
14
14
  get path(): CurvePath<Vector3>;
15
15
  set path(newValue: CurvePath<Vector3>);
16
16
  get number(): number;
@@ -1 +1 @@
1
- {"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","bind","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf","result","NewTarget","Reflect","construct","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","sham","Proxy","Boolean","valueOf","_defineProperty","obj","_toPrimitive","String","toPrimitive","Number","AmbientLight","Box3","Color","Mesh","MeshBasicMaterial","Object3D","PlaneGeometry","Vector3","gsap","use","SurfaceMaterial","finirheightTransitionEffect","finirlowEffect","inject","injectToBaseWrite","injectToFinirMaterial","injectToFrameFade","injectToGround","injectToRealFade","SwitchType","DEFAULT_CENTER","GROUND_Y_OFFSET","SIZE_SCALE_FACTOR","GROUND_MATCHING","MaterialSwitchSystem","_Object3D","_super","options","_this","Real","Map","Frame","Pure","Fresnel","matchSize","rule","handleSizeMatching","matchName","handleNameMatching","_ref","duration","_ref$center","center","_ref$isApi","isApi","uniforms","initializeUniforms","initializeBuiltInShader","useframe","time","height","progress","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","getMaterialAll","hideAllObjects","objectsMap","objectMap","object","visible","showObjectsByType","switchType","option","_option$rules","light","useScene","scene","getObjectByName","removeFromParent","add","intensity","rules","material","limit","handleApiOption","handleMatch","cleanupAnimations","prepareForSwitch","startSwitchAnimation","_ref2","_ref2$mode","mode","_ref2$duration","_ref2$center","_ref2$genPlane","genPlane","fromArray","isGenPlane","_this$frame","_this$gsap","frame","kill","newType","groundObject","get","lastGroundObject","userData","isVisible","concat","_this2","lastType","onComplete","dispatchEvent","style","requestAnimationFrame","animateWithGSAP","animateWithFrame","to","ease","_beginBySpeed","_callee","distance","onFinish","_this3","currDistance","speed","acc","_callee$","_context","deltaTime","Math","min","_this3$frame","beginBySpeed","_x","_x2","getMaxSize","addObject","uuid","getObjectUuid","objects","set","handleNormalObject","updateVisibility","tag","entityId","handleGroundObject","has","updateGroundMesh","groundMesh","createGroundMesh","handleGroundMatching","_this4","isMatch","traverse","child","some","matching","includes","_getMaterialByName","_callee2","_callee2$","_context2","getMaterial","getMaterialByName","_x3","_replaceMaterial","_callee3","materialName","_callee3$","_context3","isMatched","originalMaterial","replaceMaterial","_x4","_x5","_x6","_x7","resetMaterial","_this5","_rule$material","keysArray","mesh","_mesh$parent","parent","_this6","matchingStrategy","realObject","generateRealObject","fresnelObject","clone","generateFresnelObject","pureObject","generatePureObject","frameObject","generateFrameObject","removeObject","delete","box","box3","size","getSize","getCenter","plane","x","z","color","rotation","PI","position","geometry","dispose","expandByObject","vertices","getBoxVertices","maxDistance","calculateMaxDistance","max","_this7","reduce","vertex","distanceTo"],"sources":["../../../src/business/MaterialSwitch/MaterialSwitchSystem.ts"],"sourcesContent":["import type { Material, MeshPhysicalMaterial } from '@anov/3d-core'\nimport { AmbientLight, Box3, Color, Mesh, MeshBasicMaterial, Object3D, PlaneGeometry, Vector3, gsap, use } from '@anov/3d-core'\nimport { SurfaceMaterial } from '../../'\nimport { finirheightTransitionEffect, finirlowEffect, inject, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToGround, injectToRealFade } from './inject'\nimport type { MaterialSwitchSystemInterface } from '.'\n\ntype MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure'\n\nexport enum SwitchType {\n Real = 'Real',\n Fresnel = 'Fresnel',\n Frame = 'Frame',\n Pure = 'Pure',\n}\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 height: { value: number }\n}\n\ntype RuleItem = {\n type: string\n keys: string[] | string\n material: string\n limit?: SwitchType\n}\n\nconst DEFAULT_CENTER = new Vector3()\nconst GROUND_Y_OFFSET = -0.1\nconst SIZE_SCALE_FACTOR = 1.2\nconst GROUND_MATCHING = ['Ground', 'Road', 'Yard']\n\n/**\n * 材质切换系统\n */\nexport class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {\n public type: MaterialSwitchType = SwitchType.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 this.initializeBuiltInShader()\n\n use.useframe(() => {\n this.uniforms.time.value += 0.00018\n this.uniforms.height.value -= 1\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 height: { value: 0 },\n isApi: { value: false },\n }\n }\n\n private initializeBuiltInShader() {\n SurfaceMaterial.getMaterialAll()\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 rules?: RuleItem[]\n }): void {\n if (this.type === type)\n return\n\n const light = use.useScene().scene.getObjectByName('FresnelLight')\n\n if (light)\n light.removeFromParent()\n\n if (type !== SwitchType.Real) {\n const light = new AmbientLight(0xFFFFFF, 1.5)\n light.name = 'FresnelLight'\n use.useScene().scene.add(light)\n\n if (type === SwitchType.Pure)\n light.intensity = 0.5\n }\n\n if (option?.rules?.length > 0) {\n this.rules = option.rules\n }\n else {\n this.rules = [{\n type: 'matchName',\n keys: [\n 'Tall',\n ],\n material: 'MfresnelGlow',\n },\n {\n type: 'matchName',\n keys: [\n 'Fence',\n ],\n material: 'Moriginal',\n },\n {\n type: 'matchName',\n keys: [\n 'Low',\n ],\n material: 'MlowFinir',\n },\n {\n type: 'matchName',\n keys: [\n 'Window',\n ],\n material: 'Fresnel_Transparent',\n limit: SwitchType.Fresnel,\n }]\n }\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 const groundObject = this.objectsMap[newType].get('ground')\n const lastGroundObject = this.objectsMap[this.type].get('ground')\n\n if (groundObject)\n groundObject.visible = this.isGenPlane\n if (lastGroundObject)\n lastGroundObject.visible = lastGroundObject.userData.isVisible\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\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(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 async beginBySpeed(distance: number, onFinish?: () => void): Promise<void> {\n if (distance === 0)\n distance = 0.01\n\n let currDistance = 0\n let speed = 0\n let acc = 0\n\n this.frame = use.useframe((deltaTime) => {\n acc += distance * deltaTime\n speed += acc * deltaTime\n currDistance += speed * deltaTime\n\n this.uniforms.progress.value = Math.min(1, currDistance / distance)\n\n if (currDistance >= distance) {\n this.frame?.()\n onFinish?.()\n }\n })\n }\n\n private animateWithFrame(onComplete: () => void): void {\n this.beginBySpeed(this.getMaxSize(), onComplete)\n }\n\n public addObject(object: Object3D): void {\n this.switchType(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 const groundObject = this.objectsMap[type].get('ground')\n\n if (groundObject)\n this.isGenPlane ? groundObject.userData.isVisible = true : groundObject.userData.isVisible = false\n }\n\n private handleGroundMatching(type: MaterialSwitchType) {\n if (type === SwitchType.Real)\n return\n\n let isMatch = false\n\n this.objectsMap[type].forEach((object) => {\n object.traverse((child) => {\n if (GROUND_MATCHING.some(matching => child.name.includes(matching))) {\n if (this.isGenPlane)\n child.visible = false\n else\n child.visible = true\n\n isMatch = true\n }\n })\n })\n\n if (isMatch)\n this.handleGroundObject(type)\n }\n\n private async getMaterialByName(name: string) {\n const material = await SurfaceMaterial.getMaterial(name)\n\n return material\n }\n\n private async replaceMaterial(object: Mesh, materialName: string, type: string, limit?: SwitchType) {\n if (object.userData.isMatched)\n return\n\n if (materialName === 'MfresnelGlow') {\n if (type === SwitchType.Fresnel)\n object.material = finirheightTransitionEffect(object.material as Material, this.uniforms)\n }\n else if (materialName === 'Moriginal' || !materialName) {\n object.material = object.userData.originalMaterial\n }\n else if (materialName === 'MlowFinir') {\n if (type === SwitchType.Fresnel)\n object.material = finirlowEffect(object.material as Material, this.uniforms)\n }\n else {\n if (limit && limit !== type)\n return\n\n const material = await this.getMaterialByName(materialName)\n object.material = inject(material, type as 'Fresnel' | 'Frame' | 'Pure', this.uniforms) as MeshPhysicalMaterial\n }\n\n object.userData.isMatched = true\n }\n\n private resetMaterial(object: Mesh, type: MaterialSwitchType) {\n this[`generate${type}Object`](object)\n }\n\n private handleNameMatching(rule: RuleItem, type: MaterialSwitchType) {\n const { keys, material = 'Moriginal' } = rule\n let keysArray = []\n\n if (typeof keys === 'string')\n keysArray = [keys]\n else\n keysArray = keys\n\n this.objectsMap[type].forEach((object) => {\n object.traverse((child) => {\n if (child.type === 'Mesh') {\n const mesh = child as Mesh\n\n if (keysArray.some(matching => mesh.name.includes(matching) || mesh?.parent?.name.includes(matching)))\n this.replaceMaterial(mesh, material, type, rule.limit)\n }\n })\n })\n }\n\n private handleSizeMatching(rule: RuleItem, type: MaterialSwitchType) {}\n\n private matchingStrategy = {\n matchSize: (rule: RuleItem, type: MaterialSwitchType) => this.handleSizeMatching(rule, type),\n matchName: (rule: RuleItem, type: MaterialSwitchType) => this.handleNameMatching(rule, type),\n }\n\n private handleMatch(type: MaterialSwitchType) {\n this.handleGroundMatching(type)\n\n if (type === SwitchType.Real)\n return\n\n this.objectsMap[type].forEach((object) => {\n object.traverse((child) => {\n if (child.type === 'Mesh') {\n if (child.userData.isMatched)\n this.resetMaterial(child as Mesh, type)\n }\n\n child.userData.isMatched = false\n })\n })\n\n if (this.rules.length > 0) {\n this.rules.forEach((rule) => {\n this.matchingStrategy[rule.type](rule, type)\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.generateFresnelObject(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 generateFresnelObject(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(SwitchType.Real)\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","bind","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf","result","NewTarget","Reflect","construct","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","sham","Proxy","Boolean","valueOf","_defineProperty","obj","_toPrimitive","String","toPrimitive","Number","AmbientLight","Box3","Color","Mesh","MeshBasicMaterial","Object3D","PlaneGeometry","Vector3","gsap","use","SurfaceMaterial","finirheightTransitionEffect","finirlowEffect","inject","injectToBaseWrite","injectToFinirMaterial","injectToFrameFade","injectToGround","injectToRealFade","SwitchType","DEFAULT_CENTER","GROUND_Y_OFFSET","SIZE_SCALE_FACTOR","GROUND_MATCHING","MaterialSwitchSystem","_Object3D","_super","options","_this","Real","Map","Frame","Pure","Fresnel","matchSize","rule","handleSizeMatching","matchName","handleNameMatching","_ref","duration","_ref$center","center","_ref$isApi","isApi","uniforms","initializeUniforms","initializeBuiltInShader","useframe","time","height","progress","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","getMaterialAll","hideAllObjects","objectsMap","objectMap","object","visible","showObjectsByType","switchType","option","_option$rules","light","useScene","scene","getObjectByName","removeFromParent","add","intensity","rules","material","limit","handleApiOption","handleMatch","cleanupAnimations","prepareForSwitch","startSwitchAnimation","_ref2","_ref2$mode","mode","_ref2$duration","_ref2$center","_ref2$genPlane","genPlane","fromArray","isGenPlane","_this$frame","_this$gsap","frame","kill","newType","groundObject","get","lastGroundObject","userData","isVisible","concat","_this2","lastType","onComplete","dispatchEvent","style","requestAnimationFrame","animateWithGSAP","animateWithFrame","to","ease","_beginBySpeed","_callee","distance","onFinish","_this3","currDistance","speed","acc","_callee$","_context","deltaTime","Math","min","_this3$frame","beginBySpeed","_x","_x2","getMaxSize","addObject","uuid","getObjectUuid","objects","set","handleNormalObject","updateVisibility","tag","entityId","handleGroundObject","has","updateGroundMesh","groundMesh","createGroundMesh","handleGroundMatching","_this4","isMatch","traverse","child","some","matching","includes","_getMaterialByName","_callee2","_callee2$","_context2","getMaterial","getMaterialByName","_x3","_replaceMaterial","_callee3","materialName","_callee3$","_context3","isMatched","originalMaterial","replaceMaterial","_x4","_x5","_x6","_x7","resetMaterial","_this5","_rule$material","keysArray","mesh","_mesh$parent","parent","_this6","matchingStrategy","realObject","generateRealObject","fresnelObject","clone","generateFresnelObject","pureObject","generatePureObject","frameObject","generateFrameObject","removeObject","delete","box","box3","size","getSize","getCenter","plane","x","z","color","rotation","PI","position","geometry","dispose","expandByObject","vertices","getBoxVertices","maxDistance","calculateMaxDistance","max","_this7","reduce","vertex","distanceTo"],"sources":["../../../src/business/MaterialSwitch/MaterialSwitchSystem.ts"],"sourcesContent":["import type { Material, MeshPhysicalMaterial } from '@anov/3d-core'\nimport { AmbientLight, Box3, Color, Mesh, MeshBasicMaterial, Object3D, PlaneGeometry, Vector3, gsap, use } from '@anov/3d-core'\nimport { SurfaceMaterial } from '../../'\nimport { finirheightTransitionEffect, finirlowEffect, inject, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToGround, injectToRealFade } from './inject'\nimport type { MaterialSwitchSystemInterface } from '.'\n\ntype MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure'\n\nexport enum SwitchType {\n Real = 'Real',\n Fresnel = 'Fresnel',\n Frame = 'Frame',\n Pure = 'Pure',\n}\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 height: { value: number }\n}\n\ntype RuleItem = {\n type: string\n keys: string[] | string\n material: string\n limit?: SwitchType\n}\n\nconst DEFAULT_CENTER = new Vector3()\nconst GROUND_Y_OFFSET = -0.1\nconst SIZE_SCALE_FACTOR = 1.2\nconst GROUND_MATCHING = ['Ground', 'Road', 'Yard']\n\n/**\n * 材质切换系统\n */\nexport class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {\n public type: MaterialSwitchType = SwitchType.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 this.initializeBuiltInShader()\n\n use.useframe(() => {\n this.uniforms.time.value += 0.00018\n this.uniforms.height.value -= 1\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 height: { value: 0 },\n isApi: { value: false },\n }\n }\n\n private initializeBuiltInShader() {\n SurfaceMaterial.getMaterialAll()\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 rules?: RuleItem[]\n }): void {\n if (this.type === type)\n return\n\n const light = use.useScene().scene.getObjectByName('FresnelLight')\n\n if (light)\n light.removeFromParent()\n\n if (type !== SwitchType.Real) {\n const light = new AmbientLight(0xFFFFFF, 1.5)\n light.name = 'FresnelLight'\n use.useScene().scene.add(light)\n\n if (type === SwitchType.Pure)\n light.intensity = 0.5\n }\n\n if (option?.rules?.length > 0) {\n this.rules = option.rules\n }\n else {\n this.rules = [{\n type: 'matchName',\n keys: [\n 'Tall',\n ],\n material: 'MfresnelGlow',\n },\n {\n type: 'matchName',\n keys: [\n 'Fence',\n ],\n material: 'Moriginal',\n },\n {\n type: 'matchName',\n keys: [\n 'Low',\n ],\n material: 'MlowFinir',\n },\n {\n type: 'matchName',\n keys: [\n 'Window',\n ],\n material: 'Fresnel_Transparent',\n limit: SwitchType.Fresnel,\n }]\n }\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 const groundObject = this.objectsMap[newType].get('ground')\n const lastGroundObject = this.objectsMap[this.type].get('ground')\n\n if (groundObject)\n groundObject.visible = this.isGenPlane\n if (lastGroundObject)\n lastGroundObject.visible = lastGroundObject.userData.isVisible\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\n const onComplete = () => {\n this.objectsMap[lastType].forEach((object) => {\n object.visible = false\n })\n this.dispatchEvent({ type: 'onStyleChanged', style: newType } as any)\n }\n\n requestAnimationFrame(() => {\n if (this.duration)\n this.animateWithGSAP(onComplete)\n else\n this.animateWithFrame(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 async beginBySpeed(distance: number, onFinish?: () => void): Promise<void> {\n if (distance === 0)\n distance = 0.01\n\n let currDistance = 0\n let speed = 0\n let acc = 0\n\n this.frame = use.useframe((deltaTime) => {\n acc += distance * deltaTime\n speed += acc * deltaTime\n currDistance += speed * deltaTime\n\n this.uniforms.progress.value = Math.min(1, currDistance / distance)\n\n if (currDistance >= distance) {\n this.frame?.()\n onFinish?.()\n }\n })\n }\n\n private animateWithFrame(onComplete: () => void): void {\n this.beginBySpeed(this.getMaxSize(), onComplete)\n }\n\n public addObject(object: Object3D): void {\n this.switchType(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 const groundObject = this.objectsMap[type].get('ground')\n\n if (groundObject)\n this.isGenPlane ? groundObject.userData.isVisible = true : groundObject.userData.isVisible = false\n }\n\n private handleGroundMatching(type: MaterialSwitchType) {\n if (type === SwitchType.Real)\n return\n\n let isMatch = false\n\n this.objectsMap[type].forEach((object) => {\n object.traverse((child) => {\n if (GROUND_MATCHING.some(matching => child.name.includes(matching))) {\n if (this.isGenPlane)\n child.visible = false\n else\n child.visible = true\n\n isMatch = true\n }\n })\n })\n\n if (isMatch)\n this.handleGroundObject(type)\n }\n\n private async getMaterialByName(name: string) {\n const material = await SurfaceMaterial.getMaterial(name)\n\n return material\n }\n\n private async replaceMaterial(object: Mesh, materialName: string, type: string, limit?: SwitchType) {\n if (object.userData.isMatched)\n return\n\n if (materialName === 'MfresnelGlow') {\n if (type === SwitchType.Fresnel)\n object.material = finirheightTransitionEffect(object.material as Material, this.uniforms)\n }\n else if (materialName === 'Moriginal' || !materialName) {\n object.material = object.userData.originalMaterial\n }\n else if (materialName === 'MlowFinir') {\n if (type === SwitchType.Fresnel)\n object.material = finirlowEffect(object.material as Material, this.uniforms)\n }\n else {\n if (limit && limit !== type)\n return\n\n const material = await this.getMaterialByName(materialName)\n object.material = inject(material, type as 'Fresnel' | 'Frame' | 'Pure', this.uniforms) as MeshPhysicalMaterial\n }\n\n object.userData.isMatched = true\n }\n\n private resetMaterial(object: Mesh, type: MaterialSwitchType) {\n this[`generate${type}Object`](object)\n }\n\n private handleNameMatching(rule: RuleItem, type: MaterialSwitchType) {\n const { keys, material = 'Moriginal' } = rule\n let keysArray = []\n\n if (typeof keys === 'string')\n keysArray = [keys]\n else\n keysArray = keys\n\n this.objectsMap[type].forEach((object) => {\n object.traverse((child) => {\n if (child.type === 'Mesh') {\n const mesh = child as Mesh\n\n if (keysArray.some(matching => mesh.name.includes(matching) || mesh?.parent?.name.includes(matching)))\n this.replaceMaterial(mesh, material, type, rule.limit)\n }\n })\n })\n }\n\n private handleSizeMatching(rule: RuleItem, type: MaterialSwitchType) {}\n\n private matchingStrategy = {\n matchSize: (rule: RuleItem, type: MaterialSwitchType) => this.handleSizeMatching(rule, type),\n matchName: (rule: RuleItem, type: MaterialSwitchType) => this.handleNameMatching(rule, type),\n }\n\n private handleMatch(type: MaterialSwitchType) {\n this.handleGroundMatching(type)\n\n if (type === SwitchType.Real)\n return\n\n this.objectsMap[type].forEach((object) => {\n object.traverse((child) => {\n if (child.type === 'Mesh') {\n if (child.userData.isMatched)\n this.resetMaterial(child as Mesh, type)\n }\n\n child.userData.isMatched = false\n })\n })\n\n if (this.rules.length > 0) {\n this.rules.forEach((rule) => {\n this.matchingStrategy[rule.type](rule, type)\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.generateFresnelObject(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 generateFresnelObject(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(SwitchType.Real)\n }\n}\n"],"mappings":"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"}
@@ -1,7 +1,8 @@
1
+ import type { Texture } from '@anov/3d-core';
1
2
  import { Vector4 } from '@anov/3d-core';
2
3
  export declare const uniforms: {
3
4
  _Texture: {
4
- value: import("@anov/3d-core").Texture;
5
+ value: Texture;
5
6
  };
6
7
  _Texture_ST: {
7
8
  value: Vector4;
@@ -13,10 +14,10 @@ export declare const uniforms: {
13
14
  value: number;
14
15
  };
15
16
  _TextureMask: {
16
- value: import("@anov/3d-core").Texture;
17
+ value: Texture;
17
18
  };
18
19
  _TexturePlane: {
19
- value: import("@anov/3d-core").Texture;
20
+ value: Texture;
20
21
  };
21
22
  _MaskUV: {
22
23
  value: number;
@@ -42,7 +43,7 @@ export declare const ground: {
42
43
  fragmentShader: string;
43
44
  uniforms: {
44
45
  _Texture: {
45
- value: import("@anov/3d-core").Texture;
46
+ value: Texture;
46
47
  };
47
48
  _Texture_ST: {
48
49
  value: Vector4;
@@ -54,10 +55,10 @@ export declare const ground: {
54
55
  value: number;
55
56
  };
56
57
  _TextureMask: {
57
- value: import("@anov/3d-core").Texture;
58
+ value: Texture;
58
59
  };
59
60
  _TexturePlane: {
60
- value: import("@anov/3d-core").Texture;
61
+ value: Texture;
61
62
  };
62
63
  _MaskUV: {
63
64
  value: number;
@@ -1 +1 @@
1
- {"version":3,"names":["Color","RepeatWrapping","ShaderChunk","TextureLoader","Vector4","demo03","demo04","main","TEXTURE_REPEAT_COUNT","MASK_TEXTURE_REPEAT","DEFAULT_GROUND_COLOR","DEFAULT_MASK_COLOR","textureLoader","groundBaseTexture","load","groundMaskTexture","groundPlaneTexture","configureTexture","texture","repeatX","repeatY","wrapS","wrapT","repeat","set","uniforms","_Texture","value","_Texture_ST","_Color","r","g","b","_ColorS","_TextureMask","_TexturePlane","_MaskUV","_ColorMask","_ColorMaskS","_Speed","_OP","time","vertexShader","concat","logdepthbuf_pars_vertex","logdepthbuf_vertex","fragmentShader","logdepthbuf_pars_fragment","logdepthbuf_fragment","ground"],"sources":["../../../../src/business/MaterialSwitch/shader/ground.ts"],"sourcesContent":["import { Color, RepeatWrapping, ShaderChunk, TextureLoader, Vector4 } from '@anov/3d-core'\nimport { demo03, demo04, main } from './groundBase64'\n\nconst TEXTURE_REPEAT_COUNT = 5000\nconst MASK_TEXTURE_REPEAT = 10\nconst DEFAULT_GROUND_COLOR = '#096ddb'\nconst DEFAULT_MASK_COLOR = '#ffffff'\n\nconst textureLoader = new TextureLoader()\n\nconst groundBaseTexture = textureLoader.load(demo03)\nconst groundMaskTexture = textureLoader.load(demo04)\nconst groundPlaneTexture = textureLoader.load(main)\n\nconst configureTexture = (texture: THREE.Texture, repeatX: number, repeatY: number) => {\n texture.wrapS = RepeatWrapping\n texture.wrapT = RepeatWrapping\n texture.repeat.set(repeatX, repeatY)\n}\n\nconfigureTexture(groundBaseTexture, TEXTURE_REPEAT_COUNT, TEXTURE_REPEAT_COUNT)\nconfigureTexture(groundMaskTexture, MASK_TEXTURE_REPEAT, MASK_TEXTURE_REPEAT)\nconfigureTexture(groundPlaneTexture, TEXTURE_REPEAT_COUNT, TEXTURE_REPEAT_COUNT)\n\nexport const uniforms = {\n _Texture: { value: groundBaseTexture },\n _Texture_ST: { value: new Vector4() },\n _Color: {\n value: new Vector4(\n new Color(DEFAULT_GROUND_COLOR).r,\n new Color(DEFAULT_GROUND_COLOR).g,\n new Color(DEFAULT_GROUND_COLOR).b,\n 0.5,\n ),\n },\n _ColorS: { value: 1 },\n _TextureMask: { value: groundMaskTexture },\n _TexturePlane: { value: groundPlaneTexture },\n _MaskUV: { value: 1 },\n _ColorMask: {\n value: new Vector4(\n new Color(DEFAULT_MASK_COLOR).r,\n new Color(DEFAULT_MASK_COLOR).g,\n new Color(DEFAULT_MASK_COLOR).b,\n 1,\n ),\n },\n _ColorMaskS: { value: 1 },\n _Speed: { value: new Vector4(0.0, 0.2, 0, 0) },\n _OP: { value: 1.0 },\n time: { value: 1.0 },\n}\n\n// Vertex shader\nconst vertexShader = /* glsl */`\n ${ShaderChunk.logdepthbuf_pars_vertex}\n \n bool isPerspectiveMatrix(mat4) {\n return true;\n }\n \n varying vec2 vUv;\n varying vec3 vPosition;\n\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vPosition = worldPosition.xyz;\n ${ShaderChunk.logdepthbuf_vertex}\n }\n`\n\n// Fragment shader\nconst fragmentShader = /* glsl */`\n ${ShaderChunk.logdepthbuf_pars_fragment} \n\n uniform sampler2D _Texture;\n uniform sampler2D _TexturePlane;\n uniform vec4 _Color;\n uniform float _ColorS;\n uniform sampler2D _TextureMask;\n uniform float _MaskUV;\n uniform vec4 _ColorMask;\n uniform float _ColorMaskS;\n uniform float time;\n uniform float progress;\n uniform float objSize;\n uniform bool isFadeIn;\n uniform vec4 center;\n uniform bool isApi;\n \n varying vec2 vUv;\n varying vec3 vPosition;\n\n void main() {\n vec4 highlightColor = vec4(0.0, 0.6, 1.0, 1.0);\n vec3 baseColor = vec3(0.2);\n vec4 outputColor = vec4(baseColor, 1.0);\n \n // todo 后期需要根据大小自动调整\n // \n vec4 baseTexture = texture2D(_Texture, vUv * 25.0);\n vec4 planeTexture = texture2D(_TexturePlane, vUv * 15.0);\n \n vec2 maskScale = vec2(_MaskUV) * 20.0;\n vec2 maskUV = vUv * maskScale;\n vec2 animatedMaskUV = vec2(time, time) + maskUV;\n \n outputColor.rgb = (\n (planeTexture * 0.09) +\n (_Color * baseTexture.r * _ColorS) +\n (highlightColor * (baseTexture.r * texture2D(_TextureMask, animatedMaskUV).r) * _ColorMaskS * 10.0)\n ).rgb;\n\n if (isApi) {\n outputColor.rgb = mix(vec3(0.0), outputColor.rgb, 0.55);\n }\n\n outputColor.a = 1.0;\n\n\n vec3 myWorldPosition = vPosition / objSize;\n if (isFadeIn) {\n float circle1 = step(distance(center.xyz / objSize, myWorldPosition), progress - 0.002);\n float circle2 = step(distance(center.xyz / objSize, myWorldPosition), progress);\n outputColor.rgb += vec3(circle2 - circle1) * 3.;\n outputColor.a = outputColor.a * circle2;\n } else {\n float circle = step(distance(center.xyz / objSize, myWorldPosition), progress);\n outputColor.a *= step(circle, 0.);\n }\n \n gl_FragColor = outputColor;\n ${ShaderChunk.logdepthbuf_fragment}\n }\n`\n\nexport const ground = { vertexShader, fragmentShader, uniforms }"],"mappings":"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"}
1
+ {"version":3,"names":["Color","RepeatWrapping","ShaderChunk","TextureLoader","Vector4","demo03","demo04","main","TEXTURE_REPEAT_COUNT","MASK_TEXTURE_REPEAT","DEFAULT_GROUND_COLOR","DEFAULT_MASK_COLOR","textureLoader","groundBaseTexture","load","groundMaskTexture","groundPlaneTexture","configureTexture","texture","repeatX","repeatY","wrapS","wrapT","repeat","set","uniforms","_Texture","value","_Texture_ST","_Color","r","g","b","_ColorS","_TextureMask","_TexturePlane","_MaskUV","_ColorMask","_ColorMaskS","_Speed","_OP","time","vertexShader","concat","logdepthbuf_pars_vertex","logdepthbuf_vertex","fragmentShader","logdepthbuf_pars_fragment","logdepthbuf_fragment","ground"],"sources":["../../../../src/business/MaterialSwitch/shader/ground.ts"],"sourcesContent":["import type { Texture } from '@anov/3d-core'\nimport { Color, RepeatWrapping, ShaderChunk, TextureLoader, Vector4 } from '@anov/3d-core'\nimport { demo03, demo04, main } from './groundBase64'\n\nconst TEXTURE_REPEAT_COUNT = 5000\nconst MASK_TEXTURE_REPEAT = 10\nconst DEFAULT_GROUND_COLOR = '#096ddb'\nconst DEFAULT_MASK_COLOR = '#ffffff'\n\nconst textureLoader = new TextureLoader()\n\nconst groundBaseTexture = textureLoader.load(demo03)\nconst groundMaskTexture = textureLoader.load(demo04)\nconst groundPlaneTexture = textureLoader.load(main)\n\nconst configureTexture = (texture: Texture, repeatX: number, repeatY: number) => {\n texture.wrapS = RepeatWrapping\n texture.wrapT = RepeatWrapping\n texture.repeat.set(repeatX, repeatY)\n}\n\nconfigureTexture(groundBaseTexture, TEXTURE_REPEAT_COUNT, TEXTURE_REPEAT_COUNT)\nconfigureTexture(groundMaskTexture, MASK_TEXTURE_REPEAT, MASK_TEXTURE_REPEAT)\nconfigureTexture(groundPlaneTexture, TEXTURE_REPEAT_COUNT, TEXTURE_REPEAT_COUNT)\n\nexport const uniforms = {\n _Texture: { value: groundBaseTexture },\n _Texture_ST: { value: new Vector4() },\n _Color: {\n value: new Vector4(\n new Color(DEFAULT_GROUND_COLOR).r,\n new Color(DEFAULT_GROUND_COLOR).g,\n new Color(DEFAULT_GROUND_COLOR).b,\n 0.5,\n ),\n },\n _ColorS: { value: 1 },\n _TextureMask: { value: groundMaskTexture },\n _TexturePlane: { value: groundPlaneTexture },\n _MaskUV: { value: 1 },\n _ColorMask: {\n value: new Vector4(\n new Color(DEFAULT_MASK_COLOR).r,\n new Color(DEFAULT_MASK_COLOR).g,\n new Color(DEFAULT_MASK_COLOR).b,\n 1,\n ),\n },\n _ColorMaskS: { value: 1 },\n _Speed: { value: new Vector4(0.0, 0.2, 0, 0) },\n _OP: { value: 1.0 },\n time: { value: 1.0 },\n}\n\n// Vertex shader\nconst vertexShader = /* glsl */`\n ${ShaderChunk.logdepthbuf_pars_vertex}\n \n bool isPerspectiveMatrix(mat4) {\n return true;\n }\n \n varying vec2 vUv;\n varying vec3 vPosition;\n\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vPosition = worldPosition.xyz;\n ${ShaderChunk.logdepthbuf_vertex}\n }\n`\n\n// Fragment shader\nconst fragmentShader = /* glsl */`\n ${ShaderChunk.logdepthbuf_pars_fragment} \n\n uniform sampler2D _Texture;\n uniform sampler2D _TexturePlane;\n uniform vec4 _Color;\n uniform float _ColorS;\n uniform sampler2D _TextureMask;\n uniform float _MaskUV;\n uniform vec4 _ColorMask;\n uniform float _ColorMaskS;\n uniform float time;\n uniform float progress;\n uniform float objSize;\n uniform bool isFadeIn;\n uniform vec4 center;\n uniform bool isApi;\n \n varying vec2 vUv;\n varying vec3 vPosition;\n\n void main() {\n vec4 highlightColor = vec4(0.0, 0.6, 1.0, 1.0);\n vec3 baseColor = vec3(0.2);\n vec4 outputColor = vec4(baseColor, 1.0);\n \n // todo 后期需要根据大小自动调整\n // \n vec4 baseTexture = texture2D(_Texture, vUv * 25.0);\n vec4 planeTexture = texture2D(_TexturePlane, vUv * 15.0);\n \n vec2 maskScale = vec2(_MaskUV) * 20.0;\n vec2 maskUV = vUv * maskScale;\n vec2 animatedMaskUV = vec2(time, time) + maskUV;\n \n outputColor.rgb = (\n (planeTexture * 0.09) +\n (_Color * baseTexture.r * _ColorS) +\n (highlightColor * (baseTexture.r * texture2D(_TextureMask, animatedMaskUV).r) * _ColorMaskS * 10.0)\n ).rgb;\n\n if (isApi) {\n outputColor.rgb = mix(vec3(0.0), outputColor.rgb, 0.55);\n }\n\n outputColor.a = 1.0;\n\n\n vec3 myWorldPosition = vPosition / objSize;\n if (isFadeIn) {\n float circle1 = step(distance(center.xyz / objSize, myWorldPosition), progress - 0.002);\n float circle2 = step(distance(center.xyz / objSize, myWorldPosition), progress);\n outputColor.rgb += vec3(circle2 - circle1) * 3.;\n outputColor.a = outputColor.a * circle2;\n } else {\n float circle = step(distance(center.xyz / objSize, myWorldPosition), progress);\n outputColor.a *= step(circle, 0.);\n }\n \n gl_FragColor = outputColor;\n ${ShaderChunk.logdepthbuf_fragment}\n }\n`\n\nexport const ground = { vertexShader, fragmentShader, uniforms }"],"mappings":"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"}
@@ -15,7 +15,7 @@ declare class Poi extends ObjectLayer implements IPoi {
15
15
  private _particle;
16
16
  type: string;
17
17
  constructor(option: Option);
18
- get mesh(): Group;
18
+ get mesh(): Group<import("@anov/3d-core").Object3DEventMap>;
19
19
  get style(): string;
20
20
  get autoScale(): boolean;
21
21
  set autoScale(newValue: boolean);
@@ -15,7 +15,7 @@ export default class LinkMesh extends ObjectLayer {
15
15
  get vspace(): [number, number];
16
16
  set vspace(newValue: [number, number]);
17
17
  get hspace(): [number, number];
18
- get mesh(): Group | Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[]>;
18
+ get mesh(): Group<import("@anov/3d-core").Object3DEventMap> | Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[], import("@anov/3d-core").Object3DEventMap>;
19
19
  setupAnimation(): void;
20
20
  addReloadListener(callback: any): void;
21
21
  removeReloadListener(callback: any): void;
@@ -11,7 +11,7 @@ export default class ParticleMesh extends ObjectLayer {
11
11
  _listeners: Set<unknown>;
12
12
  constructor();
13
13
  get ready(): Promise<boolean>;
14
- get mesh(): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[]>;
14
+ get mesh(): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[], import("@anov/3d-core").Object3DEventMap>;
15
15
  setupAnimation(): void;
16
16
  addReloadListener(callback: any): void;
17
17
  removeReloadListener(callback: any): void;
@@ -20,7 +20,7 @@ export default class TitleMesh extends ObjectLayer {
20
20
  private _debouncedUpdate;
21
21
  constructor(option: TextOption);
22
22
  get ready(): Promise<boolean>;
23
- get mesh(): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[]> | Group;
23
+ get mesh(): Group<import("@anov/3d-core").Object3DEventMap> | Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[], import("@anov/3d-core").Object3DEventMap>;
24
24
  get value(): string;
25
25
  set value(newValue: string);
26
26
  get fontSize(): number;
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/business/Spline/types.ts"],"sourcesContent":["import { type Curve, type Vector } from '@anov/3d-core'\n\nexport interface ISpline {\n width: number\n color: string\n points: any\n radius: number\n textureUrl: string\n textureSpeed: number\n close: boolean\n}\n\nexport type Option =Partial<{\n close: boolean\n radius: number\n width: number\n color: string\n points:any,\n textureUrl:string,\n textureSpeed:number\n}>"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["../../../src/business/Spline/types.ts"],"sourcesContent":["export interface ISpline {\n width: number\n color: string\n points: any\n radius: number\n textureUrl: string\n textureSpeed: number\n close: boolean\n}\n\nexport type Option = Partial<{\n close: boolean\n radius: number\n width: number\n color: string\n points: any\n textureUrl: string\n textureSpeed: number\n}>"],"mappings":""}
@@ -10,7 +10,7 @@ declare class BuildingSplit extends ObjectLayer {
10
10
  private currentAnimation;
11
11
  private _building;
12
12
  constructor(building: Object3D);
13
- get building(): Object3D<import("@anov/3d-core").Event>;
13
+ get building(): Object3D<import("@anov/3d-core").Object3DEventMap>;
14
14
  /**
15
15
  * 初始化建筑拆分器
16
16
  * @param building 建筑模型
@@ -18,5 +18,5 @@ declare class RoundLineGeometry extends BufferGeometry {
18
18
  }
19
19
  declare const createRoundLineWallMesh: (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => any;
20
20
  declare const createRoundedClosedCurve: (points: Vector3[], radius?: number, closed?: boolean) => CurvePath<Vector3>;
21
- declare const createRoundedClosedWallMesh: (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => Mesh<BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, ShaderMaterial>;
21
+ declare const createRoundedClosedWallMesh: (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => Mesh<BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, ShaderMaterial, import("@anov/3d-core").Object3DEventMap>;
22
22
  export { RoundLineGeometry, createRoundLineWallMesh, createRoundedClosedWallMesh, createRoundedClosedCurve, };
@@ -19,6 +19,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
19
19
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
20
20
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
21
21
  /* eslint-disable no-void */
22
+
22
23
  import { BoxGeometry, BufferGeometry, Color, CurvePath, ExtrudeGeometry, Float32BufferAttribute, Group, LineCurve3, Mesh, MeshBasicMaterial, QuadraticBezierCurve3, Quaternion, ShaderMaterial, Shape, Vector3 } from '@anov/3d-core';
23
24
  /**
24
25
  * TODO: 参数优化
@@ -1 +1 @@
1
- {"version":3,"names":["BoxGeometry","BufferGeometry","Color","CurvePath","ExtrudeGeometry","Float32BufferAttribute","Group","LineCurve3","Mesh","MeshBasicMaterial","QuadraticBezierCurve3","Quaternion","ShaderMaterial","Shape","Vector3","createBoxGeometryByPoints","a","b","height","arguments","length","undefined","depth","material","width","distanceTo","box","currentMaterial","color","mesh","midpoint","addVectors","multiplyScalar","position","x","y","z","direction","subVectors","normalize","axis","angle","angleTo","quaternion","setFromAxisAngle","newDirection","applyQuaternion","rotateOnAxis","rectangle","w","h","shape","moveTo","lineTo","defMaterial","uniforms","u_color","value","u_height","u_opacity","vertexShader","fragmentShader","transparent","side","depthTest","createCurve","points","radius","close","curve","Error","line","curves","push","lines","i","dir","clone","sub","realEndPoints","add","firstPoint","dir1","dir2","dir3","nextDir1","nextDir2","p1","p2","p3","beziercurve","realLastPoints","dir4","p4","p5","p6","beziercurve2","laseLine","group","forEach","type","extrudeSettings","steps","bevelEnabled","extrudePath","geometry","arcWall","translateY","v1","v2","RoundLineGeometry","_BufferGeometry","_inherits","_super","_createSuper","option","_option$radius","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_createCurve","_createCurve2","_slicedToArray","currentPoints","getPoints","pointNum","setFromPoints","_createClass","createRoundLineWallMesh","_option$radius2","_option$height","_createCurve3","_createCurve4","_","createRoundedClosedCurve","closed","total","lastP2","safeRadius","curr","hasPrev","hasNext","pPrev","pNext","tangentLength","Math","min","first","prev","next","firstP1","path","c","createRoundedClosedWallMesh","curvePath","divisions","bottomPoints","getSpacedPoints","topPoints","map","p","sideGeometry","positions","indices","b0","b1","t0","t1","baseIndex","setAttribute","setIndex","computeVertexNormals","sideMesh"],"sources":["../../../src/business/Utils/round-curve.ts"],"sourcesContent":["/* eslint-disable no-void */\nimport { BoxGeometry, BufferGeometry, Color, CurvePath, ExtrudeGeometry, Float32BufferAttribute, Group, LineCurve3, Mesh, MeshBasicMaterial, MeshNormalMaterial, QuadraticBezierCurve3, Quaternion, ShaderMaterial, Shape, Vector3 } from '@anov/3d-core'\n\nexport interface TextureParamsType {\n texture?: string\n repeatX?: number\n repeatY?: number\n wrapS?: number\n wrapT?: number\n}\n\n/**\n * TODO: 参数优化\n * create box geometry by two points\n * just provide data not create mesh\n * @param a\n * @param b\n * @param height\n * @param depth\n */\nconst createBoxGeometryByPoints = (a: Vector3, b: Vector3, height = 30, depth = 10, material?: ShaderMaterial) => {\n const width = a.distanceTo(b)\n const box = new BoxGeometry(width, height, depth)\n\n let currentMaterial: MeshBasicMaterial | ShaderMaterial = new MeshBasicMaterial({ color: new Color('#fff') })\n if (material)\n currentMaterial = material\n\n const mesh = new Mesh(box, currentMaterial)\n const midpoint = new Vector3().addVectors(a, b).multiplyScalar(0.5)\n\n mesh.position.x = midpoint.x\n mesh.position.y = midpoint.y + height / 2\n mesh.position.z = midpoint.z\n\n const direction = new Vector3()\n direction.subVectors(a, b)\n direction.normalize()\n\n const axis = new Vector3(0, 1, 0) // axis\n const angle = new Vector3(1, 0, 0).angleTo(direction)\n\n const quaternion = new Quaternion().setFromAxisAngle(axis, angle)\n const newDirection = new Vector3(1, 0, 0).applyQuaternion(quaternion)\n\n if (!newDirection.angleTo(direction))\n mesh.rotateOnAxis(axis, angle)\n else\n mesh.rotateOnAxis(axis, -angle)\n\n return mesh\n}\n\n/**\n * rectangle shape\n * @param w\n * @param h\n * @returns\n */\nconst rectangle = (w = 0.1, h = 50) => {\n const shape = new Shape()\n\n shape.moveTo(0, 0)\n shape.lineTo(0, w)\n shape.lineTo(h, w)\n shape.lineTo(h, 0)\n shape.lineTo(0, 0)\n\n return shape\n}\n\nconst defMaterial = new ShaderMaterial({\n uniforms: {\n u_color: { value: new Color('#fab73f') },\n u_height: { value: 100 },\n u_opacity: { value: 1.0 },\n },\n\n vertexShader: `\n uniform float u_height;\n uniform float u_speed;\n varying float v_opacity;\n\n void main() {\n v_opacity = mix(1.0, 0.0, position.y / u_height);\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`,\n fragmentShader: `\n uniform vec3 u_color;\n uniform float u_opacity;\n varying float v_opacity;\n\n void main() {\n gl_FragColor = vec4(u_color, 1.0);\n }\n `,\n transparent: true,\n side: 2,\n depthTest: false,\n})\n\n// const material = new MeshBasicMaterial({ color: new Color('#fab73f'), side: DoubleSide })\n\n/**\n * create round curve\n * @param points\n * @param radius\n * @param close\n * @returns\n */\nconst createCurve = (points: Vector3[], radius = 20, height = 50, close = false, material?: ShaderMaterial) => {\n if (!material)\n material = defMaterial\n\n const curve = new CurvePath()\n const shape = rectangle(0.1, height)\n\n if (points.length < 2)\n throw new Error('At least two points are required to create a curve')\n\n if (points.length === 2) {\n const line = new LineCurve3(points[0], points[1])\n curve.curves.push(line)\n\n return [curve]\n }\n\n const lines = []\n\n for (let i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n const dir = points[0].clone().sub(points[1]).normalize()\n const realEndPoints = points[1].clone().add(dir.multiplyScalar(radius))\n\n let firstPoint = points[0]\n\n if (close)\n firstPoint = points[0].clone().add(points[1].clone().sub(points[0]).normalize().multiplyScalar(radius))\n\n lines.push(new LineCurve3(firstPoint, realEndPoints))\n }\n else if (i === points.length - 1) {\n //\n }\n else {\n const dir1 = points[i - 1].clone().sub(points[i]).normalize()\n const dir2 = points[i + 1].clone().sub(points[i]).normalize()\n const dir3 = points[i].clone().sub(points[i + 1]).normalize()\n\n const nextDir1 = dir2.clone()\n const nextDir2 = points[i].clone().sub(points[i + 1]).normalize()\n\n const p1 = points[i].clone().add(dir1.multiplyScalar(radius))\n const p2 = points[i].clone()\n const p3 = points[i].clone().add(dir2.multiplyScalar(radius))\n\n const beziercurve = new QuadraticBezierCurve3(p1, p2, p3)\n\n const realLastPoints = points[i].clone().add(nextDir1.multiplyScalar(radius))\n const realEndPoints = points[i + 1].clone().add(nextDir2.multiplyScalar(radius))\n\n lines.push(beziercurve)\n lines.push(new LineCurve3(realLastPoints, i + 1 === points.length - 1\n ? close\n ? points[i + 1].clone().add(dir3.multiplyScalar(radius))\n : points[i + 1]\n : realEndPoints))\n }\n }\n\n if (close) {\n // first point\n const dir1 = points[1].clone().sub(points[0]).normalize()\n const dir2 = points[points.length - 1].clone().sub(points[0]).normalize()\n\n const p1 = points[0].clone().add(dir1.multiplyScalar(radius))\n const p2 = points[0]\n const p3 = points[0].clone().add(dir2.multiplyScalar(radius))\n\n const beziercurve = new QuadraticBezierCurve3(p3, p2, p1)\n\n // last point\n const dir3 = points[0].clone().sub(points[points.length - 1]).normalize()\n const dir4 = points[points.length - 2].clone().sub(points[points.length - 1]).normalize()\n\n const p4 = points[points.length - 1].clone().add(dir3.multiplyScalar(radius))\n const p5 = points[points.length - 1]\n const p6 = points[points.length - 1].clone().add(dir4.multiplyScalar(radius))\n\n const beziercurve2 = new QuadraticBezierCurve3(p6, p5, p4)\n\n // last line\n const laseLine = new LineCurve3(p4, p3)\n\n lines.push(beziercurve2)\n lines.push(laseLine)\n lines.push(beziercurve)\n }\n\n const group = new Group()\n\n lines.forEach((line) => {\n curve.curves.push(line)\n\n if (line.type === 'QuadraticBezierCurve3') {\n const extrudeSettings = {\n steps: 100,\n bevelEnabled: false,\n extrudePath: line,\n }\n\n const geometry = new ExtrudeGeometry(shape, extrudeSettings)\n const arcWall = new Mesh(geometry, material)\n\n arcWall.translateY(arcWall.position.y + height)\n\n if (radius)\n group.add(arcWall)\n }\n else {\n const mesh = createBoxGeometryByPoints(line.v1, line.v2, height, 0.1, material)\n group.add(mesh)\n }\n })\n\n return [curve, group] as any\n}\n\ntype RoundLineGeometryOption = {\n radius: number\n close: boolean\n pointNum?: number\n height?: number\n}\n\nclass RoundLineGeometry extends BufferGeometry {\n public curve: any\n\n constructor(points: Vector3[], option: RoundLineGeometryOption) {\n super()\n\n const [curve] = createCurve(points, option.radius ?? 20, void 0, option.close || false)\n const currentPoints = curve.getPoints(option.pointNum || 1000)\n\n const geometry = new BufferGeometry()\n geometry.setFromPoints(currentPoints)\n\n this.curve = curve\n }\n}\n\nconst createRoundLineWallMesh = (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => {\n const [_, group] = createCurve(points, option.radius ?? 20, option.height ?? 50, option.close || false, material)\n\n return group\n}\n\nconst createRoundedClosedCurve = (points: Vector3[], radius = 20, closed = true) => {\n const curves: THREE.Curve<THREE.Vector3>[] = []\n const total = points.length\n let lastP2: THREE.Vector3 | null = null\n // 👇 避免 radius = 0 时直线退化问题\n const safeRadius = radius === 0 ? 0.0001 : radius\n\n for (let i = 0; i < total; i++) {\n const curr = points[i]\n const hasPrev = i > 0\n const hasNext = i < total - 1\n\n if ((hasPrev && hasNext) || closed) {\n const pPrev = points[(i - 1 + total) % total]\n const pNext = points[(i + 1) % total]\n\n const v1 = curr.clone().sub(pPrev).normalize()\n const v2 = pNext.clone().sub(curr).normalize()\n const tangentLength = Math.min(\n safeRadius,\n curr.distanceTo(pPrev) / 2,\n curr.distanceTo(pNext) / 2,\n )\n\n const p1 = curr\n .clone()\n .sub(v1.clone().multiplyScalar(tangentLength))\n const p2 = curr\n .clone()\n .add(v2.clone().multiplyScalar(tangentLength))\n\n if (lastP2)\n curves.push(new LineCurve3(lastP2.clone(), p1.clone()))\n else if (!closed && i === 1)\n curves.push(new LineCurve3(points[0].clone(), p1.clone()))\n\n curves.push(\n new QuadraticBezierCurve3(\n p1.clone(),\n curr.clone(),\n p2.clone(),\n ),\n )\n lastP2 = p2\n }\n else if (!hasNext && lastP2) {\n curves.push(new LineCurve3(lastP2.clone(), curr.clone()))\n }\n }\n\n if (closed && lastP2) {\n const first = points[0]\n const prev = points[points.length - 1]\n const next = points[1]\n\n const v1 = first.clone().sub(prev).normalize()\n const v2 = next.clone().sub(first).normalize()\n\n const tangentLength = Math.min(\n safeRadius,\n first.distanceTo(prev) / 2,\n first.distanceTo(next) / 2,\n )\n const firstP1 = first\n .clone()\n .sub(v1.clone().multiplyScalar(tangentLength))\n curves.push(new LineCurve3(lastP2.clone(), firstP1.clone()))\n }\n\n const path = new CurvePath<THREE.Vector3>()\n curves.forEach(c => path.add(c))\n return path\n // for (let i = 0; i < total; i++) {\n // const prev = points[(i - 1 + total) % total]\n // const curr = points[i]\n // const next = points[(i + 1) % total]\n\n // const v1 = curr.clone().sub(prev).normalize()\n // const v2 = next.clone().sub(curr).normalize()\n\n // const tangentLength = Math.min(safeRadius, curr.distanceTo(prev) / 2, curr.distanceTo(next) / 2)\n\n // const p1 = curr.clone().sub(v1.clone().multiplyScalar(tangentLength))\n // const p2 = curr.clone().add(v2.clone().multiplyScalar(tangentLength))\n\n // if (lastP2)\n // curves.push(new LineCurve3(lastP2.clone(), p1.clone()))\n\n // curves.push(new QuadraticBezierCurve3(p1.clone(), curr.clone(), p2.clone()))\n // lastP2 = p2\n // }\n\n // const prev = points[(total - 1 + total) % total]\n // const curr = points[0]\n // const next = points[1]\n\n // const v1 = curr.clone().sub(prev).normalize()\n // const v2 = next.clone().sub(curr).normalize()\n\n // const tangentLength = Math.min(safeRadius, curr.distanceTo(prev) / 2, curr.distanceTo(next) / 2)\n // const firstP1 = curr.clone().sub(v1.clone().multiplyScalar(tangentLength))\n\n // curves.push(new LineCurve3(lastP2!.clone(), firstP1.clone()))\n\n // const path = new CurvePath<THREE.Vector3>()\n // curves.forEach(c => path.add(c))\n // return path\n}\n\nconst createRoundedClosedWallMesh = (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => {\n if (!material)\n material = defMaterial\n // const shape = rectangle(0.1, option.height)\n if (points.length < 2)\n throw new Error('At least two points are required to create a curve')\n\n const curvePath = createRoundedClosedCurve(points, option.radius, option.close)\n const divisions = 1000\n // const upVec = new Vector3(0, 1, 0)\n const bottomPoints = curvePath.getSpacedPoints(divisions)\n const topPoints = bottomPoints.map(\n p => new Vector3(p.x, p.y + option.height, p.z),\n )\n\n // 构建侧面 geometry\n const sideGeometry = new BufferGeometry()\n const positions = []\n const indices = []\n\n for (let i = 0; i < divisions; i++) {\n const b0 = bottomPoints[i]\n const b1 = bottomPoints[i + 1]\n const t0 = topPoints[i]\n const t1 = topPoints[i + 1]\n\n if (!b1 || !t1)\n break\n\n const baseIndex = positions.length / 3\n\n positions.push(b0.x, b0.y, b0.z) // 0\n positions.push(b1.x, b1.y, b1.z) // 1\n positions.push(t1.x, t1.y, t1.z) // 2\n positions.push(t0.x, t0.y, t0.z) // 3\n\n // 两个三角形组成一个四边面\n indices.push(baseIndex, baseIndex + 1, baseIndex + 2)\n indices.push(baseIndex, baseIndex + 2, baseIndex + 3)\n }\n\n sideGeometry.setAttribute(\n 'position',\n new Float32BufferAttribute(positions, 3),\n )\n sideGeometry.setIndex(indices)\n sideGeometry.computeVertexNormals()\n\n // const sideMaterial = new THREE.MeshNormalMaterial({\n // side: THREE.DoubleSide,\n // })\n const sideMesh = new Mesh(sideGeometry, material)\n // const extrudeSettings = {\n // steps: 200,\n // bevelEnabled: false,\n // extrudePath: curvePath,\n // }\n // const geometry = new ExtrudeGeometry(shape, extrudeSettings)\n // const material1 = new MeshNormalMaterial({ wireframe: false })\n // const arcWall = new Mesh(geometry, material)\n // arcWall.translateY(arcWall.position.y + option.height)\n return sideMesh\n}\nexport {\n RoundLineGeometry,\n createRoundLineWallMesh,\n createRoundedClosedWallMesh,\n createRoundedClosedCurve,\n}"],"mappings":"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"}
1
+ {"version":3,"names":["BoxGeometry","BufferGeometry","Color","CurvePath","ExtrudeGeometry","Float32BufferAttribute","Group","LineCurve3","Mesh","MeshBasicMaterial","QuadraticBezierCurve3","Quaternion","ShaderMaterial","Shape","Vector3","createBoxGeometryByPoints","a","b","height","arguments","length","undefined","depth","material","width","distanceTo","box","currentMaterial","color","mesh","midpoint","addVectors","multiplyScalar","position","x","y","z","direction","subVectors","normalize","axis","angle","angleTo","quaternion","setFromAxisAngle","newDirection","applyQuaternion","rotateOnAxis","rectangle","w","h","shape","moveTo","lineTo","defMaterial","uniforms","u_color","value","u_height","u_opacity","vertexShader","fragmentShader","transparent","side","depthTest","createCurve","points","radius","close","curve","Error","line","curves","push","lines","i","dir","clone","sub","realEndPoints","add","firstPoint","dir1","dir2","dir3","nextDir1","nextDir2","p1","p2","p3","beziercurve","realLastPoints","dir4","p4","p5","p6","beziercurve2","laseLine","group","forEach","type","extrudeSettings","steps","bevelEnabled","extrudePath","geometry","arcWall","translateY","v1","v2","RoundLineGeometry","_BufferGeometry","_inherits","_super","_createSuper","option","_option$radius","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_createCurve","_createCurve2","_slicedToArray","currentPoints","getPoints","pointNum","setFromPoints","_createClass","createRoundLineWallMesh","_option$radius2","_option$height","_createCurve3","_createCurve4","_","createRoundedClosedCurve","closed","total","lastP2","safeRadius","curr","hasPrev","hasNext","pPrev","pNext","tangentLength","Math","min","first","prev","next","firstP1","path","c","createRoundedClosedWallMesh","curvePath","divisions","bottomPoints","getSpacedPoints","topPoints","map","p","sideGeometry","positions","indices","b0","b1","t0","t1","baseIndex","setAttribute","setIndex","computeVertexNormals","sideMesh"],"sources":["../../../src/business/Utils/round-curve.ts"],"sourcesContent":["/* eslint-disable no-void */\nimport type { Curve } from '@anov/3d-core'\nimport { BoxGeometry, BufferGeometry, Color, CurvePath, ExtrudeGeometry, Float32BufferAttribute, Group, LineCurve3, Mesh, MeshBasicMaterial, MeshNormalMaterial, QuadraticBezierCurve3, Quaternion, ShaderMaterial, Shape, Vector3 } from '@anov/3d-core'\n\nexport interface TextureParamsType {\n texture?: string\n repeatX?: number\n repeatY?: number\n wrapS?: number\n wrapT?: number\n}\n\n/**\n * TODO: 参数优化\n * create box geometry by two points\n * just provide data not create mesh\n * @param a\n * @param b\n * @param height\n * @param depth\n */\nconst createBoxGeometryByPoints = (a: Vector3, b: Vector3, height = 30, depth = 10, material?: ShaderMaterial) => {\n const width = a.distanceTo(b)\n const box = new BoxGeometry(width, height, depth)\n\n let currentMaterial: MeshBasicMaterial | ShaderMaterial = new MeshBasicMaterial({ color: new Color('#fff') })\n if (material)\n currentMaterial = material\n\n const mesh = new Mesh(box, currentMaterial)\n const midpoint = new Vector3().addVectors(a, b).multiplyScalar(0.5)\n\n mesh.position.x = midpoint.x\n mesh.position.y = midpoint.y + height / 2\n mesh.position.z = midpoint.z\n\n const direction = new Vector3()\n direction.subVectors(a, b)\n direction.normalize()\n\n const axis = new Vector3(0, 1, 0) // axis\n const angle = new Vector3(1, 0, 0).angleTo(direction)\n\n const quaternion = new Quaternion().setFromAxisAngle(axis, angle)\n const newDirection = new Vector3(1, 0, 0).applyQuaternion(quaternion)\n\n if (!newDirection.angleTo(direction))\n mesh.rotateOnAxis(axis, angle)\n else\n mesh.rotateOnAxis(axis, -angle)\n\n return mesh\n}\n\n/**\n * rectangle shape\n * @param w\n * @param h\n * @returns\n */\nconst rectangle = (w = 0.1, h = 50) => {\n const shape = new Shape()\n\n shape.moveTo(0, 0)\n shape.lineTo(0, w)\n shape.lineTo(h, w)\n shape.lineTo(h, 0)\n shape.lineTo(0, 0)\n\n return shape\n}\n\nconst defMaterial = new ShaderMaterial({\n uniforms: {\n u_color: { value: new Color('#fab73f') },\n u_height: { value: 100 },\n u_opacity: { value: 1.0 },\n },\n\n vertexShader: `\n uniform float u_height;\n uniform float u_speed;\n varying float v_opacity;\n\n void main() {\n v_opacity = mix(1.0, 0.0, position.y / u_height);\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }`,\n fragmentShader: `\n uniform vec3 u_color;\n uniform float u_opacity;\n varying float v_opacity;\n\n void main() {\n gl_FragColor = vec4(u_color, 1.0);\n }\n `,\n transparent: true,\n side: 2,\n depthTest: false,\n})\n\n// const material = new MeshBasicMaterial({ color: new Color('#fab73f'), side: DoubleSide })\n\n/**\n * create round curve\n * @param points\n * @param radius\n * @param close\n * @returns\n */\nconst createCurve = (points: Vector3[], radius = 20, height = 50, close = false, material?: ShaderMaterial) => {\n if (!material)\n material = defMaterial\n\n const curve = new CurvePath()\n const shape = rectangle(0.1, height)\n\n if (points.length < 2)\n throw new Error('At least two points are required to create a curve')\n\n if (points.length === 2) {\n const line = new LineCurve3(points[0], points[1])\n curve.curves.push(line)\n\n return [curve]\n }\n\n const lines = []\n\n for (let i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n const dir = points[0].clone().sub(points[1]).normalize()\n const realEndPoints = points[1].clone().add(dir.multiplyScalar(radius))\n\n let firstPoint = points[0]\n\n if (close)\n firstPoint = points[0].clone().add(points[1].clone().sub(points[0]).normalize().multiplyScalar(radius))\n\n lines.push(new LineCurve3(firstPoint, realEndPoints))\n }\n else if (i === points.length - 1) {\n //\n }\n else {\n const dir1 = points[i - 1].clone().sub(points[i]).normalize()\n const dir2 = points[i + 1].clone().sub(points[i]).normalize()\n const dir3 = points[i].clone().sub(points[i + 1]).normalize()\n\n const nextDir1 = dir2.clone()\n const nextDir2 = points[i].clone().sub(points[i + 1]).normalize()\n\n const p1 = points[i].clone().add(dir1.multiplyScalar(radius))\n const p2 = points[i].clone()\n const p3 = points[i].clone().add(dir2.multiplyScalar(radius))\n\n const beziercurve = new QuadraticBezierCurve3(p1, p2, p3)\n\n const realLastPoints = points[i].clone().add(nextDir1.multiplyScalar(radius))\n const realEndPoints = points[i + 1].clone().add(nextDir2.multiplyScalar(radius))\n\n lines.push(beziercurve)\n lines.push(new LineCurve3(realLastPoints, i + 1 === points.length - 1\n ? close\n ? points[i + 1].clone().add(dir3.multiplyScalar(radius))\n : points[i + 1]\n : realEndPoints))\n }\n }\n\n if (close) {\n // first point\n const dir1 = points[1].clone().sub(points[0]).normalize()\n const dir2 = points[points.length - 1].clone().sub(points[0]).normalize()\n\n const p1 = points[0].clone().add(dir1.multiplyScalar(radius))\n const p2 = points[0]\n const p3 = points[0].clone().add(dir2.multiplyScalar(radius))\n\n const beziercurve = new QuadraticBezierCurve3(p3, p2, p1)\n\n // last point\n const dir3 = points[0].clone().sub(points[points.length - 1]).normalize()\n const dir4 = points[points.length - 2].clone().sub(points[points.length - 1]).normalize()\n\n const p4 = points[points.length - 1].clone().add(dir3.multiplyScalar(radius))\n const p5 = points[points.length - 1]\n const p6 = points[points.length - 1].clone().add(dir4.multiplyScalar(radius))\n\n const beziercurve2 = new QuadraticBezierCurve3(p6, p5, p4)\n\n // last line\n const laseLine = new LineCurve3(p4, p3)\n\n lines.push(beziercurve2)\n lines.push(laseLine)\n lines.push(beziercurve)\n }\n\n const group = new Group()\n\n lines.forEach((line) => {\n curve.curves.push(line)\n\n if (line.type === 'QuadraticBezierCurve3') {\n const extrudeSettings = {\n steps: 100,\n bevelEnabled: false,\n extrudePath: line,\n }\n\n const geometry = new ExtrudeGeometry(shape, extrudeSettings)\n const arcWall = new Mesh(geometry, material)\n\n arcWall.translateY(arcWall.position.y + height)\n\n if (radius)\n group.add(arcWall)\n }\n else {\n const mesh = createBoxGeometryByPoints(line.v1, line.v2, height, 0.1, material)\n group.add(mesh)\n }\n })\n\n return [curve, group] as any\n}\n\ntype RoundLineGeometryOption = {\n radius: number\n close: boolean\n pointNum?: number\n height?: number\n}\n\nclass RoundLineGeometry extends BufferGeometry {\n public curve: any\n\n constructor(points: Vector3[], option: RoundLineGeometryOption) {\n super()\n\n const [curve] = createCurve(points, option.radius ?? 20, void 0, option.close || false)\n const currentPoints = curve.getPoints(option.pointNum || 1000)\n\n const geometry = new BufferGeometry()\n geometry.setFromPoints(currentPoints)\n\n this.curve = curve\n }\n}\n\nconst createRoundLineWallMesh = (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => {\n const [_, group] = createCurve(points, option.radius ?? 20, option.height ?? 50, option.close || false, material)\n\n return group\n}\n\nconst createRoundedClosedCurve = (points: Vector3[], radius = 20, closed = true) => {\n const curves: Curve<Vector3>[] = []\n const total = points.length\n let lastP2: Vector3 | null = null\n // 👇 避免 radius = 0 时直线退化问题\n const safeRadius = radius === 0 ? 0.0001 : radius\n\n for (let i = 0; i < total; i++) {\n const curr = points[i]\n const hasPrev = i > 0\n const hasNext = i < total - 1\n\n if ((hasPrev && hasNext) || closed) {\n const pPrev = points[(i - 1 + total) % total]\n const pNext = points[(i + 1) % total]\n\n const v1 = curr.clone().sub(pPrev).normalize()\n const v2 = pNext.clone().sub(curr).normalize()\n const tangentLength = Math.min(\n safeRadius,\n curr.distanceTo(pPrev) / 2,\n curr.distanceTo(pNext) / 2,\n )\n\n const p1 = curr\n .clone()\n .sub(v1.clone().multiplyScalar(tangentLength))\n const p2 = curr\n .clone()\n .add(v2.clone().multiplyScalar(tangentLength))\n\n if (lastP2)\n curves.push(new LineCurve3(lastP2.clone(), p1.clone()))\n else if (!closed && i === 1)\n curves.push(new LineCurve3(points[0].clone(), p1.clone()))\n\n curves.push(\n new QuadraticBezierCurve3(\n p1.clone(),\n curr.clone(),\n p2.clone(),\n ),\n )\n lastP2 = p2\n }\n else if (!hasNext && lastP2) {\n curves.push(new LineCurve3(lastP2.clone(), curr.clone()))\n }\n }\n\n if (closed && lastP2) {\n const first = points[0]\n const prev = points[points.length - 1]\n const next = points[1]\n\n const v1 = first.clone().sub(prev).normalize()\n const v2 = next.clone().sub(first).normalize()\n\n const tangentLength = Math.min(\n safeRadius,\n first.distanceTo(prev) / 2,\n first.distanceTo(next) / 2,\n )\n const firstP1 = first\n .clone()\n .sub(v1.clone().multiplyScalar(tangentLength))\n curves.push(new LineCurve3(lastP2.clone(), firstP1.clone()))\n }\n\n const path = new CurvePath<Vector3>()\n curves.forEach(c => path.add(c))\n return path\n // for (let i = 0; i < total; i++) {\n // const prev = points[(i - 1 + total) % total]\n // const curr = points[i]\n // const next = points[(i + 1) % total]\n\n // const v1 = curr.clone().sub(prev).normalize()\n // const v2 = next.clone().sub(curr).normalize()\n\n // const tangentLength = Math.min(safeRadius, curr.distanceTo(prev) / 2, curr.distanceTo(next) / 2)\n\n // const p1 = curr.clone().sub(v1.clone().multiplyScalar(tangentLength))\n // const p2 = curr.clone().add(v2.clone().multiplyScalar(tangentLength))\n\n // if (lastP2)\n // curves.push(new LineCurve3(lastP2.clone(), p1.clone()))\n\n // curves.push(new QuadraticBezierCurve3(p1.clone(), curr.clone(), p2.clone()))\n // lastP2 = p2\n // }\n\n // const prev = points[(total - 1 + total) % total]\n // const curr = points[0]\n // const next = points[1]\n\n // const v1 = curr.clone().sub(prev).normalize()\n // const v2 = next.clone().sub(curr).normalize()\n\n // const tangentLength = Math.min(safeRadius, curr.distanceTo(prev) / 2, curr.distanceTo(next) / 2)\n // const firstP1 = curr.clone().sub(v1.clone().multiplyScalar(tangentLength))\n\n // curves.push(new LineCurve3(lastP2!.clone(), firstP1.clone()))\n\n // const path = new CurvePath<THREE.Vector3>()\n // curves.forEach(c => path.add(c))\n // return path\n}\n\nconst createRoundedClosedWallMesh = (points: Vector3[], option: RoundLineGeometryOption, material?: ShaderMaterial) => {\n if (!material)\n material = defMaterial\n // const shape = rectangle(0.1, option.height)\n if (points.length < 2)\n throw new Error('At least two points are required to create a curve')\n\n const curvePath = createRoundedClosedCurve(points, option.radius, option.close)\n const divisions = 1000\n // const upVec = new Vector3(0, 1, 0)\n const bottomPoints = curvePath.getSpacedPoints(divisions)\n const topPoints = bottomPoints.map(\n p => new Vector3(p.x, p.y + option.height, p.z),\n )\n\n // 构建侧面 geometry\n const sideGeometry = new BufferGeometry()\n const positions = []\n const indices = []\n\n for (let i = 0; i < divisions; i++) {\n const b0 = bottomPoints[i]\n const b1 = bottomPoints[i + 1]\n const t0 = topPoints[i]\n const t1 = topPoints[i + 1]\n\n if (!b1 || !t1)\n break\n\n const baseIndex = positions.length / 3\n\n positions.push(b0.x, b0.y, b0.z) // 0\n positions.push(b1.x, b1.y, b1.z) // 1\n positions.push(t1.x, t1.y, t1.z) // 2\n positions.push(t0.x, t0.y, t0.z) // 3\n\n // 两个三角形组成一个四边面\n indices.push(baseIndex, baseIndex + 1, baseIndex + 2)\n indices.push(baseIndex, baseIndex + 2, baseIndex + 3)\n }\n\n sideGeometry.setAttribute(\n 'position',\n new Float32BufferAttribute(positions, 3),\n )\n sideGeometry.setIndex(indices)\n sideGeometry.computeVertexNormals()\n\n // const sideMaterial = new THREE.MeshNormalMaterial({\n // side: THREE.DoubleSide,\n // })\n const sideMesh = new Mesh(sideGeometry, material)\n // const extrudeSettings = {\n // steps: 200,\n // bevelEnabled: false,\n // extrudePath: curvePath,\n // }\n // const geometry = new ExtrudeGeometry(shape, extrudeSettings)\n // const material1 = new MeshNormalMaterial({ wireframe: false })\n // const arcWall = new Mesh(geometry, material)\n // arcWall.translateY(arcWall.position.y + option.height)\n return sideMesh\n}\nexport {\n RoundLineGeometry,\n createRoundLineWallMesh,\n createRoundedClosedWallMesh,\n createRoundedClosedCurve,\n}"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["Box3","EventDispatcher","Group","MathUtils","Plane","Quaternion","TWEEN","Vector3","use","utils","FollowControls","PerspectiveCameraExpand","_EventDispatcher","_inherits","_super","_createSuper","camera","controls","sceneControl","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Map","bindEvent","_createClass","key","get","_isTransitionPeriod","_isCameraChange","value","_this2","addEventListener","storeManagement","set","dispatchEvent","type","position","target","caclCurrentPos","currentPos","distanceCoefficient","arguments","length","undefined","distance","box","setFromPoints","map","item","center","getCenter","size","getSize","halfDiagonal","maxDistance","Math","tan","fov","PI","cameraToCenterDistance","directionVector","clone","sub","normalize","lastPosition","multiplyScalar","add","lastLookat","caclSingleCoordinate","prevTarget","prevPosition","lastTarget","focus","params","_this3","Promise","res","_params$pitch","pitch","_params$yaw","yaw","_params$distance","duration","onUpdate","_params$distanceCoeff","moveOptions","_ref","_params$isTrigger","isTrigger","_ref2","lookat","onComplate","_params$duration","toArray","userInput","Array","isArray","_this3$caclCurrentPos","motion","fromArray","_this4","_","_ref3","_ref4","_params$duration2","x","y","z","targetPosition","cameraPosition","currentDirection","plane","radToDeg","normal","angleTo","rotationParent","setPitch","deg","direction","quaternion","pitchQuat","setFromAxisAngle","degToRad","multiply","applyQuaternion","distanceTo","copy","setYaw","caclPositionByFollow","axisX","axisY","axisZ","anglePitch","angleYaw","quaternionX","quaternionY","addScaledVector","follow","option","_this5","followId","_ref5","_ref5$relativeRotatio","relativeRotation","_ref5$pitch","_ref5$yaw","_ref5$distance","container","rotation","scale","oldCameraParent","parent","needUpdateRotation","enabled","followControls","renderer","domElement","curPosition","radius","cancelMotion","useframe","update","cancel","remove","dispose","followCancelMap","cancelFollow","cancelAllFollow","forEach","_this6","options","currentPoition","currentPositionInterpolation","requestAnimationFrame","render","scene","tween","stop","Tween","t","p","to","onStart","easing","Easing","Quadratic","InOut","_ref6","currentPosition","lerpVectors","onComplete","setTimeout","start"],"sources":["../../../../src/core/Camera/PerspectiveCamera/CameraExpand.ts"],"sourcesContent":["import type { Object3D, OrbitControls, PerspectiveCamera, SceneControl } from '@anov/3d-core'\nimport { Box3, EventDispatcher, Group, MathUtils, Plane, Quaternion, TWEEN, Vector3, use, utils } from '@anov/3d-core'\nimport FollowControls from './FollowOrbitControls'\nimport type { CameraExpandInterface, FollowParamsOption, vector3Array } from '.'\n\ninterface ChangeCameraPresetOptions {\n duration?: number\n onUpdate?: (params: { position: Vector3; lookat: Vector3 }) => void\n onStart?: () => void\n onComplate?: () => void\n isTrigger?: boolean\n}\n\n/**\n * CameraExpand, 主要提供了一些PerspectiveCamera的拓展能力\n */\nexport class PerspectiveCameraExpand extends EventDispatcher implements CameraExpandInterface {\n private _isTransitionPeriod = false\n private camera: PerspectiveCamera\n private controls: OrbitControls\n private sceneControl: SceneControl\n private tween: any\n private _isCameraChange = false\n private followId = 0\n private followCancelMap: Map<number, () => void> = new Map()\n\n constructor(camera: PerspectiveCamera, controls: OrbitControls, sceneControl: SceneControl) {\n super()\n\n this.camera = camera\n this.controls = controls\n this.sceneControl = sceneControl\n\n this.bindEvent()\n }\n\n get isTransitionPeriod() {\n return this._isTransitionPeriod\n }\n\n get isCameraChange() {\n return this._isCameraChange\n }\n\n private bindEvent() {\n this.controls.addEventListener('start', () => {\n utils.storeManagement.set('enableEvents', false)\n this._isCameraChange = true\n })\n\n this.controls.addEventListener('end', () => {\n utils.storeManagement.set('enableEvents', true)\n this._isCameraChange = false\n })\n\n this.controls.addEventListener('change', () => {\n this.dispatchEvent({\n type: 'change',\n position: this.camera.position,\n target: this.controls.target,\n })\n })\n }\n\n /**\n * calculate last position from position box\n * if distance is not defined, calculate distance from box size\n * @param currentPos\n * @param distanceCoefficient\n * @param distance\n * @returns\n */\n private caclCurrentPos(currentPos: vector3Array[], distanceCoefficient = 1, distance?: number) {\n const box = new Box3()\n\n box.setFromPoints(currentPos.map(item => new Vector3(item[0], item[1], item[2])))\n\n const center = box.getCenter(new Vector3())\n const size = box.getSize(new Vector3())\n const halfDiagonal = size.length() * 0.5\n\n const maxDistance = halfDiagonal / Math.tan(this.camera.fov / 2 * Math.PI / 180)\n const cameraToCenterDistance = maxDistance\n const directionVector = (this.camera.position.clone()).sub(this.controls.target).normalize()\n\n const lastPosition = directionVector.multiplyScalar(distance ?? cameraToCenterDistance * distanceCoefficient).add(center)\n const lastLookat = center\n\n return {\n lastPosition,\n lastLookat,\n }\n }\n\n /**\n * caclSingleCoordinate, when use focus and target is single point\n * @param prevTarget\n * @param prevPosition\n * @param lastTarget\n * @returns\n */\n private caclSingleCoordinate(prevTarget: Vector3, prevPosition: Vector3, lastTarget: Vector3, distance: number) {\n const directionVector = prevPosition.clone().sub(prevTarget).normalize()\n const lastPosition = directionVector.multiplyScalar(distance).add(lastTarget)\n\n return lastPosition\n }\n\n /**\n * camera focus\n * @param params\n * @returns\n */\n public focus(params: {\n target: vector3Array | vector3Array[] | string\n pitch?: number\n yaw?: number\n distance?: number // distance from target\n duration?: number\n isTrigger?: boolean\n distanceCoefficient?: number\n onUpdate?: (args: { position: Vector3; target: Vector3 }) => void\n }) {\n return new Promise<\n {\n position: number[]\n target: number[]\n duration: number\n userInput: boolean\n pitch: number\n }\n >((res) => {\n const { target: position, pitch = 0, yaw = 0, distance =undefined , duration, onUpdate, distanceCoefficient = 1 } = params\n\n const moveOptions = () => ({\n duration: (duration && duration * 1000) ?? 1000,\n isTrigger: params.isTrigger ?? true,\n onUpdate: ({ position, lookat }) => {\n onUpdate && onUpdate({ position, target: lookat })\n },\n onComplate: () => {\n res({\n position: this.camera.position.toArray(),\n target: this.controls.target.toArray(),\n duration: params.duration ?? 0,\n userInput: true,\n pitch: pitch ?? 40,\n })\n },\n }) as ChangeCameraPresetOptions\n\n // if target is multiple points\n if (Array.isArray(position[0])) {\n const currentPos = position as vector3Array[]\n const { lastPosition, lastLookat } = this.caclCurrentPos(currentPos, distanceCoefficient, distance)\n\n this.motion(\n lastPosition,\n lastLookat,\n pitch,\n yaw,\n moveOptions(),\n )\n }\n // if target is single point\n else {\n const currentPos = position as vector3Array\n const lastPosition = this.caclSingleCoordinate(this.controls.target, this.camera.position, new Vector3().fromArray(currentPos), distance)\n const lastLookat = new Vector3().fromArray(currentPos)\n\n this.motion(\n lastPosition,\n lastLookat,\n pitch,\n yaw,\n moveOptions(),\n )\n }\n })\n }\n\n /**\n * set camera, main set position and target\n * @param params\n * @returns\n */\n public set(params: {\n position: vector3Array\n target: vector3Array\n isTrigger?: boolean\n duration?: number\n onUpdate?: (args: { position: Vector3; target: Vector3 }) => void\n }) {\n const { position, target, isTrigger, duration } = params\n\n return new Promise<{\n position: number[]\n target: number[]\n isTrigger: boolean\n duration: number\n userInput: boolean\n }>((res, _) => {\n this.motion(\n new Vector3(position[0], position[1], position[2]),\n new Vector3(target[0], target[1], target[2]),\n 0,\n 0,\n {\n isTrigger: isTrigger ?? true,\n duration: (duration && duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n params.onUpdate && params.onUpdate({ position, target: lookat })\n },\n onComplate: () => {\n res({\n position: this.camera.position.toArray(),\n target: this.controls.target.toArray(),\n isTrigger: true,\n duration: params.duration ?? 0,\n userInput: true,\n })\n },\n })\n })\n }\n\n /**\n * get camera position and target\n * @returns\n */\n public get() {\n return {\n position: [this.camera.position.x, this.camera.position.y, this.camera.position.z],\n target: [this.controls.target.x, this.controls.target.y, this.controls.target.z],\n }\n }\n\n /**\n * get current pitch\n */\n public get pitch() {\n const targetPosition = this.controls.target\n const cameraPosition = this.camera.position\n\n const currentDirection = cameraPosition.clone().sub(targetPosition)\n const plane = new Plane(new Vector3(0, 1, 0), 0)\n\n return -(MathUtils.radToDeg(plane.normal.angleTo(currentDirection)) - 90)\n }\n\n /**\n * get current yaw\n * @returns\n */\n public get yaw() {\n return (this.camera as (PerspectiveCamera & { rotationParent: { y: number } })).rotationParent.y\n }\n\n /**\n * set pitch, similar to ue\n * @param deg\n */\n public setPitch(deg: number) {\n if (deg > 90)\n deg = 90\n if (deg < -90)\n deg = -90\n\n const direction = new Vector3(0, 0, 1)\n const quaternion = new Quaternion()\n\n const pitchQuat = new Quaternion()\n pitchQuat.setFromAxisAngle(new Vector3(1, 0, 0), MathUtils.degToRad(-deg))\n quaternion.multiply(pitchQuat)\n\n direction.applyQuaternion(quaternion)\n direction.normalize()\n\n const distance = this.camera.position.distanceTo(this.controls.target)\n const cameraPosition = this.controls.target.clone().add(direction.multiplyScalar(distance))\n this.camera.position.copy(cameraPosition)\n }\n\n /**\n * set yaw, similar to ue\n * @param deg\n */\n public setYaw(deg: number) {\n if (deg > 180)\n deg = 180\n if (deg < -180)\n deg = -180\n\n // @ts-ignore\n this.camera.rotationParent.y = MathUtils.degToRad(deg)\n }\n\n /**\n * cacl Position By Follow\n * @param pitch\n * @param yaw\n * @param distance\n * @returns\n */\n private caclPositionByFollow(pitch = 30, yaw = 0, distance = 60) {\n const axisX = new Vector3(1, 0, 0)\n const axisY = new Vector3(0, 1, 0)\n const axisZ = new Vector3(0, 0, -1)\n const position = new Vector3(0, 0, 0)\n\n const anglePitch = MathUtils.degToRad(pitch)\n const angleYaw = MathUtils.degToRad(yaw)\n\n const quaternionX = new Quaternion().setFromAxisAngle(axisX, anglePitch)\n const quaternionY = new Quaternion().setFromAxisAngle(axisY, angleYaw)\n\n position.addScaledVector(axisZ, distance)\n position.applyQuaternion(quaternionX)\n position.applyQuaternion(quaternionY)\n\n return position\n }\n\n /**\n * follow 3d object, not only use in camera\n * @param target\n * @param camera\n * @param option\n * @returns\n */\n public follow(target: Object3D, camera: PerspectiveCamera, option?: FollowParamsOption) {\n const followId = this.followId++\n const { relativeRotation = false, pitch = 30, yaw = 0, distance = 10 } = option || {}\n const container = new Group()\n\n container.rotation.copy(target.rotation)\n container.scale.copy(target.scale)\n\n const oldCameraParent = camera.parent\n\n let needUpdateRotation = true\n\n container.add(camera)\n target.parent.add(container)\n\n this.controls.enabled = false\n\n const followControls = new FollowControls(this.camera, this.sceneControl.renderer.domElement)\n const curPosition = this.caclPositionByFollow(pitch, yaw, distance)\n\n camera.position.copy(curPosition)\n followControls.radius = camera.position.distanceTo(target.position)\n\n followControls.addEventListener('start', () => {\n relativeRotation && (needUpdateRotation = false)\n })\n\n this.controls.target.copy(target.position)\n followControls.target = target.position\n\n const cancelMotion = use.useframe(() => {\n container.position.copy(target.position)\n container.scale.copy(target.scale)\n needUpdateRotation && container.rotation.copy(target.rotation)\n\n this.controls.target.copy(target.position)\n\n followControls.target = target.position\n followControls.update()\n })\n\n const cancel = () => {\n this.controls.enabled = true\n\n oldCameraParent.add(camera)\n target.parent.remove(container)\n\n cancelMotion()\n followControls.dispose()\n }\n\n this.followCancelMap.set(followId, cancel)\n\n return followId\n }\n\n /**\n * cancel follow\n * @param followId\n */\n public cancelFollow(followId: number) {\n const cancel = this.followCancelMap.get(followId)\n cancel && cancel()\n }\n\n /**\n * cancel all follow\n */\n public cancelAllFollow() {\n this.followCancelMap.forEach((cancel) => {\n cancel()\n })\n }\n\n /**\n * interpolation move camera\n * @param position\n * @param target\n * @param pitch\n * @param yaw\n * @param options\n * @returns\n */\n private motion(position: Vector3, target: Vector3, pitch = 0, yaw = 0, options?: ChangeCameraPresetOptions) {\n const currentPoition = this.camera.position.clone()\n const currentPositionInterpolation = new Vector3()\n\n if (options?.duration === 0) {\n this.camera.position.copy(position)\n this.controls.target.copy(target)\n\n if (pitch) {\n // @ts-ignore\n this.camera.rotationParent.x = MathUtils.degToRad(pitch)\n }\n\n if (yaw) {\n // @ts-ignore\n this.camera.rotationParent.y = MathUtils.degToRad(yaw)\n }\n\n requestAnimationFrame(() => {\n options?.onComplate && options.onComplate()\n this.sceneControl.renderer!.render(this.sceneControl.scene!, this.sceneControl.camera!)\n })\n\n return\n }\n\n if (this.tween)\n this.tween.stop()\n\n this.tween = new TWEEN.Tween(\n // @ts-ignore\n { t: 0, lookat: this.controls.target.clone(), p: this.camera.rotationParent.x, yaw: this.camera.rotationParent.y })\n // @ts-ignore\n .to({ t: 1, lookat: target, p: MathUtils.degToRad(pitch), y: MathUtils.degToRad(yaw) }, options?.duration || 1000)\n .onStart(() => {\n options?.onStart && options.onStart()\n this.controls.enabled = false\n this._isTransitionPeriod = true\n })\n .easing(TWEEN.Easing.Quadratic.InOut)\n .onUpdate(({ t, lookat, p }) => {\n this.controls.target.copy(lookat)\n\n if (pitch)\n // @ts-ignore\n this.camera.rotationParent.x = p\n\n if (yaw)\n // @ts-ignore\n this.camera.rotationParent.y = p\n\n const currentPosition = currentPositionInterpolation.lerpVectors(currentPoition, position, t)\n this.camera.position.copy(currentPosition)\n options?.onUpdate && options.onUpdate({ position: currentPosition, lookat })\n })\n .onComplete(() => {\n requestAnimationFrame(() => {\n options?.onComplate && options.onComplate()\n })\n\n this.controls.enabled = true\n\n setTimeout(() => {\n this._isTransitionPeriod = false\n })\n })\n .start()\n }\n}"],"mappings":"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"}
1
+ {"version":3,"names":["Box3","EventDispatcher","Group","MathUtils","Plane","Quaternion","TWEEN","Vector3","use","utils","FollowControls","PerspectiveCameraExpand","_EventDispatcher","_inherits","_super","_createSuper","camera","controls","sceneControl","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Map","bindEvent","_createClass","key","get","_isTransitionPeriod","_isCameraChange","value","_this2","addEventListener","storeManagement","set","dispatchEvent","type","position","target","caclCurrentPos","currentPos","distanceCoefficient","arguments","length","undefined","distance","box","setFromPoints","map","item","center","getCenter","size","getSize","halfDiagonal","maxDistance","Math","tan","fov","PI","cameraToCenterDistance","directionVector","clone","sub","normalize","lastPosition","multiplyScalar","add","lastLookat","caclSingleCoordinate","prevTarget","prevPosition","lastTarget","focus","params","_this3","Promise","res","_params$pitch","pitch","_params$yaw","yaw","_params$distance","duration","onUpdate","_params$distanceCoeff","moveOptions","_ref","_params$isTrigger","isTrigger","_ref2","lookat","onComplate","_params$duration","toArray","userInput","Array","isArray","_this3$caclCurrentPos","motion","fromArray","_this4","_","_ref3","_ref4","_params$duration2","x","y","z","targetPosition","cameraPosition","currentDirection","plane","radToDeg","normal","angleTo","rotationParent","setPitch","deg","direction","quaternion","pitchQuat","setFromAxisAngle","degToRad","multiply","applyQuaternion","distanceTo","copy","setYaw","caclPositionByFollow","axisX","axisY","axisZ","anglePitch","angleYaw","quaternionX","quaternionY","addScaledVector","follow","option","_this5","followId","_ref5","_ref5$relativeRotatio","relativeRotation","_ref5$pitch","_ref5$yaw","_ref5$distance","container","rotation","scale","oldCameraParent","parent","needUpdateRotation","enabled","followControls","renderer","domElement","curPosition","radius","cancelMotion","useframe","update","cancel","remove","dispose","followCancelMap","cancelFollow","cancelAllFollow","forEach","_this6","options","currentPoition","currentPositionInterpolation","requestAnimationFrame","render","scene","tween","stop","Tween","t","p","to","onStart","easing","Easing","Quadratic","InOut","_ref6","currentPosition","lerpVectors","onComplete","setTimeout","start"],"sources":["../../../../src/core/Camera/PerspectiveCamera/CameraExpand.ts"],"sourcesContent":["import type { Object3D, OrbitControls, PerspectiveCamera, SceneControl } from '@anov/3d-core'\nimport { Box3, EventDispatcher, Group, MathUtils, Plane, Quaternion, TWEEN, Vector3, use, utils } from '@anov/3d-core'\nimport FollowControls from './FollowOrbitControls'\nimport type { CameraExpandInterface, FollowParamsOption, vector3Array } from '.'\n\ninterface ChangeCameraPresetOptions {\n duration?: number\n onUpdate?: (params: { position: Vector3; lookat: Vector3 }) => void\n onStart?: () => void\n onComplate?: () => void\n isTrigger?: boolean\n}\n\n/**\n * CameraExpand, 主要提供了一些PerspectiveCamera的拓展能力\n */\nexport class PerspectiveCameraExpand extends EventDispatcher implements CameraExpandInterface {\n private _isTransitionPeriod = false\n private camera: PerspectiveCamera\n private controls: OrbitControls\n private sceneControl: SceneControl\n private tween: any\n private _isCameraChange = false\n private followId = 0\n private followCancelMap: Map<number, () => void> = new Map()\n\n constructor(camera: PerspectiveCamera, controls: OrbitControls, sceneControl: SceneControl) {\n super()\n\n this.camera = camera\n this.controls = controls\n this.sceneControl = sceneControl\n\n this.bindEvent()\n }\n\n get isTransitionPeriod() {\n return this._isTransitionPeriod\n }\n\n get isCameraChange() {\n return this._isCameraChange\n }\n\n private bindEvent() {\n this.controls.addEventListener('start', () => {\n utils.storeManagement.set('enableEvents', false)\n this._isCameraChange = true\n })\n\n this.controls.addEventListener('end', () => {\n utils.storeManagement.set('enableEvents', true)\n this._isCameraChange = false\n })\n\n this.controls.addEventListener('change', () => {\n this.dispatchEvent({\n type: 'change',\n position: this.camera.position,\n target: this.controls.target,\n })\n })\n }\n\n /**\n * calculate last position from position box\n * if distance is not defined, calculate distance from box size\n * @param currentPos\n * @param distanceCoefficient\n * @param distance\n * @returns\n */\n private caclCurrentPos(currentPos: vector3Array[], distanceCoefficient = 1, distance?: number) {\n const box = new Box3()\n\n box.setFromPoints(currentPos.map(item => new Vector3(item[0], item[1], item[2])))\n\n const center = box.getCenter(new Vector3())\n const size = box.getSize(new Vector3())\n const halfDiagonal = size.length() * 0.5\n\n const maxDistance = halfDiagonal / Math.tan(this.camera.fov / 2 * Math.PI / 180)\n const cameraToCenterDistance = maxDistance\n const directionVector = (this.camera.position.clone()).sub(this.controls.target).normalize()\n\n const lastPosition = directionVector.multiplyScalar(distance ?? cameraToCenterDistance * distanceCoefficient).add(center)\n const lastLookat = center\n\n return {\n lastPosition,\n lastLookat,\n }\n }\n\n /**\n * caclSingleCoordinate, when use focus and target is single point\n * @param prevTarget\n * @param prevPosition\n * @param lastTarget\n * @returns\n */\n private caclSingleCoordinate(prevTarget: Vector3, prevPosition: Vector3, lastTarget: Vector3, distance: number) {\n const directionVector = prevPosition.clone().sub(prevTarget).normalize()\n const lastPosition = directionVector.multiplyScalar(distance).add(lastTarget)\n\n return lastPosition\n }\n\n /**\n * camera focus\n * @param params\n * @returns\n */\n public focus(params: {\n target: vector3Array | vector3Array[] | string\n pitch?: number\n yaw?: number\n distance?: number // distance from target\n duration?: number\n isTrigger?: boolean\n distanceCoefficient?: number\n onUpdate?: (args: { position: Vector3; target: Vector3 }) => void\n }) {\n return new Promise<\n {\n position: number[]\n target: number[]\n duration: number\n userInput: boolean\n pitch: number\n }\n >((res) => {\n const { target: position, pitch = 0, yaw = 0, distance = undefined, duration, onUpdate, distanceCoefficient = 1 } = params\n\n const moveOptions = () => ({\n duration: (duration && duration * 1000) ?? 1000,\n isTrigger: params.isTrigger ?? true,\n onUpdate: ({ position, lookat }) => {\n onUpdate && onUpdate({ position, target: lookat })\n },\n onComplate: () => {\n res({\n position: this.camera.position.toArray(),\n target: this.controls.target.toArray(),\n duration: params.duration ?? 0,\n userInput: true,\n pitch: pitch ?? 40,\n })\n },\n }) as ChangeCameraPresetOptions\n\n // if target is multiple points\n if (Array.isArray(position[0])) {\n const currentPos = position as vector3Array[]\n const { lastPosition, lastLookat } = this.caclCurrentPos(currentPos, distanceCoefficient, distance)\n\n this.motion(\n lastPosition,\n lastLookat,\n pitch,\n yaw,\n moveOptions(),\n )\n }\n // if target is single point\n else {\n const currentPos = position as vector3Array\n const lastPosition = this.caclSingleCoordinate(this.controls.target, this.camera.position, new Vector3().fromArray(currentPos), distance)\n const lastLookat = new Vector3().fromArray(currentPos)\n\n this.motion(\n lastPosition,\n lastLookat,\n pitch,\n yaw,\n moveOptions(),\n )\n }\n })\n }\n\n /**\n * set camera, main set position and target\n * @param params\n * @returns\n */\n public set(params: {\n position: vector3Array\n target: vector3Array\n isTrigger?: boolean\n duration?: number\n onUpdate?: (args: { position: Vector3; target: Vector3 }) => void\n }) {\n const { position, target, isTrigger, duration } = params\n\n return new Promise<{\n position: number[]\n target: number[]\n isTrigger: boolean\n duration: number\n userInput: boolean\n }>((res, _) => {\n this.motion(\n new Vector3(position[0], position[1], position[2]),\n new Vector3(target[0], target[1], target[2]),\n 0,\n 0,\n {\n isTrigger: isTrigger ?? true,\n duration: (duration && duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n params.onUpdate && params.onUpdate({ position, target: lookat })\n },\n onComplate: () => {\n res({\n position: this.camera.position.toArray(),\n target: this.controls.target.toArray(),\n isTrigger: true,\n duration: params.duration ?? 0,\n userInput: true,\n })\n },\n })\n })\n }\n\n /**\n * get camera position and target\n * @returns\n */\n public get() {\n return {\n position: [this.camera.position.x, this.camera.position.y, this.camera.position.z],\n target: [this.controls.target.x, this.controls.target.y, this.controls.target.z],\n }\n }\n\n /**\n * get current pitch\n */\n public get pitch() {\n const targetPosition = this.controls.target\n const cameraPosition = this.camera.position\n\n const currentDirection = cameraPosition.clone().sub(targetPosition)\n const plane = new Plane(new Vector3(0, 1, 0), 0)\n\n return -(MathUtils.radToDeg(plane.normal.angleTo(currentDirection)) - 90)\n }\n\n /**\n * get current yaw\n * @returns\n */\n public get yaw() {\n return (this.camera as (PerspectiveCamera & { rotationParent: { y: number } })).rotationParent.y\n }\n\n /**\n * set pitch, similar to ue\n * @param deg\n */\n public setPitch(deg: number) {\n if (deg > 90)\n deg = 90\n if (deg < -90)\n deg = -90\n\n const direction = new Vector3(0, 0, 1)\n const quaternion = new Quaternion()\n\n const pitchQuat = new Quaternion()\n pitchQuat.setFromAxisAngle(new Vector3(1, 0, 0), MathUtils.degToRad(-deg))\n quaternion.multiply(pitchQuat)\n\n direction.applyQuaternion(quaternion)\n direction.normalize()\n\n const distance = this.camera.position.distanceTo(this.controls.target)\n const cameraPosition = this.controls.target.clone().add(direction.multiplyScalar(distance))\n this.camera.position.copy(cameraPosition)\n }\n\n /**\n * set yaw, similar to ue\n * @param deg\n */\n public setYaw(deg: number) {\n if (deg > 180)\n deg = 180\n if (deg < -180)\n deg = -180\n\n // @ts-ignore\n this.camera.rotationParent.y = MathUtils.degToRad(deg)\n }\n\n /**\n * cacl Position By Follow\n * @param pitch\n * @param yaw\n * @param distance\n * @returns\n */\n private caclPositionByFollow(pitch = 30, yaw = 0, distance = 60) {\n const axisX = new Vector3(1, 0, 0)\n const axisY = new Vector3(0, 1, 0)\n const axisZ = new Vector3(0, 0, -1)\n const position = new Vector3(0, 0, 0)\n\n const anglePitch = MathUtils.degToRad(pitch)\n const angleYaw = MathUtils.degToRad(yaw)\n\n const quaternionX = new Quaternion().setFromAxisAngle(axisX, anglePitch)\n const quaternionY = new Quaternion().setFromAxisAngle(axisY, angleYaw)\n\n position.addScaledVector(axisZ, distance)\n position.applyQuaternion(quaternionX)\n position.applyQuaternion(quaternionY)\n\n return position\n }\n\n /**\n * follow 3d object, not only use in camera\n * @param target\n * @param camera\n * @param option\n * @returns\n */\n public follow(target: Object3D, camera: PerspectiveCamera, option?: FollowParamsOption) {\n const followId = this.followId++\n const { relativeRotation = false, pitch = 30, yaw = 0, distance = 10 } = option || {}\n const container = new Group()\n\n container.rotation.copy(target.rotation)\n container.scale.copy(target.scale)\n\n const oldCameraParent = camera.parent\n\n let needUpdateRotation = true\n\n container.add(camera)\n target.parent.add(container)\n\n this.controls.enabled = false\n\n const followControls = new FollowControls(this.camera, this.sceneControl.renderer.domElement)\n const curPosition = this.caclPositionByFollow(pitch, yaw, distance)\n\n camera.position.copy(curPosition)\n followControls.radius = camera.position.distanceTo(target.position)\n\n followControls.addEventListener('start', () => {\n relativeRotation && (needUpdateRotation = false)\n })\n\n this.controls.target.copy(target.position)\n followControls.target = target.position\n\n const cancelMotion = use.useframe(() => {\n container.position.copy(target.position)\n container.scale.copy(target.scale)\n needUpdateRotation && container.rotation.copy(target.rotation)\n\n this.controls.target.copy(target.position)\n\n followControls.target = target.position\n followControls.update()\n })\n\n const cancel = () => {\n this.controls.enabled = true\n\n oldCameraParent.add(camera)\n target.parent.remove(container)\n\n cancelMotion()\n followControls.dispose()\n }\n\n this.followCancelMap.set(followId, cancel)\n\n return followId\n }\n\n /**\n * cancel follow\n * @param followId\n */\n public cancelFollow(followId: number) {\n const cancel = this.followCancelMap.get(followId)\n cancel && cancel()\n }\n\n /**\n * cancel all follow\n */\n public cancelAllFollow() {\n this.followCancelMap.forEach((cancel) => {\n cancel()\n })\n }\n\n /**\n * interpolation move camera\n * @param position\n * @param target\n * @param pitch\n * @param yaw\n * @param options\n * @returns\n */\n private motion(position: Vector3, target: Vector3, pitch = 0, yaw = 0, options?: ChangeCameraPresetOptions) {\n const currentPoition = this.camera.position.clone()\n const currentPositionInterpolation = new Vector3()\n\n if (options?.duration === 0) {\n this.camera.position.copy(position)\n this.controls.target.copy(target)\n\n if (pitch) {\n // @ts-ignore\n this.camera.rotationParent.x = MathUtils.degToRad(pitch)\n }\n\n if (yaw) {\n // @ts-ignore\n this.camera.rotationParent.y = MathUtils.degToRad(yaw)\n }\n\n requestAnimationFrame(() => {\n options?.onComplate && options.onComplate()\n this.sceneControl.renderer!.render(this.sceneControl.scene!, this.sceneControl.camera!)\n })\n\n return\n }\n\n if (this.tween)\n this.tween.stop()\n\n this.tween = new TWEEN.Tween(\n // @ts-ignore\n { t: 0, lookat: this.controls.target.clone(), p: this.camera.rotationParent.x, yaw: this.camera.rotationParent.y })\n // @ts-ignore\n .to({ t: 1, lookat: target, p: MathUtils.degToRad(pitch), y: MathUtils.degToRad(yaw) }, options?.duration || 1000)\n .onStart(() => {\n options?.onStart && options.onStart()\n this.controls.enabled = false\n this._isTransitionPeriod = true\n })\n .easing(TWEEN.Easing.Quadratic.InOut)\n .onUpdate(({ t, lookat, p }) => {\n this.controls.target.copy(lookat)\n\n if (pitch)\n // @ts-ignore\n this.camera.rotationParent.x = p\n\n if (yaw)\n // @ts-ignore\n this.camera.rotationParent.y = p\n\n const currentPosition = currentPositionInterpolation.lerpVectors(currentPoition, position, t)\n this.camera.position.copy(currentPosition)\n options?.onUpdate && options.onUpdate({ position: currentPosition, lookat })\n })\n .onComplete(() => {\n requestAnimationFrame(() => {\n options?.onComplate && options.onComplate()\n })\n\n this.controls.enabled = true\n\n setTimeout(() => {\n this._isTransitionPeriod = false\n })\n })\n .start()\n }\n}"],"mappings":"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"}
@@ -12,7 +12,7 @@ export default class Camera_movement {
12
12
  character: Object3D;
13
13
  currentPosition: Vector3;
14
14
  currentLookat: Vector3;
15
- characterRotateBox: Object3D<THREE.Event>;
15
+ characterRotateBox: Object3D;
16
16
  control: any;
17
17
  player: Player;
18
18
  view: Mesh;
@@ -1 +1 @@
1
- {"version":3,"names":["BoxGeometry","Mesh","Vector3","use","Camera_movement","_ref","character","camera","characterRotateBox","player","_classCallCheck","_defineProperty","currentPosition","currentLookat","control","useScene","orbitControls","view","add","position","_createClass","key","value","calculateIdealLookat","_this$character$posit","x","y","z","idealLookat","updateCharacter","cameraPosition","getWorldPosition","characterPosition","direction","subVectors","angle","Math","atan2","rotation","PI","updateCamera","target","object","copy","updateNewPosition","update","deltaT","default"],"sources":["../../../../../src/core/Controls/ThirdViewControl/player/camera.ts"],"sourcesContent":["import { BoxGeometry, Mesh, Vector3, use } from '@anov/3d-core'\nimport type { Object3D, OrbitControls, PerspectiveCamera } from '@anov/3d-core'\nimport type Player from '../player'\n\ninterface PropsType {\n character: Object3D\n characterRotateBox: Object3D\n camera: PerspectiveCamera\n player: Player\n}\n\nexport default class Camera_movement {\n camera: PerspectiveCamera\n character: Object3D\n currentPosition: Vector3\n currentLookat: Vector3\n characterRotateBox: Object3D<THREE.Event>\n control: any\n player: Player\n view: Mesh\n\n constructor({ character, camera, characterRotateBox, player }: PropsType) {\n this.character = character\n this.characterRotateBox = characterRotateBox\n this.camera = camera\n this.player = player\n\n this.currentPosition = new Vector3()\n this.currentLookat = new Vector3()\n this.control = use.useScene().orbitControls\n\n const view = new Mesh(new BoxGeometry(1, 1, 1))\n this.character.add(view)\n\n view.position.add(new Vector3(0, 5, -15))\n\n this.view = view\n }\n\n private calculateIdealLookat() {\n const { x, y, z } = this.character.position\n const idealLookat = new Vector3(x, this.character.position.y + 3.4, z)\n\n return idealLookat\n }\n\n private updateCharacter() {\n const cameraPosition = new Vector3()\n this.camera.getWorldPosition(cameraPosition)\n\n const characterPosition = new Vector3()\n this.character.getWorldPosition(characterPosition)\n\n const direction = new Vector3()\n direction.subVectors(cameraPosition, characterPosition)\n direction.y = 0\n\n const angle = Math.atan2(direction.x, direction.z)\n\n this.character.rotation.y = angle + Math.PI\n this.characterRotateBox.rotation.y = angle + Math.PI\n }\n\n private updateCamera() {\n const position = new Vector3()\n this.view.getWorldPosition(position)\n\n const idealLookat = this.calculateIdealLookat()\n this.control.target = idealLookat;\n (this.control as OrbitControls).object.position.copy(position)\n }\n\n private updateNewPosition() {\n if (this.view && this.view.position) {\n this.updateCharacter()\n this.updateCamera()\n }\n }\n\n update(deltaT: number) {\n this.updateNewPosition()\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["BoxGeometry","Mesh","Vector3","use","Camera_movement","_ref","character","camera","characterRotateBox","player","_classCallCheck","_defineProperty","currentPosition","currentLookat","control","useScene","orbitControls","view","add","position","_createClass","key","value","calculateIdealLookat","_this$character$posit","x","y","z","idealLookat","updateCharacter","cameraPosition","getWorldPosition","characterPosition","direction","subVectors","angle","Math","atan2","rotation","PI","updateCamera","target","object","copy","updateNewPosition","update","deltaT","default"],"sources":["../../../../../src/core/Controls/ThirdViewControl/player/camera.ts"],"sourcesContent":["import { BoxGeometry, Mesh, Vector3, use } from '@anov/3d-core'\nimport type { Object3D, Object3DEventMap, OrbitControls, PerspectiveCamera } from '@anov/3d-core'\nimport type Player from '../player'\n\ninterface PropsType {\n character: Object3D\n characterRotateBox: Object3D\n camera: PerspectiveCamera\n player: Player\n}\n\nexport default class Camera_movement {\n camera: PerspectiveCamera\n character: Object3D\n currentPosition: Vector3\n currentLookat: Vector3\n characterRotateBox: Object3D\n control: any\n player: Player\n view: Mesh\n\n constructor({ character, camera, characterRotateBox, player }: PropsType) {\n this.character = character\n this.characterRotateBox = characterRotateBox\n this.camera = camera\n this.player = player\n\n this.currentPosition = new Vector3()\n this.currentLookat = new Vector3()\n this.control = use.useScene().orbitControls\n\n const view = new Mesh(new BoxGeometry(1, 1, 1))\n this.character.add(view)\n\n view.position.add(new Vector3(0, 5, -15))\n\n this.view = view\n }\n\n private calculateIdealLookat() {\n const { x, y, z } = this.character.position\n const idealLookat = new Vector3(x, this.character.position.y + 3.4, z)\n\n return idealLookat\n }\n\n private updateCharacter() {\n const cameraPosition = new Vector3()\n this.camera.getWorldPosition(cameraPosition)\n\n const characterPosition = new Vector3()\n this.character.getWorldPosition(characterPosition)\n\n const direction = new Vector3()\n direction.subVectors(cameraPosition, characterPosition)\n direction.y = 0\n\n const angle = Math.atan2(direction.x, direction.z)\n\n this.character.rotation.y = angle + Math.PI\n this.characterRotateBox.rotation.y = angle + Math.PI\n }\n\n private updateCamera() {\n const position = new Vector3()\n this.view.getWorldPosition(position)\n\n const idealLookat = this.calculateIdealLookat()\n this.control.target = idealLookat;\n (this.control as OrbitControls).object.position.copy(position)\n }\n\n private updateNewPosition() {\n if (this.view && this.view.position) {\n this.updateCharacter()\n this.updateCamera()\n }\n }\n\n update(deltaT: number) {\n this.updateNewPosition()\n }\n}\n"],"mappings":"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"}
@@ -19,7 +19,7 @@ export default class Character_control {
19
19
  isRoll: boolean | any;
20
20
  isMove: boolean;
21
21
  animation: Character_animation;
22
- characterRotateBox: Object3D<THREE.Event>;
22
+ characterRotateBox: Object3D;
23
23
  characterRotateAngle: {
24
24
  allowSet: boolean;
25
25
  angle: number;
@@ -1 +1 @@
1
- {"version":3,"names":["Mesh","Vector3","acceleratedRaycast","SPEED","prototype","raycast","Character_control","_ref","scene","character","input","animation","characterRotateBox","camera","_classCallCheck","_defineProperty","allowSet","angle","currentPosition","forwardVector","getWorldDirection","y","normalize","_createClass","key","value","updateNewPosition","deltaT","_this$input$keys","keys","forward","backward","left","right","vectorUp","vectorRight","crossVectors","moveDirection","add","sub","moveVector","multiplyScalar","preventAction","position","update","default"],"sources":["../../../../../src/core/Controls/ThirdViewControl/player/control.ts"],"sourcesContent":["import type { Object3D, OrbitControls, PerspectiveCamera, Scene } from '@anov/3d-core'\nimport { BufferGeometry, Mesh, MeshBVH, Quaternion, Vector3, acceleratedRaycast } from '@anov/3d-core'\nimport { SPEED } from '../config/constants'\nimport type BasicCharacterControllerInput from '../action/input'\nimport type Character_animation from './animation'\n\nMesh.prototype.raycast = acceleratedRaycast\n\ninterface PropsType {\n scene: Scene\n character: Object3D\n characterRotateBox: Object3D\n input: BasicCharacterControllerInput\n animation: Character_animation\n camera: PerspectiveCamera\n}\n\nexport default class Character_control {\n input: BasicCharacterControllerInput\n character: Object3D\n control: OrbitControls | any\n currentPosition: Vector3\n camera: PerspectiveCamera\n isRoll: boolean | any\n isMove = false\n animation: Character_animation\n characterRotateBox: Object3D<THREE.Event>\n characterRotateAngle = {\n allowSet: true,\n angle: 1,\n }\n\n scene: Scene\n forwardVector: Vector3\n\n constructor({\n scene,\n character,\n input,\n animation,\n characterRotateBox,\n camera,\n }: PropsType) {\n this.input = input\n this.character = character\n this.characterRotateBox = characterRotateBox\n this.animation = animation\n this.scene = scene\n this.camera = camera\n\n this.currentPosition = new Vector3()\n this.forwardVector = new Vector3()\n this.character.getWorldDirection(this.forwardVector)\n this.forwardVector.y = 0\n this.forwardVector.normalize()\n }\n\n updateNewPosition(deltaT: number) {\n const { forward, backward, left, right } = this.input.keys\n\n // 获取当前角色的前向向量\n const forwardVector = new Vector3()\n this.characterRotateBox.getWorldDirection(forwardVector)\n forwardVector.y = 0\n forwardVector.normalize()\n\n const vectorUp = new Vector3(0, 1, 0)\n const vectorRight = new Vector3().crossVectors(vectorUp, forwardVector).normalize()\n\n const moveDirection = new Vector3()\n\n if (forward)\n moveDirection.add(forwardVector)\n if (backward)\n moveDirection.sub(forwardVector)\n if (left)\n moveDirection.add(vectorRight)\n if (right)\n moveDirection.sub(vectorRight)\n\n // 计算最终移动向量\n const moveVector = moveDirection.normalize().multiplyScalar(SPEED * deltaT)\n\n // 更新角色的位置\n if (!this.animation.preventAction)\n this.character.position.add(moveVector)\n }\n\n update(deltaT: number) {\n this.updateNewPosition(deltaT)\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Mesh","Vector3","acceleratedRaycast","SPEED","prototype","raycast","Character_control","_ref","scene","character","input","animation","characterRotateBox","camera","_classCallCheck","_defineProperty","allowSet","angle","currentPosition","forwardVector","getWorldDirection","y","normalize","_createClass","key","value","updateNewPosition","deltaT","_this$input$keys","keys","forward","backward","left","right","vectorUp","vectorRight","crossVectors","moveDirection","add","sub","moveVector","multiplyScalar","preventAction","position","update","default"],"sources":["../../../../../src/core/Controls/ThirdViewControl/player/control.ts"],"sourcesContent":["import type { Object3D, Object3DEventMap, OrbitControls, PerspectiveCamera, Scene } from '@anov/3d-core'\nimport { BufferGeometry, Mesh, MeshBVH, Quaternion, Vector3, acceleratedRaycast } from '@anov/3d-core'\nimport { SPEED } from '../config/constants'\nimport type BasicCharacterControllerInput from '../action/input'\nimport type Character_animation from './animation'\n\nMesh.prototype.raycast = acceleratedRaycast\n\ninterface PropsType {\n scene: Scene\n character: Object3D\n characterRotateBox: Object3D\n input: BasicCharacterControllerInput\n animation: Character_animation\n camera: PerspectiveCamera\n}\n\nexport default class Character_control {\n input: BasicCharacterControllerInput\n character: Object3D\n control: OrbitControls | any\n currentPosition: Vector3\n camera: PerspectiveCamera\n isRoll: boolean | any\n isMove = false\n animation: Character_animation\n characterRotateBox: Object3D\n characterRotateAngle = {\n allowSet: true,\n angle: 1,\n }\n\n scene: Scene\n forwardVector: Vector3\n\n constructor({\n scene,\n character,\n input,\n animation,\n characterRotateBox,\n camera,\n }: PropsType) {\n this.input = input\n this.character = character\n this.characterRotateBox = characterRotateBox\n this.animation = animation\n this.scene = scene\n this.camera = camera\n\n this.currentPosition = new Vector3()\n this.forwardVector = new Vector3()\n this.character.getWorldDirection(this.forwardVector)\n this.forwardVector.y = 0\n this.forwardVector.normalize()\n }\n\n updateNewPosition(deltaT: number) {\n const { forward, backward, left, right } = this.input.keys\n\n // 获取当前角色的前向向量\n const forwardVector = new Vector3()\n this.characterRotateBox.getWorldDirection(forwardVector)\n forwardVector.y = 0\n forwardVector.normalize()\n\n const vectorUp = new Vector3(0, 1, 0)\n const vectorRight = new Vector3().crossVectors(vectorUp, forwardVector).normalize()\n\n const moveDirection = new Vector3()\n\n if (forward)\n moveDirection.add(forwardVector)\n if (backward)\n moveDirection.sub(forwardVector)\n if (left)\n moveDirection.add(vectorRight)\n if (right)\n moveDirection.sub(vectorRight)\n\n // 计算最终移动向量\n const moveVector = moveDirection.normalize().multiplyScalar(SPEED * deltaT)\n\n // 更新角色的位置\n if (!this.animation.preventAction)\n this.character.position.add(moveVector)\n }\n\n update(deltaT: number) {\n this.updateNewPosition(deltaT)\n }\n}\n"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type * as THREE from '@anov/3d-core';
1
2
  export interface CharacterAnimationType {
2
3
  running: THREE.AnimationAction | undefined;
3
4
  runningBack: THREE.AnimationAction | undefined;
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../../src/core/Controls/ThirdViewControl/type.ts"],"sourcesContent":["export interface CharacterAnimationType {\n running: THREE.AnimationAction | undefined\n runningBack: THREE.AnimationAction | undefined\n walking: THREE.AnimationAction | undefined\n idle: THREE.AnimationAction | undefined\n jump: THREE.AnimationAction | undefined\n leftRun: THREE.AnimationAction | undefined\n rightRun: THREE.AnimationAction | undefined\n hit: THREE.AnimationAction | undefined\n hitSecond: THREE.AnimationAction | undefined\n getHit: THREE.AnimationAction | undefined\n roll: THREE.AnimationAction | undefined\n}\n\nexport interface PlayerInput {\n forward: boolean\n backward: boolean\n left: boolean\n right: boolean\n space: boolean\n shift: boolean\n leftClick: boolean\n rightClick: boolean\n}\n\nexport type CoordinateType = number[]\n\nexport interface VerticesType {\n [key: string]: PointsType\n}\n\nexport interface PointsType {\n points: CoordinateType\n neighBors: CoordinateType[]\n}\n\nexport interface PointsFormatObj<T> extends PointsType {\n g: null | number\n f: null | number\n prev: T | null\n}\nexport interface PointsFormatObjRecusive\n extends PointsFormatObj<PointsFormatObjRecusive> { }\n\nexport interface PointsFormatType {\n [key: string]: PointsFormatObjRecusive\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["../../../../src/core/Controls/ThirdViewControl/type.ts"],"sourcesContent":["import type * as THREE from '@anov/3d-core'\n\nexport interface CharacterAnimationType {\n running: THREE.AnimationAction | undefined\n runningBack: THREE.AnimationAction | undefined\n walking: THREE.AnimationAction | undefined\n idle: THREE.AnimationAction | undefined\n jump: THREE.AnimationAction | undefined\n leftRun: THREE.AnimationAction | undefined\n rightRun: THREE.AnimationAction | undefined\n hit: THREE.AnimationAction | undefined\n hitSecond: THREE.AnimationAction | undefined\n getHit: THREE.AnimationAction | undefined\n roll: THREE.AnimationAction | undefined\n}\n\nexport interface PlayerInput {\n forward: boolean\n backward: boolean\n left: boolean\n right: boolean\n space: boolean\n shift: boolean\n leftClick: boolean\n rightClick: boolean\n}\n\nexport type CoordinateType = number[]\n\nexport interface VerticesType {\n [key: string]: PointsType\n}\n\nexport interface PointsType {\n points: CoordinateType\n neighBors: CoordinateType[]\n}\n\nexport interface PointsFormatObj<T> extends PointsType {\n g: null | number\n f: null | number\n prev: T | null\n}\nexport interface PointsFormatObjRecusive\n extends PointsFormatObj<PointsFormatObjRecusive> { }\n\nexport interface PointsFormatType {\n [key: string]: PointsFormatObjRecusive\n}\n"],"mappings":""}
@@ -1,4 +1,4 @@
1
- import type { CurvePath, Vector } from '@anov/3d-core';
1
+ import type { CurvePath, Vector3 } from '@anov/3d-core';
2
2
  export { RoundedCornersCurve, createRoundedCornersCurve } from './RoundedCornersCurve';
3
3
  interface RoundedCornersCurveCore {
4
4
  /**
@@ -10,4 +10,4 @@ interface RoundedCornersCurveCore {
10
10
  */
11
11
  close: boolean;
12
12
  }
13
- export type RoundedCornersCurveInterface = RoundedCornersCurveCore & CurvePath<Vector>;
13
+ export type RoundedCornersCurveInterface = RoundedCornersCurveCore & CurvePath<Vector3>;
@@ -1 +1 @@
1
- {"version":3,"names":["RoundedCornersCurve","createRoundedCornersCurve"],"sources":["../../../../src/core/Curve/RoundedCornersCurve/index.ts"],"sourcesContent":["import type { CurvePath, Vector } from '@anov/3d-core'\n\nexport { RoundedCornersCurve, createRoundedCornersCurve } from './RoundedCornersCurve'\n\ninterface RoundedCornersCurveCore {\n /**\n * 圆滑率\n */\n radius: number\n\n /**\n * 是否闭合\n */\n close: boolean\n}\n\nexport type RoundedCornersCurveInterface = RoundedCornersCurveCore & CurvePath<Vector>"],"mappings":"AAEA,SAASA,mBAAmB,EAAEC,yBAAyB"}
1
+ {"version":3,"names":["RoundedCornersCurve","createRoundedCornersCurve"],"sources":["../../../../src/core/Curve/RoundedCornersCurve/index.ts"],"sourcesContent":["import type { CurvePath, Vector3 } from '@anov/3d-core'\n\nexport { RoundedCornersCurve, createRoundedCornersCurve } from './RoundedCornersCurve'\n\ninterface RoundedCornersCurveCore {\n /**\n * 圆滑率\n */\n radius: number\n\n /**\n * 是否闭合\n */\n close: boolean\n}\n\nexport type RoundedCornersCurveInterface = RoundedCornersCurveCore & CurvePath<Vector3>"],"mappings":"AAEA,SAASA,mBAAmB,EAAEC,yBAAyB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anov/3d-ability",
3
- "version": "0.0.120",
3
+ "version": "0.0.121",
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.66"
19
+ "@anov/3d-core": "^0.0.67"
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.66"
39
+ "@anov/3d-core": "^0.0.67"
40
40
  },
41
41
  "scripts": {
42
42
  "build": "father build",