@aura3d/physics 1.5.2 → 2.0.1
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.
- package/dist/ArcadeCharacterController.d.ts +53 -0
- package/dist/ArcadeCharacterController.d.ts.map +1 -0
- package/dist/ArcadeCharacterController.js +98 -0
- package/dist/ArcadeCharacterController.js.map +1 -0
- package/dist/{VehicleDynamics.d.ts → ArcadeVehicleTelemetry.d.ts} +14 -4
- package/dist/ArcadeVehicleTelemetry.d.ts.map +1 -0
- package/dist/{VehicleDynamics.js → ArcadeVehicleTelemetry.js} +37 -9
- package/dist/ArcadeVehicleTelemetry.js.map +1 -0
- package/dist/Constraint.d.ts +20 -4
- package/dist/Constraint.d.ts.map +1 -1
- package/dist/Constraint.js +34 -60
- package/dist/Constraint.js.map +1 -1
- package/dist/FightingCharacterController.d.ts +32 -0
- package/dist/FightingCharacterController.d.ts.map +1 -0
- package/dist/FightingCharacterController.js +76 -0
- package/dist/FightingCharacterController.js.map +1 -0
- package/dist/MeshBVH.d.ts +72 -0
- package/dist/MeshBVH.d.ts.map +1 -0
- package/dist/MeshBVH.js +244 -0
- package/dist/MeshBVH.js.map +1 -0
- package/dist/PhysicsDebugDraw.d.ts +40 -1
- package/dist/PhysicsDebugDraw.d.ts.map +1 -1
- package/dist/PhysicsDebugDraw.js +87 -17
- package/dist/PhysicsDebugDraw.js.map +1 -1
- package/dist/PhysicsWorld.d.ts +37 -18
- package/dist/PhysicsWorld.d.ts.map +1 -1
- package/dist/PhysicsWorld.js +231 -630
- package/dist/PhysicsWorld.js.map +1 -1
- package/dist/Raycast.d.ts +11 -0
- package/dist/Raycast.d.ts.map +1 -1
- package/dist/Raycast.js +62 -8
- package/dist/Raycast.js.map +1 -1
- package/dist/RigidBody.d.ts +16 -9
- package/dist/RigidBody.d.ts.map +1 -1
- package/dist/RigidBody.js +23 -75
- package/dist/RigidBody.js.map +1 -1
- package/dist/SurfaceQuery.d.ts +72 -0
- package/dist/SurfaceQuery.d.ts.map +1 -0
- package/dist/SurfaceQuery.js +89 -0
- package/dist/SurfaceQuery.js.map +1 -0
- package/dist/index.d.ts +62 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70 -17
- package/dist/index.js.map +1 -1
- package/dist/solverless.d.ts +37 -0
- package/dist/solverless.d.ts.map +1 -0
- package/dist/solverless.js +36 -0
- package/dist/solverless.js.map +1 -0
- package/dist/world.d.ts +18 -0
- package/dist/world.d.ts.map +1 -0
- package/dist/world.js +17 -0
- package/dist/world.js.map +1 -0
- package/package.json +10 -2
- package/dist/CharacterController.d.ts +0 -83
- package/dist/CharacterController.d.ts.map +0 -1
- package/dist/CharacterController.js +0 -236
- package/dist/CharacterController.js.map +0 -1
- package/dist/ClothFixtures.d.ts +0 -87
- package/dist/ClothFixtures.d.ts.map +0 -1
- package/dist/ClothFixtures.js +0 -264
- package/dist/ClothFixtures.js.map +0 -1
- package/dist/Crowd.d.ts +0 -64
- package/dist/Crowd.d.ts.map +0 -1
- package/dist/Crowd.js +0 -209
- package/dist/Crowd.js.map +0 -1
- package/dist/FireSmokeFixtures.d.ts +0 -103
- package/dist/FireSmokeFixtures.d.ts.map +0 -1
- package/dist/FireSmokeFixtures.js +0 -271
- package/dist/FireSmokeFixtures.js.map +0 -1
- package/dist/FluidFixtures.d.ts +0 -75
- package/dist/FluidFixtures.d.ts.map +0 -1
- package/dist/FluidFixtures.js +0 -219
- package/dist/FluidFixtures.js.map +0 -1
- package/dist/FractureFixtures.d.ts +0 -68
- package/dist/FractureFixtures.d.ts.map +0 -1
- package/dist/FractureFixtures.js +0 -199
- package/dist/FractureFixtures.js.map +0 -1
- package/dist/NarrowPhase.d.ts +0 -11
- package/dist/NarrowPhase.d.ts.map +0 -1
- package/dist/NarrowPhase.js +0 -565
- package/dist/NarrowPhase.js.map +0 -1
- package/dist/Navigation.d.ts +0 -67
- package/dist/Navigation.d.ts.map +0 -1
- package/dist/Navigation.js +0 -261
- package/dist/Navigation.js.map +0 -1
- package/dist/PhysicsSandboxFixtures.d.ts +0 -53
- package/dist/PhysicsSandboxFixtures.d.ts.map +0 -1
- package/dist/PhysicsSandboxFixtures.js +0 -280
- package/dist/PhysicsSandboxFixtures.js.map +0 -1
- package/dist/PlatformerFixtures.d.ts +0 -70
- package/dist/PlatformerFixtures.d.ts.map +0 -1
- package/dist/PlatformerFixtures.js +0 -120
- package/dist/PlatformerFixtures.js.map +0 -1
- package/dist/SoftBodyFixtures.d.ts +0 -70
- package/dist/SoftBodyFixtures.d.ts.map +0 -1
- package/dist/SoftBodyFixtures.js +0 -272
- package/dist/SoftBodyFixtures.js.map +0 -1
- package/dist/Steering.d.ts +0 -161
- package/dist/Steering.d.ts.map +0 -1
- package/dist/Steering.js +0 -347
- package/dist/Steering.js.map +0 -1
- package/dist/VehicleDynamics.d.ts.map +0 -1
- package/dist/VehicleDynamics.js.map +0 -1
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import type { Collider } from "./Collider.js";
|
|
2
|
-
import { KinematicBody, type KinematicBodyDescriptor, type KinematicBodyEvent, type KinematicBodySnapshot, type KinematicStepOptions } from "./KinematicBody.js";
|
|
3
|
-
import type { PhysicsWorld } from "./PhysicsWorld.js";
|
|
4
|
-
import type { RigidBody } from "./RigidBody.js";
|
|
5
|
-
import { type Vec3 } from "./Shape.js";
|
|
6
|
-
export type CharacterControllerDescriptor = {
|
|
7
|
-
readonly position?: Vec3;
|
|
8
|
-
readonly radius?: number;
|
|
9
|
-
readonly halfHeight?: number;
|
|
10
|
-
readonly maxSpeed?: number;
|
|
11
|
-
readonly acceleration?: number;
|
|
12
|
-
readonly jumpSpeed?: number;
|
|
13
|
-
readonly groundProbeDistance?: number;
|
|
14
|
-
readonly maxSlopeAngleRadians?: number;
|
|
15
|
-
readonly collisionMask?: number;
|
|
16
|
-
};
|
|
17
|
-
export type CharacterControllerMoveInput = {
|
|
18
|
-
readonly x: number;
|
|
19
|
-
readonly z?: number;
|
|
20
|
-
};
|
|
21
|
-
export type CharacterControllerState = {
|
|
22
|
-
readonly grounded: boolean;
|
|
23
|
-
readonly groundNormal: Vec3;
|
|
24
|
-
readonly groundColliderId: number | null;
|
|
25
|
-
readonly desiredVelocity: Vec3;
|
|
26
|
-
readonly velocity: Vec3;
|
|
27
|
-
readonly speed: number;
|
|
28
|
-
readonly jumpedThisFrame: boolean;
|
|
29
|
-
};
|
|
30
|
-
export type FightingCharacterControllerState = "idle" | "walk" | "dash" | "jump" | "fast-fall" | "crouch" | "landing";
|
|
31
|
-
export type FightingCharacterControllerDescriptor = KinematicBodyDescriptor & {
|
|
32
|
-
readonly walkSpeed?: number;
|
|
33
|
-
readonly crouchSpeed?: number;
|
|
34
|
-
readonly fastFallSpeed?: number;
|
|
35
|
-
};
|
|
36
|
-
export type FightingCharacterControllerSnapshot = KinematicBodySnapshot & {
|
|
37
|
-
readonly state: FightingCharacterControllerState;
|
|
38
|
-
readonly walkSpeed: number;
|
|
39
|
-
readonly crouchSpeed: number;
|
|
40
|
-
readonly fastFallSpeed: number;
|
|
41
|
-
};
|
|
42
|
-
export declare class FightingCharacterController {
|
|
43
|
-
readonly body: KinematicBody;
|
|
44
|
-
readonly walkSpeed: number;
|
|
45
|
-
readonly crouchSpeed: number;
|
|
46
|
-
readonly fastFallSpeed: number;
|
|
47
|
-
private state;
|
|
48
|
-
constructor(descriptor?: FightingCharacterControllerDescriptor);
|
|
49
|
-
walk(direction: number, speed?: number): void;
|
|
50
|
-
stop(): void;
|
|
51
|
-
jump(): void;
|
|
52
|
-
dash(direction?: number): void;
|
|
53
|
-
fastFall(speed?: number): void;
|
|
54
|
-
crouch(active?: boolean): void;
|
|
55
|
-
step(dt: number, options?: KinematicStepOptions): readonly KinematicBodyEvent[];
|
|
56
|
-
snapshot(): FightingCharacterControllerSnapshot;
|
|
57
|
-
private deriveState;
|
|
58
|
-
}
|
|
59
|
-
export declare function createFightingCharacterController(descriptor?: FightingCharacterControllerDescriptor): FightingCharacterController;
|
|
60
|
-
export declare class CharacterController {
|
|
61
|
-
private readonly world;
|
|
62
|
-
readonly body: RigidBody;
|
|
63
|
-
readonly collider: Collider;
|
|
64
|
-
readonly radius: number;
|
|
65
|
-
readonly halfHeight: number;
|
|
66
|
-
readonly maxSpeed: number;
|
|
67
|
-
readonly acceleration: number;
|
|
68
|
-
readonly jumpSpeed: number;
|
|
69
|
-
readonly groundProbeDistance: number;
|
|
70
|
-
readonly maxSlopeAngleRadians: number;
|
|
71
|
-
private readonly collisionMask;
|
|
72
|
-
private moveInput;
|
|
73
|
-
private jumpQueued;
|
|
74
|
-
private state;
|
|
75
|
-
constructor(world: PhysicsWorld, descriptor?: CharacterControllerDescriptor);
|
|
76
|
-
setMoveInput(input: CharacterControllerMoveInput): void;
|
|
77
|
-
jump(): void;
|
|
78
|
-
teleport(position: Vec3): void;
|
|
79
|
-
step(dt: number): CharacterControllerState;
|
|
80
|
-
snapshot(): CharacterControllerState;
|
|
81
|
-
private probeGround;
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=CharacterController.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CharacterController.d.ts","sourceRoot":"","sources":["../../../../packages/physics/src/CharacterController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
import { KinematicBody } from "./KinematicBody.js";
|
|
2
|
-
import { Shape, normalizeVec3 } from "./Shape.js";
|
|
3
|
-
export class FightingCharacterController {
|
|
4
|
-
body;
|
|
5
|
-
walkSpeed;
|
|
6
|
-
crouchSpeed;
|
|
7
|
-
fastFallSpeed;
|
|
8
|
-
state = "idle";
|
|
9
|
-
constructor(descriptor = {}) {
|
|
10
|
-
this.walkSpeed = positiveFinite(descriptor.walkSpeed ?? descriptor.maxSpeed ?? 4.5, "fighting controller walkSpeed");
|
|
11
|
-
this.crouchSpeed = positiveFinite(descriptor.crouchSpeed ?? this.walkSpeed * 0.45, "fighting controller crouchSpeed");
|
|
12
|
-
this.fastFallSpeed = positiveFinite(descriptor.fastFallSpeed ?? descriptor.maxFallSpeed ?? 20, "fighting controller fastFallSpeed");
|
|
13
|
-
this.body = new KinematicBody({
|
|
14
|
-
...descriptor,
|
|
15
|
-
id: descriptor.id ?? "fighter",
|
|
16
|
-
halfExtents: descriptor.halfExtents ?? [0.32, 0.9, 0.25],
|
|
17
|
-
maxSpeed: descriptor.maxSpeed ?? this.walkSpeed,
|
|
18
|
-
acceleration: descriptor.acceleration ?? 54,
|
|
19
|
-
airAcceleration: descriptor.airAcceleration ?? 24,
|
|
20
|
-
groundFriction: descriptor.groundFriction ?? 56,
|
|
21
|
-
airFriction: descriptor.airFriction ?? 4,
|
|
22
|
-
gravity: descriptor.gravity ?? 26,
|
|
23
|
-
jumpSpeed: descriptor.jumpSpeed ?? 9.4,
|
|
24
|
-
maxFallSpeed: descriptor.maxFallSpeed ?? Math.max(this.fastFallSpeed, 20),
|
|
25
|
-
dashSpeed: descriptor.dashSpeed ?? 8.6,
|
|
26
|
-
dashDuration: descriptor.dashDuration ?? 0.12,
|
|
27
|
-
dashCooldown: descriptor.dashCooldown ?? 0.18,
|
|
28
|
-
groundSnapDistance: descriptor.groundSnapDistance ?? 0.06,
|
|
29
|
-
lockDepth: descriptor.lockDepth ?? true
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
walk(direction, speed) {
|
|
33
|
-
const magnitude = Math.min(1, Math.abs(finiteOrZero(direction)));
|
|
34
|
-
const facing = direction < 0 ? -1 : 1;
|
|
35
|
-
const targetSpeed = speed ?? (this.body.snapshot().crouching ? this.crouchSpeed : this.walkSpeed);
|
|
36
|
-
const normalizedSpeed = this.body.maxSpeed > 0 ? Math.min(1, positiveFinite(targetSpeed, "fighting controller walk speed") / this.body.maxSpeed) : 0;
|
|
37
|
-
this.body.move(facing * magnitude * normalizedSpeed);
|
|
38
|
-
this.state = magnitude > 0 ? "walk" : this.deriveState([]);
|
|
39
|
-
}
|
|
40
|
-
stop() {
|
|
41
|
-
this.body.move(0);
|
|
42
|
-
this.state = this.deriveState([]);
|
|
43
|
-
}
|
|
44
|
-
jump() {
|
|
45
|
-
this.body.jump();
|
|
46
|
-
this.state = "jump";
|
|
47
|
-
}
|
|
48
|
-
dash(direction) {
|
|
49
|
-
this.body.dash(direction);
|
|
50
|
-
this.state = "dash";
|
|
51
|
-
}
|
|
52
|
-
fastFall(speed = this.fastFallSpeed) {
|
|
53
|
-
this.body.fastFall(speed);
|
|
54
|
-
if (!this.body.grounded) {
|
|
55
|
-
this.state = "fast-fall";
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
crouch(active = true) {
|
|
59
|
-
this.body.crouch(active);
|
|
60
|
-
this.state = active ? "crouch" : this.deriveState([]);
|
|
61
|
-
}
|
|
62
|
-
step(dt, options = {}) {
|
|
63
|
-
const events = this.body.step(dt, options);
|
|
64
|
-
this.state = this.deriveState(events);
|
|
65
|
-
return events;
|
|
66
|
-
}
|
|
67
|
-
snapshot() {
|
|
68
|
-
return {
|
|
69
|
-
...this.body.snapshot(),
|
|
70
|
-
state: this.state,
|
|
71
|
-
walkSpeed: this.walkSpeed,
|
|
72
|
-
crouchSpeed: this.crouchSpeed,
|
|
73
|
-
fastFallSpeed: this.fastFallSpeed
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
deriveState(events) {
|
|
77
|
-
if (events.some((event) => event.type === "land"))
|
|
78
|
-
return "landing";
|
|
79
|
-
const snapshot = this.body.snapshot();
|
|
80
|
-
if (snapshot.crouching)
|
|
81
|
-
return "crouch";
|
|
82
|
-
if (snapshot.dashFramesRemaining > 0)
|
|
83
|
-
return "dash";
|
|
84
|
-
if (!snapshot.grounded)
|
|
85
|
-
return snapshot.velocity[1] < -this.fastFallSpeed * 0.5 ? "fast-fall" : "jump";
|
|
86
|
-
return Math.abs(snapshot.velocity[0]) > 0.05 ? "walk" : "idle";
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
export function createFightingCharacterController(descriptor = {}) {
|
|
90
|
-
return new FightingCharacterController(descriptor);
|
|
91
|
-
}
|
|
92
|
-
export class CharacterController {
|
|
93
|
-
world;
|
|
94
|
-
body;
|
|
95
|
-
collider;
|
|
96
|
-
radius;
|
|
97
|
-
halfHeight;
|
|
98
|
-
maxSpeed;
|
|
99
|
-
acceleration;
|
|
100
|
-
jumpSpeed;
|
|
101
|
-
groundProbeDistance;
|
|
102
|
-
maxSlopeAngleRadians;
|
|
103
|
-
collisionMask;
|
|
104
|
-
moveInput = [0, 0];
|
|
105
|
-
jumpQueued = false;
|
|
106
|
-
state = {
|
|
107
|
-
grounded: false,
|
|
108
|
-
groundNormal: [0, 1, 0],
|
|
109
|
-
groundColliderId: null,
|
|
110
|
-
desiredVelocity: [0, 0, 0],
|
|
111
|
-
velocity: [0, 0, 0],
|
|
112
|
-
speed: 0,
|
|
113
|
-
jumpedThisFrame: false
|
|
114
|
-
};
|
|
115
|
-
constructor(world, descriptor = {}) {
|
|
116
|
-
this.world = world;
|
|
117
|
-
this.radius = positiveFinite(descriptor.radius ?? 0.24, "character radius");
|
|
118
|
-
this.halfHeight = positiveFinite(descriptor.halfHeight ?? 0.38, "character halfHeight");
|
|
119
|
-
this.maxSpeed = positiveFinite(descriptor.maxSpeed ?? 3.5, "character maxSpeed");
|
|
120
|
-
this.acceleration = positiveFinite(descriptor.acceleration ?? 32, "character acceleration");
|
|
121
|
-
this.jumpSpeed = positiveFinite(descriptor.jumpSpeed ?? 4.2, "character jumpSpeed");
|
|
122
|
-
this.groundProbeDistance = positiveFinite(descriptor.groundProbeDistance ?? 0.12, "character groundProbeDistance");
|
|
123
|
-
this.maxSlopeAngleRadians = positiveFinite(descriptor.maxSlopeAngleRadians ?? Math.PI / 3, "character maxSlopeAngleRadians");
|
|
124
|
-
this.collisionMask = descriptor.collisionMask;
|
|
125
|
-
this.body = world.createRigidBody({
|
|
126
|
-
type: "dynamic",
|
|
127
|
-
position: descriptor.position ?? [0, this.halfHeight + this.radius, 0],
|
|
128
|
-
mass: 1,
|
|
129
|
-
linearDamping: 0.02,
|
|
130
|
-
angularDamping: 1
|
|
131
|
-
});
|
|
132
|
-
this.collider = world.createCollider(this.body, {
|
|
133
|
-
shape: Shape.capsule(this.radius, this.halfHeight),
|
|
134
|
-
material: { friction: 0.05, restitution: 0 }
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
setMoveInput(input) {
|
|
138
|
-
const x = finiteOrZero(input.x);
|
|
139
|
-
const z = finiteOrZero(input.z ?? 0);
|
|
140
|
-
const length = Math.hypot(x, z);
|
|
141
|
-
this.moveInput = length > 1 ? [x / length, z / length] : [x, z];
|
|
142
|
-
}
|
|
143
|
-
jump() {
|
|
144
|
-
this.jumpQueued = true;
|
|
145
|
-
}
|
|
146
|
-
teleport(position) {
|
|
147
|
-
this.body.setPosition(position);
|
|
148
|
-
this.body.setVelocity([0, 0, 0]);
|
|
149
|
-
this.state = {
|
|
150
|
-
...this.state,
|
|
151
|
-
grounded: false,
|
|
152
|
-
groundColliderId: null,
|
|
153
|
-
velocity: [0, 0, 0],
|
|
154
|
-
speed: 0,
|
|
155
|
-
jumpedThisFrame: false
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
step(dt) {
|
|
159
|
-
if (!Number.isFinite(dt) || dt <= 0) {
|
|
160
|
-
throw new Error("CharacterController.step dt must be finite and positive.");
|
|
161
|
-
}
|
|
162
|
-
const ground = this.probeGround();
|
|
163
|
-
const desiredVelocity = [
|
|
164
|
-
this.moveInput[0] * this.maxSpeed,
|
|
165
|
-
this.body.velocity[1],
|
|
166
|
-
this.moveInput[1] * this.maxSpeed
|
|
167
|
-
];
|
|
168
|
-
const nextVelocity = [
|
|
169
|
-
moveToward(this.body.velocity[0], desiredVelocity[0], this.acceleration * dt),
|
|
170
|
-
this.body.velocity[1],
|
|
171
|
-
moveToward(this.body.velocity[2], desiredVelocity[2], this.acceleration * dt)
|
|
172
|
-
];
|
|
173
|
-
let jumpedThisFrame = false;
|
|
174
|
-
if (ground.grounded && nextVelocity[1] < 0) {
|
|
175
|
-
nextVelocity[1] = 0;
|
|
176
|
-
}
|
|
177
|
-
if (this.jumpQueued && ground.grounded) {
|
|
178
|
-
nextVelocity[1] = this.jumpSpeed;
|
|
179
|
-
jumpedThisFrame = true;
|
|
180
|
-
}
|
|
181
|
-
this.jumpQueued = false;
|
|
182
|
-
this.body.setVelocity(nextVelocity);
|
|
183
|
-
this.state = {
|
|
184
|
-
grounded: ground.grounded && !jumpedThisFrame,
|
|
185
|
-
groundNormal: ground.normal,
|
|
186
|
-
groundColliderId: ground.colliderId,
|
|
187
|
-
desiredVelocity,
|
|
188
|
-
velocity: [...nextVelocity],
|
|
189
|
-
speed: Math.hypot(nextVelocity[0], nextVelocity[2]),
|
|
190
|
-
jumpedThisFrame
|
|
191
|
-
};
|
|
192
|
-
return this.state;
|
|
193
|
-
}
|
|
194
|
-
snapshot() {
|
|
195
|
-
return {
|
|
196
|
-
...this.state,
|
|
197
|
-
groundNormal: [...this.state.groundNormal],
|
|
198
|
-
desiredVelocity: [...this.state.desiredVelocity],
|
|
199
|
-
velocity: [...this.state.velocity]
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
probeGround() {
|
|
203
|
-
const origin = [
|
|
204
|
-
this.body.position[0],
|
|
205
|
-
this.body.position[1] - this.halfHeight + this.groundProbeDistance,
|
|
206
|
-
this.body.position[2]
|
|
207
|
-
];
|
|
208
|
-
const hit = this.world.sphereCast(origin, this.radius * 0.92, [0, -1, 0], {
|
|
209
|
-
maxDistance: this.groundProbeDistance + this.radius * 0.35,
|
|
210
|
-
includeSensors: false,
|
|
211
|
-
...(this.collisionMask === undefined ? {} : { mask: this.collisionMask })
|
|
212
|
-
});
|
|
213
|
-
const minGroundNormalY = Math.cos(this.maxSlopeAngleRadians);
|
|
214
|
-
if (!hit || hit.normal[1] < minGroundNormalY) {
|
|
215
|
-
return { grounded: false, normal: [0, 1, 0], colliderId: null };
|
|
216
|
-
}
|
|
217
|
-
return { grounded: true, normal: normalizeVec3(hit.normal), colliderId: hit.colliderId };
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
function positiveFinite(value, name) {
|
|
221
|
-
if (!Number.isFinite(value) || value <= 0) {
|
|
222
|
-
throw new Error(`${name} must be a finite positive number.`);
|
|
223
|
-
}
|
|
224
|
-
return value;
|
|
225
|
-
}
|
|
226
|
-
function finiteOrZero(value) {
|
|
227
|
-
return Number.isFinite(value) ? value : 0;
|
|
228
|
-
}
|
|
229
|
-
function moveToward(current, target, maxDelta) {
|
|
230
|
-
const delta = target - current;
|
|
231
|
-
if (Math.abs(delta) <= maxDelta) {
|
|
232
|
-
return target;
|
|
233
|
-
}
|
|
234
|
-
return current + Math.sign(delta) * maxDelta;
|
|
235
|
-
}
|
|
236
|
-
//# sourceMappingURL=CharacterController.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CharacterController.js","sourceRoot":"","sources":["../../../../packages/physics/src/CharacterController.ts"],"names":[],"mappings":"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"}
|
package/dist/ClothFixtures.d.ts
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
export interface ClothSimulationFixtureOptions {
|
|
2
|
-
readonly seed?: number;
|
|
3
|
-
readonly elapsedSeconds?: number;
|
|
4
|
-
readonly segmentsX?: number;
|
|
5
|
-
readonly segmentsY?: number;
|
|
6
|
-
}
|
|
7
|
-
export interface ClothSampleParticle {
|
|
8
|
-
readonly index: number;
|
|
9
|
-
readonly grid: readonly [number, number];
|
|
10
|
-
readonly pinned: boolean;
|
|
11
|
-
readonly position: readonly [number, number, number];
|
|
12
|
-
readonly uv: readonly [number, number];
|
|
13
|
-
}
|
|
14
|
-
export interface ClothSimulationFixture {
|
|
15
|
-
readonly id: "external-parity-old-branch-cloth-simulation-fixture";
|
|
16
|
-
readonly source: "origin-master-cloth-pbd-material-adapted";
|
|
17
|
-
readonly sourceFiles: readonly [
|
|
18
|
-
"origin/master:src/simulation/cloth/ClothSimulation.ts",
|
|
19
|
-
"origin/master:src/simulation/cloth/ClothCollisionSystem.ts",
|
|
20
|
-
"origin/master:src/simulation/cloth/ClothTearingSystem.ts",
|
|
21
|
-
"origin/master:src/materials/ClothMaterial.ts"
|
|
22
|
-
];
|
|
23
|
-
readonly config: {
|
|
24
|
-
readonly width: number;
|
|
25
|
-
readonly height: number;
|
|
26
|
-
readonly segmentsX: number;
|
|
27
|
-
readonly segmentsY: number;
|
|
28
|
-
readonly particleMass: number;
|
|
29
|
-
readonly structuralStiffness: number;
|
|
30
|
-
readonly shearStiffness: number;
|
|
31
|
-
readonly bendingStiffness: number;
|
|
32
|
-
readonly solverIterations: number;
|
|
33
|
-
readonly damping: number;
|
|
34
|
-
};
|
|
35
|
-
readonly mesh: {
|
|
36
|
-
readonly particleCount: number;
|
|
37
|
-
readonly triangleCount: number;
|
|
38
|
-
readonly normalCount: number;
|
|
39
|
-
readonly uvCount: number;
|
|
40
|
-
readonly indexCount: number;
|
|
41
|
-
readonly pinnedCount: number;
|
|
42
|
-
readonly pinnedPattern: "top-edge";
|
|
43
|
-
readonly sampleParticles: readonly ClothSampleParticle[];
|
|
44
|
-
};
|
|
45
|
-
readonly constraints: {
|
|
46
|
-
readonly structural: number;
|
|
47
|
-
readonly shear: number;
|
|
48
|
-
readonly bending: number;
|
|
49
|
-
readonly total: number;
|
|
50
|
-
readonly maxStrain: number;
|
|
51
|
-
readonly tearThreshold: number;
|
|
52
|
-
readonly tearCandidates: number;
|
|
53
|
-
readonly cutPlaneConstraintCandidates: number;
|
|
54
|
-
};
|
|
55
|
-
readonly wind: {
|
|
56
|
-
readonly direction: readonly [number, number, number];
|
|
57
|
-
readonly turbulence: number;
|
|
58
|
-
readonly frequency: number;
|
|
59
|
-
readonly maxOffset: number;
|
|
60
|
-
readonly affectedParticles: number;
|
|
61
|
-
};
|
|
62
|
-
readonly collision: {
|
|
63
|
-
readonly shape: "sphere";
|
|
64
|
-
readonly center: readonly [number, number, number];
|
|
65
|
-
readonly radius: number;
|
|
66
|
-
readonly penetrationCount: number;
|
|
67
|
-
readonly resolvedParticles: number;
|
|
68
|
-
readonly maxPenetration: number;
|
|
69
|
-
readonly friction: number;
|
|
70
|
-
readonly restitution: number;
|
|
71
|
-
};
|
|
72
|
-
readonly material: {
|
|
73
|
-
readonly preset: "coarse-wool-flag";
|
|
74
|
-
readonly sheenIntensity: number;
|
|
75
|
-
readonly sheenRoughness: number;
|
|
76
|
-
readonly subsurfaceIntensity: number;
|
|
77
|
-
readonly anisotropyStrength: number;
|
|
78
|
-
readonly fuzzIntensity: number;
|
|
79
|
-
readonly roughness: number;
|
|
80
|
-
readonly tiling: readonly [number, number];
|
|
81
|
-
};
|
|
82
|
-
readonly blockedClaims: readonly string[];
|
|
83
|
-
readonly hash: string;
|
|
84
|
-
readonly claimBoundary: string;
|
|
85
|
-
}
|
|
86
|
-
export declare function sampleClothSimulationFixture(options?: ClothSimulationFixtureOptions): ClothSimulationFixture;
|
|
87
|
-
//# sourceMappingURL=ClothFixtures.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ClothFixtures.d.ts","sourceRoot":"","sources":["../../../../packages/physics/src/ClothFixtures.ts"],"names":[],"mappings":"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"}
|