From a300b413e2b56c6b1fbcada214092289285438d7 Mon Sep 17 00:00:00 2001 From: Yuki Shimada Date: Sun, 20 Aug 2023 02:12:46 +0900 Subject: [PATCH] refactor: move VRMSpring classes --- .../components/Physics/PhysicsComponent.ts | 2 +- src/foundation/importer/Vrm0xImporter.ts | 25 +++++++++---------- src/foundation/importer/VrmImporter.ts | 12 ++++----- src/foundation/physics/PhysicsStrategy.ts | 2 +- .../{ => VRMSpring}/CapsuleCollider.ts | 4 +-- .../physics/{ => VRMSpring}/SphereCollider.ts | 4 +-- .../{ => VRMSpring}/VRMColliderGroup.ts | 0 .../physics/{ => VRMSpring}/VRMSpring.ts | 8 +++--- .../physics/{ => VRMSpring}/VRMSpringBone.ts | 15 +++++------ .../VRMSpringBonePhysicsStrategy.ts | 20 +++++++-------- src/foundation/physics/VRMSpring/index.ts | 6 +++++ src/foundation/physics/index.ts | 3 --- 12 files changed, 52 insertions(+), 49 deletions(-) rename src/foundation/physics/{ => VRMSpring}/CapsuleCollider.ts (90%) rename src/foundation/physics/{ => VRMSpring}/SphereCollider.ts (79%) rename src/foundation/physics/{ => VRMSpring}/VRMColliderGroup.ts (100%) rename src/foundation/physics/{ => VRMSpring}/VRMSpring.ts (60%) rename src/foundation/physics/{ => VRMSpring}/VRMSpringBone.ts (69%) rename src/foundation/physics/{ => VRMSpring}/VRMSpringBonePhysicsStrategy.ts (91%) create mode 100644 src/foundation/physics/VRMSpring/index.ts diff --git a/src/foundation/components/Physics/PhysicsComponent.ts b/src/foundation/components/Physics/PhysicsComponent.ts index 7cfa51792..6f1987b1f 100644 --- a/src/foundation/components/Physics/PhysicsComponent.ts +++ b/src/foundation/components/Physics/PhysicsComponent.ts @@ -4,7 +4,7 @@ import { applyMixins, EntityRepository } from '../../core/EntityRepository'; import { WellKnownComponentTIDs } from '../WellKnownComponentTIDs'; import { ProcessStage } from '../../definitions/ProcessStage'; import { ComponentTID, ComponentSID, EntityUID } from '../../../types/CommonTypes'; -import { VRMSpringBonePhysicsStrategy } from '../../physics/VRMSpringBonePhysicsStrategy'; +import { VRMSpringBonePhysicsStrategy } from '../../physics/VRMSpring/VRMSpringBonePhysicsStrategy'; import { PhysicsStrategy } from '../../physics/PhysicsStrategy'; import { IEntity } from '../../core/Entity'; import { ComponentToComponentMethods } from '../ComponentTypes'; diff --git a/src/foundation/importer/Vrm0xImporter.ts b/src/foundation/importer/Vrm0xImporter.ts index 4ddb28f19..40420418e 100644 --- a/src/foundation/importer/Vrm0xImporter.ts +++ b/src/foundation/importer/Vrm0xImporter.ts @@ -7,17 +7,17 @@ import { GltfLoadOption, RnM2 } from '../../types'; import { RenderPass } from '../renderer/RenderPass'; import { Texture } from '../textures/Texture'; import { EntityRepository } from '../core/EntityRepository'; -import { VRMSpringBonePhysicsStrategy } from '../physics/VRMSpringBonePhysicsStrategy'; +import { VRMSpringBonePhysicsStrategy } from '../physics/VRMSpring/VRMSpringBonePhysicsStrategy'; import { PhysicsComponent } from '../components/Physics/PhysicsComponent'; import { SceneGraphComponent } from '../components/SceneGraph/SceneGraphComponent'; -import { SphereCollider } from '../physics/SphereCollider'; +import { SphereCollider } from '../physics/VRMSpring/SphereCollider'; import { Vector3 } from '../math/Vector3'; -import { VRMColliderGroup } from '../physics/VRMColliderGroup'; -import { VRMSpring } from '../physics/VRMSpring'; +import { VRMColliderGroup } from '../physics/VRMSpring/VRMColliderGroup'; +import { VRMSpring } from '../physics/VRMSpring/VRMSpring'; import { assertIsOk, Err, IResult, Ok } from '../misc/Result'; import { VrmComponent, VrmExpression } from '../components/Vrm/VrmComponent'; import { Sampler } from '../textures/Sampler'; -import { VRMSpringBone } from '../physics/VRMSpringBone'; +import { VRMSpringBone } from '../physics/VRMSpring/VRMSpringBone'; /** * The VRM Importer class. @@ -234,18 +234,20 @@ export class Vrm0xImporter { this.__addSpringBoneRecursively(vrmSpringBoneGroup, entity, boneGroup, addedEntities); } - - boneGroups.push(vrmSpringBoneGroup); } for (const boneGroup of boneGroups) { this.__addPhysicsComponent(boneGroup, boneGroup.rootBone); } - } - private static __addSpringBoneRecursively(vrmSpring: VRMSpring, entity: ISceneGraphEntity, boneGroup: Vrm0xBoneGroup, addedEntities: ISceneGraphEntity[]): void { + private static __addSpringBoneRecursively( + vrmSpring: VRMSpring, + entity: ISceneGraphEntity, + boneGroup: Vrm0xBoneGroup, + addedEntities: ISceneGraphEntity[] + ): void { const sg = entity.getSceneGraph(); const children = sg.children; @@ -269,10 +271,7 @@ export class Vrm0xImporter { } } - private static __addPhysicsComponent( - boneGroup: VRMSpring, - sg: SceneGraphComponent - ): void { + private static __addPhysicsComponent(boneGroup: VRMSpring, sg: SceneGraphComponent): void { const entity = sg.entity; const newEntity = EntityRepository.addComponentToEntity(PhysicsComponent, entity); const physicsComponent = newEntity.getPhysics(); diff --git a/src/foundation/importer/VrmImporter.ts b/src/foundation/importer/VrmImporter.ts index fadd8c7ca..ca3f989a9 100644 --- a/src/foundation/importer/VrmImporter.ts +++ b/src/foundation/importer/VrmImporter.ts @@ -6,20 +6,20 @@ import { GltfLoadOption, RnM2, Vrm0x, Vrm0xMaterialProperty } from '../../types' import { RenderPass } from '../renderer/RenderPass'; import { Texture } from '../textures/Texture'; import { EntityRepository } from '../core/EntityRepository'; -import { VRMSpringBonePhysicsStrategy } from '../physics/VRMSpringBonePhysicsStrategy'; +import { VRMSpringBonePhysicsStrategy } from '../physics/VRMSpring/VRMSpringBonePhysicsStrategy'; import { PhysicsComponent } from '../components/Physics/PhysicsComponent'; import { SceneGraphComponent } from '../components/SceneGraph/SceneGraphComponent'; -import { SphereCollider } from '../physics/SphereCollider'; +import { SphereCollider } from '../physics/VRMSpring/SphereCollider'; import { Vector3 } from '../math/Vector3'; -import { VRMColliderGroup } from '../physics/VRMColliderGroup'; -import { VRMSpring } from '../physics/VRMSpring'; +import { VRMColliderGroup } from '../physics/VRMSpring/VRMColliderGroup'; +import { VRMSpring } from '../physics/VRMSpring/VRMSpring'; import { Vrm1, Vrm1SpringBone_Joint, Vrm1_Materials_MToon } from '../../types/VRM1'; import { assertIsOk, Err, IResult, Ok } from '../misc/Result'; import { Gltf2Importer } from './Gltf2Importer'; import { Sampler } from '../textures/Sampler'; import { VrmComponent, VrmExpression, VrmExpressionMorphBind } from '../components'; -import { VRMSpringBone } from '../physics/VRMSpringBone'; -import { CapsuleCollider } from '../physics/CapsuleCollider'; +import { VRMSpringBone } from '../physics/VRMSpring/VRMSpringBone'; +import { CapsuleCollider } from '../physics/VRMSpring/CapsuleCollider'; import { ConstraintComponent } from '../components/Constraint'; import { VrmRollConstraint } from '../constraints/VrmRollConstraint'; import { VrmAimConstraint } from '../constraints/VrmAimConstraint'; diff --git a/src/foundation/physics/PhysicsStrategy.ts b/src/foundation/physics/PhysicsStrategy.ts index 18849e7c4..43a23668b 100644 --- a/src/foundation/physics/PhysicsStrategy.ts +++ b/src/foundation/physics/PhysicsStrategy.ts @@ -1,4 +1,4 @@ -import { VRMSpring } from "./VRMSpring"; +import { VRMSpring } from './VRMSpring/VRMSpring'; export interface PhysicsStrategy { update(): void; diff --git a/src/foundation/physics/CapsuleCollider.ts b/src/foundation/physics/VRMSpring/CapsuleCollider.ts similarity index 90% rename from src/foundation/physics/CapsuleCollider.ts rename to src/foundation/physics/VRMSpring/CapsuleCollider.ts index 8f0c9e1f7..5d96aa142 100644 --- a/src/foundation/physics/CapsuleCollider.ts +++ b/src/foundation/physics/VRMSpring/CapsuleCollider.ts @@ -1,5 +1,5 @@ -import { SceneGraphComponent } from '../components/SceneGraph/SceneGraphComponent'; -import { Vector3 } from '../math/Vector3'; +import { SceneGraphComponent } from '../../components/SceneGraph/SceneGraphComponent'; +import { Vector3 } from '../../math/Vector3'; export class CapsuleCollider { public position = Vector3.zero(); diff --git a/src/foundation/physics/SphereCollider.ts b/src/foundation/physics/VRMSpring/SphereCollider.ts similarity index 79% rename from src/foundation/physics/SphereCollider.ts rename to src/foundation/physics/VRMSpring/SphereCollider.ts index 598173510..942bbce33 100644 --- a/src/foundation/physics/SphereCollider.ts +++ b/src/foundation/physics/VRMSpring/SphereCollider.ts @@ -1,5 +1,5 @@ -import { SceneGraphComponent } from '../components/SceneGraph/SceneGraphComponent'; -import { Vector3 } from '../math/Vector3'; +import { SceneGraphComponent } from '../../components/SceneGraph/SceneGraphComponent'; +import { Vector3 } from '../../math/Vector3'; export class SphereCollider { public position = Vector3.zero(); diff --git a/src/foundation/physics/VRMColliderGroup.ts b/src/foundation/physics/VRMSpring/VRMColliderGroup.ts similarity index 100% rename from src/foundation/physics/VRMColliderGroup.ts rename to src/foundation/physics/VRMSpring/VRMColliderGroup.ts diff --git a/src/foundation/physics/VRMSpring.ts b/src/foundation/physics/VRMSpring/VRMSpring.ts similarity index 60% rename from src/foundation/physics/VRMSpring.ts rename to src/foundation/physics/VRMSpring/VRMSpring.ts index a25d281b7..5f268f85a 100644 --- a/src/foundation/physics/VRMSpring.ts +++ b/src/foundation/physics/VRMSpring/VRMSpring.ts @@ -1,7 +1,7 @@ -import { Vector3 } from '../math/Vector3'; -import { SceneGraphComponent } from '../components/SceneGraph/SceneGraphComponent'; -import { RnObject } from '../core/RnObject'; -import { Index } from '../../types/CommonTypes'; +import { Vector3 } from '../../math/Vector3'; +import { SceneGraphComponent } from '../../components/SceneGraph/SceneGraphComponent'; +import { RnObject } from '../../core/RnObject'; +import { Index } from '../../../types/CommonTypes'; import { VRMSpringBone } from './VRMSpringBone'; import { VRMColliderGroup } from './VRMColliderGroup'; diff --git a/src/foundation/physics/VRMSpringBone.ts b/src/foundation/physics/VRMSpring/VRMSpringBone.ts similarity index 69% rename from src/foundation/physics/VRMSpringBone.ts rename to src/foundation/physics/VRMSpring/VRMSpringBone.ts index ab97c50cf..7cd81ec00 100644 --- a/src/foundation/physics/VRMSpringBone.ts +++ b/src/foundation/physics/VRMSpring/VRMSpringBone.ts @@ -1,8 +1,8 @@ -import { SceneGraphComponent } from "../components"; -import { RnObject } from "../core/RnObject"; -import { ISceneGraphEntity } from "../helpers/EntityHelper"; -import { IVector3, Matrix44, Quaternion } from "../math"; -import { Vector3 } from "../math/Vector3"; +import { SceneGraphComponent } from '../../components'; +import { RnObject } from '../../core/RnObject'; +import { ISceneGraphEntity } from '../../helpers/EntityHelper'; +import { IVector3, Matrix44, Quaternion } from '../../math'; +import { Vector3 } from '../../math/Vector3'; export class VRMSpringBone extends RnObject { stiffnessForce = 0.5; @@ -10,7 +10,7 @@ export class VRMSpringBone extends RnObject { gravityDir = Vector3.fromCopyArray([0, -1.0, 0]); dragForce = 0.05; hitRadius = 0.02; - node: ISceneGraphEntity + node: ISceneGraphEntity; currentTail: Vector3 = Vector3.zero(); // In World Space prevTail: Vector3 = Vector3.zero(); // In World Space @@ -29,7 +29,8 @@ export class VRMSpringBone extends RnObject { const scenegraph = this.node.getSceneGraph(); this.node.getTransform()._backupTransformAsRest(); const worldChildPosition = scenegraph.getWorldPositionOf(localChildPosition); - this.currentTail = center != null ? center.getLocalPositionOf(worldChildPosition) : worldChildPosition; + this.currentTail = + center != null ? center.getLocalPositionOf(worldChildPosition) : worldChildPosition; this.prevTail = this.currentTail.clone(); this.boneAxis = Vector3.normalize(localChildPosition); this.boneLength = localChildPosition.length(); diff --git a/src/foundation/physics/VRMSpringBonePhysicsStrategy.ts b/src/foundation/physics/VRMSpring/VRMSpringBonePhysicsStrategy.ts similarity index 91% rename from src/foundation/physics/VRMSpringBonePhysicsStrategy.ts rename to src/foundation/physics/VRMSpring/VRMSpringBonePhysicsStrategy.ts index dcb63d293..ab831d04b 100644 --- a/src/foundation/physics/VRMSpringBonePhysicsStrategy.ts +++ b/src/foundation/physics/VRMSpring/VRMSpringBonePhysicsStrategy.ts @@ -1,16 +1,16 @@ -import { Vector3 } from '../math/Vector3'; -import { MutableVector3 } from '../math/MutableVector3'; -import { SceneGraphComponent } from '../components/SceneGraph/SceneGraphComponent'; -import { Quaternion } from '../math/Quaternion'; -import { Time } from '../misc/Time'; +import { Vector3 } from '../../math/Vector3'; +import { MutableVector3 } from '../../math/MutableVector3'; +import { SceneGraphComponent } from '../../components/SceneGraph/SceneGraphComponent'; +import { Quaternion } from '../../math/Quaternion'; +import { Time } from '../../misc/Time'; import { VRMSpring } from './VRMSpring'; import { VRMColliderGroup } from './VRMColliderGroup'; -import { Index } from '../../types/CommonTypes'; -import { PhysicsStrategy } from './PhysicsStrategy'; -import { MutableQuaternion } from '../math/MutableQuaternion'; -import { Is } from '../misc/Is'; +import { Index } from '../../../types/CommonTypes'; +import { PhysicsStrategy } from '../PhysicsStrategy'; +import { MutableQuaternion } from '../../math/MutableQuaternion'; +import { Is } from '../../misc/Is'; import { VRMSpringBone } from './VRMSpringBone'; -import { Matrix44 } from '../math/Matrix44'; +import { Matrix44 } from '../../math/Matrix44'; export class VRMSpringBonePhysicsStrategy implements PhysicsStrategy { private static __tmp_vec3 = MutableVector3.zero(); diff --git a/src/foundation/physics/VRMSpring/index.ts b/src/foundation/physics/VRMSpring/index.ts new file mode 100644 index 000000000..3bdb8edcc --- /dev/null +++ b/src/foundation/physics/VRMSpring/index.ts @@ -0,0 +1,6 @@ +export * from './CapsuleCollider'; +export * from './SphereCollider'; +export * from './VRMColliderGroup'; +export * from './VRMSpring'; +export * from './VRMSpringBone'; +export * from './VRMSpringBonePhysicsStrategy'; diff --git a/src/foundation/physics/index.ts b/src/foundation/physics/index.ts index 1453cc92a..3ca064879 100644 --- a/src/foundation/physics/index.ts +++ b/src/foundation/physics/index.ts @@ -1,5 +1,2 @@ export * from './PhysicsStrategy'; -export * from './SphereCollider'; -export * from './VRMColliderGroup'; export * from './VRMSpring'; -export * from './VRMSpringBonePhysicsStrategy';