@threlte/rapier 3.0.0-next.9 → 3.1.0

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.
Files changed (55) hide show
  1. package/README.md +1 -8
  2. package/dist/components/Attractor/Attractor.svelte.d.ts +3 -34
  3. package/dist/components/Attractor/types.d.ts +30 -0
  4. package/dist/components/Attractor/types.js +1 -0
  5. package/dist/components/Colliders/{AutoColliders.svelte → AutoColliders/AutoColliders.svelte} +17 -10
  6. package/dist/components/Colliders/AutoColliders/AutoColliders.svelte.d.ts +22 -0
  7. package/dist/components/Colliders/AutoColliders/types.d.ts +74 -0
  8. package/dist/components/Colliders/AutoColliders/types.js +1 -0
  9. package/dist/components/Colliders/{Collider.svelte → Collider/Collider.svelte} +20 -16
  10. package/dist/components/Colliders/Collider/Collider.svelte.d.ts +20 -0
  11. package/dist/components/Colliders/Collider/types.d.ts +83 -0
  12. package/dist/components/Colliders/Collider/types.js +1 -0
  13. package/dist/components/CollisionGroups/CollisionGroups.svelte +4 -1
  14. package/dist/components/CollisionGroups/CollisionGroups.svelte.d.ts +16 -33
  15. package/dist/components/CollisionGroups/types.d.ts +19 -0
  16. package/dist/components/CollisionGroups/types.js +1 -0
  17. package/dist/components/Debug/Debug.svelte +5 -5
  18. package/dist/components/Debug/Debug.svelte.d.ts +3 -7
  19. package/dist/components/Debug/types.d.ts +3 -0
  20. package/dist/components/Debug/types.js +1 -0
  21. package/dist/components/RigidBody/RigidBody.svelte.d.ts +3 -102
  22. package/dist/components/RigidBody/types.d.ts +85 -0
  23. package/dist/components/RigidBody/types.js +2 -0
  24. package/dist/components/World/InnerWorld.svelte.d.ts +3 -15
  25. package/dist/components/World/World.svelte.d.ts +3 -49
  26. package/dist/components/World/types.d.ts +32 -0
  27. package/dist/components/World/types.js +1 -0
  28. package/dist/hooks/useFixedJoint.d.ts +7 -0
  29. package/dist/hooks/useJoint.d.ts +7 -0
  30. package/dist/hooks/usePhysicsTask.d.ts +16 -0
  31. package/dist/hooks/usePhysicsTask.js +32 -0
  32. package/dist/hooks/usePrismaticJoint.d.ts +7 -0
  33. package/dist/hooks/useRevoluteJoint.d.ts +7 -0
  34. package/dist/hooks/useRopeJoint.d.ts +10 -0
  35. package/dist/hooks/useRopeJoint.js +14 -0
  36. package/dist/hooks/useSphericalJoint.d.ts +7 -0
  37. package/dist/hooks/utils.js +3 -2
  38. package/dist/index.d.ts +5 -4
  39. package/dist/index.js +4 -4
  40. package/dist/lib/applyTransforms.d.ts +1 -1
  41. package/dist/lib/createCollidersFromChildren.d.ts +1 -1
  42. package/dist/lib/createCollidersFromChildren.js +24 -5
  43. package/dist/lib/createPhysicsTasks.js +1 -1
  44. package/dist/lib/createRapierContext.d.ts +1 -1
  45. package/dist/lib/eulerToQuaternion.d.ts +2 -2
  46. package/dist/lib/getWorldTransforms.js +1 -1
  47. package/dist/lib/useCreateEvent.d.ts +2 -2
  48. package/dist/lib/useCreateEvent.js +3 -5
  49. package/dist/types/types.d.ts +3 -5
  50. package/dist/types/types.js +2 -1
  51. package/package.json +12 -12
  52. package/dist/components/Colliders/AutoColliders.svelte.d.ts +0 -84
  53. package/dist/components/Colliders/Collider.svelte.d.ts +0 -109
  54. package/dist/recipes/BasicPlayerController.svelte +0 -142
  55. package/dist/recipes/BasicPlayerController.svelte.d.ts +0 -29
