UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

101 lines (100 loc) 3.21 kB
"use strict"; import { Vector3 } from "three"; import { getClothControllerNodeFromWorldObject } from "../nodes/sop/ClothSolver"; import { NamedFunction9, ObjectNamedFunction0, ObjectNamedFunction1, ObjectNamedFunction2, ObjectNamedFunction5 } from "./_Base"; import { clothSolverStepSimulation as _clothSolverStepSimulation, clothSolverUpdateMaterial as _clothSolverUpdateMaterial } from "../../core/cloth/ClothSolver"; import { clothControllerFromObject } from "../../core/cloth/ClothControllerRegister"; const _v3 = new Vector3(); export class clothSolverReset extends ObjectNamedFunction0 { static type() { return "clothSolverReset"; } func(object3D) { const clothSolverNode = getClothControllerNodeFromWorldObject(object3D, this.scene); if (!clothSolverNode) { return; } clothSolverNode.setDirty(); } } let uniformConfig; let uniformNameConfig; export class clothSolverStepSimulation extends ObjectNamedFunction5 { static type() { return "clothSolverStepSimulation"; } func(object3D, stepsCount, constraintInfluence, viscosity, spring, uniformConfigRef) { _clothSolverStepSimulation(object3D, stepsCount, constraintInfluence, viscosity, spring, uniformConfigRef); } } export class clothSolverUpdateMaterial extends NamedFunction9 { static type() { return "clothSolverUpdateMaterial"; } func(material, tSizeName, tPosition0Name, tPosition1Name, tNormalName, tSize, tPosition0, tPosition1, tNormal) { uniformConfig = uniformConfig || { tSize, tPosition0, tPosition1, tNormal }; uniformConfig.tSize = tSize; uniformConfig.tPosition0 = tPosition0; uniformConfig.tPosition1 = tPosition1; uniformConfig.tNormal = tNormal; uniformNameConfig = uniformNameConfig || { tSize: tSizeName, tPosition0: tPosition0Name, tPosition1: tPosition1Name, tNormal: tNormalName }; uniformNameConfig.tSize = tSizeName; uniformNameConfig.tPosition0 = tPosition0Name; uniformNameConfig.tPosition1 = tPosition1Name; uniformNameConfig.tNormal = tNormalName; _clothSolverUpdateMaterial(material, uniformConfig, uniformNameConfig); } } export class clothCreateConstraint extends ObjectNamedFunction1 { static type() { return "clothCreateConstraint"; } func(object3D, index) { const controller = clothControllerFromObject(object3D); if (controller) { controller.createConstraint(index); } } } export class clothDeleteConstraint extends ObjectNamedFunction0 { static type() { return "clothDeleteConstraint"; } func(object3D) { const controller = clothControllerFromObject(object3D); if (controller) { controller.deleteConstraint(); } } } export class clothConstraintSetPosition extends ObjectNamedFunction2 { static type() { return "clothConstraintSetPosition"; } func(object3D, position, lerp) { const controller = clothControllerFromObject(object3D); if (controller) { if (lerp >= 1) { controller.setConstraintPosition(position); } else { controller.constraintPosition(_v3); _v3.lerp(position, lerp); controller.setConstraintPosition(position); } } } }