@anov/3d-ability 0.0.74 → 0.0.75
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -13,7 +13,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
13
13
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
14
14
|
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); }
|
|
15
15
|
import { Box3, Color, Group, MeshBasicMaterial, Object3D, Vector3, gsap } from '@anov/3d-core';
|
|
16
|
-
import {
|
|
16
|
+
import { injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToRealFade } from "./inject";
|
|
17
17
|
/**
|
|
18
18
|
* 材质切换系统
|
|
19
19
|
*/
|
|
@@ -143,7 +143,6 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
|
|
|
143
143
|
this.objectMap.get('Frame').add(frameObject);
|
|
144
144
|
object.traverse(function (child) {
|
|
145
145
|
if (child.type === 'Mesh') {
|
|
146
|
-
disposeMaterial(child.material);
|
|
147
146
|
var newMaterial = new MeshBasicMaterial({
|
|
148
147
|
color: new Color('#fff'),
|
|
149
148
|
transparent: true,
|
|
@@ -154,6 +153,7 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
|
|
|
154
153
|
child.material = newMaterial;
|
|
155
154
|
}
|
|
156
155
|
});
|
|
156
|
+
object.userData.old = oldObject;
|
|
157
157
|
this.uniforms.maxSize.value = this.getMaxSize();
|
|
158
158
|
}
|
|
159
159
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Box3","Color","Group","MeshBasicMaterial","Object3D","Vector3","gsap","disposeMaterial","injectToBaseWrite","injectToFinirMaterial","injectToFrameFade","injectToRealFade","MaterialSwitchSystem","_Object3D","_inherits","_super","_createSuper","objects","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","progress","value","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","Map","generate","_createClass","key","uniforms","oldObject","finalObject","frameObject","pureObject","realObject","add","objectMap","set","switchType","type","_this$frame","_this2","frame","kill","forEach","object","visible","get","concat","to","duration","ease","onComplete","dispatchEvent","style","addObject","push","clone","generateRealObject","generateFinalObject","generatePureObject","generateFrameObject","traverse","child","material","newMaterial","color","transparent","depthTest","depthWrite","opacity","getMaxSize","removeObject","splice","indexOf","cloneGroup","children","userData","entityParams","id","remove","box3","setFromObject","size","getSize","Math","max","x","z"],"sources":["../../../src/business/MaterialSwitch/MaterialSwitchSystem.ts"],"sourcesContent":["import { Box3, Color, Group, MeshBasicMaterial, Object3D, Vector3, gsap } from '@anov/3d-core'\nimport { disposeMaterial, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToRealFade } from './inject'\nimport type { MaterialSwitchSystemInterface } from '.'\n\ntype MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure'\n\n/**\n * 材质切换系统\n */\nexport class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {\n public type: MaterialSwitchType = 'Real'\n\n private objects: Object3D[] = []\n private frame: gsap.core.Tween | null = null\n private box3 = new Box3()\n\n public uniforms = {\n progress: { value: 0.0 },\n isFresnelFadeIn: { value: false },\n isRealFadeIn: { value: false },\n isPureFadeIn: { value: false },\n isFrameFadeIn: { value: false },\n maxSize: { value: 0 },\n }\n\n private objectMap = new Map<string, Object3D>()\n\n constructor(objects: Object3D[]) {\n super()\n\n this.objects = objects\n this.generate()\n }\n\n private generate() {\n this.uniforms.progress.value = 1.0\n\n this.uniforms.isRealFadeIn.value = true\n this.uniforms.isFresnelFadeIn.value = false\n this.uniforms.isPureFadeIn.value = false\n this.uniforms.isFrameFadeIn.value = false\n\n const oldObject = new Group()\n const finalObject = new Group()\n const frameObject = new Group()\n const pureObject = new Group()\n const realObject = new Group()\n\n this.add(oldObject)\n this.add(finalObject)\n this.add(frameObject)\n this.add(pureObject)\n this.add(realObject)\n\n this.objectMap.set('Fresnel', finalObject)\n this.objectMap.set('Pure', pureObject)\n this.objectMap.set('Frame', frameObject)\n this.objectMap.set('Real', realObject)\n this.objectMap.set('Old', oldObject)\n }\n\n /**\n * switch type\n * @param type\n */\n public switchType(type: MaterialSwitchType) {\n if (this.type === type)\n return\n\n this.frame?.kill()\n\n this.objectMap.forEach((object) => {\n object.visible = false\n })\n\n this.objectMap.get(type).visible = true\n this.objectMap.get(this.type).visible = true\n\n this.uniforms.progress.value = 0.0\n this.uniforms[`is${this.type}FadeIn`].value = false\n this.uniforms[`is${type}FadeIn`].value = true\n\n this.frame = gsap.to(this.uniforms.progress, {\n value: 1.0,\n duration: 2.0,\n ease: 'linear',\n onComplete: () => {\n if (type === 'Real') {\n this.objectMap.get('Old').visible = true\n this.objectMap.get('Real').visible = false\n }\n\n this.dispatchEvent({\n type: 'onStyleChanged',\n style: type,\n })\n },\n })\n\n this.type = type\n }\n\n /**\n * add object\n * @param object\n */\n public addObject(object: Object3D) {\n if (this.type === 'Real') {\n this.objectMap.get('Old').visible = true\n this.objectMap.get('Real').visible = false\n }\n\n this.objects.push(object)\n\n const oldObject = object.clone()\n this.objectMap.get('Old').add(oldObject)\n\n const realObject = object.clone()\n this.generateRealObject(realObject)\n this.objectMap.get('Real').add(realObject)\n\n const finalObject = object.clone()\n this.generateFinalObject(finalObject)\n this.objectMap.get('Fresnel').add(finalObject)\n\n const pureObject = object.clone()\n this.generatePureObject(pureObject)\n this.objectMap.get('Pure').add(pureObject)\n\n const frameObject = object.clone()\n this.generateFrameObject(frameObject)\n this.objectMap.get('Frame').add(frameObject)\n\n object.traverse((child: any) => {\n if (child.type === 'Mesh') {\n disposeMaterial(child.material)\n const newMaterial = new MeshBasicMaterial({ color: new Color('#fff'), transparent: true, depthTest: false, depthWrite: false, opacity: 0 })\n child.material = newMaterial\n }\n })\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n /**\n * remove object\n * @param object\n */\n public removeObject(object: Object3D) {\n this.objects.splice(this.objects.indexOf(object), 1)\n\n this.objectMap.forEach((cloneGroup) => {\n cloneGroup.children.forEach((child) => {\n if (child.userData.entityParams.id === object.userData.entityParams.id)\n cloneGroup.remove(child)\n })\n })\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n /**\n * get max size\n * @param object\n * @returns\n */\n private getMaxSize() {\n this.box3.setFromObject(this.objectMap.get('Real'))\n const size = this.box3.getSize(new Vector3())\n const maxSize = Math.max(size.x, size.z)\n return maxSize\n }\n\n /**\n * generate final object\n * @param object\n */\n private generateFinalObject(object: Object3D) {\n injectToFinirMaterial(object, this.uniforms)\n }\n\n /**\n * generate real object\n * @param object\n */\n private generateRealObject(object: Object3D) {\n injectToRealFade(object, this.uniforms)\n }\n\n /**\n * generate pure object\n * @param object\n */\n private generatePureObject(object: Object3D) {\n injectToBaseWrite(object, this.uniforms)\n }\n\n /**\n * generate frame object\n * @param object\n */\n private generateFrameObject(object: Object3D) {\n injectToFrameFade(object, this.uniforms)\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Box3","Color","Group","MeshBasicMaterial","Object3D","Vector3","gsap","injectToBaseWrite","injectToFinirMaterial","injectToFrameFade","injectToRealFade","MaterialSwitchSystem","_Object3D","_inherits","_super","_createSuper","objects","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","progress","value","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","Map","generate","_createClass","key","uniforms","oldObject","finalObject","frameObject","pureObject","realObject","add","objectMap","set","switchType","type","_this$frame","_this2","frame","kill","forEach","object","visible","get","concat","to","duration","ease","onComplete","dispatchEvent","style","addObject","push","clone","generateRealObject","generateFinalObject","generatePureObject","generateFrameObject","traverse","child","newMaterial","color","transparent","depthTest","depthWrite","opacity","material","userData","old","getMaxSize","removeObject","splice","indexOf","cloneGroup","children","entityParams","id","remove","box3","setFromObject","size","getSize","Math","max","x","z"],"sources":["../../../src/business/MaterialSwitch/MaterialSwitchSystem.ts"],"sourcesContent":["import { Box3, Color, Group, MeshBasicMaterial, Object3D, Vector3, gsap } from '@anov/3d-core'\nimport { disposeMaterial, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToRealFade } from './inject'\nimport type { MaterialSwitchSystemInterface } from '.'\n\ntype MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure'\n\n/**\n * 材质切换系统\n */\nexport class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {\n public type: MaterialSwitchType = 'Real'\n\n private objects: Object3D[] = []\n private frame: gsap.core.Tween | null = null\n private box3 = new Box3()\n\n public uniforms = {\n progress: { value: 0.0 },\n isFresnelFadeIn: { value: false },\n isRealFadeIn: { value: false },\n isPureFadeIn: { value: false },\n isFrameFadeIn: { value: false },\n maxSize: { value: 0 },\n }\n\n private objectMap = new Map<string, Object3D>()\n\n constructor(objects: Object3D[]) {\n super()\n\n this.objects = objects\n this.generate()\n }\n\n private generate() {\n this.uniforms.progress.value = 1.0\n\n this.uniforms.isRealFadeIn.value = true\n this.uniforms.isFresnelFadeIn.value = false\n this.uniforms.isPureFadeIn.value = false\n this.uniforms.isFrameFadeIn.value = false\n\n const oldObject = new Group()\n const finalObject = new Group()\n const frameObject = new Group()\n const pureObject = new Group()\n const realObject = new Group()\n\n this.add(oldObject)\n this.add(finalObject)\n this.add(frameObject)\n this.add(pureObject)\n this.add(realObject)\n\n this.objectMap.set('Fresnel', finalObject)\n this.objectMap.set('Pure', pureObject)\n this.objectMap.set('Frame', frameObject)\n this.objectMap.set('Real', realObject)\n this.objectMap.set('Old', oldObject)\n }\n\n /**\n * switch type\n * @param type\n */\n public switchType(type: MaterialSwitchType) {\n if (this.type === type)\n return\n\n this.frame?.kill()\n\n this.objectMap.forEach((object) => {\n object.visible = false\n })\n\n this.objectMap.get(type).visible = true\n this.objectMap.get(this.type).visible = true\n\n this.uniforms.progress.value = 0.0\n this.uniforms[`is${this.type}FadeIn`].value = false\n this.uniforms[`is${type}FadeIn`].value = true\n\n this.frame = gsap.to(this.uniforms.progress, {\n value: 1.0,\n duration: 2.0,\n ease: 'linear',\n onComplete: () => {\n if (type === 'Real') {\n this.objectMap.get('Old').visible = true\n this.objectMap.get('Real').visible = false\n }\n\n this.dispatchEvent({\n type: 'onStyleChanged',\n style: type,\n })\n },\n })\n\n this.type = type\n }\n\n /**\n * add object\n * @param object\n */\n public addObject(object: Object3D) {\n if (this.type === 'Real') {\n this.objectMap.get('Old').visible = true\n this.objectMap.get('Real').visible = false\n }\n\n this.objects.push(object)\n\n const oldObject = object.clone()\n this.objectMap.get('Old').add(oldObject)\n\n const realObject = object.clone()\n this.generateRealObject(realObject)\n this.objectMap.get('Real').add(realObject)\n\n const finalObject = object.clone()\n this.generateFinalObject(finalObject)\n this.objectMap.get('Fresnel').add(finalObject)\n\n const pureObject = object.clone()\n this.generatePureObject(pureObject)\n this.objectMap.get('Pure').add(pureObject)\n\n const frameObject = object.clone()\n this.generateFrameObject(frameObject)\n this.objectMap.get('Frame').add(frameObject)\n\n object.traverse((child: any) => {\n if (child.type === 'Mesh') {\n const newMaterial = new MeshBasicMaterial({ color: new Color('#fff'), transparent: true, depthTest: false, depthWrite: false, opacity: 0 })\n child.material = newMaterial\n }\n })\n\n object.userData.old = oldObject\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n /**\n * remove object\n * @param object\n */\n public removeObject(object: Object3D) {\n this.objects.splice(this.objects.indexOf(object), 1)\n\n this.objectMap.forEach((cloneGroup) => {\n cloneGroup.children.forEach((child) => {\n if (child.userData.entityParams.id === object.userData.entityParams.id)\n cloneGroup.remove(child)\n })\n })\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n /**\n * get max size\n * @param object\n * @returns\n */\n private getMaxSize() {\n this.box3.setFromObject(this.objectMap.get('Real'))\n const size = this.box3.getSize(new Vector3())\n const maxSize = Math.max(size.x, size.z)\n return maxSize\n }\n\n /**\n * generate final object\n * @param object\n */\n private generateFinalObject(object: Object3D) {\n injectToFinirMaterial(object, this.uniforms)\n }\n\n /**\n * generate real object\n * @param object\n */\n private generateRealObject(object: Object3D) {\n injectToRealFade(object, this.uniforms)\n }\n\n /**\n * generate pure object\n * @param object\n */\n private generatePureObject(object: Object3D) {\n injectToBaseWrite(object, this.uniforms)\n }\n\n /**\n * generate frame object\n * @param object\n */\n private generateFrameObject(object: Object3D) {\n injectToFrameFade(object, this.uniforms)\n }\n}\n"],"mappings":"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"}
|