@@ -1,84 +0,0 @@
1
- import type { CoefficientCombineRule, Collider } from '@dimforge/rapier3d-compat'
2
- import { SvelteComponent, type Snippet } from 'svelte'
3
- import type { Euler, Vector3 } from 'three'
4
- import type { AutoCollidersShapes, ColliderEvents } from '../../types/types'
5
-
6
- // ------------------ BASE ------------------
7
-
8
- type BaseProps = {
9
- shape?: AutoCollidersShapes
10
- restitution?: number
11
- restitutionCombineRule?: CoefficientCombineRule
12
- friction?: number
13
- frictionCombineRule?: CoefficientCombineRule
14
- sensor?: boolean
15
- colliders?: Collider[]
16
- contactForceEventThreshold?: number
17
-
18
- refresh?: () => void
19
-
20
- oncreate?: () => void
21
- }
22
-
23
- // ------------------ MASS ------------------
24
-
25
- type Density = {
26
- density: number
27
-
28
- mass?: never
29
- centerOfMass?: never
30
- principalAngularInertia?: never
31
- angularInertiaLocalFrame?: never
32
- }
33
-
34
- type Mass = {
35
- mass: number
36
- density?: never
37
- centerOfMass?: never
38
- principalAngularInertia?: never
39
- angularInertiaLocalFrame?: never
40
- }
41
-
42
- type MassProperties = {
43
- mass: number
44
- centerOfMass: Parameters<Vector3['set']>
45
- principalAngularInertia: Parameters<Vector3['set']>
46
- angularInertiaLocalFrame: Parameters<Euler['set']>
47
- density?: never
48
- }
49
-
50
- type NoMassProperties = {
51
- density?: never
52
- mass?: never
53
- centerOfMass?: never
54
- principalAngularInertia?: never
55
- angularInertiaLocalFrame?: never
56
- }
57
-
58
- export type MassDef = Density | Mass | MassProperties | NoMassProperties
59
-
60
- type MassProps<TMassDef extends MassDef> = TMassDef extends Density
61
- ? Density
62
- : TMassDef extends MassProperties
63
- ? MassProperties
64
- : TMassDef extends Mass
65
- ? Mass
66
- : NoMassProperties
67
-
68
- // ------------------ COLLIDER ------------------
69
-
70
- export type AutoCollidersProps<TMassDef extends MassDef> = BaseProps &
71
- MassProps<TMassDef> & {
72
- children?: Snippet<
73
- [
74
- {
75
- colliders: Collider[]
76
- refresh: () => void
77
- }
78
- ]
79
- >
80
- }
81
-
82
- export default class AutoColliders<TMassDef extends MassDef> extends SvelteComponent<
83
- AutoCollidersProps<TMassDef>
84
- > {}
@@ -1,109 +0,0 @@
1
- import type {
2
- CoefficientCombineRule,
3
- Collider as RapierCollider,
4
- ColliderDesc
5
- } from '@dimforge/rapier3d-compat'
6
- import { SvelteComponent, type Snippet } from 'svelte'
7
- import type { Euler, Vector3 } from 'three'
8
- import type { ColliderEvents } from '../../types/types'
9
-
10
- // ------------------ BASE ------------------
11
-
12
- type Type = 'static' | 'dynamic'
13
-
14
- type BaseProps = {
15
- type?: Type
16
- restitution?: number
17
- restitutionCombineRule?: CoefficientCombineRule
18
- friction?: number
19
- frictionCombineRule?: CoefficientCombineRule
20
- sensor?: boolean
21
- collider?: RapierCollider
22
- contactForceEventThreshold?: number
23
- refresh?: () => void
24
- }
25
-
26
- // ------------------ SHAPE ------------------
27
-
28
- export type Shape =
29
- | 'ball'
30
- | 'capsule'
31
- | 'segment'
32
- | 'triangle'
33
- | 'roundTriangle'
34
- | 'polyline'
35
- | 'trimesh'
36
- | 'cuboid'
37
- | 'roundCuboid'
38
- | 'heightfield'
39
- | 'cylinder'
40
- | 'roundCylinder'
41
- | 'cone'
42
- | 'roundCone'
43
- | 'convexHull'
44
- | 'convexMesh'
45
- | 'roundConvexHull'
46
- | 'roundConvexMesh'
47
-
48
- type Args<TShape extends Shape> = Parameters<(typeof ColliderDesc)[TShape]>
49
-
50
- type ShapeProps<TShape extends Shape> = {
51
- shape: TShape
52
- args: Args<TShape>
53
- }
54
-
55
- // ------------------ MASS ------------------
56
-
57
- type Density = {
58
- density: number
59
- mass?: never
60
- centerOfMass?: never
61
- principalAngularInertia?: never
62
- angularInertiaLocalFrame?: never
63
- }
64
- type Mass = {
65
- mass: number
66
- density?: never
67
- centerOfMass?: never
68
- principalAngularInertia?: never
69
- angularInertiaLocalFrame?: never
70
- }
71
- type MassProperties = {
72
- mass: number
73
- centerOfMass: Parameters<Vector3['set']>
74
- principalAngularInertia: Parameters<Vector3['set']>
75
- angularInertiaLocalFrame: Parameters<Euler['set']>
76
- density?: never
77
- }
78
-
79
- type NoMassProperties = {
80
- density?: never
81
- mass?: never
82
- centerOfMass?: never
83
- principalAngularInertia?: never
84
- angularInertiaLocalFrame?: never
85
- }
86
-
87
- export type MassDef = Density | Mass | MassProperties | NoMassProperties
88
-
89
- type MassProps<TMassDef extends MassDef> = TMassDef extends Density
90
- ? Density
91
- : TMassDef extends MassProperties
92
- ? MassProperties
93
- : TMassDef extends Mass
94
- ? Mass
95
- : NoMassProperties
96
-
97
- // ------------------ COLLIDER ------------------
98
-
99
- export type ColliderProps<TShape extends Shape, TMassDef extends MassDef> = BaseProps &
100
- ColliderEvents &
101
- ShapeProps<TShape> &
102
- MassProps<TMassDef> & {
103
- children?: Snippet<[{ collider?: RapierCollider }]>
104
- }
105
-
106
- export default class Collider<
107
- TShape extends Shape,
108
- TMassDef extends MassDef
109
- > extends SvelteComponent<ColliderProps<TShape, TMassDef>> {}
@@ -1,142 +0,0 @@
1
- <script lang="ts">import { T, useTask } from '@threlte/core';
2
- import { Vector2, Vector3 } from 'three';
3
- import Collider from '../components/Colliders/Collider.svelte';
4
- import CollisionGroups from '../components/CollisionGroups/CollisionGroups.svelte';
5
- import RigidBody from '../components/RigidBody/RigidBody.svelte';
6
- export let position = undefined;
7
- export let height = 1.7;
8
- export let radius = 0.3;
9
- export let speed = 1;
10
- export let jumpStrength = 3;
11
- export let playerCollisionGroups = [0];
12
- export let groundCollisionGroups = [15];
13
- export let ongroundenter = undefined;
14
- export let ongroundexit = undefined;
15
- let rigidBody;
16
- const keys = {
17
- up: false,
18
- down: false,
19
- left: false,
20
- right: false
21
- };
22
- const t = new Vector3();
23
- const t2 = new Vector2();
24
- let grounded = false;
25
- let groundsSensored = 0;
26
- $: {
27
- if (groundsSensored === 0)
28
- grounded = false;
29
- else
30
- grounded = true;
31
- }
32
- $: grounded ? ongroundenter?.() : ongroundexit?.();
33
- const { start } = useTask(() => {
34
- t.set(0, 0, 0);
35
- if (keys.down)
36
- t.x += 1;
37
- if (keys.up)
38
- t.x -= 1;
39
- if (keys.left)
40
- t.z += 1;
41
- if (keys.right)
42
- t.z -= 1;
43
- const l = t.length();
44
- const xzLength = t2.set(t.x, t.z).length();
45
- if (l > 0)
46
- t.divideScalar(l).multiplyScalar(speed);
47
- if (xzLength > 0) {
48
- rigidBody.resetForces(true);
49
- rigidBody.resetTorques(true);
50
- }
51
- const linVel = rigidBody.linvel();
52
- t.y = linVel.y;
53
- rigidBody.setLinvel(t, true);
54
- });
55
- $: if (rigidBody)
56
- start();
57
- const onKeyDown = (e) => {
58
- switch (e.key.toLowerCase()) {
59
- case 's':
60
- case 'arrowdown':
61
- keys.down = true;
62
- break;
63
- case 'w':
64
- case 'arrowup':
65
- keys.up = true;
66
- break;
67
- case 'a':
68
- case 'arrowleft':
69
- keys.left = true;
70
- break;
71
- case 'd':
72
- case 'arrowright':
73
- keys.right = true;
74
- break;
75
- case ' ':
76
- if (!rigidBody || !grounded)
77
- break;
78
- rigidBody.applyImpulse({ x: 0, y: jumpStrength, z: 0 }, true);
79
- default:
80
- break;
81
- }
82
- };
83
- const onKeyUp = (e) => {
84
- switch (e.key.toLowerCase()) {
85
- case 's':
86
- case 'arrowdown':
87
- keys.down = false;
88
- break;
89
- case 'w':
90
- case 'arrowup':
91
- keys.up = false;
92
- break;
93
- case 'a':
94
- case 'arrowleft':
95
- keys.left = false;
96
- break;
97
- case 'd':
98
- case 'arrowright':
99
- keys.right = false;
100
- break;
101
- default:
102
- break;
103
- }
104
- };
105
- </script>
106
-
107
- <svelte:window
108
- on:keydown|preventDefault={onKeyDown}
109
- on:keyup|preventDefault={onKeyUp}
110
- />
111
-
112
- <T.Group {position}>
113
- <RigidBody
114
- dominance={127}
115
- enabledRotations={[false, false, false]}
116
- bind:rigidBody
117
- type={'dynamic'}
118
- >
119
- <CollisionGroups groups={playerCollisionGroups}>
120
- <Collider
121
- shape={'capsule'}
122
- args={[height / 2 - radius, radius]}
123
- />
124
- </CollisionGroups>
125
-
126
- <CollisionGroups groups={groundCollisionGroups}>
127
- <T.Group position={[0, -height / 2 + radius, 0]}>
128
- <Collider
129
- sensor
130
- onsensorenter={() => (groundsSensored += 1)}
131
- onsensorexit={() => (groundsSensored -= 1)}
132
- shape={'ball'}
133
- args={[radius * 1.2]}
134
- />
135
- </T.Group>
136
- </CollisionGroups>
137
-
138
- <T.Group position.y={-height / 2}>
139
- <slot />
140
- </T.Group>
141
- </RigidBody>
142
- </T.Group>
@@ -1,29 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- import { Vector3 } from 'three';
3
- import type { CollisionGroupsBitMask } from '../types/types';
4
- declare const __propDef: {
5
- props: {
6
- position?: Parameters<Vector3['set']> | undefined;
7
- height?: number | undefined;
8
- radius?: number | undefined;
9
- speed?: number | undefined;
10
- jumpStrength?: number | undefined;
11
- playerCollisionGroups?: CollisionGroupsBitMask | undefined;
12
- groundCollisionGroups?: CollisionGroupsBitMask | undefined;
13
- ongroundenter?: (() => void) | undefined;
14
- ongroundexit?: (() => void) | undefined;
15
- children?: import("svelte").Snippet<[]> | undefined;
16
- };
17
- events: {
18
- [evt: string]: CustomEvent<any>;
19
- };
20
- slots: {
21
- default: {};
22
- };
23
- };
24
- export type BasicPlayerControllerProps = typeof __propDef.props;
25
- export type BasicPlayerControllerEvents = typeof __propDef.events;
26
- export type BasicPlayerControllerSlots = typeof __propDef.slots;
27
- export default class BasicPlayerController extends SvelteComponent<BasicPlayerControllerProps, BasicPlayerControllerEvents, BasicPlayerControllerSlots> {
28
- }
29
- export {};