@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
101 lines (100 loc) • 3.21 kB
JavaScript
;
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);
}
}
}
}